diff --git a/apps/web-antd/src/locales/langs/en-US.json b/apps/web-antd/src/locales/langs/en-US.json index 45590224..2fac357b 100644 --- a/apps/web-antd/src/locales/langs/en-US.json +++ b/apps/web-antd/src/locales/langs/en-US.json @@ -82,5 +82,59 @@ "downloadLoading": "Downloading... Please wait.", "preview": "Preview" } + }, + "menu": { + "system": { + "root": "System", + "user": "User", + "role": "Role", + "menu": "Menu", + "dept": "Department", + "post": "Post", + "dict": "Dictionary", + "config": "Parameter Settings", + "notice": "Notifications", + "log": { + "root": "Log", + "operation": "Operation Log", + "login": "Login Log" + }, + "oss": "File", + "client": "Client" + }, + "tenant": { + "root": "Tenant", + "package": "Package" + }, + "monitor": { + "root": "System Monitoring", + "online": "Online Users", + "cache": "Cache Monitoring", + "admin": "Admin Monitoring", + "job": "Task Scheduling Center" + }, + "tool": { + "root": "System Tools", + "gen": "Code Generation" + }, + "workflow": { + "root": "Workflow", + "category": "Process Category", + "model": "Model", + "define": "Process Definition", + "monitor": { + "root": "Process Monitoring", + "instance": "Process Instance", + "todo": "Pending Tasks" + }, + "form": "Form" + }, + "task": { + "root": "My Tasks", + "apply": "My Initiated Tasks", + "todo": "My Pending Tasks", + "done": "My Completed Tasks", + "cc": "My CC" + } } } diff --git a/apps/web-antd/src/locales/langs/zh-CN.json b/apps/web-antd/src/locales/langs/zh-CN.json index c0df070b..b6036dea 100644 --- a/apps/web-antd/src/locales/langs/zh-CN.json +++ b/apps/web-antd/src/locales/langs/zh-CN.json @@ -82,5 +82,59 @@ "downloadLoading": "下载中, 请稍后...", "preview": "预览" } + }, + "menu": { + "system": { + "root": "系统管理", + "user": "用户管理", + "role": "角色管理", + "menu": "菜单管理", + "dept": "部门管理", + "post": "岗位管理", + "dict": "字典管理", + "config": "参数设置", + "notice": "通知公告", + "log": { + "root": "日志管理", + "operation": "操作日志", + "login": "登录日志" + }, + "oss": "文件管理", + "client": "客户端管理" + }, + "tenant": { + "root": "租户管理", + "package": "套餐管理" + }, + "monitor": { + "root": "系统监控", + "online": "在线用户", + "cache": "缓存监控", + "admin": "Admin监控", + "job": "任务调度中心" + }, + "tool": { + "root": "系统工具", + "gen": "代码生成" + }, + "workflow": { + "root": "工作流", + "category": "流程分类", + "model": "模型管理", + "define": "流程定义", + "monitor": { + "root": "流程监控", + "instance": "流程实例", + "todo": "待办任务" + }, + "form": "表单管理" + }, + "task": { + "root": "我的任务", + "apply": "我发起的", + "todo": "我的待办", + "done": "我的已办", + "cc": "我的抄送" + } } } diff --git a/apps/web-antd/src/views/system/menu/data.tsx b/apps/web-antd/src/views/system/menu/data.tsx index 4c00484d..e78318d5 100644 --- a/apps/web-antd/src/views/system/menu/data.tsx +++ b/apps/web-antd/src/views/system/menu/data.tsx @@ -1,4 +1,5 @@ import { DictEnum } from '@vben/constants'; +import { $t } from '@vben/locales'; import { getPopupContainer } from '@vben/utils'; import { type FormSchemaGetter, type VxeGridProps, z } from '#/adapter'; @@ -56,6 +57,10 @@ export const columns: VxeGridProps['columns'] = [ field: 'menuName', treeNode: true, width: 200, + slots: { + // 需要i18n支持 否则返回原始值 + default: ({ row }) => $t(row.menuName), + }, }, { title: '图标', @@ -195,6 +200,7 @@ export const drawerSchema: FormSchemaGetter = () => [ component: 'Input', fieldName: 'menuName', label: '菜单名称', + help: '支持i18n写法, 如: menu.system.user', rules: 'required', }, { diff --git a/apps/web-antd/src/views/system/role/role-drawer.vue b/apps/web-antd/src/views/system/role/role-drawer.vue index 1147de6b..0ef1ab43 100644 --- a/apps/web-antd/src/views/system/role/role-drawer.vue +++ b/apps/web-antd/src/views/system/role/role-drawer.vue @@ -3,7 +3,7 @@ import { computed, ref } from 'vue'; import { useVbenDrawer } from '@vben/common-ui'; import { $t } from '@vben/locales'; -import { cloneDeep } from '@vben/utils'; +import { cloneDeep, eachTree } from '@vben/utils'; import { useVbenForm } from '#/adapter'; import { menuTreeSelect, roleMenuTreeSelect } from '#/api/system/menu'; @@ -36,11 +36,20 @@ async function setupMenuTree(id?: number | string) { if (id) { const resp = await roleMenuTreeSelect(id); formApi.setFieldValue('menuIds', resp.checkedKeys); + const menus = resp.menus; + // i18n处理 + eachTree(menus, (node) => { + node.label = $t(node.label); + }); // 设置菜单信息 menuTree.value = resp.menus; } else { const resp = await menuTreeSelect(); formApi.setFieldValue('menuIds', []); + // i18n处理 + eachTree(resp, (node) => { + node.label = $t(node.label); + }); // 设置菜单信息 menuTree.value = resp; } diff --git a/apps/web-antd/src/views/system/tenantPackage/data.ts b/apps/web-antd/src/views/system/tenantPackage/data.ts index 7e8fba8c..98c46da1 100644 --- a/apps/web-antd/src/views/system/tenantPackage/data.ts +++ b/apps/web-antd/src/views/system/tenantPackage/data.ts @@ -19,7 +19,7 @@ export const columns: VxeGridProps['columns'] = [ field: 'remark', }, { - title: '租户状态', + title: '状态', field: 'status', slots: { default: 'status' }, }, diff --git a/apps/web-antd/src/views/system/tenantPackage/tenant-package-drawer.vue b/apps/web-antd/src/views/system/tenantPackage/tenant-package-drawer.vue index 8f8d4b11..cbfffaec 100644 --- a/apps/web-antd/src/views/system/tenantPackage/tenant-package-drawer.vue +++ b/apps/web-antd/src/views/system/tenantPackage/tenant-package-drawer.vue @@ -3,7 +3,7 @@ import { computed, ref } from 'vue'; import { useVbenDrawer } from '@vben/common-ui'; import { $t } from '@vben/locales'; -import { cloneDeep, listToTree } from '@vben/utils'; +import { cloneDeep, eachTree, listToTree } from '@vben/utils'; import { useVbenForm } from '#/adapter'; import { menuList, tenantPackageMenuTreeSelect } from '#/api/system/menu'; @@ -45,6 +45,10 @@ const menuTree = ref([]); async function setupMenuTree() { const resp = await menuList(); const treeData = listToTree(resp, { id: 'menuId' }); + // i18n处理 + eachTree(treeData, (node) => { + node.menuName = $t(node.menuName); + }); // 设置菜单信息 menuTree.value = treeData; } @@ -122,7 +126,7 @@ function handleMenuCheckStrictlyChange(value: boolean) { ref="menuSelectRef" v-bind="slotProps" :check-strictly="formApi.form.values.menuCheckStrictly" - :expand-all-on-init="true" + :expand-all-on-init="false" :field-names="{ title: 'menuName', key: 'menuId' }" :tree-data="menuTree" @check-strictly-change="handleMenuCheckStrictlyChange"