feat: 2023主题适配新登录模式

This commit is contained in:
Lan
2025-02-09 23:33:43 +08:00
parent d35c84cc43
commit 78c612c660
27 changed files with 59 additions and 39 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

+3 -1
View File
@@ -3,9 +3,11 @@ import {ref} from "vue";
export const useAdminData = defineStore('adminData', () => {
const adminPassword = ref(localStorage.getItem('adminPassword') || '');
const isAdmin = ref(!!localStorage.getItem('adminPassword'));
function updateAdminPwd(pwd: string) {
adminPassword.value = pwd;
isAdmin.value = true;
localStorage.setItem('adminPassword', pwd);
}
return { adminPassword,updateAdminPwd };
return { adminPassword,updateAdminPwd,isAdmin };
});
+2 -1
View File
@@ -8,7 +8,7 @@ const instance = axios.create({
instance.interceptors.request.use(
(config: any) => {
config.headers= {
'Authorization': localStorage.getItem('adminPassword') || '',
'Authorization': 'Bearer '+ localStorage.getItem('adminPassword') || '',
}
return config;
});
@@ -24,6 +24,7 @@ instance.interceptors.response.use(
return Promise.reject(response.data);
}
}, (error:any) => {
localStorage.clear()
ElMessage.error(error.response.data.detail);
return Promise.reject(error);
});
+10 -7
View File
@@ -1,10 +1,10 @@
<template>
<el-container v-if="isLogin" style="height: 100vh;width: 100vw;position: relative;user-select: none">
<el-container v-if="adminData.isAdmin" style="height: 100vh;width: 100vw;position: relative;user-select: none">
<el-header>
<el-menu mode="horizontal" router :default-active="route.path">
<el-menu-item v-for="menu in menus" :index="menu.path" :key="menu.path">{{menu.name}}</el-menu-item>
<el-menu-item style="float: right" @click="toggleDark(!isDark)">{{ t('admin.menu.color') }}</el-menu-item>
<el-menu-item style="float: right" @click="adminData.updateAdminPwd('');isLogin=false">{{ t('admin.menu.signout') }}</el-menu-item>
<el-menu-item style="float: right" @click="logout()">{{ t('admin.menu.signout') }}</el-menu-item>
</el-menu>
</el-header>
<el-main>
@@ -29,7 +29,6 @@
import { useDark, useToggle } from '@vueuse/core';
import { ref } from "vue";
const isDark = useDark()
const isLogin = ref(false);
const toggleDark = useToggle(isDark)
import { useRoute } from 'vue-router';
import { useAdminData } from "@/stores/adminData";
@@ -71,19 +70,23 @@ const refreshLoginStatus = () => {
request({
url: '/admin/login',
method: 'post',
data: {
password: adminData.adminPassword,
},
}).then((res: any) => {
if (res.code === 200) {
isLogin.value = true;
adminData.updateAdminPwd(res.detail.token);
ElMessage.success(t('admin.login.loginSuccess'));
} else {
localStorage.clear();
ElMessage.error(t('admin.login.loginError'));
}
});
};
if (adminData.adminPassword !== '') {
refreshLoginStatus();
}
const logout = () => {
localStorage.clear();
};
</script>
<style lang="scss" scoped>
</style>