diff --git a/src/api/mes/plan/index.ts b/src/api/mes/plan/index.ts index 29fc2af4..d1fadfd5 100644 --- a/src/api/mes/plan/index.ts +++ b/src/api/mes/plan/index.ts @@ -103,5 +103,11 @@ export const PlanApi = { // 周生产趋势 getWeekTrend: async () => { return await request.get({ url: `/mes/plan/getWeekTrend` }) + }, + getPlanCapacity: async (type: number) => { + return await request.get({ url: `/mes/plan/getPlanCapacity?type=` + type }) + }, + getLastDaysRate: async () => { + return await request.get({ url: `/mes/plan/getLastDaysRate` }) } } diff --git a/src/locales/en.ts b/src/locales/en.ts index bf173948..4a594b68 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: { @@ -986,6 +1216,416 @@ export default { } }, + FactoryModeling: { + FactoryStructure: { + moduleName: 'Factory Structure', + searchCodeLabel: 'Organization Code', + searchCodePlaceholder: 'Please enter organization code', + searchParentLabel: 'Parent Organization', + searchParentPlaceholder: 'Please select parent organization', + searchNameLabel: 'Organization Name', + searchNamePlaceholder: 'Please enter organization name', + searchOrgClassLabel: 'Organization Level', + searchOrgClassPlaceholder: 'Please select organization level', + searchButtonText: 'Search', + resetButtonText: 'Reset', + addButtonText: 'Add', + exportButtonText: 'Export', + expandButtonText: 'Expand/Collapse', + tableCodeColumn: 'Organization Code', + tableNameColumn: 'Organization Name', + tableSortColumn: 'Display Order', + tableMachineColumn: 'Related Device', + tableOrgClassColumn: 'Organization Level', + tableOrgTypeColumn: 'Process', + tableCreateTimeColumn: 'Create Time', + tableOperateColumn: 'Operation', + tableEditAction: 'Edit', + tableDeleteAction: 'Delete', + dialogCodeLabel: 'Code', + dialogCodeTooltip: 'Factory structure code', + dialogCodePlaceholder: 'Code is auto generated after saving', + dialogParentLabel: 'Parent Organization', + dialogParentPlaceholder: 'Please select parent organization', + dialogNameLabel: 'Organization Name', + dialogNamePlaceholder: 'Please enter organization name', + dialogOrgClassLabel: 'Organization Level', + dialogSortLabel: 'Display Order', + dialogSortTooltip: 'Same parent nodes are sorted in ascending order', + dialogSortPlaceholder: 'Please enter display order', + dialogOrgTypeLabel: 'Process', + dialogOrgTypeTooltip: 'Source: Data dictionary - Process', + dialogOrgTypePlaceholder: 'Please select type', + dialogMachineLabel: 'Related Device', + dialogMachinePlaceholder: 'Please select device', + dialogCancelButton: 'Cancel', + dialogSubmitButton: 'Confirm', + orgTreeRootName: 'Top Organization', + validatorNameRequired: 'Organization name can not be empty', + validatorParentRequired: 'Parent organization can not be empty', + validatorOrgClassRequired: 'Organization level can not be empty' + }, + FactoryWorker: { + moduleName: 'Workstation Worker', + searchNameLabel: 'Organization Name', + searchNamePlaceholder: 'Please enter organization name', + searchStatusLabel: 'Organization Status', + searchStatusPlaceholder: 'Please select organization status', + searchButtonText: 'Search', + resetButtonText: 'Reset', + exportButtonText: 'Export', + expandButtonText: 'Expand/Collapse', + tabsZhijiang: 'Pulping', + tabsChengxing: 'Forming', + tabsHonggan: 'Drying', + tabsZhuanyi: 'Transfer', + tabsJiashi: 'Humidifying', + tabsReya: 'Hot Press', + tabsQiebian: 'Trimming', + tabsPanjian: 'Inspection', + tabsDabao: 'Packing', + tabsTiebiao: 'Labeling', + tabsPinyin: 'Printing', + tabsSufeng: 'Sealing', + tabsAll: 'All', + tableNameColumn: 'Organization Name', + tableOrgClassColumn: 'Organization Level', + tableOrgTypeColumn: 'Type', + tableWorkerColumn: 'Today Worker', + tableOperateColumn: 'Operation', + tableDispatchAction: 'Dispatch', + exportFileName: 'Workstation.xls' + }, + ProductCategory: { + moduleName: 'Product Material Category', + searchNameLabel: 'Category Name', + searchNamePlaceholder: 'Please enter category name', + searchStatusLabel: 'Enable Status', + searchStatusPlaceholder: 'Please select enable status', + searchButtonText: 'Search', + resetButtonText: 'Reset', + addButtonText: 'Add', + exportButtonText: 'Export', + expandButtonText: 'Expand/Collapse', + tableCodeColumn: 'Category Code', + tableNameColumn: 'Category Name', + tableSortColumn: 'Sort', + tableStatusColumn: 'Status', + tableCreateTimeColumn: 'Create Time', + tableOperateColumn: 'Operation', + tableEditAction: 'Edit', + tableDeleteAction: 'Delete', + dialogParentLabel: 'Parent Category', + dialogParentPlaceholder: 'Please select parent category', + dialogCodeLabel: 'Code', + dialogCodePlaceholder: 'Please enter code', + dialogNameLabel: 'Name', + dialogNamePlaceholder: 'Please enter name', + dialogSortLabel: 'Sort', + dialogSortPlaceholder: 'Please enter sort', + dialogStatusLabel: 'Status', + dialogCancelButton: 'Cancel', + dialogSubmitButton: 'Confirm', + treeRootName: 'Top Product Category', + validatorParentRequired: 'Parent category can not be empty', + validatorNameRequired: 'Name can not be empty', + validatorCodeRequired: 'Code can not be empty', + validatorSortRequired: 'Sort can not be empty', + validatorStatusRequired: 'Status can not be empty' + }, + ProductInformation: { + moduleName: 'Product Material Information', + searchNameLabel: 'Name', + searchNamePlaceholder: 'Please enter name', + searchButtonText: 'Search', + resetButtonText: 'Reset', + addButtonText: 'Add', + exportButtonText: 'Export', + tableBarCodeColumn: 'Code', + tableNameColumn: 'Name', + tableStandardColumn: 'Specification', + tableCategoryColumn: 'Category', + tableUnitColumn: 'Unit', + tableStatusColumn: 'Status', + tableCreateTimeColumn: 'Create Time', + tableOperateColumn: 'Operation', + tableEditAction: 'Edit', + tableDeleteAction: 'Delete', + dialogBarCodeLabel: 'Code', + dialogBarCodePlaceholder: 'Please enter code', + dialogNameLabel: 'Name', + dialogNamePlaceholder: 'Please enter name', + dialogCategoryLabel: 'Category', + dialogCategoryPlaceholder: 'Please select category', + dialogUnitLabel: 'Unit', + dialogUnitPlaceholder: 'Please select unit', + dialogStandardLabel: 'Specification', + dialogStandardPlaceholder: 'Please enter specification', + dialogExpiryDayLabel: 'Shelf Life (Days)', + dialogExpiryDayPlaceholder: 'Please enter shelf life (days)', + dialogWeightLabel: 'Weight (g)', + dialogWeightPlaceholder: 'Please enter weight (g)', + dialogPurchasePriceLabel: 'Purchase Price', + dialogPurchasePricePlaceholder: 'Please enter purchase price (CNY)', + dialogSalePriceLabel: 'Sale Price', + dialogSalePricePlaceholder: 'Please enter sale price (CNY)', + dialogMinPriceLabel: 'Minimum Price', + dialogMinPricePlaceholder: 'Please enter minimum price (CNY)', + dialogStatusLabel: 'Status', + dialogRemarkLabel: 'Remark', + dialogRemarkPlaceholder: 'Please enter remark', + dialogCancelButton: 'Cancel', + dialogSubmitButton: 'Confirm', + validatorNameRequired: 'Product name can not be empty', + validatorBarCodeRequired: 'Product barcode can not be empty', + validatorCategoryRequired: 'Product category id can not be empty', + validatorUnitRequired: 'Unit id can not be empty', + validatorStatusRequired: 'Product status can not be empty' + }, + AutocodeRule: { + moduleName: 'Code Rules', + searchRuleCodeLabel: 'Rule Code', + searchRuleCodePlaceholder: 'Please enter rule code', + searchRuleNameLabel: 'Rule Name', + searchRuleNamePlaceholder: 'Please enter rule name', + searchRuleDescLabel: 'Description', + searchRuleDescPlaceholder: 'Please enter description', + searchRemarkLabel: 'Remark', + searchRemarkPlaceholder: 'Please enter remark', + searchIsEnableLabel: 'Enabled', + searchIsEnablePlaceholder: 'Please select enabled', + searchButtonText: 'Search', + resetButtonText: 'Reset', + addButtonText: 'Add', + exportButtonText: 'Export', + tableRuleCodeColumn: 'Rule Code', + tableRuleNameColumn: 'Rule Name', + tableRuleDescColumn: 'Description', + tableMaxLengthColumn: 'Max Length', + tableIsPaddedColumn: 'Pad', + tablePaddedCharColumn: 'Pad Char', + tablePaddedMethodColumn: 'Pad Method', + tableIsEnableColumn: 'Enabled', + tableOperateColumn: 'Operation', + tableEditAction: 'Edit', + tableDeleteAction: 'Delete', + tableTestCodeAction: 'Test Code', + listPartTabLabel: 'Code Parts', + dialogPartTabLabel: 'Code Rule Parts', + exportFilename: 'CodeRules.xls', + dialogRuleCodeLabel: 'Rule Code', + dialogRuleCodePlaceholder: 'Please enter rule code', + dialogRuleNameLabel: 'Rule Name', + dialogRuleNamePlaceholder: 'Please enter rule name', + dialogRuleDescLabel: 'Description', + dialogRuleDescPlaceholder: 'Please enter description', + dialogMaxLengthLabel: 'Max Length', + dialogMaxLengthPlaceholder: 'Please enter max length', + dialogIsPaddedLabel: 'Pad', + dialogPaddedCharLabel: 'Pad Char', + dialogPaddedCharPlaceholder: 'Please enter pad char', + dialogPaddedMethodLabel: 'Pad Method', + dialogRemarkLabel: 'Remark', + dialogRemarkPlaceholder: 'Please enter remark', + dialogIsEnableLabel: 'Enabled', + validatorIsEnableRequired: 'Enabled can not be empty', + validatorRuleIdRequired: 'Rule id can not be empty', + validatorPartIndexRequired: 'Part index can not be empty', + validatorPartLengthRequired: 'Part length can not be empty', + partTableIndexColumn: 'Index', + partTableIdColumn: 'ID', + partTablePartIndexColumn: 'Part Index', + partTablePartTypeColumn: 'Part Type', + partTablePartCodeColumn: 'Part Code', + partTablePartNameColumn: 'Part Name', + partTablePartLengthColumn: 'Part Length', + partTableDatetimeFormatColumn: 'Datetime Format', + partTableInputCharacterColumn: 'Input Char', + partTableFixCharacterColumn: 'Fixed Char', + partTableSeriaStartNoColumn: 'Serial Start', + partTableSeriaStepColumn: 'Serial Step', + partTableSeriaNowNoColumn: 'Serial Current', + partTableCycleFlagColumn: 'Serial Cycle', + partTableCycleMethodColumn: 'Cycle Method', + partTableRemarkColumn: 'Remark', + partTableIsEnableColumn: 'Enabled', + partTableCreateTimeColumn: 'Create Time', + partTableOperateColumn: 'Operation', + partPlaceholderPartIndex: 'Please enter part index', + partPlaceholderPartCode: 'Please enter part code', + partPlaceholderPartName: 'Please enter part name', + partPlaceholderPartLength: 'Please enter part length', + partPlaceholderDatetimeFormat: 'Please enter datetime format', + partPlaceholderInputCharacter: 'Please enter input char', + partPlaceholderFixCharacter: 'Please enter fixed char', + partPlaceholderSeriaStartNo: 'Please enter serial start', + partPlaceholderSeriaStep: 'Please enter serial step', + partPlaceholderSeriaNowNo: 'Please enter current serial', + partPlaceholderRemark: 'Please enter remark', + addPartButtonText: 'Add Code Rule Part' + }, + ProductBOM: { + moduleName: 'Product BOM', + searchCodeLabel: 'BOM Code', + searchCodePlaceholder: 'Please enter BOM code', + searchProductLabel: 'Product', + searchProductPlaceholder: 'Please select product', + searchRemarkLabel: 'Remark', + searchRemarkPlaceholder: 'Please enter remark', + searchEnableLabel: 'Enable Status', + searchEnablePlaceholder: 'Please select enable status', + searchButtonText: 'Search', + resetButtonText: 'Reset', + addButtonText: 'Add', + exportButtonText: 'Export', + tableCodeColumn: 'BOM Code', + tableVersionColumn: 'BOM Version', + tableProductColumn: 'Product', + tableUnitColumn: 'Unit', + tableYieldRateColumn: 'Yield Rate %', + tableRemarkColumn: 'Remark', + tableEnableColumn: 'Enabled', + tableCreateTimeColumn: 'Create Time', + tableOperateColumn: 'Operation', + tableEditAction: 'Edit', + tableDeleteAction: 'Delete', + detailTabLabel: 'Product BOM Detail', + dialogCodeLabel: 'BOM Code', + dialogCodePlaceholder: 'Please enter BOM code', + dialogVersionLabel: 'BOM Version', + dialogVersionPlaceholder: 'Please enter BOM version', + dialogProductLabel: 'Product', + dialogProductPlaceholder: 'Please select product', + dialogUnitLabel: 'Unit', + dialogUnitPlaceholder: 'Please select unit', + dialogYieldRateLabel: 'Yield Rate %', + dialogYieldRatePlaceholder: 'Please enter yield rate', + dialogRemarkLabel: 'Remark', + dialogRemarkPlaceholder: 'Please enter remark', + dialogEnableLabel: 'Enabled', + dialogCancelButton: 'Cancel', + dialogSubmitButton: 'Confirm', + detailTableIndexColumn: 'No.', + detailTableMaterialColumn: 'Material', + detailTableUsageNumberColumn: 'Usage Quantity', + detailTableUnitColumn: 'Unit', + detailTableLossRateColumn: 'Loss Rate %', + detailTableRemarkColumn: 'Remark', + detailTableOperateColumn: 'Operation', + detailMaterialPlaceholder: 'Please select material', + detailUnitPlaceholder: 'Please select unit', + detailUsageNumberPlaceholder: 'Please enter usage quantity', + detailLossRatePlaceholder: 'Please enter loss rate', + detailRemarkPlaceholder: 'Please enter remark', + detailAddButtonText: 'Add Product BOM Detail', + validatorCodeRequired: 'BOM code can not be empty', + validatorVersionRequired: 'BOM version can not be empty', + validatorProductRequired: 'Product can not be empty', + validatorUnitRequired: 'Unit can not be empty', + validatorEnableRequired: 'Enable status can not be empty', + validatorDetailMaterialRequired: 'Material can not be empty', + validatorDetailBomRequired: 'BOM id can not be empty', + validatorDetailUsageNumberRequired: 'Usage quantity can not be empty' + }, + WorkTeam: { + moduleName: 'Work Team Management', + searchTeamNameLabel: 'Team Name', + searchTeamNamePlaceholder: 'Please enter team name', + searchProcessLabel: 'Process', + searchProcessPlaceholder: 'Please select process', + searchRemarkLabel: 'Remark', + searchRemarkPlaceholder: 'Please enter remark', + searchButtonText: 'Search', + resetButtonText: 'Reset', + addButtonText: 'Add', + exportButtonText: 'Export', + tabsAll: 'All', + tabsDay: 'Day Shift', + tabsNight: 'Night Shift', + tabsLongDay: 'Long Day Shift', + tableTeamNameColumn: 'Team Name', + tableLeaderColumn: 'Leader', + tableGroupTypeColumn: 'Team Type', + tableWorkTimeColumn: 'Working Time', + tableProcessColumn: 'Process', + tableRemarkColumn: 'Remark', + tableEnableColumn: 'Enabled', + tableCreateTimeColumn: 'Create Time', + tableOperateColumn: 'Operation', + tableEditAction: 'Edit', + tableDeleteAction: 'Delete', + detailTabLabel: 'Team Members', + dialogTeamNameLabel: 'Team Name', + dialogTeamNamePlaceholder: 'Please enter team name', + dialogProcessLabel: 'Process', + dialogProcessTooltip: 'Source: Data dictionary - Process', + dialogGroupTypeLabel: 'Team Type', + dialogGroupTypeTooltip: 'Source: Data dictionary - Team Type', + dialogWorkTimeLabel: 'Working Time', + dialogWorkTimeRangeSeparator: 'To', + dialogWorkTimeStartPlaceholder: 'Start Time', + dialogWorkTimeEndPlaceholder: 'End Time', + dialogRemarkLabel: 'Remark', + dialogRemarkPlaceholder: 'Please enter remark', + dialogEnableLabel: 'Enabled', + dialogCancelButton: 'Cancel', + dialogSubmitButton: 'Confirm', + detailAddButtonText: 'Add', + detailTableJobNoColumn: 'Job No.', + detailTableRoleColumn: 'Role', + detailTableRemarkColumn: 'Remark', + detailTableCreateTimeColumn: 'Create Time', + detailTableOperateColumn: 'Operation', + detailDialogJobNoLabel: 'Job No.', + detailDialogJobNoPlaceholder: 'Please select job no.', + detailDialogRoleLabel: 'Role', + detailDialogRoleTooltip: 'Source: Data dictionary - Team Member Role', + detailDialogRemarkLabel: 'Remark', + detailDialogRemarkPlaceholder: 'Please enter remark', + detailDialogMemberSuffix: 'Member', + validatorTeamNameRequired: 'Team name can not be empty', + validatorProcessRequired: 'Process type can not be empty', + validatorGroupTypeRequired: 'Team type can not be empty', + validatorEnableRequired: 'Enable status can not be empty', + validatorDetailUserRequired: 'User id can not be empty', + validatorDetailRoleRequired: 'Role can not be empty', + validatorSelectWorkTeamFirst: 'Please select a work team first' + }, + + ProductUnit: { + moduleName: 'Unit Management', + searchNameLabel: 'Unit Name', + searchNamePlaceholder: 'Please enter unit name', + searchStatusLabel: 'Unit Status', + searchStatusPlaceholder: 'Please select unit status', + searchButtonText: 'Search', + resetButtonText: 'Reset', + addButtonText: 'Add', + exportButtonText: 'Export', + tableNameColumn: 'Unit Name', + tablePrimaryFlagColumn: 'Is Primary Unit', + tableChangeRateColumn: 'Conversion Rate to Primary Unit', + tableStatusColumn: 'Status', + tableCreateTimeColumn: 'Create Time', + tableOperateColumn: 'Operation', + tableEditAction: 'Edit', + tableDeleteAction: 'Delete', + dialogNameLabel: 'Unit Name', + dialogNamePlaceholder: 'Please enter unit name', + dialogPrimaryFlagLabel: 'Is Primary Unit', + dialogPrimaryUnitLabel: 'Related Primary Unit', + dialogPrimaryUnitPlaceholder: 'Please select primary unit', + dialogChangeRateLabel: 'Conversion Rate', + dialogChangeRatePlaceholder: 'Please enter conversion rate', + dialogStatusLabel: 'Unit Status', + dialogCancelButton: 'Cancel', + dialogSubmitButton: 'Confirm', + validatorNameRequired: 'Unit name can not be empty', + validatorStatusRequired: 'Unit status can not be empty', + validatorPrimaryFlagRequired: 'Primary unit flag can not be empty' + } + }, + MoldManagement: { MoldBrand: { code: 'Model Code', diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index bc05d55f..d225c86e 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: { // 设备分类 @@ -1774,5 +2000,414 @@ export default { manualTableReferColumn: '参考值', manualTableRemarkColumn: '备注' } + }, + FactoryModeling: { + FactoryStructure: { + moduleName: '厂区结构', + searchCodeLabel: '组织编码', + searchCodePlaceholder: '请输入组织编码', + searchParentLabel: '父组织', + searchParentPlaceholder: '请选择父组织', + searchNameLabel: '组织名称', + searchNamePlaceholder: '请输入组织名称', + searchOrgClassLabel: '组织等级', + searchOrgClassPlaceholder: '请选择组织等级', + searchButtonText: '搜索', + resetButtonText: '重置', + addButtonText: '新增', + exportButtonText: '导出', + expandButtonText: '展开/折叠', + tableCodeColumn: '组织编码', + tableNameColumn: '组织名称', + tableSortColumn: '显示顺序', + tableMachineColumn: '关联设备', + tableOrgClassColumn: '组织等级', + tableOrgTypeColumn: '工序', + tableCreateTimeColumn: '创建时间', + tableOperateColumn: '操作', + tableEditAction: '编辑', + tableDeleteAction: '删除', + dialogCodeLabel: '编码', + dialogCodeTooltip: '厂区结构编码', + dialogCodePlaceholder: '编码保存后自动生成', + dialogParentLabel: '父组织', + dialogParentPlaceholder: '请选择父组织', + dialogNameLabel: '组织名称', + dialogNamePlaceholder: '请输入组织名称', + dialogOrgClassLabel: '组织等级', + dialogSortLabel: '显示顺序', + dialogSortTooltip: '同父级按照显示顺序从小到大排序', + dialogSortPlaceholder: '请输入显示顺序', + dialogOrgTypeLabel: '工序', + dialogOrgTypeTooltip: '来源:数据字典-工序', + dialogOrgTypePlaceholder: '请选择类型', + dialogMachineLabel: '关联设备', + dialogMachinePlaceholder: '请选择设备', + dialogCancelButton: '取 消', + dialogSubmitButton: '确 定', + orgTreeRootName: '顶级组织', + validatorNameRequired: '组织名称不能为空', + validatorParentRequired: '父组织不能为空', + validatorOrgClassRequired: '组织等级不能为空' + }, + FactoryWorker: { + moduleName: '工位人员', + searchNameLabel: '组织名称', + searchNamePlaceholder: '请输入组织名称', + searchStatusLabel: '组织状态', + searchStatusPlaceholder: '请选择组织状态', + searchButtonText: '搜索', + resetButtonText: '重置', + exportButtonText: '导出', + expandButtonText: '展开/折叠', + tabsZhijiang: '制浆', + tabsChengxing: '成型', + tabsHonggan: '烘干', + tabsZhuanyi: '转移', + tabsJiashi: '加湿', + tabsReya: '热压', + tabsQiebian: '切边', + tabsPanjian: '品检', + tabsDabao: '打包', + tabsTiebiao: '贴标', + tabsPinyin: '品印', + tabsSufeng: '塑封', + tabsAll: '所有', + tableNameColumn: '组织名称', + tableOrgClassColumn: '组织等级', + tableOrgTypeColumn: '类型', + tableWorkerColumn: '今日工人', + tableOperateColumn: '操作', + tableDispatchAction: '派工', + exportFileName: '产线工位.xls' + }, + ProductCategory: { + moduleName: '产品物料分类', + searchNameLabel: '分类名称', + searchNamePlaceholder: '请输入分类名称', + searchStatusLabel: '开启状态', + searchStatusPlaceholder: '请选择开启状态', + searchButtonText: '搜索', + resetButtonText: '重置', + addButtonText: '新增', + exportButtonText: '导出', + expandButtonText: '展开/折叠', + tableCodeColumn: '分类编码', + tableNameColumn: '分类名称', + tableSortColumn: '排序', + tableStatusColumn: '状态', + tableCreateTimeColumn: '创建时间', + tableOperateColumn: '操作', + tableEditAction: '编辑', + tableDeleteAction: '删除', + dialogParentLabel: '上级编号', + dialogParentPlaceholder: '请选择上级编号', + dialogCodeLabel: '编码', + dialogCodePlaceholder: '请输入编码', + dialogNameLabel: '名称', + dialogNamePlaceholder: '请输入名称', + dialogSortLabel: '排序', + dialogSortPlaceholder: '请输入排序', + dialogStatusLabel: '状态', + dialogCancelButton: '取 消', + dialogSubmitButton: '确 定', + treeRootName: '顶级产品分类', + validatorParentRequired: '上级编号不能为空', + validatorNameRequired: '名称不能为空', + validatorCodeRequired: '编码不能为空', + validatorSortRequired: '排序不能为空', + validatorStatusRequired: '状态不能为空' + }, + ProductInformation: { + moduleName: '产品物料信息', + searchNameLabel: '名称', + searchNamePlaceholder: '请输入名称', + searchButtonText: '搜索', + resetButtonText: '重置', + addButtonText: '新增', + exportButtonText: '导出', + tableBarCodeColumn: '编码', + tableNameColumn: '名称', + tableStandardColumn: '规格', + tableCategoryColumn: '分类', + tableUnitColumn: '单位', + tableStatusColumn: '状态', + tableCreateTimeColumn: '创建时间', + tableOperateColumn: '操作', + tableEditAction: '编辑', + tableDeleteAction: '删除', + dialogBarCodeLabel: '编码', + dialogBarCodePlaceholder: '请输入编码', + dialogNameLabel: '名称', + dialogNamePlaceholder: '请输入名称', + dialogCategoryLabel: '分类', + dialogCategoryPlaceholder: '请选择分类', + dialogUnitLabel: '单位', + dialogUnitPlaceholder: '请选择单位', + dialogStandardLabel: '规格', + dialogStandardPlaceholder: '请输入规格', + dialogExpiryDayLabel: '保质期天数', + dialogExpiryDayPlaceholder: '请输入保质期天数', + dialogWeightLabel: '重量(g)', + dialogWeightPlaceholder: '请输入重量(g)', + dialogPurchasePriceLabel: '采购价格', + dialogPurchasePricePlaceholder: '请输入采购价格,单位:元', + dialogSalePriceLabel: '销售价格', + dialogSalePricePlaceholder: '请输入销售价格,单位:元', + dialogMinPriceLabel: '最低价格', + dialogMinPricePlaceholder: '请输入最低价格,单位:元', + dialogStatusLabel: '状态', + dialogRemarkLabel: '备注', + dialogRemarkPlaceholder: '请输入备注', + dialogCancelButton: '取 消', + dialogSubmitButton: '确 定', + validatorNameRequired: '产品名称不能为空', + validatorBarCodeRequired: '产品条码不能为空', + validatorCategoryRequired: '产品分类编号不能为空', + validatorUnitRequired: '单位编号不能为空', + validatorStatusRequired: '产品状态不能为空' + }, + AutocodeRule: { + moduleName: '编码规则', + searchRuleCodeLabel: '规则编码', + searchRuleCodePlaceholder: '请输入规则编码', + searchRuleNameLabel: '规则名称', + searchRuleNamePlaceholder: '请输入规则名称', + searchRuleDescLabel: '描述', + searchRuleDescPlaceholder: '请输入描述', + searchRemarkLabel: '备注', + searchRemarkPlaceholder: '请输入备注', + searchIsEnableLabel: '是否启用', + searchIsEnablePlaceholder: '请选择是否启用', + searchButtonText: '搜索', + resetButtonText: '重置', + addButtonText: '新增', + exportButtonText: '导出', + tableRuleCodeColumn: '规则编码', + tableRuleNameColumn: '规则名称', + tableRuleDescColumn: '描述', + tableMaxLengthColumn: '最大长度', + tableIsPaddedColumn: '是否补齐', + tablePaddedCharColumn: '补齐字符', + tablePaddedMethodColumn: '补齐方式', + tableIsEnableColumn: '是否启用', + tableOperateColumn: '操作', + tableEditAction: '编辑', + tableDeleteAction: '删除', + tableTestCodeAction: '测试编码', + listPartTabLabel: '编码组成', + dialogPartTabLabel: '编码规则组成', + exportFilename: '编码规则.xls', + dialogRuleCodeLabel: '规则编码', + dialogRuleCodePlaceholder: '请输入规则编码', + dialogRuleNameLabel: '规则名称', + dialogRuleNamePlaceholder: '请输入规则名称', + dialogRuleDescLabel: '描述', + dialogRuleDescPlaceholder: '请输入描述', + dialogMaxLengthLabel: '最大长度', + dialogMaxLengthPlaceholder: '请输入最大长度', + dialogIsPaddedLabel: '是否补齐', + dialogPaddedCharLabel: '补齐字符', + dialogPaddedCharPlaceholder: '请输入补齐字符', + dialogPaddedMethodLabel: '补齐方式', + dialogRemarkLabel: '备注', + dialogRemarkPlaceholder: '请输入备注', + dialogIsEnableLabel: '是否启用', + validatorIsEnableRequired: '是否启用不能为空', + validatorRuleIdRequired: '规则ID不能为空', + validatorPartIndexRequired: '分段序号不能为空', + validatorPartLengthRequired: '分段长度不能为空', + partTableIndexColumn: '序号', + partTableIdColumn: 'ID', + partTablePartIndexColumn: '分段序号', + partTablePartTypeColumn: '分段类型', + partTablePartCodeColumn: '分段编号', + partTablePartNameColumn: '分段名称', + partTablePartLengthColumn: '分段长度', + partTableDatetimeFormatColumn: '日期时间格式', + partTableInputCharacterColumn: '输入字符', + partTableFixCharacterColumn: '固定字符', + partTableSeriaStartNoColumn: '流水号起始值', + partTableSeriaStepColumn: '流水号步长', + partTableSeriaNowNoColumn: '流水号当前值', + partTableCycleFlagColumn: '流水号是否循环', + partTableCycleMethodColumn: '循环方式', + partTableRemarkColumn: '备注', + partTableIsEnableColumn: '是否启用', + partTableCreateTimeColumn: '创建时间', + partTableOperateColumn: '操作', + partPlaceholderPartIndex: '请输入分段序号', + partPlaceholderPartCode: '请输入分段编号', + partPlaceholderPartName: '请输入分段名称', + partPlaceholderPartLength: '请输入分段长度', + partPlaceholderDatetimeFormat: '请输入日期时间格式', + partPlaceholderInputCharacter: '请输入输入字符', + partPlaceholderFixCharacter: '请输入固定字符', + partPlaceholderSeriaStartNo: '请输入流水号起始值', + partPlaceholderSeriaStep: '请输入流水号步长', + partPlaceholderSeriaNowNo: '请输入流水号当前值', + partPlaceholderRemark: '请输入备注', + addPartButtonText: '添加编码规则组成' + }, + ProductBOM: { + moduleName: '产品BOM', + searchCodeLabel: 'BOM编码', + searchCodePlaceholder: '请输入BOM编码', + searchProductLabel: '产品', + searchProductPlaceholder: '请选择产品', + searchRemarkLabel: '备注', + searchRemarkPlaceholder: '请输入备注', + searchEnableLabel: '开启状态', + searchEnablePlaceholder: '请选择是否启用', + searchButtonText: '搜索', + resetButtonText: '重置', + addButtonText: '新增', + exportButtonText: '导出', + tableCodeColumn: 'BOM编码', + tableVersionColumn: 'BOM版本', + tableProductColumn: '产品', + tableUnitColumn: '单位', + tableYieldRateColumn: '成品率%', + tableRemarkColumn: '备注', + tableEnableColumn: '是否启用', + tableCreateTimeColumn: '创建时间', + tableOperateColumn: '操作', + tableEditAction: '编辑', + tableDeleteAction: '删除', + detailTabLabel: '产品BOM明细', + dialogCodeLabel: 'BOM编码', + dialogCodePlaceholder: '请输入BOM编码', + dialogVersionLabel: 'BOM版本', + dialogVersionPlaceholder: '请输入BOM版本', + dialogProductLabel: '产品', + dialogProductPlaceholder: '请选择产品', + dialogUnitLabel: '单位', + dialogUnitPlaceholder: '请选择单位', + dialogYieldRateLabel: '成品率%', + dialogYieldRatePlaceholder: '请输入成品率', + dialogRemarkLabel: '备注', + dialogRemarkPlaceholder: '请输入备注', + dialogEnableLabel: '是否启用', + dialogCancelButton: '取 消', + dialogSubmitButton: '确 定', + detailTableIndexColumn: '序号', + detailTableMaterialColumn: '原料', + detailTableUsageNumberColumn: '用量', + detailTableUnitColumn: '单位', + detailTableLossRateColumn: '损耗率%', + detailTableRemarkColumn: '备注', + detailTableOperateColumn: '操作', + detailMaterialPlaceholder: '请选择原料', + detailUnitPlaceholder: '请选择单位', + detailUsageNumberPlaceholder: '请输入用量', + detailLossRatePlaceholder: '请输入损耗率', + detailRemarkPlaceholder: '请输入备注', + detailAddButtonText: '添加产品BOM明细', + validatorCodeRequired: 'BOM编码不能为空', + validatorVersionRequired: 'BOM版本不能为空', + validatorProductRequired: '产品不能为空', + validatorUnitRequired: '单位不能为空', + validatorEnableRequired: '是否启用不能为空', + validatorDetailMaterialRequired: '原料不能为空', + validatorDetailBomRequired: 'BOM 不能为空', + validatorDetailUsageNumberRequired: '用量不能为空' + }, + WorkTeam: { + moduleName: '班组管理', + searchTeamNameLabel: '班组名称', + searchTeamNamePlaceholder: '请输入班组名称', + searchProcessLabel: '工序', + searchProcessPlaceholder: '请选择工序', + searchRemarkLabel: '备注', + searchRemarkPlaceholder: '请输入备注', + searchButtonText: '搜索', + resetButtonText: '重置', + addButtonText: '新增', + exportButtonText: '导出', + tabsAll: '所有', + tabsDay: '白班', + tabsNight: '夜班', + tabsLongDay: '长白班', + tableTeamNameColumn: '班组名称', + tableLeaderColumn: '组长', + tableGroupTypeColumn: '班组类型', + tableWorkTimeColumn: '工作时间', + tableProcessColumn: '工序', + tableRemarkColumn: '备注', + tableEnableColumn: '是否启用', + tableCreateTimeColumn: '创建时间', + tableOperateColumn: '操作', + tableEditAction: '编辑', + tableDeleteAction: '删除', + detailTabLabel: '班组成员', + dialogTeamNameLabel: '班组名称', + dialogTeamNamePlaceholder: '请输入班组名称', + dialogProcessLabel: '工序', + dialogProcessTooltip: '来源:数据字典-工序', + dialogGroupTypeLabel: '班组类型', + dialogGroupTypeTooltip: '来源:数据字典-班组类型', + dialogWorkTimeLabel: '工作时间', + dialogWorkTimeRangeSeparator: '至', + dialogWorkTimeStartPlaceholder: '开始时间', + dialogWorkTimeEndPlaceholder: '结束时间', + dialogRemarkLabel: '备注', + dialogRemarkPlaceholder: '请输入备注', + dialogEnableLabel: '是否启用', + dialogCancelButton: '取 消', + dialogSubmitButton: '确 定', + detailAddButtonText: '新增', + detailTableJobNoColumn: '工号', + detailTableRoleColumn: '角色', + detailTableRemarkColumn: '备注', + detailTableCreateTimeColumn: '创建时间', + detailTableOperateColumn: '操作', + detailDialogJobNoLabel: '工号', + detailDialogJobNoPlaceholder: '请选择工号', + detailDialogRoleLabel: '角色', + detailDialogRoleTooltip: '来源:数据字典-班组成员角色', + detailDialogRemarkLabel: '备注', + detailDialogRemarkPlaceholder: '请输入备注', + detailDialogMemberSuffix: '成员', + validatorTeamNameRequired: '班组名称不能为空', + validatorProcessRequired: '工序类型不能为空', + validatorGroupTypeRequired: '班组类型不能为空', + validatorEnableRequired: '是否启用不能为空', + validatorDetailUserRequired: '用户ID不能为空', + validatorDetailRoleRequired: '角色不能为空', + validatorSelectWorkTeamFirst: '请选择一个生产班组' + }, + + ProductUnit: { + moduleName: '单位管理', + searchNameLabel: '单位名称', + searchNamePlaceholder: '请输入单位名称', + searchStatusLabel: '单位状态', + searchStatusPlaceholder: '请选择单位状态', + searchButtonText: '搜索', + resetButtonText: '重置', + addButtonText: '新增', + exportButtonText: '导出', + tableNameColumn: '单位名称', + tablePrimaryFlagColumn: '是否主单位', + tableChangeRateColumn: '与主单位换算比例', + tableStatusColumn: '状态', + tableCreateTimeColumn: '创建时间', + tableOperateColumn: '操作', + tableEditAction: '编辑', + tableDeleteAction: '删除', + dialogNameLabel: '单位名称', + dialogNamePlaceholder: '请输入单位名称', + dialogPrimaryFlagLabel: '是否主单位', + dialogPrimaryUnitLabel: '关联主单位', + dialogPrimaryUnitPlaceholder: '请选择主单位', + dialogChangeRateLabel: '换算比例', + dialogChangeRatePlaceholder: '请输入换算比例', + dialogStatusLabel: '单位状态', + dialogCancelButton: '取 消', + dialogSubmitButton: '确 定', + validatorNameRequired: '单位名称不能为空', + validatorStatusRequired: '单位状态不能为空', + validatorPrimaryFlagRequired: '是否主单位不能为空' + } } } diff --git a/src/views/erp/autocode/AutocodeIndex.vue b/src/views/erp/autocode/AutocodeIndex.vue index 21767d5d..c79471e5 100644 --- a/src/views/erp/autocode/AutocodeIndex.vue +++ b/src/views/erp/autocode/AutocodeIndex.vue @@ -6,49 +6,49 @@ :model="queryParams" ref="queryFormRef" :inline="true" - label-width="68px" + min-label-width="68px" > - + - + - + - + - + @@ -61,15 +61,15 @@ - 搜索 - 重置 + {{ t('FactoryModeling.AutocodeRule.searchButtonText') }} + {{ t('FactoryModeling.AutocodeRule.resetButtonText') }} - 新增 + {{ t('FactoryModeling.AutocodeRule.addButtonText') }} - 导出 + {{ t('FactoryModeling.AutocodeRule.exportButtonText') }} @@ -91,36 +91,36 @@ - - - - - + + + + + - - + + - + - + @@ -257,7 +257,7 @@ const handleExport = async () => { // 发起导出 exportLoading.value = true const data = await AutocodeRuleApi.exportAutocodeRule(queryParams) - download.excel(data, '编码规则.xls') + download.excel(data, t('FactoryModeling.AutocodeRule.exportFilename')) } catch { } finally { exportLoading.value = false diff --git a/src/views/erp/autocode/AutocodeRuleForm.vue b/src/views/erp/autocode/AutocodeRuleForm.vue index 7a6403a0..3dea51d5 100644 --- a/src/views/erp/autocode/AutocodeRuleForm.vue +++ b/src/views/erp/autocode/AutocodeRuleForm.vue @@ -1,5 +1,5 @@ @@ -99,7 +118,9 @@ const formData = ref({ isEnable: undefined }) const formRules = reactive({ - isEnable: [{ required: true, message: '是否启用不能为空', trigger: 'blur' }] + isEnable: [ + { required: true, message: t('FactoryModeling.AutocodeRule.validatorIsEnableRequired'), trigger: 'blur' } + ] }) const formRef = ref() // 表单 Ref @@ -174,4 +195,4 @@ const resetForm = () => { } formRef.value?.resetFields() } - \ No newline at end of file + diff --git a/src/views/erp/autocode/components/AutocodePartForm.vue b/src/views/erp/autocode/components/AutocodePartForm.vue index 9eecd03d..ee89b1eb 100644 --- a/src/views/erp/autocode/components/AutocodePartForm.vue +++ b/src/views/erp/autocode/components/AutocodePartForm.vue @@ -8,15 +8,18 @@ :inline-message="true" > - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -155,23 +193,33 @@ - + 添加编码规则组成 + + {{ t('FactoryModeling.AutocodeRule.addPartButtonText') }} \ No newline at end of file + diff --git a/src/views/erp/autocode/components/AutocodePartList.vue b/src/views/erp/autocode/components/AutocodePartList.vue index 9c6881e6..ddd03b5c 100644 --- a/src/views/erp/autocode/components/AutocodePartList.vue +++ b/src/views/erp/autocode/components/AutocodePartList.vue @@ -2,40 +2,100 @@ - - - + + + - - - - - - - - - - + + + + + + + + + + - + - - + + { onMounted(() => { getList() }) - \ No newline at end of file + diff --git a/src/views/erp/product/category/ProductCategoryForm.vue b/src/views/erp/product/category/ProductCategoryForm.vue index ab512f91..98d74133 100644 --- a/src/views/erp/product/category/ProductCategoryForm.vue +++ b/src/views/erp/product/category/ProductCategoryForm.vue @@ -4,29 +4,29 @@ ref="formRef" :model="formData" :rules="formRules" - label-width="100px" + label-width="120px" v-loading="formLoading" > - + - - + + - - + + - - + + - + @@ -69,11 +69,11 @@ const formData = ref({ status: CommonStatusEnum.ENABLE }) const formRules = reactive({ - parentId: [{ required: true, message: '上级编号不能为空', trigger: 'blur' }], - name: [{ required: true, message: '名称不能为空', trigger: 'blur' }], - code: [{ required: true, message: '编码不能为空', trigger: 'blur' }], - sort: [{ required: true, message: '排序不能为空', trigger: 'blur' }], - status: [{ required: true, message: '状态不能为空', trigger: 'blur' }] + parentId: [{ required: true, message: t('FactoryModeling.ProductCategory.validatorParentRequired'), trigger: 'blur' }], + name: [{ required: true, message: t('FactoryModeling.ProductCategory.validatorNameRequired'), trigger: 'blur' }], + code: [{ required: true, message: t('FactoryModeling.ProductCategory.validatorCodeRequired'), trigger: 'blur' }], + sort: [{ required: true, message: t('FactoryModeling.ProductCategory.validatorSortRequired'), trigger: 'blur' }], + status: [{ required: true, message: t('FactoryModeling.ProductCategory.validatorStatusRequired'), trigger: 'blur' }] }) const formRef = ref() // 表单 Ref const productCategoryTree = ref() // 树形结构 @@ -138,7 +138,7 @@ const resetForm = () => { const getProductCategoryTree = async () => { productCategoryTree.value = [] const data = await ProductCategoryApi.getProductCategoryList() - const root: Tree = { id: 0, name: '顶级产品分类', children: [] } + const root: Tree = { id: 0, name: t('FactoryModeling.ProductCategory.treeRootName'), children: [] } root.children = handleTree(data, 'id', 'parentId') productCategoryTree.value.push(root) } diff --git a/src/views/erp/product/category/index.vue b/src/views/erp/product/category/index.vue index b88f664e..fd50c91d 100644 --- a/src/views/erp/product/category/index.vue +++ b/src/views/erp/product/category/index.vue @@ -8,21 +8,21 @@ :model="queryParams" ref="queryFormRef" :inline="true" - label-width="68px" + label-width="120px" > - + - + @@ -35,15 +35,15 @@ - 搜索 - 重置 + {{ t('FactoryModeling.ProductCategory.searchButtonText') }} + {{ t('FactoryModeling.ProductCategory.resetButtonText') }} - 新增 + {{ t('FactoryModeling.ProductCategory.addButtonText') }} - 导出 + {{ t('FactoryModeling.ProductCategory.exportButtonText') }} - 展开/折叠 + {{ t('FactoryModeling.ProductCategory.expandButtonText') }} @@ -72,22 +72,22 @@ :default-expand-all="isExpandAll" v-if="refreshTable" > - - - - + + + + - + diff --git a/src/views/erp/product/product/ProductForm.vue b/src/views/erp/product/product/ProductForm.vue index be37cbc4..7f223bcd 100644 --- a/src/views/erp/product/product/ProductForm.vue +++ b/src/views/erp/product/product/ProductForm.vue @@ -5,36 +5,36 @@ ref="formRef" :model="formData" :rules="formRules" - label-width="100px" + label-width="120px" v-loading="formLoading" > - - + + - - + + - + - - + + - - + + - + - + - + - + - + - + - - + + @@ -164,11 +164,11 @@ const formData = ref({ safetyNumber: undefined }) const formRules = reactive({ - name: [{ required: true, message: '产品名称不能为空', trigger: 'blur' }], - barCode: [{ required: true, message: '产品条码不能为空', trigger: 'blur' }], - categoryId: [{ required: true, message: '产品分类编号不能为空', trigger: 'blur' }], - unitId: [{ required: true, message: '单位编号不能为空', trigger: 'blur' }], - status: [{ required: true, message: '产品状态不能为空', trigger: 'blur' }] + name: [{ required: true, message: t('FactoryModeling.ProductInformation.validatorNameRequired'), trigger: 'blur' }], + barCode: [{ required: true, message: t('FactoryModeling.ProductInformation.validatorBarCodeRequired'), trigger: 'blur' }], + categoryId: [{ required: true, message: t('FactoryModeling.ProductInformation.validatorCategoryRequired'), trigger: 'blur' }], + unitId: [{ required: true, message: t('FactoryModeling.ProductInformation.validatorUnitRequired'), trigger: 'blur' }], + status: [{ required: true, message: t('FactoryModeling.ProductInformation.validatorStatusRequired'), trigger: 'blur' }] }) const formRef = ref() // 表单 Ref const categoryList = ref([]) // 产品分类列表 diff --git a/src/views/erp/product/product/index.vue b/src/views/erp/product/product/index.vue index 789b3d62..adee6a47 100644 --- a/src/views/erp/product/product/index.vue +++ b/src/views/erp/product/product/index.vue @@ -9,27 +9,27 @@ :model="queryParams" ref="queryFormRef" :inline="true" - label-width="68px" + label-width="120px" > - + - 搜索 - 重置 + {{ t('FactoryModeling.ProductInformation.searchButtonText') }} + {{ t('FactoryModeling.ProductInformation.resetButtonText') }} - 新增 + {{ t('FactoryModeling.ProductInformation.addButtonText') }} - 导出 + {{ t('FactoryModeling.ProductInformation.exportButtonText') }} @@ -63,24 +63,24 @@ --> - - - - - - + + + + + + - + diff --git a/src/views/erp/product/unit/ProductUnitForm.vue b/src/views/erp/product/unit/ProductUnitForm.vue index 292dbf38..501fc5be 100644 --- a/src/views/erp/product/unit/ProductUnitForm.vue +++ b/src/views/erp/product/unit/ProductUnitForm.vue @@ -4,13 +4,17 @@ ref="formRef" :model="formData" :rules="formRules" - label-width="100px" + label-width="120px" v-loading="formLoading" > - - + + - + - - - - + + + + - - + + - + @@ -82,9 +104,27 @@ const formData = ref({ changeRate: undefined, }) const formRules = reactive({ - name: [{ required: true, message: '单位名字不能为空', trigger: 'blur' }], - status: [{ required: true, message: '单位状态不能为空', trigger: 'blur' }], - primaryFlag: [{ required: true, message: '是否主单位不能为空', trigger: 'blur' }], + name: [ + { + required: true, + message: t('FactoryModeling.ProductUnit.validatorNameRequired'), + trigger: 'blur' + } + ], + status: [ + { + required: true, + message: t('FactoryModeling.ProductUnit.validatorStatusRequired'), + trigger: 'blur' + } + ], + primaryFlag: [ + { + required: true, + message: t('FactoryModeling.ProductUnit.validatorPrimaryFlagRequired'), + trigger: 'blur' + } + ] }) const formRef = ref() // 表单 Ref diff --git a/src/views/erp/product/unit/index.vue b/src/views/erp/product/unit/index.vue index 9cedd84e..d8fd7b71 100644 --- a/src/views/erp/product/unit/index.vue +++ b/src/views/erp/product/unit/index.vue @@ -6,21 +6,21 @@ :model="queryParams" ref="queryFormRef" :inline="true" - label-width="68px" + label-width="120px" > - + - + @@ -33,15 +33,22 @@ - 搜索 - 重置 + + + {{ t('FactoryModeling.ProductUnit.searchButtonText') }} + + + + {{ t('FactoryModeling.ProductUnit.resetButtonText') }} + - 新增 + + {{ t('FactoryModeling.ProductUnit.addButtonText') }} - 导出 + + {{ t('FactoryModeling.ProductUnit.exportButtonText') }} @@ -59,23 +67,35 @@ - - + + - - + + - + diff --git a/src/views/mes/bom/BomForm.vue b/src/views/mes/bom/BomForm.vue index fa15e694..f5bac62d 100644 --- a/src/views/mes/bom/BomForm.vue +++ b/src/views/mes/bom/BomForm.vue @@ -4,21 +4,21 @@ ref="formRef" :model="formData" :rules="formRules" - label-width="100px" + label-width="120px" v-loading="formLoading" > - - + + - - + + - + - - + + - + - - + + - + - + @@ -107,11 +107,11 @@ const formData = ref({ isEnable: undefined }) const formRules = reactive({ - code: [{ required: true, message: 'BOM编码不能为空', trigger: 'blur' }], - version: [{ required: true, message: 'BOM版本不能为空', trigger: 'blur' }], - productId: [{ required: true, message: '产品不能为空', trigger: 'blur' }], - unitId: [{ required: true, message: '单位不能为空', trigger: 'blur' }], - isEnable: [{ required: true, message: '是否启用不能为空', trigger: 'blur' }] + code: [{ required: true, message: t('FactoryModeling.ProductBOM.validatorCodeRequired'), trigger: 'blur' }], + version: [{ required: true, message: t('FactoryModeling.ProductBOM.validatorVersionRequired'), trigger: 'blur' }], + productId: [{ required: true, message: t('FactoryModeling.ProductBOM.validatorProductRequired'), trigger: 'blur' }], + unitId: [{ required: true, message: t('FactoryModeling.ProductBOM.validatorUnitRequired'), trigger: 'blur' }], + isEnable: [{ required: true, message: t('FactoryModeling.ProductBOM.validatorEnableRequired'), trigger: 'blur' }] }) const formRef = ref() // 表单 Ref diff --git a/src/views/mes/bom/components/BomDetailForm.vue b/src/views/mes/bom/components/BomDetailForm.vue index 26b7c57a..66de58bf 100644 --- a/src/views/mes/bom/components/BomDetailForm.vue +++ b/src/views/mes/bom/components/BomDetailForm.vue @@ -8,15 +8,15 @@ :inline-message="true" > - - + + - + @@ -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 @@