🎨 更新用户版本

This commit is contained in:
2025-09-02 22:56:30 +08:00
parent 8276b3e87f
commit a1906d2a36
71 changed files with 4790 additions and 962 deletions

View File

@@ -99,6 +99,27 @@ export const useAppStore = defineStore('app', () => {
config.transition_type = e
}
const baseCoinfg = {
weakness: false,
grey: false,
primaryColor: '#3b82f6',
showTabs: true,
darkMode: 'auto',
layout_side_width: 256,
layout_side_collapsed_width: 80,
layout_side_item_height: 48,
show_watermark: true,
side_mode: 'normal',
// 页面过渡动画配置
transition_type: 'slide'
}
const resetConfig = () => {
for (let baseCoinfgKey in baseCoinfg) {
config[baseCoinfgKey] = baseCoinfg[baseCoinfgKey]
}
}
// 监听色弱模式和灰色模式
watchEffect(() => {
document.documentElement.classList.toggle('html-weakenss', config.weakness)
@@ -128,6 +149,7 @@ export const useAppStore = defineStore('app', () => {
toggleConfigSideItemHeight,
toggleConfigWatermark,
toggleSideMode,
toggleTransition
toggleTransition,
resetConfig
}
})

View File

@@ -1,9 +1,10 @@
import { asyncRouterHandle } from '@/utils/asyncRouter'
import { emitter } from '@/utils/bus.js'
import { asyncMenu, getMenuList } from '@/api/menu'
import { asyncMenu } from '@/api/menu'
import { defineStore } from 'pinia'
import { ref, watchEffect } from 'vue'
import pathInfo from '@/pathInfo.json'
import {useRoute} from "vue-router";
const notLayoutRouterArr = []
const keepAliveRoutersArr = []
@@ -51,13 +52,33 @@ export const useRouterStore = defineStore('router', () => {
const asyncRouterFlag = ref(0)
const setKeepAliveRouters = (history) => {
const keepArrTemp = []
// 1. 首先添加原有的keepAlive配置
keepArrTemp.push(...keepAliveRoutersArr)
history.forEach((item) => {
// 2. 为所有history中的路由强制启用keep-alive
// 通过routeMap获取路由信息然后通过pathInfo获取组件名
const routeInfo = routeMap[item.name]
if (routeInfo && routeInfo.meta && routeInfo.meta.path) {
const componentName = pathInfo[routeInfo.meta.path]
if (componentName) {
keepArrTemp.push(componentName)
}
}
// 3. 如果子路由在tabs中打开父路由也需要keepAlive
if (nameMap[item.name]) {
keepArrTemp.push(nameMap[item.name])
}
})
keepAliveRouters.value = Array.from(new Set(keepArrTemp))
}
const route = useRoute()
emitter.on('setKeepAlive', setKeepAliveRouters)
const asyncRouters = ref([])
@@ -80,14 +101,32 @@ export const useRouterStore = defineStore('router', () => {
return menuMap[name]?.children
}
const findTopActive = (menuMap, routeName) => {
for (let topName in menuMap) {
const topItem = menuMap[topName];
if (topItem.children?.some(item => item.name === routeName)) {
return topName;
}
const foundName = findTopActive(topItem.children || {}, routeName);
if (foundName) {
return topName;
}
}
return null;
};
watchEffect(() => {
let topActive = sessionStorage.getItem('topActive')
// 初始化菜单内容,防止重复添加
topMenu.value = [];
asyncRouters.value[0]?.children.forEach((item) => {
if (item.hidden) return
menuMap[item.name] = item
topMenu.value.push({ ...item, children: [] })
})
if (!topActive || topActive === 'undefined' || topActive === 'null') {
topActive = findTopActive(menuMap, route.name);
}
setLeftMenu(topActive)
})
@@ -106,10 +145,8 @@ export const useRouterStore = defineStore('router', () => {
children: []
}
]
// const asyncRouterRes = await asyncMenu()
const asyncRouterRes = await getMenuList()
// const asyncRouter = asyncRouterRes.data.menus
const asyncRouter = asyncRouterRes.data
const asyncRouterRes = await asyncMenu()
const asyncRouter = asyncRouterRes.data.menus
asyncRouter &&
asyncRouter.push({
path: 'reload',

View File

@@ -71,7 +71,6 @@ export const useUserStore = defineStore('user', () => {
const res = await login(loginInfo)
if (res.code !== 0) {
ElMessage.error(res.message || '登录失败')
return false
}
// 登陆成功,设置用户信息和权限相关信息
@@ -88,8 +87,13 @@ export const useUserStore = defineStore('user', () => {
router.addRoute(asyncRouter)
})
if(router.currentRoute.value.query.redirect) {
await router.replace(router.currentRoute.value.query.redirect)
return true
}
if (!router.hasRoute(userInfo.value.authority.defaultRouter)) {
ElMessage.error('请联系管理员进行授权')
ElMessage.error('不存在可以登陆的首页,请联系管理员进行配置')
} else {
await router.replace({ name: userInfo.value.authority.defaultRouter })
}
@@ -124,9 +128,12 @@ export const useUserStore = defineStore('user', () => {
/* 清理数据 */
const ClearStorage = async () => {
token.value = ''
xToken.value = ''
// 使用remove方法正确删除cookie
xToken.remove()
sessionStorage.clear()
// 清理所有相关的localStorage项
localStorage.removeItem('originSetting')
localStorage.removeItem('token')
}
return {