From c35f7252d100f83f9be8b21e74e6d5c29c23ac6b Mon Sep 17 00:00:00 2001 From: bestlee Date: Wed, 16 Sep 2026 11:04:34 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B7=AF=E7=94=B1=E6=9D=83=E9=99=90=E9=87=8D?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global-header/components/user-avatar.vue | 2 +- src/locales/langs/zh-cn.ts | 8 +- src/router/elegant/imports.ts | 6 +- src/router/elegant/routes.ts | 81 +- src/router/elegant/transform.ts | 7 +- src/store/modules/route/index.ts | 19 +- src/typings/elegant-router.d.ts | 15 +- .../changePassword/index.vue | 0 .../closeDoc}/index.vue | 2662 ++++++++--------- src/views/details/index/index.vue | 1331 +++++++++ src/views/my/highRisk/index.vue | 2 +- src/views/my/myTask/index.vue | 2 +- src/views/my/pendingChange/index.vue | 2 +- src/views/my/pssr/index.vue | 2 +- src/views/systemManage/role/index.vue | 34 +- 15 files changed, 2773 insertions(+), 1400 deletions(-) rename src/views/{systemManage => }/changePassword/index.vue (100%) rename src/views/{my/highRiskDetail => details/closeDoc}/index.vue (98%) create mode 100644 src/views/details/index/index.vue diff --git a/src/layouts/modules/global-header/components/user-avatar.vue b/src/layouts/modules/global-header/components/user-avatar.vue index 470e95f..fc4db1a 100644 --- a/src/layouts/modules/global-header/components/user-avatar.vue +++ b/src/layouts/modules/global-header/components/user-avatar.vue @@ -68,7 +68,7 @@ function handleDropdown(key: DropdownKey) { if (key === 'logout') { logout(); } else { - routerPushByKey('systemmanage_changepassword'); + routerPushByKey('changepassword'); } } diff --git a/src/locales/langs/zh-cn.ts b/src/locales/langs/zh-cn.ts index c4a688e..00166ff 100644 --- a/src/locales/langs/zh-cn.ts +++ b/src/locales/langs/zh-cn.ts @@ -224,14 +224,16 @@ const local: App.I18n.Schema = { 403: '无权限', 404: '页面不存在', 500: '服务器错误', + details: '详情', + details_closedoc: '资料关闭详情', + details_index: '变更详情', + changepassword: '修改密码', home: '首页', my: '我的操作台', my_initiatechange: '发起变更', my_highrisk: '本专业高风险', - my_highriskdetail: '高风险场景详情', my_mytask: '我的任务', my_mydraft: '我的草稿', - my_pending: '待我处理', my_pendingchange: '待投用变更', my_effect: '变更投入和效果', my_datachangecenter: '变更数据中心', @@ -249,12 +251,10 @@ const local: App.I18n.Schema = { systemmanage_template: '审批模板管理', my_pssr: 'PSSR监督', riskstatistics: '安全与风险统计', - report: '统计报表', signstatistics: '质量会签统计', factoryoverview: '全工厂统计概览', systemmanage_setting: '系统配置', - systemmanage_changepassword: '修改密码' }, form: { required: '不能为空', diff --git a/src/router/elegant/imports.ts b/src/router/elegant/imports.ts index 40a47a2..8d33eb3 100644 --- a/src/router/elegant/imports.ts +++ b/src/router/elegant/imports.ts @@ -20,7 +20,10 @@ export const views: Record Promise import("@/views/_builtin/500/index.vue"), changeledger_mychanges: () => import("@/views/changeLedger/myChanges/index.vue"), changeledger_workshopchanges: () => import("@/views/changeLedger/workshopChanges/index.vue"), + changepassword: () => import("@/views/changePassword/index.vue"), changestatistics: () => import("@/views/changeStatistics/index.vue"), + details_closedoc: () => import("@/views/details/closeDoc/index.vue"), + details_index: () => import("@/views/details/index/index.vue"), docs_archives: () => import("@/views/docs/archives/index.vue"), docs_query: () => import("@/views/docs/query/index.vue"), factoryoverview: () => import("@/views/factoryOverview/index.vue"), @@ -30,17 +33,14 @@ export const views: Record Promise import("@/views/my/dataChangeCenter/index.vue"), my_effect: () => import("@/views/my/effect/index.vue"), my_highrisk: () => import("@/views/my/highRisk/index.vue"), - my_highriskdetail: () => import("@/views/my/highRiskDetail/index.vue"), my_initiatechange: () => import("@/views/my/initiateChange/index.vue"), my_mydraft: () => import("@/views/my/myDraft/index.vue"), my_mytask: () => import("@/views/my/myTask/index.vue"), - my_pending: () => import("@/views/my/pending/index.vue"), my_pendingchange: () => import("@/views/my/pendingChange/index.vue"), my_pssr: () => import("@/views/my/pssr/index.vue"), report: () => import("@/views/report/index.vue"), riskstatistics: () => import("@/views/riskStatistics/index.vue"), signstatistics: () => import("@/views/signStatistics/index.vue"), - systemmanage_changepassword: () => import("@/views/systemManage/changePassword/index.vue"), systemmanage_role: () => import("@/views/systemManage/role/index.vue"), systemmanage_setting: () => import("@/views/systemManage/setting/index.vue"), systemmanage_template: () => import("@/views/systemManage/template/index.vue"), diff --git a/src/router/elegant/routes.ts b/src/router/elegant/routes.ts index 1509780..f33f371 100644 --- a/src/router/elegant/routes.ts +++ b/src/router/elegant/routes.ts @@ -70,6 +70,17 @@ export const generatedRoutes: GeneratedRoute[] = [ } ] }, + { + name: 'changepassword', + path: '/changepassword', + component: 'layout.base$view.changepassword', + meta: { + title: '修改密码', + i18nKey: 'route.changepassword', + constant: true, + hideInMenu: true + } + }, { name: 'changestatistics', path: '/changestatistics', @@ -81,6 +92,41 @@ export const generatedRoutes: GeneratedRoute[] = [ i18nKey: 'route.changestatistics' } }, + { + name: 'details', + path: '/details', + component: 'layout.base', + meta: { + title: '详情', + i18nKey: 'route.details', + constant: true, + hideInMenu: true + }, + children: [ + { + name: 'details_closedoc', + path: '/details/closedoc', + component: 'view.details_closedoc', + meta: { + title: '资料关闭详情', + i18nKey: 'route.details_closedoc', + constant: true, + hideInMenu: true + } + }, + { + name: 'details_index', + path: '/details/index', + component: 'view.details_index', + meta: { + title: '变更详情', + i18nKey: 'route.details_index', + constant: true, + hideInMenu: true + } + } + ] + }, { name: 'docs', path: '/docs', @@ -141,9 +187,9 @@ export const generatedRoutes: GeneratedRoute[] = [ props: true, meta: { title: '登录', + i18nKey: 'route.login', constant: true, - hideInMenu: true, - i18nKey: 'route.login' + hideInMenu: true } }, { @@ -193,17 +239,6 @@ export const generatedRoutes: GeneratedRoute[] = [ i18nKey: 'route.my_highrisk' } }, - { - name: 'my_highriskdetail', - path: '/my/highriskdetail', - component: 'view.my_highriskdetail', - meta: { - title: '变更详情', - constant: true, - hideInMenu: true, - i18nKey: 'route.my_highriskdetail' - } - }, { name: 'my_initiatechange', path: '/my/initiatechange', @@ -231,15 +266,6 @@ export const generatedRoutes: GeneratedRoute[] = [ i18nKey: 'route.my_mytask' } }, - { - name: 'my_pending', - path: '/my/pending', - component: 'view.my_pending', - meta: { - title: '待我处理', - i18nKey: 'route.my_pending' - } - }, { name: 'my_pendingchange', path: '/my/pendingchange', @@ -304,17 +330,6 @@ export const generatedRoutes: GeneratedRoute[] = [ i18nKey: 'route.systemmanage' }, children: [ - { - name: 'systemmanage_changepassword', - path: '/systemmanage/changepassword', - component: 'view.systemmanage_changepassword', - meta: { - title: '修改密码', - i18nKey: 'route.systemmanage_changepassword', - constant: true, - order: 5 - } - }, { name: 'systemmanage_role', path: '/systemmanage/role', diff --git a/src/router/elegant/transform.ts b/src/router/elegant/transform.ts index 3bb01df..f86f913 100644 --- a/src/router/elegant/transform.ts +++ b/src/router/elegant/transform.ts @@ -169,7 +169,11 @@ const routeMap: RouteMap = { "changeledger": "/changeledger", "changeledger_mychanges": "/changeledger/mychanges", "changeledger_workshopchanges": "/changeledger/workshopchanges", + "changepassword": "/changepassword", "changestatistics": "/changestatistics", + "details": "/details", + "details_closedoc": "/details/closedoc", + "details_index": "/details/index", "docs": "/docs", "docs_archives": "/docs/archives", "docs_query": "/docs/query", @@ -181,18 +185,15 @@ const routeMap: RouteMap = { "my_datachangecenter": "/my/datachangecenter", "my_effect": "/my/effect", "my_highrisk": "/my/highrisk", - "my_highriskdetail": "/my/highriskdetail", "my_initiatechange": "/my/initiatechange", "my_mydraft": "/my/mydraft", "my_mytask": "/my/mytask", - "my_pending": "/my/pending", "my_pendingchange": "/my/pendingchange", "my_pssr": "/my/pssr", "report": "/report", "riskstatistics": "/riskstatistics", "signstatistics": "/signstatistics", "systemmanage": "/systemmanage", - "systemmanage_changepassword": "/systemmanage/changepassword", "systemmanage_role": "/systemmanage/role", "systemmanage_setting": "/systemmanage/setting", "systemmanage_template": "/systemmanage/template", diff --git a/src/store/modules/route/index.ts b/src/store/modules/route/index.ts index 41f57e9..ccbbc67 100644 --- a/src/store/modules/route/index.ts +++ b/src/store/modules/route/index.ts @@ -232,11 +232,24 @@ export const useRouteStore = defineStore(SetupStoreId.Route, () => { /** Init static auth route */ function initStaticAuthRoute() { const { authRoutes: staticAuthRoutes } = createStaticRoutes(); - const filteredRoutes = filterRoutesByPaths(staticAuthRoutes, localStg.get('userInfo')?.perms); + // 全部静态路由 + let allowRouter = staticAuthRoutes + // 权限 + let perms = localStg.get('userInfo')?.perms || [] + if(perms){ + if(perms.length>0 && perms[0]!=='*'){ + const filteredRoutes = filterRoutesByPaths(staticAuthRoutes, perms); + if (filteredRoutes.length) { + allowRouter = filteredRoutes + } + } + } + + if (authStore.isStaticSuper) { - addAuthRoutes(filteredRoutes); + addAuthRoutes(allowRouter); } else { - const filteredAuthRoutes = filterAuthRoutesByRoles(filteredRoutes, authStore.userInfo.roles); + const filteredAuthRoutes = filterAuthRoutesByRoles(allowRouter, authStore.userInfo.roles); addAuthRoutes(filteredAuthRoutes); } diff --git a/src/typings/elegant-router.d.ts b/src/typings/elegant-router.d.ts index 55f4fe7..03cc503 100644 --- a/src/typings/elegant-router.d.ts +++ b/src/typings/elegant-router.d.ts @@ -23,7 +23,11 @@ declare module "@elegant-router/types" { "changeledger": "/changeledger"; "changeledger_mychanges": "/changeledger/mychanges"; "changeledger_workshopchanges": "/changeledger/workshopchanges"; + "changepassword": "/changepassword"; "changestatistics": "/changestatistics"; + "details": "/details"; + "details_closedoc": "/details/closedoc"; + "details_index": "/details/index"; "docs": "/docs"; "docs_archives": "/docs/archives"; "docs_query": "/docs/query"; @@ -35,18 +39,15 @@ declare module "@elegant-router/types" { "my_datachangecenter": "/my/datachangecenter"; "my_effect": "/my/effect"; "my_highrisk": "/my/highrisk"; - "my_highriskdetail": "/my/highriskdetail"; "my_initiatechange": "/my/initiatechange"; "my_mydraft": "/my/mydraft"; "my_mytask": "/my/mytask"; - "my_pending": "/my/pending"; "my_pendingchange": "/my/pendingchange"; "my_pssr": "/my/pssr"; "report": "/report"; "riskstatistics": "/riskstatistics"; "signstatistics": "/signstatistics"; "systemmanage": "/systemmanage"; - "systemmanage_changepassword": "/systemmanage/changepassword"; "systemmanage_role": "/systemmanage/role"; "systemmanage_setting": "/systemmanage/setting"; "systemmanage_template": "/systemmanage/template"; @@ -86,7 +87,9 @@ declare module "@elegant-router/types" { | "404" | "500" | "changeledger" + | "changepassword" | "changestatistics" + | "details" | "docs" | "factoryoverview" | "home" @@ -117,7 +120,10 @@ declare module "@elegant-router/types" { | "500" | "changeledger_mychanges" | "changeledger_workshopchanges" + | "changepassword" | "changestatistics" + | "details_closedoc" + | "details_index" | "docs_archives" | "docs_query" | "factoryoverview" @@ -127,17 +133,14 @@ declare module "@elegant-router/types" { | "my_datachangecenter" | "my_effect" | "my_highrisk" - | "my_highriskdetail" | "my_initiatechange" | "my_mydraft" | "my_mytask" - | "my_pending" | "my_pendingchange" | "my_pssr" | "report" | "riskstatistics" | "signstatistics" - | "systemmanage_changepassword" | "systemmanage_role" | "systemmanage_setting" | "systemmanage_template" diff --git a/src/views/systemManage/changePassword/index.vue b/src/views/changePassword/index.vue similarity index 100% rename from src/views/systemManage/changePassword/index.vue rename to src/views/changePassword/index.vue diff --git a/src/views/my/highRiskDetail/index.vue b/src/views/details/closeDoc/index.vue similarity index 98% rename from src/views/my/highRiskDetail/index.vue rename to src/views/details/closeDoc/index.vue index 2b981b2..e4f2d25 100644 --- a/src/views/my/highRiskDetail/index.vue +++ b/src/views/details/closeDoc/index.vue @@ -1,1331 +1,1331 @@ - - - - - + + + + + diff --git a/src/views/details/index/index.vue b/src/views/details/index/index.vue new file mode 100644 index 0000000..e4f2d25 --- /dev/null +++ b/src/views/details/index/index.vue @@ -0,0 +1,1331 @@ + + + + + diff --git a/src/views/my/highRisk/index.vue b/src/views/my/highRisk/index.vue index 4a4d8e7..c01598c 100644 --- a/src/views/my/highRisk/index.vue +++ b/src/views/my/highRisk/index.vue @@ -171,7 +171,7 @@ const tabChange = (k: string) => { // 高风险场景查看变更 const openSceneChange = (record: any) => { - routerPushByKey('home_highriskdetail', { query: { params: JSON.stringify(record) } }) + routerPushByKey('details_index', { query: { params: JSON.stringify(record) } }) }; // 查看分析记录 const viewAnalysis = (record: any) => { diff --git a/src/views/my/myTask/index.vue b/src/views/my/myTask/index.vue index e5ea011..98ac462 100644 --- a/src/views/my/myTask/index.vue +++ b/src/views/my/myTask/index.vue @@ -91,7 +91,7 @@ const opts = computed(() => { // 打开详情、修改重报 const openDetail = (c: any,type:string = '') => { if(type==='detail'){ - routerPushByKey("my_highriskdetail",{ query: { id: c.change_id.toString() } }); + routerPushByKey("details_index",{ query: { id: c.change_id.toString() } }); } if(type==='edit'){ routerPushByKey("my_initiatechange",{ query: { id: c.change_id.toString() } }); diff --git a/src/views/my/pendingChange/index.vue b/src/views/my/pendingChange/index.vue index f79e29e..afc6689 100644 --- a/src/views/my/pendingChange/index.vue +++ b/src/views/my/pendingChange/index.vue @@ -61,7 +61,7 @@ const downloadFile = (record: any) => { }; // 打开变更单 const openChange = (record: any) => { - routerPushByKey('home_highriskdetail', { query: { params: JSON.stringify(record) } }) + routerPushByKey('details_index', { query: { params: JSON.stringify(record) } }) }; // 填写投用日期 const fillUseTime = (record: any) => { diff --git a/src/views/my/pssr/index.vue b/src/views/my/pssr/index.vue index 9c90688..607921e 100644 --- a/src/views/my/pssr/index.vue +++ b/src/views/my/pssr/index.vue @@ -136,7 +136,7 @@ const downloadTemplate = (record: any) => { }; // 打开变更单 const openChange = (record: any) => { - routerPushByKey('home_highriskdetail', { query: { params: JSON.stringify(record) } }) + routerPushByKey('details_index', { query: { params: JSON.stringify(record) } }) }; onMounted(() => { diff --git a/src/views/systemManage/role/index.vue b/src/views/systemManage/role/index.vue index 58074b2..4f92bf0 100644 --- a/src/views/systemManage/role/index.vue +++ b/src/views/systemManage/role/index.vue @@ -169,22 +169,32 @@ const getAllPaths = (tree:any) => { }) return paths } + +// 过滤路由 +const filterRoutes = (routes:any) => { + return routes + .filter((route:any) => route.name != null && route.meta?.constant !== true) + .map((route:any) => ({ + ...route, + children: Array.isArray(route.children) + ? filterRoutes(route.children) + : route.children + })); +} // 获取所有路由 const getAllRoutes = () => { - console.log(router.getRoutes()) - const filtered = router.getRoutes().filter((item:any) => { - // 条件1:有name且非常量 - if (item.name === undefined || item.meta?.constant === true) return false; - // 条件2:path中斜杠数量 < 2(即只有一级) - const path = item.path || ''; - const slashCount = (path.match(/\//g) || []).length; - if (slashCount >= 2) return false; - return true; - }) + // 过滤路由 + const result = filterRoutes(router.getRoutes()); + console.log(router.getRoutes()); + // 过滤一级路由 + const filtered = result.filter((route:any) => { + // 计算 path 中 '/' 的个数 + const slashCount = (route.path.match(/\//g) || []).length; + return slashCount <= 1; + }); + // 复制title到顶层 const tree = filtered.map((item:any) => copyTitleToTop(item)); routeTree.value = tree; - - console.log(tree) allPaths.value = getAllPaths(tree); }