diff --git a/src/locales/en.ts b/src/locales/en.ts index 9d67620d..0b970e36 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -52,6 +52,7 @@ export default { status: 'Status', createTime: 'Create Time', updateTime: 'Update Time', + operate: 'Operation', copy: 'Copy', copySuccess: 'Copy Success', copyError: 'Copy Error' @@ -455,6 +456,235 @@ export default { btn_zoom_out: 'Zoom out', preview: 'Preivew' }, + SystemManagement: { + Dept: { + name: 'Department Name', + statusLabel: 'Department Status', + status: 'Status', + leader: 'Leader', + sort: 'Sort', + phone: 'Phone', + email: 'Email', + parent: 'Parent Department', + createTime: 'Create Time', + actions: 'Actions', + searchNamePlaceholder: 'Please input department name', + searchStatusPlaceholder: 'Please select department status', + parentPlaceholder: 'Please select parent department', + leaderPlaceholder: 'Please select leader', + phonePlaceholder: 'Please input phone number', + emailPlaceholder: 'Please input email', + statusPlaceholder: 'Please select status', + parentRequired: 'Parent department is required', + nameRequired: 'Department name is required', + sortRequired: 'Sort is required', + emailInvalid: 'Please input a valid email address', + phoneInvalid: 'Please input a valid mobile number', + statusRequired: 'Status is required', + toggleExpand: 'Expand / Collapse' + }, + User: { + workNo: 'Work No', + username: 'User Name', + nickname: 'Nickname', + dept: 'Department', + mobile: 'Mobile', + email: 'Email', + sex: 'User Gender', + post: 'Post', + remark: 'Remark', + status: 'Status', + createTime: 'Create Time', + actions: 'Actions', + password: 'User Password', + role: 'Role', + import: 'User Import', + importDragText: 'Drag file here, or', + importClickText: 'click to upload', + importUpdateSupport: 'Update existing user data if present', + importFormatLimit: 'Only xls, xlsx format files are allowed.', + importDownloadTemplate: 'Download template', + searchWorkNoPlaceholder: 'Please input work No', + searchUsernamePlaceholder: 'Please input user name', + searchMobilePlaceholder: 'Please input mobile', + searchStatusPlaceholder: 'Please select status', + searchCreateTimeStartPlaceholder: 'Start date', + searchCreateTimeEndPlaceholder: 'End date', + deptPlaceholder: 'Please select department', + sexPlaceholder: 'Please select', + postPlaceholder: 'Please select', + remarkPlaceholder: 'Please input content', + usernamePlaceholder: 'Please input user name', + passwordPlaceholder: 'Please input user password', + workNoPlaceholder: 'Please input work No', + mobilePlaceholder: 'Please input mobile', + emailPlaceholder: 'Please input email', + usernameRequired: 'User name is required', + workNoRequired: 'Work No is required', + passwordRequired: 'User password is required', + deptRequired: 'Department is required', + emailInvalid: 'Please input a valid email address', + mobileInvalid: 'Please input a valid mobile number', + importFileRequired: 'Please upload file', + importSuccessTip: 'Upload success: {createCount}; Update success: {updateCount}; Update failed: {failureCount};', + importFailed: 'Upload failed, please upload again!', + importFileLimit: 'Only one file can be uploaded!', + resetPasswordTitle: 'Please input new password for "{username}"', + resetPasswordSuccess: 'Modified successfully, new password is: {password}', + resetPassword: 'Reset Password', + assignRole: 'Assign Role', + changeStatusConfirm: 'Are you sure to {action} user "{username}"?' + }, + Post: { + code: 'Post Code', + name: 'Post Name', + sort: 'Post Order', + remark: 'Post Remark', + status: 'Status', + createTime: 'Create Time', + actions: 'Actions', + searchNamePlaceholder: 'Please input post name', + searchCodePlaceholder: 'Please input post code', + searchStatusPlaceholder: 'Please select status', + codePlaceholder: 'Please input post code', + namePlaceholder: 'Please input post name', + sortPlaceholder: 'Please input post order', + statusPlaceholder: 'Please select status', + remarkPlaceholder: 'Please input remark', + codeRequired: 'Post code is required', + nameRequired: 'Post name is required', + sortRequired: 'Post order is required', + statusRequired: 'Post status is required' + }, + Role: { + code: 'Role Code', + name: 'Role Name', + type: 'Role Type', + sort: 'Display Order', + remark: 'Remark', + status: 'Status', + menuPermission: 'Menu Permission', + dataPermission: 'Data Permission', + dataScope: 'Permission Scope', + selectAll: 'Select/Deselect All', + expandCollapse: 'Expand/Collapse All', + parentChildLink: 'Parent-child linkage (select parent to select children)', + yes: 'Yes', + no: 'No', + loadingText: 'Loading, please wait', + searchCodePlaceholder: 'Please input role code', + searchNamePlaceholder: 'Please input role name', + searchStatusPlaceholder: 'Please select status', + codePlaceholder: 'Please input role code', + namePlaceholder: 'Please input role name', + sortPlaceholder: 'Please input display order', + statusPlaceholder: 'Please select status', + remarkPlaceholder: 'Please input remark', + codeRequired: 'Role code is required', + nameRequired: 'Role name is required', + sortRequired: 'Display order is required', + statusRequired: 'Status is required' + }, + Menu: { + name: 'Menu Name', + parent: 'Parent Menu', + type: 'Menu Type', + icon: 'Menu Icon', + path: 'Route Path', + component: 'Component Path', + componentName: 'Component Name', + permission: 'Permission', + sort: 'Display Order', + status: 'Menu Status', + visible: 'Visible', + alwaysShow: 'Always Show', + keepAlive: 'Keep Alive', + actions: 'Actions', + searchNamePlaceholder: 'Please input menu name', + searchStatusPlaceholder: 'Please select menu status', + namePlaceholder: 'Please input menu name', + pathPlaceholder: 'Please input route path', + componentPlaceholder: 'For example: system/user/index', + componentNamePlaceholder: 'For example: SystemUser', + permissionPlaceholder: 'Please input permission', + sortPlaceholder: 'Please input display order', + toggleExpand: 'Expand / Collapse', + refreshCache: 'Refresh Menu Cache', + updateCacheConfirm: 'The cache will be updated and the browser will be refreshed!', + updateCacheTitle: 'Refresh Menu Cache', + visibleShow: 'Show', + visibleHide: 'Hide', + always: 'Always', + notAlways: 'Not Always', + keep: 'Cache', + notKeep: 'No Cache', + parentRoot: 'Root Menu', + nameRequired: 'Menu name is required', + sortRequired: 'Menu order is required', + pathRequired: 'Route path is required', + statusRequired: 'Status is required', + pathMustStartWithSlash: 'Path must start with /', + pathMustNotStartWithSlash: 'Path must not start with /', + pathTooltipTitle: 'Route Path', + pathTooltipMessage: + 'Route path to access, such as `user`. For external link, start with `http(s)://`.', + permissionTooltipTitle: 'Permission', + permissionTooltipMessage: + "Permission string on Controller method, e.g. @PreAuthorize(`@ss.hasPermission('system:user:list')`)", + visibleTooltipTitle: 'Visible', + visibleTooltipMessage: + 'When hidden is selected, the route will not appear in the sidebar but can still be accessed', + alwaysShowTooltipTitle: 'Always Show', + alwaysShowTooltipMessage: + 'When not selected, if the menu has only one child, the parent will be hidden and the child will be displayed directly', + keepAliveTooltipTitle: 'Keep Alive', + keepAliveTooltipMessage: + 'When cached is selected, it will be cached by `keep-alive`, and the "Component Name" field must be filled in' + }, + Dict: { + id: 'Dict ID', + name: 'Dict Name', + type: 'Dict Type', + label: 'Dict Label', + value: 'Dict Value', + sort: 'Dict Sort', + status: 'Status', + remark: 'Remark', + colorType: 'Color Type', + cssClass: 'CSS Class', + createTime: 'Create Time', + actions: 'Actions', + data: 'Data', + searchNamePlaceholder: 'Please input dict name', + searchTypePlaceholder: 'Please input dict type', + searchStatusPlaceholder: 'Please select dict status', + searchLabelPlaceholder: 'Please input dict label', + searchDataStatusPlaceholder: 'Please select data status', + namePlaceholder: 'Please input dict name', + typePlaceholder: 'Please input dict type', + labelPlaceholder: 'Please input data label', + valuePlaceholder: 'Please input data value', + sortPlaceholder: 'Please input data order', + remarkPlaceholder: 'Please input content', + statusPlaceholder: 'Please select status', + colorTypePlaceholder: 'Please select color type', + cssClassPlaceholder: 'Please input CSS Class', + nameRequired: 'Dict name is required', + typeRequired: 'Dict type is required', + statusRequired: 'Status is required', + labelRequired: 'Data label is required', + valueRequired: 'Data value is required', + sortRequired: 'Data order is required', + colorTypeDefault: 'Default', + colorTypePrimary: 'Primary', + colorTypeSuccess: 'Success', + colorTypeInfo: 'Info', + colorTypeWarning: 'Warning', + colorTypeDanger: 'Danger', + typeExportFilename: 'DictType.xls', + dataExportFilename: 'DictData.xls' + } + }, basedata: { product: { category: { diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index 59c3d96f..54e97d2d 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -52,6 +52,7 @@ export default { status: '状态', createTime: '创建时间', updateTime: '更新时间', + operate: '操作', copy: '复制', copySuccess: '复制成功', copyError: '复制失败' @@ -458,6 +459,231 @@ export default { } } }, + SystemManagement: { + Dept: { + name: '部门名称', + statusLabel: '部门状态', + status: '状态', + leader: '负责人', + sort: '显示排序', + phone: '联系电话', + email: '邮箱', + parent: '上级部门', + createTime: '创建时间', + actions: '操作', + searchNamePlaceholder: '请输入部门名称', + searchStatusPlaceholder: '请选择部门状态', + parentPlaceholder: '请选择上级部门', + leaderPlaceholder: '请选择负责人', + phonePlaceholder: '请输入联系电话', + emailPlaceholder: '请输入邮箱', + statusPlaceholder: '请选择状态', + parentRequired: '上级部门不能为空', + nameRequired: '部门名称不能为空', + sortRequired: '显示排序不能为空', + emailInvalid: '请输入正确的邮箱地址', + phoneInvalid: '请输入正确的手机号码', + statusRequired: '状态不能为空', + toggleExpand: '展开/折叠' + }, + User: { + workNo: '工号', + username: '用户名称', + nickname: '用户昵称', + dept: '归属部门', + mobile: '手机号码', + email: '邮箱', + sex: '用户性别', + post: '岗位', + remark: '备注', + status: '状态', + createTime: '创建时间', + actions: '操作', + password: '用户密码', + role: '角色', + import: '用户导入', + importDragText: '将文件拖到此处,或', + importClickText: '点击上传', + importUpdateSupport: '是否更新已经存在的用户数据', + importFormatLimit: '仅允许导入 xls、xlsx 格式文件。', + importDownloadTemplate: '下载模板', + searchWorkNoPlaceholder: '请输入工号', + searchUsernamePlaceholder: '请输入用户名称', + searchMobilePlaceholder: '请输入手机号码', + searchStatusPlaceholder: '请选择状态', + searchCreateTimeStartPlaceholder: '开始日期', + searchCreateTimeEndPlaceholder: '结束日期', + deptPlaceholder: '请选择归属部门', + sexPlaceholder: '请选择', + postPlaceholder: '请选择', + remarkPlaceholder: '请输入内容', + usernamePlaceholder: '请输入用户名称', + passwordPlaceholder: '请输入用户密码', + workNoPlaceholder: '请输入工号', + mobilePlaceholder: '请输入手机号码', + emailPlaceholder: '请输入邮箱', + usernameRequired: '用户名称不能为空', + workNoRequired: '工号不能为空', + passwordRequired: '用户密码不能为空', + deptRequired: '部门不能为空', + emailInvalid: '请输入正确的邮箱地址', + mobileInvalid: '请输入正确的手机号码', + importFileRequired: '请上传文件', + importSuccessTip: '上传成功数量:{createCount};更新成功数量:{updateCount};更新失败数量:{failureCount};', + importFailed: '上传失败,请您重新上传!', + importFileLimit: '最多只能上传一个文件!', + resetPasswordTitle: '请输入"{username}"的新密码', + resetPasswordSuccess: '修改成功,新密码是:{password}', + resetPassword: '重置密码', + assignRole: '分配角色', + changeStatusConfirm: '确认要"{action}""{username}"用户吗?' + }, + Post: { + code: '岗位编码', + name: '岗位名称', + sort: '岗位顺序', + remark: '岗位备注', + status: '状态', + createTime: '创建时间', + actions: '操作', + searchNamePlaceholder: '请输入岗位名称', + searchCodePlaceholder: '请输入岗位编码', + searchStatusPlaceholder: '请选择状态', + codePlaceholder: '请输入岗位编码', + namePlaceholder: '请输入岗位名称', + sortPlaceholder: '请输入岗位顺序', + statusPlaceholder: '请选择状态', + remarkPlaceholder: '请输入备注', + codeRequired: '岗位编码不能为空', + nameRequired: '岗位名称不能为空', + sortRequired: '岗位顺序不能为空', + statusRequired: '岗位状态不能为空' + }, + Role: { + code: '角色编码', + name: '角色名称', + type: '角色类型', + sort: '显示顺序', + remark: '备注', + status: '状态', + menuPermission: '菜单权限', + dataPermission: '数据权限', + dataScope: '权限范围', + selectAll: '全选/全不选', + expandCollapse: '全部展开/折叠', + parentChildLink: '父子联动(选中父节点,自动选择子节点)', + yes: '是', + no: '否', + loadingText: '加载中,请稍候', + searchCodePlaceholder: '请输入角色编码', + searchNamePlaceholder: '请输入角色名称', + searchStatusPlaceholder: '请选择状态', + codePlaceholder: '请输入角色编码', + namePlaceholder: '请输入角色名称', + sortPlaceholder: '请输入显示顺序', + statusPlaceholder: '请选择状态', + remarkPlaceholder: '请输入备注', + codeRequired: '角色标识不能为空', + nameRequired: '角色名称不能为空', + sortRequired: '显示顺序不能为空', + statusRequired: '状态不能为空' + }, + Menu: { + name: '菜单名称', + parent: '上级菜单', + type: '菜单类型', + icon: '菜单图标', + path: '路由地址', + component: '组件地址', + componentName: '组件名称', + permission: '权限标识', + sort: '显示排序', + status: '菜单状态', + visible: '显示状态', + alwaysShow: '总是显示', + keepAlive: '缓存状态', + actions: '操作', + searchNamePlaceholder: '请输入菜单名称', + searchStatusPlaceholder: '请选择菜单状态', + namePlaceholder: '请输入菜单名称', + pathPlaceholder: '请输入路由地址', + componentPlaceholder: '例如说:system/user/index', + componentNamePlaceholder: '例如说:SystemUser', + permissionPlaceholder: '请输入权限标识', + sortPlaceholder: '请输入显示排序', + toggleExpand: '展开/折叠', + refreshCache: '刷新菜单缓存', + updateCacheConfirm: '即将更新缓存刷新浏览器!', + updateCacheTitle: '刷新菜单缓存', + visibleShow: '显示', + visibleHide: '隐藏', + always: '总是', + notAlways: '不是', + keep: '缓存', + notKeep: '不缓存', + parentRoot: '主类目', + nameRequired: '菜单名称不能为空', + sortRequired: '菜单顺序不能为空', + pathRequired: '路由地址不能为空', + statusRequired: '状态不能为空', + pathMustStartWithSlash: '路径必须以 / 开头', + pathMustNotStartWithSlash: '路径不能以 / 开头', + pathTooltipTitle: '路由地址', + pathTooltipMessage: '访问的路由地址,如:`user`。如需外网地址时,则以 `http(s)://` 开头', + permissionTooltipTitle: '权限标识', + permissionTooltipMessage: + "Controller 方法上的权限字符,如:@PreAuthorize(`@ss.hasPermission('system:user:list')`)", + visibleTooltipTitle: '显示状态', + visibleTooltipMessage: '选择隐藏时,路由将不会出现在侧边栏,但仍然可以访问', + alwaysShowTooltipTitle: '总是显示', + alwaysShowTooltipMessage: '选择不是时,当该菜单只有一个子菜单时,不展示自己,直接展示子菜单', + keepAliveTooltipTitle: '缓存状态', + keepAliveTooltipMessage: '选择缓存时,则会被 `keep-alive` 缓存,必须填写「组件名称」字段' + }, + Dict: { + id: '字典编号', + name: '字典名称', + type: '字典类型', + label: '字典标签', + value: '字典键值', + sort: '字典排序', + status: '状态', + remark: '备注', + colorType: '颜色类型', + cssClass: 'CSS Class', + createTime: '创建时间', + actions: '操作', + data: '数据', + searchNamePlaceholder: '请输入字典名称', + searchTypePlaceholder: '请输入字典类型', + searchStatusPlaceholder: '请选择字典状态', + searchLabelPlaceholder: '请输入字典标签', + searchDataStatusPlaceholder: '请选择数据状态', + namePlaceholder: '请输入字典名称', + typePlaceholder: '请输入字典类型', + labelPlaceholder: '请输入数据标签', + valuePlaceholder: '请输入数据键值', + sortPlaceholder: '请输入数据顺序', + remarkPlaceholder: '请输入内容', + statusPlaceholder: '请选择状态', + colorTypePlaceholder: '请选择颜色类型', + cssClassPlaceholder: '请输入 CSS Class', + nameRequired: '字典名称不能为空', + typeRequired: '字典类型不能为空', + statusRequired: '状态不能为空', + labelRequired: '数据标签不能为空', + valueRequired: '数据键值不能为空', + sortRequired: '数据顺序不能为空', + colorTypeDefault: '默认', + colorTypePrimary: '主要', + colorTypeSuccess: '成功', + colorTypeInfo: '信息', + colorTypeWarning: '警告', + colorTypeDanger: '危险', + typeExportFilename: '字典类型.xls', + dataExportFilename: '字典数据.xls' + } + }, // 设备管理 EquipmentManagement: { // 设备分类 diff --git a/src/views/system/dept/DeptForm.vue b/src/views/system/dept/DeptForm.vue index c759ef38..2ebe5ac2 100644 --- a/src/views/system/dept/DeptForm.vue +++ b/src/views/system/dept/DeptForm.vue @@ -5,27 +5,28 @@ v-loading="formLoading" :model="formData" :rules="formRules" - label-width="80px" + label-width="auto" + class="dept-dialog-form" > - + - - + + - + - - + + - - + + - - + + - - + + @@ -86,15 +87,15 @@ const formData = ref({ status: CommonStatusEnum.ENABLE }) const formRules = reactive({ - parentId: [{ required: true, message: '上级部门不能为空', trigger: 'blur' }], - name: [{ required: true, message: '部门名称不能为空', trigger: 'blur' }], - sort: [{ required: true, message: '显示排序不能为空', trigger: 'blur' }], - email: [{ type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }], - phone: [ - { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: '请输入正确的手机号码', trigger: 'blur' } - ], - status: [{ required: true, message: '状态不能为空', trigger: 'blur' }] -}) + parentId: [{ required: true, message: t('SystemManagement.Dept.parentRequired'), trigger: 'blur' }], + name: [{ required: true, message: t('SystemManagement.Dept.nameRequired'), trigger: 'blur' }], + sort: [{ required: true, message: t('SystemManagement.Dept.sortRequired'), trigger: 'blur' }], + email: [{ type: 'email', message: t('SystemManagement.Dept.emailInvalid'), trigger: ['blur', 'change'] }], + phone: [ + { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: t('SystemManagement.Dept.phoneInvalid'), trigger: 'blur' } + ], + status: [{ required: true, message: t('SystemManagement.Dept.statusRequired'), trigger: 'blur' }] + }) const formRef = ref() // 表单 Ref const deptTree = ref() // 树形结构 const userList = ref([]) // 用户列表 @@ -172,3 +173,8 @@ const getTree = async () => { deptTree.value.push(dept) } + diff --git a/src/views/system/dept/index.vue b/src/views/system/dept/index.vue index 5e47846b..db2274ee 100644 --- a/src/views/system/dept/index.vue +++ b/src/views/system/dept/index.vue @@ -2,25 +2,25 @@ - + - + @@ -33,18 +33,18 @@ - 搜索 - 重置 + {{ t('common.query') }} + {{ t('common.reset') }} - 新增 + {{ t('action.add') }} - 展开/折叠 + {{ t('SystemManagement.Dept.toggleExpand') }} @@ -59,26 +59,26 @@ :default-expand-all="isExpandAll" v-if="refreshTable" > - - + + - - + + - + @@ -188,3 +188,8 @@ onMounted(async () => { userList.value = await UserApi.getSimpleUserList() }) + diff --git a/src/views/system/dict/DictTypeForm.vue b/src/views/system/dict/DictTypeForm.vue index b9159b50..1355dd77 100644 --- a/src/views/system/dict/DictTypeForm.vue +++ b/src/views/system/dict/DictTypeForm.vue @@ -5,19 +5,22 @@ v-loading="formLoading" :model="formData" :rules="formRules" - label-width="80px" + label-width="auto" > - - + + - + - + - - + + @@ -60,9 +69,11 @@ const formData = ref({ remark: '' }) const formRules = reactive({ - name: [{ required: true, message: '字典名称不能为空', trigger: 'blur' }], - type: [{ required: true, message: '字典类型不能为空', trigger: 'blur' }], - status: [{ required: true, message: '状态不能为空', trigger: 'change' }] + name: [{ required: true, message: t('SystemManagement.Dict.nameRequired'), trigger: 'blur' }], + type: [{ required: true, message: t('SystemManagement.Dict.typeRequired'), trigger: 'blur' }], + status: [ + { required: true, message: t('SystemManagement.Dict.statusRequired'), trigger: 'change' } + ] }) const formRef = ref() // 表单 Ref diff --git a/src/views/system/dict/data/DictDataForm.vue b/src/views/system/dict/data/DictDataForm.vue index bab18dbf..a35be151 100644 --- a/src/views/system/dict/data/DictDataForm.vue +++ b/src/views/system/dict/data/DictDataForm.vue @@ -5,25 +5,31 @@ v-loading="formLoading" :model="formData" :rules="formRules" - label-width="80px" + label-width="auto" > - + - - + + - - + + - + - + - - + + - - + + - - + + @@ -83,10 +101,12 @@ const formData = ref({ remark: '' }) const formRules = reactive({ - label: [{ required: true, message: '数据标签不能为空', trigger: 'blur' }], - value: [{ required: true, message: '数据键值不能为空', trigger: 'blur' }], - sort: [{ required: true, message: '数据顺序不能为空', trigger: 'blur' }], - status: [{ required: true, message: '状态不能为空', trigger: 'change' }] + label: [{ required: true, message: t('SystemManagement.Dict.labelRequired'), trigger: 'blur' }], + value: [{ required: true, message: t('SystemManagement.Dict.valueRequired'), trigger: 'blur' }], + sort: [{ required: true, message: t('SystemManagement.Dict.sortRequired'), trigger: 'blur' }], + status: [ + { required: true, message: t('SystemManagement.Dict.statusRequired'), trigger: 'change' } + ] }) const formRef = ref() // 表单 Ref @@ -94,27 +114,27 @@ const formRef = ref() // 表单 Ref const colorTypeOptions = readonly([ { value: 'default', - label: '默认' + label: t('SystemManagement.Dict.colorTypeDefault') }, { value: 'primary', - label: '主要' + label: t('SystemManagement.Dict.colorTypePrimary') }, { value: 'success', - label: '成功' + label: t('SystemManagement.Dict.colorTypeSuccess') }, { value: 'info', - label: '信息' + label: t('SystemManagement.Dict.colorTypeInfo') }, { value: 'warning', - label: '警告' + label: t('SystemManagement.Dict.colorTypeWarning') }, { value: 'danger', - label: '危险' + label: t('SystemManagement.Dict.colorTypeDanger') } ]) diff --git a/src/views/system/dict/data/index.vue b/src/views/system/dict/data/index.vue index 2811f06a..a8fc9204 100644 --- a/src/views/system/dict/data/index.vue +++ b/src/views/system/dict/data/index.vue @@ -1,14 +1,18 @@ @@ -146,10 +147,10 @@ const formData = ref({ alwaysShow: true }) const formRules = reactive({ - name: [{ required: true, message: '菜单名称不能为空', trigger: 'blur' }], - sort: [{ required: true, message: '菜单顺序不能为空', trigger: 'blur' }], - path: [{ required: true, message: '路由地址不能为空', trigger: 'blur' }], - status: [{ required: true, message: '状态不能为空', trigger: 'blur' }] + name: [{ required: true, message: t('SystemManagement.Menu.nameRequired'), trigger: 'blur' }], + sort: [{ required: true, message: t('SystemManagement.Menu.sortRequired'), trigger: 'blur' }], + path: [{ required: true, message: t('SystemManagement.Menu.pathRequired'), trigger: 'blur' }], + status: [{ required: true, message: t('SystemManagement.Menu.statusRequired'), trigger: 'blur' }] }) const formRef = ref() // 表单 Ref @@ -192,10 +193,10 @@ const submitForm = async () => { ) { if (!isExternal(formData.value.path)) { if (formData.value.parentId === 0 && formData.value.path.charAt(0) !== '/') { - message.error('路径必须以 / 开头') + message.error(t('SystemManagement.Menu.pathMustStartWithSlash')) return } else if (formData.value.parentId !== 0 && formData.value.path.charAt(0) === '/') { - message.error('路径不能以 / 开头') + message.error(t('SystemManagement.Menu.pathMustNotStartWithSlash')) return } } @@ -223,7 +224,7 @@ const menuTree = ref([]) // 树形结构 const getTree = async () => { menuTree.value = [] const res = await MenuApi.getSimpleMenusList() - let menu: Tree = { id: 0, name: '主类目', children: [] } + let menu: Tree = { id: 0, name: t('SystemManagement.Menu.parentRoot'), children: [] } menu.children = handleTree(res) menuTree.value.push(menu) } diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue index 90144cd9..d1bd7828 100644 --- a/src/views/system/menu/index.vue +++ b/src/views/system/menu/index.vue @@ -8,24 +8,24 @@ ref="queryFormRef" :inline="true" :model="queryParams" - class="-mb-15px" - label-width="68px" + class="-mb-15px system-menu-query-form" + label-width="auto" > - + - + - 搜索 + {{ t('common.query') }} - 重置 + {{ t('common.reset') }} - 新增 + {{ t('action.add') }} - 展开/折叠 + {{ t('SystemManagement.Menu.toggleExpand') }} - 刷新菜单缓存 + {{ t('SystemManagement.Menu.refreshCache') }} @@ -74,17 +74,17 @@ :default-expand-all="isExpandAll" row-key="id" > - - + + - - - - - + + + + + - + @@ -196,7 +196,7 @@ const toggleExpandAll = () => { /** 刷新菜单缓存按钮操作 */ const refreshMenu = async () => { try { - await message.confirm('即将更新缓存刷新浏览器!', '刷新菜单缓存') + await message.confirm(t('SystemManagement.Menu.updateCacheConfirm'), t('SystemManagement.Menu.updateCacheTitle')) // 清空,从而触发刷新 wsCache.delete(CACHE_KEY.USER) wsCache.delete(CACHE_KEY.ROLE_ROUTERS) diff --git a/src/views/system/post/PostForm.vue b/src/views/system/post/PostForm.vue index 849c1d8f..0817f715 100644 --- a/src/views/system/post/PostForm.vue +++ b/src/views/system/post/PostForm.vue @@ -5,19 +5,20 @@ v-loading="formLoading" :model="formData" :rules="formRules" - label-width="80px" + label-width="auto" + class="post-dialog-form" > - - + + - - + + - - + + - - + + - - + + @@ -59,11 +60,11 @@ const formData = ref({ remark: '' }) const formRules = reactive({ - name: [{ required: true, message: '岗位名称不能为空', trigger: 'blur' }], - code: [{ required: true, message: '岗位编码不能为空', trigger: 'change' }], - sort: [{ required: true, message: '岗位顺序不能为空', trigger: 'blur' }], - status: [{ required: true, message: '岗位状态不能为空', trigger: 'change' }], - remark: [{ required: false, message: '岗位内容不能为空', trigger: 'blur' }] + name: [{ required: true, message: t('SystemManagement.Post.nameRequired'), trigger: 'blur' }], + code: [{ required: true, message: t('SystemManagement.Post.codeRequired'), trigger: 'change' }], + sort: [{ required: true, message: t('SystemManagement.Post.sortRequired'), trigger: 'blur' }], + status: [{ required: true, message: t('SystemManagement.Post.statusRequired'), trigger: 'change' }], + remark: [{ required: false, message: t('SystemManagement.Post.remarkPlaceholder'), trigger: 'blur' }] }) const formRef = ref() // 表单 Ref @@ -124,3 +125,8 @@ const resetForm = () => { formRef.value?.resetFields() } + diff --git a/src/views/system/post/index.vue b/src/views/system/post/index.vue index a8bfdac4..ae88b5fd 100644 --- a/src/views/system/post/index.vue +++ b/src/views/system/post/index.vue @@ -2,32 +2,37 @@ - + - + - - + + - 搜索 - 重置 + {{ t('common.query') }} + {{ t('common.reset') }} - 新增 + {{ t('action.add') }} - 导出 + {{ t('action.export') }} @@ -63,23 +68,23 @@ - - - - - + + + + + - + diff --git a/src/views/system/role/RoleAssignMenuForm.vue b/src/views/system/role/RoleAssignMenuForm.vue index 7c81ef79..e5812672 100644 --- a/src/views/system/role/RoleAssignMenuForm.vue +++ b/src/views/system/role/RoleAssignMenuForm.vue @@ -1,28 +1,34 @@ @@ -59,11 +60,10 @@ const formData = ref({ remark: '' }) const formRules = reactive({ - name: [{ required: true, message: '角色名称不能为空', trigger: 'blur' }], - code: [{ required: true, message: '角色标识不能为空', trigger: 'change' }], - sort: [{ required: true, message: '显示顺序不能为空', trigger: 'change' }], - status: [{ required: true, message: '状态不能为空', trigger: 'change' }], - remark: [{ required: false, message: '备注不能为空', trigger: 'blur' }] + name: [{ required: true, message: t('SystemManagement.Role.nameRequired'), trigger: 'blur' }], + code: [{ required: true, message: t('SystemManagement.Role.codeRequired'), trigger: 'change' }], + sort: [{ required: true, message: t('SystemManagement.Role.sortRequired'), trigger: 'change' }], + status: [{ required: true, message: t('SystemManagement.Role.statusRequired'), trigger: 'change' }] }) const formRef = ref() // 表单 Ref @@ -124,3 +124,9 @@ const submitForm = async () => { } } + + diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue index a9cc66a6..3c23e561 100644 --- a/src/views/system/role/index.vue +++ b/src/views/system/role/index.vue @@ -1,34 +1,38 @@