From b94b71d44d62802bb8093f64a202d0176fdade50 Mon Sep 17 00:00:00 2001 From: zhangwei <1504152376@qq.com> Date: 星期二, 05 八月 2025 17:00:46 +0800 Subject: [PATCH] '一些更改' --- src/views/system/dept/index.vue | 26 +------- src/router/modules/item.ts | 23 +++++-- src/store/modules/user.ts | 17 ++++- src/store/types.ts | 1 types/router.d.ts | 2 src/views/mine/index.vue | 3 + src/views/system/dept/utils/hook.tsx | 8 ++ src/utils/auth.ts | 28 +++++++-- src/router/modules/mine.ts | 2 src/views/system/dept/utils/rule.ts | 38 ++++++------ src/router/index.ts | 12 +-- src/store/modules/multiTags.ts | 2 src/router/utils.ts | 11 +++ 13 files changed, 101 insertions(+), 72 deletions(-) diff --git a/src/router/index.ts b/src/router/index.ts index 1d1dbca..4f09942 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -128,7 +128,7 @@ if (!item.meta.title) return ""; const Title = getConfig().Title; if (Title) document.title = `${item.meta.title} | ${Title}`; - else document.title = item.meta.title as string; + else document.title = item.meta.title; }); } /** 濡傛灉宸茬粡鐧诲綍骞跺瓨鍦ㄧ櫥褰曚俊鎭悗涓嶈兘璺宠浆鍒拌矾鐢辩櫧鍚嶅崟锛岃�屾槸缁х画淇濇寔鍦ㄥ綋鍓嶉〉闈� */ @@ -137,7 +137,7 @@ } if (Cookies.get(multipleTabsKey) && userInfo) { // 鏃犳潈闄愯烦杞�403椤甸潰 - if (to.meta?.roles && !isOneOfArray(to.meta?.roles, userInfo?.exRoles)) { + if (to.meta?.roles && !isOneOfArray(to.meta?.roles, userInfo?.roles)) { next({ path: "/error/403" }); } // 寮�鍚殣钘忛椤靛悗鍦ㄦ祻瑙堝櫒鍦板潃鏍忔墜鍔ㄨ緭鍏ラ椤祑elcome璺敱鍒欒烦杞埌404椤甸潰 @@ -197,12 +197,8 @@ if (whiteList.indexOf(to.path) !== -1) { next(); } else { - // if (noLoginList.indexOf(to.path) == -1) { - next(); - // } else { - // removeToken(); - // next({ path: "/login" }); - // } + removeToken(); + next({ path: "/login" }); } } else { next(); diff --git a/src/router/modules/item.ts b/src/router/modules/item.ts index 28141ae..7c93c3e 100644 --- a/src/router/modules/item.ts +++ b/src/router/modules/item.ts @@ -1,12 +1,21 @@ export default { path: "/item", - component: () => import("@/views/system/dept/index.vue"), - name: "item", - // redirect: "/error/403", meta: { - icon: "ri/information-line", - // showLink: hasFlash, title: "椤圭洰绠$悊", - rank: 9 - } + icon: "mdi:chart-timeline" + }, + children: [ + { + // path闅忎究鍐欙紝浣嗗墠闈㈠繀椤绘湁涓� `/` + path: "/item", + // component瀵瑰簲鐨勫�煎墠涓嶉渶瑕佸姞 / 鍊煎搴旂殑鏄疄闄呬笟鍔� `.vue` 鎴� `.tsx` 浠g爜璺緞 + component: () => import("@/views/system/dept/index.vue"), + name: "item", + meta: { + title: "椤圭洰绠$悊", + roles: ["GYS"] + // showLink:false + } + } + ] } satisfies RouteConfigsTable; diff --git a/src/router/modules/mine.ts b/src/router/modules/mine.ts index 47dd1bb..3ec70cd 100644 --- a/src/router/modules/mine.ts +++ b/src/router/modules/mine.ts @@ -4,7 +4,7 @@ name: "Mine", // redirect: "/error/403", meta: { - icon: "ep/home-filled", + icon: "mdi:account-outline", // showLink: false, title: "涓汉涓績", rank: 9 diff --git a/src/router/utils.ts b/src/router/utils.ts index 9137806..b5e524f 100644 --- a/src/router/utils.ts +++ b/src/router/utils.ts @@ -26,6 +26,7 @@ const IFrame = () => import("@/layout/frame.vue"); // https://cn.vitejs.dev/guide/features.html#glob-import const modulesRoutes = import.meta.glob("/src/views/**/*.{vue,tsx}"); +const quanxianList = ["/item"]; // 鍔ㄦ�佽矾鐢� import { getAsyncRoutes } from "@/api/routes"; @@ -55,9 +56,15 @@ /** 杩囨护meta涓璼howLink涓篺alse鐨勮彍鍗� */ function filterTree(data: RouteComponent[]) { + const hasFlsh = useUserStoreHook().nowRole.hasFlsh; const newTree = cloneDeep(data).filter( - (v: { meta: { showLink: boolean } }) => v.meta?.showLink !== false + (v: { meta: { showLink: boolean } }) => { + quanxianList.includes(v.path) ? (v.meta.showLink = hasFlsh) : null; + return v.meta?.showLink !== false; + } ); + console.log(newTree); + newTree.forEach( (v: { children }) => v.children && (v.children = filterTree(v.children)) ); @@ -85,7 +92,7 @@ /** 浠巐ocalStorage閲屽彇鍑哄綋鍓嶇櫥褰曠敤鎴风殑瑙掕壊roles锛岃繃婊ゆ棤鏉冮檺鐨勮彍鍗� */ function filterNoPermissionTree(data: RouteComponent[]) { const currentRoles = - storageLocal().getItem<DataInfo<number>>(userKey)?.exRoles ?? []; + storageLocal().getItem<DataInfo<number>>(userKey)?.roles ?? []; const newTree = cloneDeep(data).filter((v: any) => isOneOfArray(v.meta?.roles, currentRoles) ); diff --git a/src/store/modules/multiTags.ts b/src/store/modules/multiTags.ts index 41346b8..839b8f7 100644 --- a/src/store/modules/multiTags.ts +++ b/src/store/modules/multiTags.ts @@ -62,8 +62,6 @@ value?: T | multiType, position?: positionType ): T { - console.log(mode, "--------------",value); - switch (mode) { case "equal": this.multiTags = value; diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index b4f62ea..fabcc62 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -38,7 +38,7 @@ username: storageLocal().getItem<DataInfo<number>>(userKey)?.username ?? "", // 鏄电О nickname: storageLocal().getItem<DataInfo<number>>(userKey)?.nickname ?? "", - // 椤甸潰绾у埆鏉冮檺 + // 褰撳墠瑙掕壊鍒楄〃 exRoles: storageLocal().getItem<DataInfo<number>>(userKey)?.exRoles ?? [], // 鎸夐挳绾у埆鏉冮檺 permissions: @@ -51,7 +51,9 @@ enterpriseInfo: storageLocal().getItem<CusExtendDto>("enterpriseInfo") ?? {}, nowRole: storageLocal().getItem<nowRoleType>("nowRole") ?? {}, - rolesList: storageLocal().getItem<DataInfo<number>>("rolesList") ?? [] + rolesList: storageLocal().getItem<DataInfo<number>>("rolesList") ?? [], + // 椤甸潰绾у埆鏉冮檺 + roles: storageLocal().getItem<DataInfo<number>>(userKey)?.roles ?? [] }), actions: { /** 瀛樺偍澶村儚 */ @@ -67,15 +69,19 @@ this.nickname = nickname; }, /** 瀛樺偍鐢ㄦ埛瑙掕壊 */ - SET_ROLES(exRoles: Array<string>) { + SET_EXROLES(exRoles: Array<string>) { this.exRoles = exRoles; + }, + /** 瀛樺偍瑙掕壊 */ + SET_ROLES(roles: Array<string>) { + this.roles = roles; }, /** 瀛樺偍瑙掕壊褰撳墠瑙掕壊 */ SET_NOW_ROLE(nowRole: nowRoleType) { this.nowRole = nowRole; }, /** 瀛樺偍瑙掕壊鍒楄〃 */ - SET_ROLES_LIST(rolesList: Array<string>) { + SET_EXROLES_LIST(rolesList: Array<string>) { this.rolesList = rolesList; }, /** 瀛樺偍鎸夐挳绾у埆鏉冮檺 */ @@ -100,6 +106,7 @@ getLogin(obj) .then(data => { if (data?.code == 200) { + data.result.roles = [obj.exRuleCode]; setToken(data.result); this.getNowRole(obj.exRuleCode); } @@ -144,6 +151,7 @@ getChangeLogoInExRule(obj) .then(async data => { if (data?.code == 200) { + data.result.roles = [obj.ruleCode]; setToken(data.result); this.getNowRole(obj.ruleCode); await this.getCusExtendInfo(); @@ -174,6 +182,7 @@ logOut() { this.username = ""; this.exRoles = []; + this.roles = []; this.permissions = []; removeToken(); useMultiTagsStoreHook().handleTags("equal", [...routerArrays]); diff --git a/src/store/types.ts b/src/store/types.ts index 6f92baa..f80f533 100644 --- a/src/store/types.ts +++ b/src/store/types.ts @@ -47,6 +47,7 @@ username?: string; nickname?: string; exRoles?: Array<string>; + roles?: Array<string>; permissions?: Array<string>; isRemembered?: boolean; loginDay?: number; diff --git a/src/utils/auth.ts b/src/utils/auth.ts index d4646a5..65b67b0 100644 --- a/src/utils/auth.ts +++ b/src/utils/auth.ts @@ -16,8 +16,10 @@ username?: string; /** 鏄电О */ nickname?: string; - /** 褰撳墠鐧诲綍鐢ㄦ埛鐨勮鑹� */ + /** 褰撳墠鐧诲綍鐢ㄦ埛鐨勮鑹插垪琛� */ exRoles?: Array<string>; + /** 褰撳墠鐧诲綍鐢ㄦ埛鐨勮鑹� */ + roles?: Array<string>; /** 褰撳墠鐧诲綍鐢ㄦ埛鐨勬寜閽骇鍒潈闄� */ permissions?: Array<string>; } @@ -193,11 +195,19 @@ : {} ); - function setUserKey({ avatar, username, nickname, exRoles, permissions }) { + function setUserKey({ + avatar, + username, + nickname, + exRoles, + permissions, + roles + }) { useUserStoreHook().SET_AVATAR(avatar); useUserStoreHook().SET_USERNAME(username); useUserStoreHook().SET_NICKNAME(nickname); - useUserStoreHook().SET_ROLES(exRoles); + useUserStoreHook().SET_EXROLES(exRoles); + useUserStoreHook().SET_ROLES(roles); useUserStoreHook().SET_PERMS(permissions); storageLocal().setItem(userKey, { refreshToken, @@ -206,17 +216,19 @@ username, nickname, exRoles, + roles, permissions }); } - if (data.exRoles) { - const { username, exRoles } = data; + if (data.exRoles && data.roles) { + const { username, exRoles, roles } = data; setUserKey({ avatar: data?.avatar ?? "", username, nickname: data?.nickname ?? "", exRoles, + roles, permissions: data?.permissions ?? [] }); } else { @@ -228,6 +240,8 @@ storageLocal().getItem<DataInfo<number>>(userKey)?.nickname ?? ""; const exRoles = storageLocal().getItem<DataInfo<number>>(userKey)?.exRoles ?? []; + const roles = + storageLocal().getItem<DataInfo<number>>(userKey)?.roles ?? []; const permissions = storageLocal().getItem<DataInfo<number>>(userKey)?.permissions ?? []; setUserKey({ @@ -235,6 +249,7 @@ username, nickname, exRoles, + roles, permissions }); } @@ -250,7 +265,7 @@ } export function setRoleListInfo(data: DataInfo<string>) { - useUserStoreHook().SET_ROLES_LIST(data); + useUserStoreHook().SET_EXROLES_LIST(data); storageLocal().setItem("rolesList", data); } @@ -262,6 +277,7 @@ }); data = { ...obj, ...data }; } + useUserStoreHook().SET_ROLES([data.name]); useUserStoreHook().SET_NOW_ROLE(data); storageLocal().setItem("nowRole", data); } diff --git a/src/views/mine/index.vue b/src/views/mine/index.vue index 89bb176..91d9e6e 100644 --- a/src/views/mine/index.vue +++ b/src/views/mine/index.vue @@ -11,6 +11,8 @@ import { cusExtendInfo, changeCusExtend } from "@/api/mine"; import { Edit } from "@element-plus/icons-vue"; import { enterpriseTypes } from "@/api/register/index"; +import { initRouter, getTopMenu, handleAliveRoute } from "@/router/utils"; + const ruleFormRef = ref<FormInstance>(); const isLoading = ref(false); const showDialog = ref(false); @@ -326,6 +328,7 @@ await useUserStoreHook().changeLogoInExRule({ ruleCode: useUserStoreHook().nowRole.code }); + initRouter(); message("淇敼鎴愬姛锛�", { type: "success" }); diff --git a/src/views/system/dept/index.vue b/src/views/system/dept/index.vue index 3470945..f156df0 100644 --- a/src/views/system/dept/index.vue +++ b/src/views/system/dept/index.vue @@ -68,9 +68,8 @@ class="w-full" :options="state.regionList" :props="{ - value: 'id', + value: 'code', label: 'name', - emitPath: false, children: 'regions' }" clearable @@ -180,12 +179,7 @@ </el-col> <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4"> <el-form-item label-width="40"> - <el-button - type="primary" - :icon="useRenderIcon('ri/search-line')" - :loading="loading" - @click="onSearch" - > + <el-button type="primary" :loading="loading" @click="onSearch"> 鎼滅储 </el-button> <!-- <el-button @@ -194,13 +188,7 @@ > 閲嶇疆 </el-button> --> - <el-button - type="primary" - :icon="useRenderIcon(AddFill)" - @click="openDialog()" - > - 鏂板 - </el-button> + <el-button type="primary" @click="openDialog()"> 鏂板 </el-button> </el-form-item> </el-col> </el-row> @@ -251,9 +239,7 @@ :size="size" :icon="useRenderIcon(EditPen)" @click="openDialog('淇敼', row)" - > - 淇敼 - </el-button> + /> <!-- <el-button class="reset-margin" link @@ -275,9 +261,7 @@ type="primary" :size="size" :icon="useRenderIcon(Delete)" - > - 鍒犻櫎 - </el-button> + /> </template> </el-popconfirm> </template> diff --git a/src/views/system/dept/utils/hook.tsx b/src/views/system/dept/utils/hook.tsx index bb68750..1825877 100644 --- a/src/views/system/dept/utils/hook.tsx +++ b/src/views/system/dept/utils/hook.tsx @@ -181,11 +181,11 @@ } }; async function onSearch() { - loading.value = true; const obj = cloneDeep(form); obj.tousu = obj.tousu.join(""); obj.zhiyi = obj.zhiyi.join(""); - obj.xingzhengquyu = obj.xingzhengquyu.join(""); + obj.xingzhengquyu = obj.xingzhengquyu ? obj.xingzhengquyu.join("") : ""; + loading.value = true; const { result } = await zhaobiaoPageOrder(obj); // 杩欓噷鏄繑鍥炰竴缁存暟缁勭粨鏋勶紝鍓嶇鑷澶勭悊鎴愭爲缁撴瀯锛岃繑鍥炴牸寮忚姹傦細鍞竴id鍔犵埗鑺傜偣parentId锛宲arentId鍙栫埗鑺傜偣id const newData = result.items; loading.value = false; @@ -216,6 +216,8 @@ } function openDialog(title = "鏂板", row?: FormItemProps) { + console.log(row,'-'); + addDialog({ title: `${title}椤圭洰`, props: { @@ -299,6 +301,8 @@ } else { closeLoading(); const fail = []; + console.log(obj); + for (const key in obj) { fail.push(obj[key][0].message); } diff --git a/src/views/system/dept/utils/rule.ts b/src/views/system/dept/utils/rule.ts index 3e6edbc..4b05d23 100644 --- a/src/views/system/dept/utils/rule.ts +++ b/src/views/system/dept/utils/rule.ts @@ -26,9 +26,9 @@ ], // 閲囪喘棰勭畻锛堝彲閫夛紝闇�涓烘暟瀛楋級 caigouyusuan: [ - { required: true, message: "璇疯緭鍏ラ噰璐绠�", trigger: "blur" }, - { type: "number", message: "閲囪喘棰勭畻蹇呴』涓烘暟瀛�", trigger: "blur" }, - { min: 0, message: "閲囪喘棰勭畻涓嶈兘涓鸿礋鏁�", trigger: "blur" } + { required: true, message: "璇疯緭鍏ラ噰璐绠�", trigger: "blur" } + // { type: "number", message: "閲囪喘棰勭畻蹇呴』涓烘暟瀛�", trigger: "blur" }, + // { min: 0, message: "閲囪喘棰勭畻涓嶈兘涓鸿礋鏁�", trigger: "blur" } ], // 瀹氭爣瑙勫垯锛堝彲閫夛級 dingbiaoguize: [ @@ -37,15 +37,15 @@ ], // 鎶ュ悕璐癸紙鍙�夛紝闇�涓烘暟瀛楋級 baomingfei: [ - { required: true, message: "璇疯緭鍏ユ姤鍚嶈垂", trigger: "blur" }, - { type: "number", message: "鎶ュ悕璐瑰繀椤讳负鏁板瓧", trigger: "blur" }, - { min: 0, message: "鎶ュ悕璐逛笉鑳戒负璐熸暟", trigger: "blur" } + { required: true, message: "璇疯緭鍏ユ姤鍚嶈垂", trigger: "blur" } + // { type: "number", message: "鎶ュ悕璐瑰繀椤讳负鏁板瓧", trigger: "blur" }, + // { min: 0, message: "鎶ュ悕璐逛笉鑳戒负璐熸暟", trigger: "blur" } ], // 鎶曟爣淇濊瘉閲戯紙鍙�夛紝闇�涓烘暟瀛楋級 toubiaobaozhengjin: [ - { required: true, message: "璇疯緭鍏ユ姇鏍囦繚璇侀噾璐�", trigger: "blur" }, - { type: "number", message: "鎶曟爣淇濊瘉閲戝繀椤讳负鏁板瓧", trigger: "blur" }, - { min: 0, message: "鎶曟爣淇濊瘉閲戜笉鑳戒负璐熸暟", trigger: "blur" } + { required: true, message: "璇疯緭鍏ユ姇鏍囦繚璇侀噾璐�", trigger: "blur" } + // { type: "number", message: "鎶曟爣淇濊瘉閲戝繀椤讳负鏁板瓧", trigger: "blur" }, + // { min: 0, message: "鎶曟爣淇濊瘉閲戜笉鑳戒负璐熸暟", trigger: "blur" } ], // 鑱斿悎浣撴姇鏍囷紙鍙�夛紝闇�涓哄竷灏斿�硷級 lianhetitoubiao: [ @@ -78,18 +78,18 @@ { type: "array", message: "琛屾斂鍖哄煙蹇呴』涓烘暟缁勬牸寮�", trigger: "change" } ], // 琛屾斂鍖哄煙鍚嶇О锛堝彲閫夛級 - xingzhengquyuName: [ - { required: false }, - { max: 100, message: "琛屾斂鍖哄煙鍚嶇О闀垮害涓嶈兘瓒呰繃100涓瓧绗�", trigger: "blur" } - ], + // xingzhengquyuName: [ + // { required: false }, + // { max: 100, message: "琛屾斂鍖哄煙鍚嶇О闀垮害涓嶈兘瓒呰繃100涓瓧绗�", trigger: "blur" } + // ], // 鏈烘瀯浠g爜锛堝彲閫夛紝楠岃瘉鏍煎紡锛� jigoudaima: [ - { required: true, message: "璇疯緭鍏ユ満鏋勪唬鐮�", trigger: "blur" }, - { - pattern: /^[A-Z0-9]{8}-[A-Z0-9]{1}$/, - message: "鏈烘瀯浠g爜鏍煎紡涓嶆纭�", - trigger: "blur" - } + { required: true, message: "璇疯緭鍏ユ満鏋勪唬鐮�", trigger: "blur" } + // { + // pattern: /^[A-Z0-9]{8}-[A-Z0-9]{1}$/, + // message: "鏈烘瀯浠g爜鏍煎紡涓嶆纭�", + // trigger: "blur" + // } ], // 浠g爜绫诲瀷锛堝彲閫夛級 daimaleixing: [ diff --git a/types/router.d.ts b/types/router.d.ts index 415a953..f0d0a7e 100644 --- a/types/router.d.ts +++ b/types/router.d.ts @@ -24,6 +24,8 @@ showParent?: boolean; /** 椤甸潰绾у埆鏉冮檺璁剧疆 `鍙�塦 */ exRoles?: Array<string>; + // 椤甸潰绾у埆鏉冮檺璁剧疆 + roles?: Array<string>; /** 鎸夐挳绾у埆鏉冮檺璁剧疆 `鍙�塦 */ auths?: Array<string>; /** 璺敱缁勪欢缂撳瓨锛堝紑鍚� `true`銆佸叧闂� `false`锛塦鍙�塦 */ -- Gitblit v1.9.1