diff --git a/src/api/index.ts b/src/api/index.ts index e3f4446c..5dd3ba7b 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -5,12 +5,13 @@ import router from '@/router/index' import useUserStore from '@/store/modules/user' const toLogin = () => { - useUserStore().logout() - router.push({ - path: '/login', - query: { - redirect: router.currentRoute.value.path !== '/login' ? router.currentRoute.value.fullPath : undefined, - }, + void useUserStore().logout().then(() => { + void router.push({ + path: '/login', + query: { + redirect: router.currentRoute.value.path !== '/login' ? router.currentRoute.value.fullPath : undefined, + }, + }) }) } diff --git a/src/main.ts b/src/main.ts index 40f937bf..260b9d5d 100644 --- a/src/main.ts +++ b/src/main.ts @@ -14,7 +14,7 @@ import '@/assets/styles/globals.scss' // 加载 iconify 图标(element plus) import { downloadAndInstall } from '@/iconify-ep' if (useSettingsStore().app.iconifyOfflineUse) { - downloadAndInstall() + await downloadAndInstall() } const app = createApp(App) diff --git a/src/store/modules/menu.ts b/src/store/modules/menu.ts index 8a50e0ed..c26e0d24 100644 --- a/src/store/modules/menu.ts +++ b/src/store/modules/menu.ts @@ -138,45 +138,38 @@ const useMenuStore = defineStore( }, actions: { // 生成导航(前端生成) - generateMenusAtFront() { - // eslint-disable-next-line no-async-promise-executor - return new Promise(async (resolve) => { + async generateMenusAtFront() { + const settingsStore = useSettingsStore() + const userStore = useUserStore() + let accessedMenus + // 如果权限功能开启,则需要对导航数据进行筛选过滤 + if (settingsStore.app.enablePermission) { + const permissions = await userStore.getPermissions() + accessedMenus = filterAsyncMenus(menu, permissions) + } + else { + accessedMenus = cloneDeep(menu) + } + this.menus = accessedMenus.filter(item => item.children.length !== 0) + }, + // 生成导航(后端生成) + async generateMenusAtBack() { + await api.get('menu/list', { + baseURL: '/mock/', + }).then(async (res) => { const settingsStore = useSettingsStore() const userStore = useUserStore() - let accessedMenus + let accessedMenus: Menu.recordMainRaw[] // 如果权限功能开启,则需要对导航数据进行筛选过滤 if (settingsStore.app.enablePermission) { const permissions = await userStore.getPermissions() - accessedMenus = filterAsyncMenus(menu, permissions) + accessedMenus = filterAsyncMenus(res.data, permissions) } else { - accessedMenus = cloneDeep(menu) + accessedMenus = cloneDeep(res.data) } this.menus = accessedMenus.filter(item => item.children.length !== 0) - resolve() - }) - }, - // 生成导航(后端生成) - generateMenusAtBack() { - return new Promise((resolve) => { - api.get('menu/list', { - baseURL: '/mock/', - }).then(async (res) => { - const settingsStore = useSettingsStore() - const userStore = useUserStore() - let accessedMenus: Menu.recordMainRaw[] - // 如果权限功能开启,则需要对导航数据进行筛选过滤 - if (settingsStore.app.enablePermission) { - const permissions = await userStore.getPermissions() - accessedMenus = filterAsyncMenus(res.data, permissions) - } - else { - accessedMenus = cloneDeep(res.data) - } - this.menus = accessedMenus.filter(item => item.children.length !== 0) - resolve() - }) - }) + }).catch(() => {}) }, // 切换主导航 setActived(data: number | string) { diff --git a/src/store/modules/route.ts b/src/store/modules/route.ts index 10aca460..51878a21 100644 --- a/src/store/modules/route.ts +++ b/src/store/modules/route.ts @@ -162,57 +162,30 @@ const useRouteStore = defineStore( }, actions: { // 根据权限动态生成路由(前端生成) - generateRoutesAtFront(asyncRoutes: Route.recordMainRaw[]) { - // eslint-disable-next-line no-async-promise-executor - return new Promise(async (resolve) => { - const settingsStore = useSettingsStore() - const userStore = useUserStore() - let accessedRoutes - // 如果权限功能开启,则需要对路由数据进行筛选过滤 - if (settingsStore.app.enablePermission) { - const permissions = await userStore.getPermissions() - accessedRoutes = filterAsyncRoutes(asyncRoutes, permissions) - } - else { - accessedRoutes = cloneDeep(asyncRoutes) - } - // 设置 routes 数据 - this.isGenerate = true - this.routes = accessedRoutes.filter(item => item.children?.length !== 0) as any - resolve() - }) + async generateRoutesAtFront(asyncRoutes: Route.recordMainRaw[]) { + const settingsStore = useSettingsStore() + const userStore = useUserStore() + let accessedRoutes + // 如果权限功能开启,则需要对路由数据进行筛选过滤 + if (settingsStore.app.enablePermission) { + const permissions = await userStore.getPermissions() + accessedRoutes = filterAsyncRoutes(asyncRoutes, permissions) + } + else { + accessedRoutes = cloneDeep(asyncRoutes) + } + // 设置 routes 数据 + this.isGenerate = true + this.routes = accessedRoutes.filter(item => item.children?.length !== 0) as any }, // 根据权限动态生成路由(后端获取) - generateRoutesAtBack() { - return new Promise((resolve) => { - api.get('route/list', { - baseURL: '/mock/', - }).then(async (res) => { - const settingsStore = useSettingsStore() - const userStore = useUserStore() - const asyncRoutes = formatBackRoutes(res.data) - let accessedRoutes - // 如果权限功能开启,则需要对路由数据进行筛选过滤 - if (settingsStore.app.enablePermission) { - const permissions = await userStore.getPermissions() - accessedRoutes = filterAsyncRoutes(asyncRoutes, permissions) - } - else { - accessedRoutes = cloneDeep(asyncRoutes) - } - // 设置 routes 数据 - this.isGenerate = true - this.routes = accessedRoutes.filter(item => item.children.length !== 0) as any - resolve() - }) - }) - }, - // 根据权限动态生成路由(文件系统生成) - generateRoutesAtFilesystem(asyncRoutes: RouteRecordRaw[]) { - // eslint-disable-next-line no-async-promise-executor - return new Promise(async (resolve) => { + async generateRoutesAtBack() { + await api.get('route/list', { + baseURL: '/mock/', + }).then(async (res) => { const settingsStore = useSettingsStore() const userStore = useUserStore() + const asyncRoutes = formatBackRoutes(res.data) let accessedRoutes // 如果权限功能开启,则需要对路由数据进行筛选过滤 if (settingsStore.app.enablePermission) { @@ -224,9 +197,25 @@ const useRouteStore = defineStore( } // 设置 routes 数据 this.isGenerate = true - this.fileSystemRoutes = accessedRoutes.filter(item => item.children?.length !== 0) as any - resolve() - }) + this.routes = accessedRoutes.filter(item => item.children.length !== 0) as any + }).catch(() => {}) + }, + // 根据权限动态生成路由(文件系统生成) + async generateRoutesAtFilesystem(asyncRoutes: RouteRecordRaw[]) { + const settingsStore = useSettingsStore() + const userStore = useUserStore() + let accessedRoutes + // 如果权限功能开启,则需要对路由数据进行筛选过滤 + if (settingsStore.app.enablePermission) { + const permissions = await userStore.getPermissions() + accessedRoutes = filterAsyncRoutes(asyncRoutes, permissions) + } + else { + accessedRoutes = cloneDeep(asyncRoutes) + } + // 设置 routes 数据 + this.isGenerate = true + this.fileSystemRoutes = accessedRoutes.filter(item => item.children?.length !== 0) as any }, // 记录 accessRoutes 路由,用于登出时删除路由 setCurrentRemoveRoutes(routes: Function[]) { diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 1f7c054e..02aab550 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -61,34 +61,27 @@ const useUserStore = defineStore( }) }, // 获取我的权限 - getPermissions() { - return new Promise((resolve) => { - // 通过 mock 获取权限 - api.get('member/permission', { - baseURL: '/mock/', - params: { - account: this.account, - }, - }).then((res) => { - this.permissions = res.data.permissions - resolve(res.data.permissions) - }) + async getPermissions() { + // 通过 mock 获取权限 + const res = await api.get('member/permission', { + baseURL: '/mock/', + params: { + account: this.account, + }, }) + this.permissions = res.data.permissions + return this.permissions }, - editPassword(data: { + async editPassword(data: { password: string newpassword: string }) { - return new Promise((resolve) => { - api.post('member/edit/password', { - account: this.account, - password: data.password, - newpassword: data.newpassword, - }, { - baseURL: '/mock/', - }).then(() => { - resolve() - }) + await api.post('member/edit/password', { + account: this.account, + password: data.password, + newpassword: data.newpassword, + }, { + baseURL: '/mock/', }) }, }, diff --git a/src/utils/composables/useMainPage.ts b/src/utils/composables/useMainPage.ts index 3ccb739a..226fd5c4 100644 --- a/src/utils/composables/useMainPage.ts +++ b/src/utils/composables/useMainPage.ts @@ -2,7 +2,7 @@ import router from '@/router' export default function useMainPage() { function reload() { - router.push({ + void router.push({ name: 'reload', }) } diff --git a/src/utils/composables/useMenu.ts b/src/utils/composables/useMenu.ts index 0b7c6c37..14cd2e7a 100644 --- a/src/utils/composables/useMenu.ts +++ b/src/utils/composables/useMenu.ts @@ -14,7 +14,7 @@ export default function useMenu() { window.open(menuStore.sidebarMenusFirstDeepestPath, '_blank') } else { - router.push(menuStore.sidebarMenusFirstDeepestPath) + void router.push(menuStore.sidebarMenusFirstDeepestPath) } } }