src/layout/hooks/useNav.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/router/index.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/router/utils.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/store/modules/user.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/store/types.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/utils/auth.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/home/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/register/registernav.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
types/router.d.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/layout/hooks/useNav.ts
@@ -53,10 +53,8 @@ /** 角色 */ const userRoles = computed(() => { console.log(useUserStoreHook()?.roles, "useUserStoreHook()?.roles"); return isAllEmpty(useUserStoreHook()?.roles) ? useUserStoreHook()?.roles return isAllEmpty(useUserStoreHook()?.exRoles) ? useUserStoreHook()?.exRoles : {}; }); src/router/index.ts
@@ -137,7 +137,7 @@ } if (Cookies.get(multipleTabsKey) && userInfo) { // 无权限跳转403页面 if (to.meta?.roles && !isOneOfArray(to.meta?.roles, userInfo?.roles)) { if (to.meta?.roles && !isOneOfArray(to.meta?.roles, userInfo?.exRoles)) { next({ path: "/error/403" }); } // 开启隐藏首页后在浏览器地址栏手动输入首页welcome路由则跳转到404页面 src/router/utils.ts
@@ -84,7 +84,7 @@ /** 从localStorage里取出当前登录用户的角色roles,过滤无权限的菜单 */ function filterNoPermissionTree(data: RouteComponent[]) { const currentRoles = storageLocal().getItem<DataInfo<number>>(userKey)?.roles ?? []; storageLocal().getItem<DataInfo<number>>(userKey)?.exRoles ?? []; const newTree = cloneDeep(data).filter((v: any) => isOneOfArray(v.meta?.roles, currentRoles) ); src/store/modules/user.ts
@@ -25,7 +25,7 @@ // 昵称 nickname: storageLocal().getItem<DataInfo<number>>(userKey)?.nickname ?? "", // 页面级别权限 roles: storageLocal().getItem<DataInfo<number>>(userKey)?.roles ?? [], exRoles: storageLocal().getItem<DataInfo<number>>(userKey)?.exRoles ?? [], // 按钮级别权限 permissions: storageLocal().getItem<DataInfo<number>>(userKey)?.permissions ?? [], @@ -48,10 +48,8 @@ this.nickname = nickname; }, /** 存储角色 */ SET_ROLES(roles: Array<string>) { console.log(roles, "setroles"); this.roles = roles; SET_ROLES(exRoles: Array<string>) { this.exRoles = exRoles; }, /** 存储按钮级别权限 */ SET_PERMS(permissions: Array<string>) { @@ -83,7 +81,7 @@ /** 前端登出(不调用接口) */ logOut() { this.username = ""; this.roles = []; this.exRoles = []; this.permissions = []; removeToken(); useMultiTagsStoreHook().handleTags("equal", [...routerArrays]); src/store/types.ts
@@ -40,7 +40,7 @@ avatar?: string; username?: string; nickname?: string; roles?: Array<string>; exRoles?: Array<string>; permissions?: Array<string>; isRemembered?: boolean; loginDay?: number; src/utils/auth.ts
@@ -43,7 +43,7 @@ * @description 设置`token`以及一些必要信息并采用无感刷新`token`方案 * 无感刷新:后端返回`accessToken`(访问接口使用的`token`)、`refreshToken`(用于调用刷新`accessToken`的接口时所需的`token`,`refreshToken`的过期时间(比如30天)应大于`accessToken`的过期时间(比如2小时))、`expires`(`accessToken`的过期时间) * 将`accessToken`、`expires`、`refreshToken`这三条信息放在key值为authorized-token的cookie里(过期自动销毁) * 将`avatar`、`username`、`nickname`、`roles`、`permissions`、`refreshToken`、`expires`这七条信息放在key值为`user-info`的localStorage里(利用`multipleTabsKey`当浏览器完全关闭后自动销毁) * 将`avatar`、`username`、`nickname`、`exRoles`、`permissions`、`refreshToken`、`expires`这七条信息放在key值为`user-info`的localStorage里(利用`multipleTabsKey`当浏览器完全关闭后自动销毁) */ export function setToken(data: DataInfo<Date>) { let expires = 0; src/views/home/index.vue
@@ -407,7 +407,7 @@ const userStore = useUserStore(); // 访问 state 属性 console.log(userStore.roles,'-'); // 直接获取值 // console.log(userStore.roles,'-'); // 直接获取值 defineOptions({ name: "Main" }); src/views/register/registernav.vue
@@ -390,7 +390,7 @@ <div v-if="active !== 3" class="mx-auto pt-2 pb-5 flex justify-center"> <el-button :disabled="active == 1" @click="backStep">上一步</el-button> <el-button type="primary" @click="nextStep(ruleFormRef)" ><span v-if="active == 1">同意</span>下一步</el-button ><span v-if="active == 0">同意</span>下一步</el-button > </div> </div> @@ -417,7 +417,7 @@ import { getToken } from "@/utils/auth"; import { useRoute, useRouter } from "vue-router"; const router = useRouter(); const { route, username, userRoles } = useNav(); const { route } = useNav(); defineOptions({ name: "RegisterNav" @@ -598,20 +598,20 @@ }; // 页面初始化 onMounted(async () => { // console.log( // userRoles.code, // username.value, // "hhhhhhh", // storageLocal().getItem<DataInfo<number>>(userKey)?.roles // ); // console.log(useUserStoreHook()?.roles, "useUserStoreHook()?.roles"); state.ruleForm.transactionCode = route.query.code; let nowRole = useUserStoreHook()?.exRoles; if (nowRole.length >= 1 && !route.query.code) { state.ruleForm.transactionCode = nowRole[0].code; } else { state.ruleForm.transactionCode = route.query.code; } // 企业类型 let res = await enterpriseTypes(); state.enterpriseList = res?.result; }); let active = ref(0); const nextStep = async (formEl: FormInstance | undefined) => { console.log(state.ruleForm); if (active.value >= 1) { if (!formEl) return; await formEl.validate((valid, fields) => { types/router.d.ts
@@ -23,7 +23,7 @@ /** 是否显示父级菜单 `可选` */ showParent?: boolean; /** 页面级别权限设置 `可选` */ roles?: Array<string>; exRoles?: Array<string>; /** 按钮级别权限设置 `可选` */ auths?: Array<string>; /** 路由组件缓存(开启 `true`、关闭 `false`)`可选` */