feat(other): 新增菜单字典多语言适配 SQL
This commit is contained in:
parent
27f061957e
commit
0f33f4a301
7
docs/sql/sys_dict_data.sql
Normal file
7
docs/sql/sys_dict_data.sql
Normal file
@ -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;
|
@ -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` = 'carbon:cloud-service-management', `menu_name` = 'route.system' WHERE `menu_id` = 1;
|
||||||
UPDATE `sys_menu` SET `component` = 'Layout', `icon` = 'stash:dashboard' WHERE `menu_id` = 2;
|
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' WHERE `menu_id` = 3;
|
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' WHERE `menu_id` = 5;
|
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' WHERE `menu_id` = 6;
|
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' WHERE `menu_id` = 108;
|
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` = 'ic:round-manage-accounts', `menu_name` = 'route.system_user' WHERE `menu_id` = 100;
|
||||||
UPDATE `sys_menu` SET `icon` = 'carbon:user-role' WHERE `menu_id` = 101;
|
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' WHERE `menu_id` = 102;
|
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' WHERE `menu_id` = 103;
|
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' WHERE `menu_id` = 104;
|
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' WHERE `menu_id` = 105;
|
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' WHERE `menu_id` = 106;
|
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' WHERE `menu_id` = 107;
|
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' WHERE `menu_id` = 109;
|
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' WHERE `menu_id` = 113;
|
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' WHERE `menu_id` = 115;
|
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' WHERE `menu_id` = 118;
|
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' WHERE `menu_id` = 121;
|
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' WHERE `menu_id` = 122;
|
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' WHERE `menu_id` = 123;
|
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' WHERE `menu_id` = 500;
|
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' WHERE `menu_id` = 501;
|
UPDATE `sys_menu` SET `icon` = 'tabler:login-2', `menu_name` = 'route.monitor_logininfor' WHERE `menu_id` = 501;
|
||||||
UPDATE `sys_menu` SET `icon` = 'gg:debug' WHERE `menu_id` = 1500;
|
UPDATE `sys_menu` SET `icon` = 'gg:debug', `menu_name` = 'route.demo_demo' WHERE `menu_id` = 1500;
|
||||||
UPDATE `sys_menu` SET `icon` = 'gg:debug' WHERE `menu_id` = 1506;
|
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' WHERE `menu_id` = 133;
|
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 类型
|
-- 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://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' WHERE `menu_id` = 120;
|
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 需要禁用的页面
|
-- plus-ui 需要禁用的页面
|
||||||
UPDATE `sys_menu` SET `status` = '1' WHERE `menu_id` IN ( '116', '130', '131', '132', '11700', '11701' );
|
UPDATE `sys_menu` SET `status` = '1' WHERE `menu_id` IN ( '116', '130', '131', '132', '11700', '11701' );
|
||||||
|
@ -234,6 +234,12 @@ const local: App.I18n.Schema = {
|
|||||||
exception_404: '404',
|
exception_404: '404',
|
||||||
exception_500: '500'
|
exception_500: '500'
|
||||||
},
|
},
|
||||||
|
menu: {
|
||||||
|
system_tenant: 'Tenant Management',
|
||||||
|
system_log: 'Log Management',
|
||||||
|
'monitor_snail-job': 'Job Management',
|
||||||
|
monitor_admin: 'Admin Monitor'
|
||||||
|
},
|
||||||
dict: {
|
dict: {
|
||||||
sys_user_sex: {
|
sys_user_sex: {
|
||||||
male: 'Male',
|
male: 'Male',
|
||||||
|
@ -221,7 +221,7 @@ const local: App.I18n.Schema = {
|
|||||||
system_notice: '通知公告',
|
system_notice: '通知公告',
|
||||||
'social-callback': '单点登录回调',
|
'social-callback': '单点登录回调',
|
||||||
system_oss: '文件管理',
|
system_oss: '文件管理',
|
||||||
'system_oss-config': 'OSS配置',
|
'system_oss-config': 'OSS 配置',
|
||||||
monitor_cache: '缓存监控',
|
monitor_cache: '缓存监控',
|
||||||
monitor_online: '在线用户',
|
monitor_online: '在线用户',
|
||||||
'user-center': '个人中心',
|
'user-center': '个人中心',
|
||||||
@ -234,6 +234,12 @@ const local: App.I18n.Schema = {
|
|||||||
exception_404: '404',
|
exception_404: '404',
|
||||||
exception_500: '500'
|
exception_500: '500'
|
||||||
},
|
},
|
||||||
|
menu: {
|
||||||
|
system_tenant: '租户管理',
|
||||||
|
system_log: '日志管理',
|
||||||
|
'monitor_snail-job': '任务调度中心',
|
||||||
|
monitor_admin: 'Admin 监控'
|
||||||
|
},
|
||||||
dict: {
|
dict: {
|
||||||
sys_user_sex: {
|
sys_user_sex: {
|
||||||
male: '男',
|
male: '男',
|
||||||
|
@ -94,7 +94,7 @@ export const useRouteStore = defineStore(SetupStoreId.Route, () => {
|
|||||||
// eslint-disable-next-line complexity
|
// eslint-disable-next-line complexity
|
||||||
function parseRouter(route: ElegantConstRoute, parent?: ElegantConstRoute) {
|
function parseRouter(route: ElegantConstRoute, parent?: ElegantConstRoute) {
|
||||||
route.meta = route.meta ? route.meta : { title: route.name };
|
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;
|
route.meta.i18nKey = route.meta.title as App.I18n.I18nKey;
|
||||||
}
|
}
|
||||||
const isLayout = route.component === 'Layout';
|
const isLayout = route.component === 'Layout';
|
||||||
|
1
src/typings/app.d.ts
vendored
1
src/typings/app.d.ts
vendored
@ -467,6 +467,7 @@ declare namespace App {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
route: Record<I18nRouteKey, string>;
|
route: Record<I18nRouteKey, string>;
|
||||||
|
menu: Record<string, string>;
|
||||||
dict: Record<string, Record<string, string>>;
|
dict: Record<string, Record<string, string>>;
|
||||||
page: {
|
page: {
|
||||||
common: {
|
common: {
|
||||||
|
@ -108,6 +108,14 @@ async function handleDeleteMenu(id?: CommonType.IdType) {
|
|||||||
getMeunTree();
|
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 <div>{label}</div>;
|
||||||
|
}
|
||||||
|
|
||||||
function renderPrefix({ option }: { option: TreeOption }) {
|
function renderPrefix({ option }: { option: TreeOption }) {
|
||||||
const renderLocalIcon = String(option.icon).startsWith('local-icon-');
|
const renderLocalIcon = String(option.icon).startsWith('local-icon-');
|
||||||
const icon = renderLocalIcon ? undefined : String(option.icon);
|
const icon = renderLocalIcon ? undefined : String(option.icon);
|
||||||
@ -347,6 +355,7 @@ const btnColumns: DataTableColumns<Api.System.Menu> = [
|
|||||||
label-field="menuName"
|
label-field="menuName"
|
||||||
virtual-scroll
|
virtual-scroll
|
||||||
checkable
|
checkable
|
||||||
|
:render-label="renderLabel"
|
||||||
:render-prefix="renderPrefix"
|
:render-prefix="renderPrefix"
|
||||||
:render-suffix="renderSuffix"
|
:render-suffix="renderSuffix"
|
||||||
@update:selected-keys="(_: Array<string & number>, option: Array<TreeOption | null>) => handleClickTree(option)"
|
@update:selected-keys="(_: Array<string & number>, option: Array<TreeOption | null>) => handleClickTree(option)"
|
||||||
@ -420,7 +429,11 @@ const btnColumns: DataTableColumns<Api.System.Menu> = [
|
|||||||
<DictTag size="small" :value="currentMenu.status" dict-code="sys_normal_disable" />
|
<DictTag size="small" :value="currentMenu.status" dict-code="sys_normal_disable" />
|
||||||
</NDescriptionsItem>
|
</NDescriptionsItem>
|
||||||
<NDescriptionsItem :label="$t('page.system.menu.menuName')">
|
<NDescriptionsItem :label="$t('page.system.menu.menuName')">
|
||||||
{{ currentMenu.menuName }}
|
{{
|
||||||
|
currentMenu.menuName?.startsWith('route.') || currentMenu.menuName?.startsWith('menu.')
|
||||||
|
? $t(currentMenu.menuName)
|
||||||
|
: currentMenu.menuName
|
||||||
|
}}
|
||||||
</NDescriptionsItem>
|
</NDescriptionsItem>
|
||||||
<NDescriptionsItem v-if="isMenu" :label="$t('page.system.menu.component')">
|
<NDescriptionsItem v-if="isMenu" :label="$t('page.system.menu.component')">
|
||||||
{{ currentMenu.component }}
|
{{ currentMenu.component }}
|
||||||
|
Loading…
Reference in New Issue
Block a user