diff --git a/src/App.vue b/src/App.vue index c1a2486..3ddc6ba 100644 --- a/src/App.vue +++ b/src/App.vue @@ -11,7 +11,9 @@ import {ElConfigProvider} from "element-plus"; import zhCn from "element-plus/lib/locale/lang/zh-cn"; import {ReDialog} from "@/components/ReDialog"; import {api} from "@/api/api"; -import {handleAsyncRoutes} from "@/router/utils"; +import {handleAsyncRoutes, initRouter} from "@/router/utils"; +import {spost} from "@/api/smebiz"; +import {useUserStore} from "@/store/modules/user"; export default defineComponent({ name: "app", @@ -23,6 +25,14 @@ export default defineComponent({ currentLocale() { return zhCn; } + }, beforeCreate() { + useUserStore().refreshToken().then(res => { + initRouter() + }) + // + // spost('/wd-smebiz/user/get_user_info').then(res => { + // res.data.auth_data + // }) } }); diff --git a/src/router/index.ts b/src/router/index.ts index e7822e4..db391c5 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -38,6 +38,7 @@ const modules: Record = import.meta.glob( "!./modules/companyDataManage.ts", "!./modules/rateManage.ts", "!./modules/companyUserManage.ts", + // "!./modules/user.ts", ], { eager: true diff --git a/src/router/modules/companyUserManage.ts b/src/router/modules/companyUserManage.ts index 61f432b..5b89ae0 100644 --- a/src/router/modules/companyUserManage.ts +++ b/src/router/modules/companyUserManage.ts @@ -9,7 +9,8 @@ export default { keepAlive: true, icon: "edit", meta: { - rank:1 + rank:1, + roles:[1] } } // children: [ diff --git a/src/router/modules/examineWorkPage.ts b/src/router/modules/examineWorkPage.ts index cdf08c6..3fafdb1 100644 --- a/src/router/modules/examineWorkPage.ts +++ b/src/router/modules/examineWorkPage.ts @@ -5,6 +5,7 @@ export default { icon: "edit", title: "审核", showLink: false, + roles:[4] }, children: [ { @@ -17,6 +18,7 @@ export default { // showParent: true, icon: "edit", activePath: "/manage/rate_work/examine_work_page", + roles:[4] } }, { @@ -29,6 +31,7 @@ export default { // showParent: true, icon: "edit", activePath: "/manage/rate_work/rate_work_page", + roles:[4] } }, { @@ -41,6 +44,7 @@ export default { // showParent: true, icon: "edit", activePath: "/manage/rate_work/serve_work_page", + roles:[4] } } diff --git a/src/router/modules/rateApplyManage.ts b/src/router/modules/rateApplyManage.ts index 0b8ab20..965ead6 100644 --- a/src/router/modules/rateApplyManage.ts +++ b/src/router/modules/rateApplyManage.ts @@ -25,6 +25,7 @@ export default { keepAlive: true, icon: "edit", rank: 10, + roles:[4] }, // children: [ // { diff --git a/src/router/modules/user.ts b/src/router/modules/user.ts index d32dbc6..6da2226 100644 --- a/src/router/modules/user.ts +++ b/src/router/modules/user.ts @@ -8,6 +8,7 @@ export default { meta: { icon: "avatar", title: "用户管理", + roles:[2] }, children: [ { @@ -17,26 +18,27 @@ export default { meta: { keepAlive:true, title: "用户管理", + roles:[2] } }, - { - path: "/user/department", - name: "department", - component: () => import("@/views/user/department.vue"), - meta: { - keepAlive:true, - title: "部门管理", - } - }, - { - path: "/user/post", - name: "post", - component: () => import("@/views/user/post.vue"), - meta: { - keepAlive:true, - title: "职务管理", - } - }, + // { + // path: "/user/department", + // name: "department", + // component: () => import("@/views/user/department.vue"), + // meta: { + // keepAlive:true, + // title: "部门管理", + // } + // }, + // { + // path: "/user/post", + // name: "post", + // component: () => import("@/views/user/post.vue"), + // meta: { + // keepAlive:true, + // title: "职务管理", + // } + // }, { path: "/user/auth_rule", name: "auth_rule", @@ -44,6 +46,7 @@ export default { meta: { keepAlive:true, title: "权限规则", + roles:[2] } } ] diff --git a/src/router/utils.ts b/src/router/utils.ts index 3ee1f29..ba3a9ba 100644 --- a/src/router/utils.ts +++ b/src/router/utils.ts @@ -72,7 +72,7 @@ function filterChildrenTree(data: RouteComponent[]) { } /** 判断两个数组彼此是否存在相同值 */ -function isOneOfArray(a: Array, b: Array) { +function isOneOfArray(a: Array, b: Array) { return Array.isArray(a) && Array.isArray(b) ? intersection(a, b).length > 0 ? true diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 238cbe9..a8b3665 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -64,6 +64,27 @@ export const useUserStore = defineStore({ }); }); }, + async refreshToken() { + return new Promise((resolve, reject) => { + http + .post("/wd-smebiz/user/refresh_token", {}) + .then(res => { + const userInfo = res.user_info; + const dataInfo: DataInfo = { + username: userInfo.name, + accessToken: res.token, + expires: new Date(new Date().getTime() + 60 * 60 * 24 * 3 * 1000), + refreshToken: res.token, + roles: userInfo.auth_data || [] + }; + setToken(dataInfo); + resolve(res); + }) + .catch(error => { + reject(error); + }); + }); + }, /** 前端登出(不调用接口) */ logOut() { this.username = ""; diff --git a/types/router.d.ts b/types/router.d.ts index 6f6880a..863ab08 100644 --- a/types/router.d.ts +++ b/types/router.d.ts @@ -1,6 +1,6 @@ // 全局路由类型声明 -import { type RouteComponent, type RouteLocationNormalized } from "vue-router"; +import {type RouteComponent, type RouteLocationNormalized} from "vue-router"; declare global { interface ToRouteType extends RouteLocationNormalized { @@ -22,7 +22,7 @@ declare global { /** 是否显示父级菜单 `可选` */ showParent?: boolean; /** 页面级别权限设置 `可选` */ - roles?: Array; + roles?: Array; /** 按钮级别权限设置 `可选` */ auths?: Array; /** 路由组件缓存(开启 `true`、关闭 `false`)`可选` */ @@ -101,5 +101,6 @@ declare global { // https://router.vuejs.org/zh/guide/advanced/meta.html#typescript declare module "vue-router" { - interface RouteMeta extends CustomizeRouteMeta {} + interface RouteMeta extends CustomizeRouteMeta { + } }