新增权限管理,打开页面token刷新和路由重新初始化过滤

This commit is contained in:
wcq 2023-09-15 10:03:44 +08:00
parent ced198d097
commit 7b8854ae37
9 changed files with 66 additions and 24 deletions

View File

@ -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
// })
}
});
</script>

View File

@ -38,6 +38,7 @@ const modules: Record<string, any> = import.meta.glob(
"!./modules/companyDataManage.ts",
"!./modules/rateManage.ts",
"!./modules/companyUserManage.ts",
// "!./modules/user.ts",
],
{
eager: true

View File

@ -9,7 +9,8 @@ export default {
keepAlive: true,
icon: "edit",
meta: {
rank:1
rank:1,
roles:[1]
}
}
// children: [

View File

@ -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]
}
}

View File

@ -25,6 +25,7 @@ export default {
keepAlive: true,
icon: "edit",
rank: 10,
roles:[4]
},
// children: [
// {

View File

@ -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]
}
}
]

View File

@ -72,7 +72,7 @@ function filterChildrenTree(data: RouteComponent[]) {
}
/** 判断两个数组彼此是否存在相同值 */
function isOneOfArray(a: Array<string>, b: Array<string>) {
function isOneOfArray(a: Array<string|number>, b: Array<string|number>) {
return Array.isArray(a) && Array.isArray(b)
? intersection(a, b).length > 0
? true

View File

@ -64,6 +64,27 @@ export const useUserStore = defineStore({
});
});
},
async refreshToken() {
return new Promise<any>((resolve, reject) => {
http
.post<any, any>("/wd-smebiz/user/refresh_token", {})
.then(res => {
const userInfo = res.user_info;
const dataInfo: DataInfo<Date> = {
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 = "";

7
types/router.d.ts vendored
View File

@ -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<string>;
roles?: Array<string | number>;
/** 按钮级别权限设置 `可选` */
auths?: Array<string>;
/** 路由组件缓存(开启 `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 {
}
}