From 81df96bf4542ce8d8ef4a428a4460dd554e4719a Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Sun, 9 Mar 2025 23:26:53 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E6=98=93=E6=94=AF=E4=BB=98=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=9B=BA=E5=AE=9A=E6=94=AF=E4=BB=98=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=EF=BC=8C=E9=80=82=E5=90=88=E6=B2=A1=E6=9C=89=E6=94=B6=E9=93=B6?= =?UTF-8?q?=E5=8F=B0=E7=89=88=E6=9C=AC=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/ui/certd-client/src/router/guard.ts | 15 +---------- .../src/store/modules/settings.ts | 19 ++++++++++++-- packages/ui/certd-client/src/style/certd.less | 8 ++++++ .../ui/certd-client/src/utils/util.tree.ts | 13 +++++++++- .../src/vben/stores/modules/user.ts | 2 +- .../views/sys/settings/header-menus/crud.tsx | 26 +++++++------------ 6 files changed, 48 insertions(+), 35 deletions(-) diff --git a/packages/ui/certd-client/src/router/guard.ts b/packages/ui/certd-client/src/router/guard.ts index 52ff37fd..d87f7f73 100644 --- a/packages/ui/certd-client/src/router/guard.ts +++ b/packages/ui/certd-client/src/router/guard.ts @@ -83,20 +83,7 @@ function setupAccessGuard(router: Router) { } const settingsStore = useSettingStore(); - let headerMenus: any[] = settingsStore.getHeaderMenus; - headerMenus = headerMenus.map((menu: any) => { - return { - ...menu, - name: menu.title, - meta: { - title: menu.title, - icon: menu.icon, - link: menu.link, - order: 99999 - } - }; - }); - debugger; + const headerMenus: any[] = settingsStore.getHeaderMenus; let allMenus = await generateMenus(frameworkRoutes[0].children, router); allMenus = allMenus.concat(headerMenus); const accessibleMenus = buildAccessedMenus(allMenus); diff --git a/packages/ui/certd-client/src/store/modules/settings.ts b/packages/ui/certd-client/src/store/modules/settings.ts index 25500f0d..950e0bd0 100644 --- a/packages/ui/certd-client/src/store/modules/settings.ts +++ b/packages/ui/certd-client/src/store/modules/settings.ts @@ -11,6 +11,8 @@ import { mitter } from "/@/utils/util.mitt"; import { env } from "/@/utils/util.env"; import { updatePreferences } from "/@/vben/preferences"; import { useTitle } from "@vueuse/core"; +import { utils } from "/@/utils"; +import { cloneDeep } from "lodash-es"; export interface SettingState { sysPublic?: SysPublicSetting; installInfo?: { @@ -98,9 +100,22 @@ export const useSettingStore = defineStore({ }; return vipLabelMap[this.plusInfo?.vipType || "free"]; }, - getHeaderMenus(): { menus: any[] } { + getHeaderMenus(): any[] { // @ts-ignore - return this.headerMenus?.menus || { menus: [] }; + let menus = this.headerMenus?.menus || []; + menus = cloneDeep(menus); + return utils.tree.treeMap(menus, (menu: any) => { + return { + ...menu, + name: menu.title, + meta: { + title: menu.title, + icon: menu.icon, + link: menu.path, + order: 99999 + } + }; + }); }, isSuiteEnabled(): boolean { // @ts-ignore diff --git a/packages/ui/certd-client/src/style/certd.less b/packages/ui/certd-client/src/style/certd.less index 5cb15398..75239446 100644 --- a/packages/ui/certd-client/src/style/certd.less +++ b/packages/ui/certd-client/src/style/certd.less @@ -81,3 +81,11 @@ } } } + + +body a{ + color: #1890ff; + &:hover{ + color: #40a9ff; + } +} \ No newline at end of file diff --git a/packages/ui/certd-client/src/utils/util.tree.ts b/packages/ui/certd-client/src/utils/util.tree.ts index b2f79a64..893de579 100644 --- a/packages/ui/certd-client/src/utils/util.tree.ts +++ b/packages/ui/certd-client/src/utils/util.tree.ts @@ -7,6 +7,17 @@ export function eachTree(tree: any[], callback: (item: any) => void) { }); } +export function treeMap(tree: any[], mapFunc: (item: any) => {}) { + return tree.map((item: any) => { + const newItem: any = mapFunc(item); + if (item.children) { + newItem.children = treeMap(item.children, mapFunc); + } + return newItem; + }); +} + export const treeUtils = { - eachTree + eachTree, + treeMap }; diff --git a/packages/ui/certd-client/src/vben/stores/modules/user.ts b/packages/ui/certd-client/src/vben/stores/modules/user.ts index b5ffb6ba..5db9bb42 100644 --- a/packages/ui/certd-client/src/vben/stores/modules/user.ts +++ b/packages/ui/certd-client/src/vben/stores/modules/user.ts @@ -9,7 +9,7 @@ interface BasicUserInfo { /** * 用户昵称 */ - realName: string; + nickName: string; /** * 用户角色 */ diff --git a/packages/ui/certd-client/src/views/sys/settings/header-menus/crud.tsx b/packages/ui/certd-client/src/views/sys/settings/header-menus/crud.tsx index d125c9e8..55b73219 100644 --- a/packages/ui/certd-client/src/views/sys/settings/header-menus/crud.tsx +++ b/packages/ui/certd-client/src/views/sys/settings/header-menus/crud.tsx @@ -6,6 +6,7 @@ import { useSettingStore } from "/@/store/modules/settings"; import { cloneDeep, find, merge, remove } from "lodash-es"; import { nanoid } from "nanoid"; import { SettingsSave } from "../api"; +import { utils } from "/@/utils"; export default function ({ crudExpose, context }: CreateCrudOptionsProps): CreateCrudOptionsRet { const { crudBinding } = crudExpose; @@ -18,20 +19,11 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat await SettingsSave("sys.header.menus", menus); } - function eachTree(tree: any[], callback: (item: any) => void) { - tree.forEach((item) => { - callback(item); - if (item.children) { - eachTree(item.children, callback); - } - }); - } - const expandedRowKeys = ref([]); const pageRequest = async (query: UserPageQuery): Promise => { const records = cloneDeep(settingStore.headerMenus?.menus || []); expandedRowKeys.value = []; - eachTree(records, (item) => { + utils.tree.eachTree(records, (item: any) => { if (item.children && item.children.length > 0) { expandedRowKeys.value.push(item.id); } @@ -47,7 +39,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat const editRequest = async ({ form, row }: EditReq) => { form.id = row.id; let found: any = undefined; - eachTree(settingStore.headerMenus?.menus || [], (item) => { + utils.tree.eachTree(settingStore.headerMenus?.menus || [], (item) => { if (item.id === row.id) { merge(item, form); found = item; @@ -57,9 +49,9 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat return found; }; const delRequest = async ({ row }: DelReq) => { - eachTree([{ children: settingStore.headerMenus?.menus }], (item) => { + utils.tree.eachTree([{ children: settingStore.headerMenus?.menus }], (item) => { if (item.children) { - remove(item.children, (child) => child.id === row.id); + remove(item.children, (child: any) => child.id === row.id); } }); await saveMenus(); @@ -68,7 +60,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat const addRequest = async ({ form }: AddReq) => { form.id = nanoid(); if (form.parentId) { - eachTree(settingStore.headerMenus?.menus || [], (item) => { + utils.tree.eachTree(settingStore.headerMenus?.menus || [], (item) => { if (item.id === form.parentId) { if (!item.children) { item.children = []; @@ -79,7 +71,6 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat } else { settingStore.headerMenus?.menus.push(form); } - parent.value = null; await saveMenus(); return form; }; @@ -175,14 +166,15 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat form: { rules: [ { - required: true, + required: false, message: "请输入链接" }, { type: "url", message: "请输入正确的链接" } - ] + ], + helper: "如果有子菜单,这里链接不要填" } } }