|
@@ -1,10 +1,11 @@
|
|
|
import pinia from '~src/store/init'
|
|
|
import { useAppStore } from '~src/store'
|
|
|
import { getRoutes } from '~api/menu'
|
|
|
-import { getRefreshToken, setRefreshToken, setStore, setToken } from 'hc-vue3-ui'
|
|
|
+import { getRefreshToken, setRefreshToken, setToken } from 'hc-vue3-ui'
|
|
|
import tokenData from '~src/router/modules/token'
|
|
|
-import { ArrToOneObj, getArrValue } from 'js-fast-way'
|
|
|
+import { ArrToOneObj, getArrValue, isNullES } from 'js-fast-way'
|
|
|
import { logout, refreshToken, userLogin } from '~api/user'
|
|
|
+import { getStore, setStore } from '~src/utils/storage'
|
|
|
|
|
|
//初始变量
|
|
|
const store = useAppStore(pinia)
|
|
@@ -21,6 +22,7 @@ export const useAppLogin = async (form) => {
|
|
|
if (routerRes.length <= 0) {
|
|
|
return { error: true, msg: '路由异常' }
|
|
|
}
|
|
|
+ await getHomeRouter()
|
|
|
return { error, code, res }
|
|
|
} else {
|
|
|
return { error, code, res }
|
|
@@ -39,12 +41,40 @@ export const setRouterData = async () => {
|
|
|
await ArrToOneObj(resData, 'code', routesObj, routesArr)
|
|
|
const routes = [...tokenData, ...routesArr] //合并
|
|
|
//数据缓存
|
|
|
- store.setMenus(resData)
|
|
|
+ setStore('menus', resData)
|
|
|
setStore('route', routesObj)
|
|
|
setStore('routes', routes)
|
|
|
return resData
|
|
|
}
|
|
|
|
|
|
+//获取路由菜单的主入口路径
|
|
|
+const getHomeRouter = async () => {
|
|
|
+ const menus = getArrValue(getStore('menus'))
|
|
|
+ //没有菜单路由数据
|
|
|
+ if (menus.length <= 0) {
|
|
|
+ store.setHomePage('index')
|
|
|
+ store.setPage('anomaly')
|
|
|
+ } else {
|
|
|
+ const code = await getRoutesHomeUrl(menus, 0)
|
|
|
+ store.setHomePage(code)
|
|
|
+ store.setPage(code)
|
|
|
+ if (code === 'index') {
|
|
|
+ const pageCode = await getRoutesHomeUrl(menus, 1)
|
|
|
+ store.setPage(pageCode)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+//递归获取最子级的菜单
|
|
|
+const getRoutesHomeUrl = async (arr, index = 0) => {
|
|
|
+ const item = arr[index]
|
|
|
+ if (!isNullES(item.children) && item.children.length > 0) {
|
|
|
+ return await getRoutesHomeUrl(item.children, index)
|
|
|
+ } else {
|
|
|
+ return item.code
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
//刷新token
|
|
|
export const RefreshToken = async () => {
|
|
|
try {
|