From 0f33f4a301d0ebbdcf79e664ad1ea44f662ba0b7 Mon Sep 17 00:00:00 2001 From: xlsea Date: Wed, 18 Jun 2025 22:58:48 +0800 Subject: [PATCH] =?UTF-8?q?feat(other):=20=E6=96=B0=E5=A2=9E=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E5=AD=97=E5=85=B8=E5=A4=9A=E8=AF=AD=E8=A8=80=E9=80=82?= =?UTF-8?q?=E9=85=8D=20SQL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/sql/sys_dict_data.sql | 7 ++++ docs/sql/sys_menu.sql | 58 ++++++++++++++++---------------- src/locales/langs/en-us.ts | 6 ++++ src/locales/langs/zh-cn.ts | 8 ++++- src/store/modules/route/index.ts | 2 +- src/typings/app.d.ts | 1 + src/views/system/menu/index.vue | 15 ++++++++- 7 files changed, 65 insertions(+), 32 deletions(-) create mode 100644 docs/sql/sys_dict_data.sql diff --git a/docs/sql/sys_dict_data.sql b/docs/sql/sys_dict_data.sql new file mode 100644 index 00000000..e6fec78b --- /dev/null +++ b/docs/sql/sys_dict_data.sql @@ -0,0 +1,7 @@ +-- 修改字典数据表的 list_class 字段,将 danger 改为 error +UPDATE `sys_dict_data` SET `list_class` = 'error' WHERE `list_class` = 'danger'; + +-- 字典适配多语言 +UPDATE `sys_dict_data` SET `dict_label` = 'dict.sys_user_sex.male' WHERE `dict_code` = 1; +UPDATE `sys_dict_data` SET `dict_label` = 'dict.sys_user_sex.female' WHERE `dict_code` = 2; +UPDATE `sys_dict_data` SET `dict_label` = 'dict.sys_user_sex.unknown' WHERE `dict_code` = 3; diff --git a/docs/sql/sys_menu.sql b/docs/sql/sys_menu.sql index a04de6d6..56a067a5 100644 --- a/docs/sql/sys_menu.sql +++ b/docs/sql/sys_menu.sql @@ -1,38 +1,38 @@ -- 目录类型菜单 -UPDATE `sys_menu` SET `component` = 'Layout', `icon` = 'carbon:cloud-service-management' WHERE `menu_id` = 1; -UPDATE `sys_menu` SET `component` = 'Layout', `icon` = 'stash:dashboard' WHERE `menu_id` = 2; -UPDATE `sys_menu` SET `component` = 'Layout', `icon` = 'tabler:tools' WHERE `menu_id` = 3; -UPDATE `sys_menu` SET `component` = 'Layout', `icon` = 'material-symbols:kid-star-outline' WHERE `menu_id` = 5; -UPDATE `sys_menu` SET `component` = 'Layout', `icon` = 'tabler:building-cog' WHERE `menu_id` = 6; -UPDATE `sys_menu` SET `component` = 'Layout', `icon` = 'tabler:logs' WHERE `menu_id` = 108; +UPDATE `sys_menu` SET `component` = 'Layout', `icon` = 'carbon:cloud-service-management', `menu_name` = 'route.system' WHERE `menu_id` = 1; +UPDATE `sys_menu` SET `component` = 'Layout', `icon` = 'stash:dashboard', `menu_name` = 'route.monitor' WHERE `menu_id` = 2; +UPDATE `sys_menu` SET `component` = 'Layout', `icon` = 'tabler:tools', `menu_name` = 'route.tool' WHERE `menu_id` = 3; +UPDATE `sys_menu` SET `component` = 'Layout', `icon` = 'material-symbols:kid-star-outline', `menu_name` = 'route.demo' WHERE `menu_id` = 5; +UPDATE `sys_menu` SET `component` = 'Layout', `icon` = 'tabler:building-cog', `menu_name` = 'menu.system_tenant' WHERE `menu_id` = 6; +UPDATE `sys_menu` SET `component` = 'Layout', `icon` = 'tabler:logs', `menu_name` = 'menu.system_log' WHERE `menu_id` = 108; -- 页面类型 -UPDATE `sys_menu` SET `icon` = 'ic:round-manage-accounts' WHERE `menu_id` = 100; -UPDATE `sys_menu` SET `icon` = 'carbon:user-role' WHERE `menu_id` = 101; -UPDATE `sys_menu` SET `icon` = 'material-symbols:route' WHERE `menu_id` = 102; -UPDATE `sys_menu` SET `icon` = 'mingcute:department-line' WHERE `menu_id` = 103; -UPDATE `sys_menu` SET `icon` = 'hugeicons:permanent-job' WHERE `menu_id` = 104; -UPDATE `sys_menu` SET `icon` = 'qlementine-icons:dictionary-16' WHERE `menu_id` = 105; -UPDATE `sys_menu` SET `icon` = 'carbon:parameter' WHERE `menu_id` = 106; -UPDATE `sys_menu` SET `icon` = 'solar:chat-line-outline' WHERE `menu_id` = 107; -UPDATE `sys_menu` SET `icon` = 'majesticons:status-online-line' WHERE `menu_id` = 109; -UPDATE `sys_menu` SET `icon` = 'simple-icons:redis' WHERE `menu_id` = 113; -UPDATE `sys_menu` SET `icon` = 'material-symbols:code-blocks-outline' WHERE `menu_id` = 115; -UPDATE `sys_menu` SET `icon` = 'material-symbols:attach-file' WHERE `menu_id` = 118; -UPDATE `sys_menu` SET `icon` = 'tabler:building-skyscraper' WHERE `menu_id` = 121; -UPDATE `sys_menu` SET `icon` = 'lets-icons:package-box-alt' WHERE `menu_id` = 122; -UPDATE `sys_menu` SET `icon` = 'tabler:device-imac-cog' WHERE `menu_id` = 123; -UPDATE `sys_menu` SET `icon` = 'carbon:operations-record' WHERE `menu_id` = 500; -UPDATE `sys_menu` SET `icon` = 'tabler:login-2' WHERE `menu_id` = 501; -UPDATE `sys_menu` SET `icon` = 'gg:debug' WHERE `menu_id` = 1500; -UPDATE `sys_menu` SET `icon` = 'gg:debug' WHERE `menu_id` = 1506; -UPDATE `sys_menu` SET `path` = 'oss/config', `component` = 'system/oss-config/index', `icon` = 'hugeicons:configuration-01' WHERE `menu_id` = 133; +UPDATE `sys_menu` SET `icon` = 'ic:round-manage-accounts', `menu_name` = 'route.system_user' WHERE `menu_id` = 100; +UPDATE `sys_menu` SET `icon` = 'carbon:user-role', `menu_name` = 'route.system_role' WHERE `menu_id` = 101; +UPDATE `sys_menu` SET `icon` = 'material-symbols:route', `menu_name` = 'route.system_menu' WHERE `menu_id` = 102; +UPDATE `sys_menu` SET `icon` = 'mingcute:department-line', `menu_name` = 'route.system_dept' WHERE `menu_id` = 103; +UPDATE `sys_menu` SET `icon` = 'hugeicons:permanent-job', `menu_name` = 'route.system_post' WHERE `menu_id` = 104; +UPDATE `sys_menu` SET `icon` = 'qlementine-icons:dictionary-16', `menu_name` = 'route.system_dict' WHERE `menu_id` = 105; +UPDATE `sys_menu` SET `icon` = 'carbon:parameter', `menu_name` = 'route.system_config' WHERE `menu_id` = 106; +UPDATE `sys_menu` SET `icon` = 'solar:chat-line-outline', `menu_name` = 'route.system_notice' WHERE `menu_id` = 107; +UPDATE `sys_menu` SET `icon` = 'majesticons:status-online-line', `menu_name` = 'route.monitor_online' WHERE `menu_id` = 109; +UPDATE `sys_menu` SET `icon` = 'simple-icons:redis', `menu_name` = 'route.monitor_cache' WHERE `menu_id` = 113; +UPDATE `sys_menu` SET `icon` = 'material-symbols:code-blocks-outline', `menu_name` = 'route.tool_gen' WHERE `menu_id` = 115; +UPDATE `sys_menu` SET `icon` = 'material-symbols:attach-file', `menu_name` = 'route.system_oss' WHERE `menu_id` = 118; +UPDATE `sys_menu` SET `icon` = 'tabler:building-skyscraper', `menu_name` = 'route.system_tenant' WHERE `menu_id` = 121; +UPDATE `sys_menu` SET `icon` = 'lets-icons:package-box-alt', `menu_name` = 'route.system_tenant-package' WHERE `menu_id` = 122; +UPDATE `sys_menu` SET `icon` = 'tabler:device-imac-cog', `menu_name` = 'route.system_client' WHERE `menu_id` = 123; +UPDATE `sys_menu` SET `icon` = 'carbon:operations-record', `menu_name` = 'route.monitor_operlog' WHERE `menu_id` = 500; +UPDATE `sys_menu` SET `icon` = 'tabler:login-2', `menu_name` = 'route.monitor_logininfor' WHERE `menu_id` = 501; +UPDATE `sys_menu` SET `icon` = 'gg:debug', `menu_name` = 'route.demo_demo' WHERE `menu_id` = 1500; +UPDATE `sys_menu` SET `icon` = 'gg:debug', `menu_name` = 'route.demo_tree' WHERE `menu_id` = 1506; +UPDATE `sys_menu` SET `path` = 'oss/config', `component` = 'system/oss-config/index', `icon` = 'hugeicons:configuration-01', `menu_name` = 'route.system_oss-config' WHERE `menu_id` = 133; -- IFrame 类型 -UPDATE `sys_menu` SET `component` = 'FrameView', `query_param` = 'https://ruoyi.xlsea.cn/admin/', `is_frame` = 2, `icon` = 'bx:bxl-spring-boot' WHERE `menu_id` = 117; -UPDATE `sys_menu` SET `component` = 'FrameView', `query_param` = 'https://preview.snailjob.opensnail.com/', `is_frame` = 2, `icon` = 'gridicons:scheduled' WHERE `menu_id` = 120; +UPDATE `sys_menu` SET `component` = 'FrameView', `query_param` = 'https://ruoyi.xlsea.cn/admin/', `is_frame` = 2, `icon` = 'bx:bxl-spring-boot', `menu_name` = 'menu.monitor_admin' WHERE `menu_id` = 117; +UPDATE `sys_menu` SET `component` = 'FrameView', `query_param` = 'https://preview.snailjob.opensnail.com/', `is_frame` = 2, `icon` = 'gridicons:scheduled', `menu_name` = 'menu.monitor_snail-job' WHERE `menu_id` = 120; -- 外链类型 -UPDATE `sys_menu` SET `path` = 'https://gitee.com/xlsea/ruoyi-plus-soybean', `component` = 'FrameView', `icon` = 'local-icon-gitee' WHERE `menu_id` = 4; +UPDATE `sys_menu` SET `path` = 'https://gitee.com/xlsea/ruoyi-plus-soybean', `component` = 'FrameView', `icon` = 'local-icon-gitee', `menu_name` = 'RuoYi-Plus-Soybean' WHERE `menu_id` = 4; -- plus-ui 需要禁用的页面 UPDATE `sys_menu` SET `status` = '1' WHERE `menu_id` IN ( '116', '130', '131', '132', '11700', '11701' ); diff --git a/src/locales/langs/en-us.ts b/src/locales/langs/en-us.ts index b50b8b5d..3b11b80d 100644 --- a/src/locales/langs/en-us.ts +++ b/src/locales/langs/en-us.ts @@ -234,6 +234,12 @@ const local: App.I18n.Schema = { exception_404: '404', exception_500: '500' }, + menu: { + system_tenant: 'Tenant Management', + system_log: 'Log Management', + 'monitor_snail-job': 'Job Management', + monitor_admin: 'Admin Monitor' + }, dict: { sys_user_sex: { male: 'Male', diff --git a/src/locales/langs/zh-cn.ts b/src/locales/langs/zh-cn.ts index b1c758d8..afd63cd0 100644 --- a/src/locales/langs/zh-cn.ts +++ b/src/locales/langs/zh-cn.ts @@ -221,7 +221,7 @@ const local: App.I18n.Schema = { system_notice: '通知公告', 'social-callback': '单点登录回调', system_oss: '文件管理', - 'system_oss-config': 'OSS配置', + 'system_oss-config': 'OSS 配置', monitor_cache: '缓存监控', monitor_online: '在线用户', 'user-center': '个人中心', @@ -234,6 +234,12 @@ const local: App.I18n.Schema = { exception_404: '404', exception_500: '500' }, + menu: { + system_tenant: '租户管理', + system_log: '日志管理', + 'monitor_snail-job': '任务调度中心', + monitor_admin: 'Admin 监控' + }, dict: { sys_user_sex: { male: '男', diff --git a/src/store/modules/route/index.ts b/src/store/modules/route/index.ts index 21aec092..a1a848a7 100644 --- a/src/store/modules/route/index.ts +++ b/src/store/modules/route/index.ts @@ -94,7 +94,7 @@ export const useRouteStore = defineStore(SetupStoreId.Route, () => { // eslint-disable-next-line complexity function parseRouter(route: ElegantConstRoute, parent?: ElegantConstRoute) { route.meta = route.meta ? route.meta : { title: route.name }; - if (route.meta.title.startsWith('route.')) { + if (route.meta.title.startsWith('route.') || route.meta.title.startsWith('menu.')) { route.meta.i18nKey = route.meta.title as App.I18n.I18nKey; } const isLayout = route.component === 'Layout'; diff --git a/src/typings/app.d.ts b/src/typings/app.d.ts index 99669476..4fb61fe4 100644 --- a/src/typings/app.d.ts +++ b/src/typings/app.d.ts @@ -467,6 +467,7 @@ declare namespace App { }; }; route: Record; + menu: Record; dict: Record>; page: { common: { diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue index 3c1887f3..e028bebc 100644 --- a/src/views/system/menu/index.vue +++ b/src/views/system/menu/index.vue @@ -108,6 +108,14 @@ async function handleDeleteMenu(id?: CommonType.IdType) { getMeunTree(); } +function renderLabel({ option }: { option: TreeOption }) { + let label = String(option.menuName); + if (label?.startsWith('route.') || label?.startsWith('menu.')) { + label = $t(label as App.I18n.I18nKey); + } + return
{label}
; +} + function renderPrefix({ option }: { option: TreeOption }) { const renderLocalIcon = String(option.icon).startsWith('local-icon-'); const icon = renderLocalIcon ? undefined : String(option.icon); @@ -347,6 +355,7 @@ const btnColumns: DataTableColumns = [ label-field="menuName" virtual-scroll checkable + :render-label="renderLabel" :render-prefix="renderPrefix" :render-suffix="renderSuffix" @update:selected-keys="(_: Array, option: Array) => handleClickTree(option)" @@ -420,7 +429,11 @@ const btnColumns: DataTableColumns = [ - {{ currentMenu.menuName }} + {{ + currentMenu.menuName?.startsWith('route.') || currentMenu.menuName?.startsWith('menu.') + ? $t(currentMenu.menuName) + : currentMenu.menuName + }} {{ currentMenu.component }}