Procházet zdrojové kódy

中英文翻译提交

pm před 5 měsíci
rodič
revize
cba0852e48
60 změnil soubory, kde provedl 5555 přidání a 2653 odebrání
  1. 4 4
      src/components/LangSelect/index.vue
  2. 2230 65
      src/i18n/lang/en.js
  3. 955 20
      src/i18n/lang/zh.js
  4. 2 2
      src/layout/components/Navbar.vue
  5. 3 3
      src/layout/components/Settings/index.vue
  6. 3 2
      src/layout/components/Sidebar/Logo.vue
  7. 44 41
      src/views/mes/email/emailTemplates/index.vue
  8. 60 89
      src/views/mes/hw/Keys/index.vue
  9. 64 61
      src/views/mes/hw/Lock/index.vue
  10. 84 81
      src/views/mes/hw/information/index.vue
  11. 65 65
      src/views/mes/hw/lockCabinet/index.vue
  12. 56 53
      src/views/mes/hw/lockCabinet/lookList.vue
  13. 58 87
      src/views/mes/hw/padLocks/index.vue
  14. 42 42
      src/views/mes/hw/rfid/index.vue
  15. 43 43
      src/views/mes/hw/type/index.vue
  16. 43 43
      src/views/mes/hw/workCard/index.vue
  17. 63 60
      src/views/mes/material/Inspectionrecords/index.vue
  18. 28 28
      src/views/mes/material/blacklist/index.vue
  19. 47 43
      src/views/mes/material/collectionmanagement/index.vue
  20. 38 46
      src/views/mes/material/expireremind/index.vue
  21. 90 136
      src/views/mes/material/inspectionplan/index.vue
  22. 59 56
      src/views/mes/material/instructions/index.vue
  23. 3 3
      src/views/mes/material/inventory/index.vue
  24. 55 95
      src/views/mes/material/lockers/index.vue
  25. 120 118
      src/views/mes/material/materialinformation/index.vue
  26. 59 103
      src/views/mes/material/replacementrecords/index.vue
  27. 41 50
      src/views/mes/material/returnremind/index.vue
  28. 39 36
      src/views/mes/material/standard/PropertyForm.vue
  29. 35 32
      src/views/mes/material/standard/index.vue
  30. 58 53
      src/views/mes/material/typeofmaterial/index.vue
  31. 39 68
      src/views/mes/material/typeofmaterial/index1.vue
  32. 27 27
      src/views/monitor/logininfor/index.vue
  33. 19 19
      src/views/monitor/online/index.vue
  34. 45 45
      src/views/monitor/operlog/index.vue
  35. 16 16
      src/views/register.vue
  36. 49 49
      src/views/system/autocode/index.vue
  37. 56 56
      src/views/system/autocode/part.vue
  38. 47 47
      src/views/system/config/index.vue
  39. 45 45
      src/views/system/configuration/index.vue
  40. 39 39
      src/views/system/dept/index.vue
  41. 51 51
      src/views/system/dict/data.vue
  42. 43 43
      src/views/system/dict/index.vue
  43. 43 43
      src/views/system/mapconfig/index.vue
  44. 43 43
      src/views/system/mappoint/index.vue
  45. 35 35
      src/views/system/mars/index.vue
  46. 53 53
      src/views/system/menu/index.vue
  47. 51 51
      src/views/system/message/index.vue
  48. 36 36
      src/views/system/notice/index.vue
  49. 38 38
      src/views/system/post/index.vue
  50. 21 21
      src/views/system/role/AuthUser.vue
  51. 16 16
      src/views/system/role/SelectUser.vue
  52. 64 64
      src/views/system/role/index.vue
  53. 34 34
      src/views/system/unit/index.vue
  54. 12 12
      src/views/system/user/AuthRole.vue
  55. 96 96
      src/views/system/user/index.vue
  56. 14 14
      src/views/system/user/profile/ResetPwd.vue
  57. 7 7
      src/views/system/user/profile/UserAvatar.vue
  58. 14 14
      src/views/system/user/profile/UserInfo.vue
  59. 10 10
      src/views/system/user/profile/index.vue
  60. 1 1
      vue.config.js

+ 4 - 4
src/components/LangSelect/index.vue

@@ -5,10 +5,10 @@
     </div>
     <el-dropdown-menu slot="dropdown">
       <el-dropdown-item :disabled="language === 'zh'" command="zh">
-        <span>中文</span>
+        <span>{{ $t('navbar.chinese') }}</span>
       </el-dropdown-item>
       <el-dropdown-item :disabled="language === 'en'" command="en">
-        <span>English</span>
+        <span>{{ $t('navbar.english') }}</span>
       </el-dropdown-item>
     </el-dropdown-menu>
   </el-dropdown>
@@ -30,13 +30,13 @@ export default {
       if (this.$route.path === '/login' || this.$route.path === '/register') {
         // 登录页面直接更新,不刷新
         this.$message({
-          message: lang === 'zh' ? '切换语言成功' : 'Switch Language Success',
+          message: this.$t('navbar.switchLanguageSuccess'),
           type: 'success'
         })
       } else {
         // 其他页面刷新以应用语言更改
         this.$message({
-          message: lang === 'zh' ? '切换语言成功' : 'Switch Language Success',
+          message: this.$t('navbar.switchLanguageSuccess'),
           type: 'success'
         })
         this.$router.go(0)

+ 2230 - 65
src/i18n/lang/en.js

@@ -13,15 +13,30 @@ export default {
     import: 'Import',
     operation: 'Operation',
     status: 'Status',
-    createTime: 'Create Time',
-    updateTime: 'Update Time',
+    createTime: 'Creation Date',
+    updateTime: 'Update Date',
     remark: 'Remark',
     pleaseSelect: 'Please Select',
+    select: 'Select',
     pleaseInput: 'Please Input',
     success: 'Success',
     failed: 'Failed',
     loading: 'Loading...',
-    noData: 'No Data'
+    noData: 'No Data',
+    deleteConfirm: 'Confirm to delete selected data items?',
+    startDate: 'Start Date',
+    endDate: 'End Date',
+    yes: 'Yes',
+    no: 'No',
+    close: 'Close',
+    back: 'Back',
+    serialNo: 'Serial No.',
+    enable: 'Enable',
+    disable: 'Disable',
+    importFileFormat: 'Only xls and xlsx format files are allowed.',
+    importResult: 'Import Result',
+    batchDelete: 'Batch Delete',
+    view: 'View'
   },
   login: {
     title: 'System Login',
@@ -29,7 +44,7 @@ export default {
     username: 'Account',
     password: 'Password',
     code: 'Verification Code',
-    rememberMe: 'Remember Me',
+    rememberMe: 'Remember Password',
     login: 'Login',
     logging: 'Logging in...',
     register: 'Register Now',
@@ -39,32 +54,36 @@ export default {
     codePlaceholder: 'Verification Code',
     usernameRequired: 'Please enter your account',
     passwordRequired: 'Please enter your password',
-    codeRequired: 'Please enter the verification code'
+    codeRequired: 'Please enter verification code'
   },
   navbar: {
     profile: 'Profile',
     layoutSettings: 'Layout Settings',
     logout: 'Logout',
-    logoutConfirm: 'Are you sure you want to log out?',
+    logoutConfirm: 'Confirm to logout and exit the system?',
     tip: 'Tip',
-    language: 'Language'
+    language: 'Language',
+    switchLanguageSuccess: 'Switch Language Success',
+    chinese: '中文',
+    english: 'English',
+    layoutSize: 'Layout Size'
   },
   dashboard: {
     materialsTotal: 'Total Materials',
     cabinetMaterials: 'Materials in Cabinet',
     loanMaterials: 'Loaned Materials',
     exceptionCount: 'Exception Count',
-    ongoingJobs: 'Ongoing Jobs',
-    ticketName: 'Job Ticket Name',
-    workstation: 'Workstation',
-    machinery: 'Equipment/Process',
+    ongoingJobs: 'Jobs in Progress',
+    ticketName: 'Work Permit Name',
+    workstation: 'Station',
+    machinery: 'Equipment Process',
     jobType: 'Job Type',
     startTime: 'Start Time',
     loan: 'Loan',
     return: 'Return'
   },
   register: {
-    systemName: 'Guoruan MES',
+    systemName: 'NationalSoft MES',
     username: 'Account',
     password: 'Password',
     confirmPassword: 'Confirm Password',
@@ -72,23 +91,23 @@ export default {
     register: 'Register',
     registering: 'Registering...',
     loginWithExisting: 'Login with Existing Account',
-    passwordMismatch: 'The two passwords do not match',
+    passwordMismatch: 'Passwords do not match',
     usernameRequired: 'Please enter your account',
-    usernameLength: 'Account length must be between 2 and 20',
+    usernameLength: 'Account length must be between 2 and 20 characters',
     passwordRequired: 'Please enter your password',
-    passwordLength: 'Password length must be between 5 and 20',
+    passwordLength: 'Password length must be between 5 and 20 characters',
     confirmPasswordRequired: 'Please enter your password again',
-    codeRequired: 'Please enter the verification code',
+    codeRequired: 'Please enter verification code',
     registerSuccess: 'Congratulations! Your account {username} has been registered successfully!',
     systemTip: 'System Tip'
   },
   system: {
     user: {
-      userNo: 'User No.',
-      userNoPlaceholder: 'Please enter user number',
+      userNo: 'Employee No.',
+      userNoPlaceholder: 'Please enter employee number',
       name: 'Name',
       namePlaceholder: 'Please enter name',
-      phone: 'Phone Number',
+      phone: 'Phone',
       phonePlaceholder: 'Please enter phone number',
       unit: 'Unit',
       unitPlaceholder: 'Please select unit',
@@ -107,7 +126,7 @@ export default {
       resetPassword: 'Reset Password',
       resetKey: 'Reset Key',
       assignRole: 'Assign Role',
-      dialogTitle: 'Add or Modify User Configuration Dialog',
+      dialogTitle: 'Add or Edit User Dialog',
       namePlaceholder2: 'Please enter name',
       phonePlaceholder2: 'Please enter phone number',
       employeeNoPlaceholder: 'Please enter employee number',
@@ -117,51 +136,91 @@ export default {
       marsPost: 'Mars Post',
       postPlaceholder2: 'Please select post',
       filterKeyword: 'Enter keyword to filter',
-      gender: 'User Gender',
+      gender: 'Gender',
       genderPlaceholder: 'Please select gender',
+      nickName: 'Nickname',
+      nickNameRequired: 'Nickname cannot be empty',
+      userName: 'Login Account',
+      userNamePlaceholder: 'Please enter user name',
+      male: 'Male',
+      female: 'Female',
+      emailRequired: 'Email address cannot be empty',
+      phoneRequired: 'Phone number cannot be empty',
       userPassword: 'User Password',
       userPasswordPlaceholder: 'Please enter user password',
+      oldPassword: 'Old Password',
+      oldPasswordPlaceholder: 'Please enter old password',
+      oldPasswordRequired: 'Old password cannot be empty',
+      newPassword: 'New Password',
+      newPasswordPlaceholder: 'Please enter new password',
+      newPasswordRequired: 'New password cannot be empty',
+      confirmPassword: 'Confirm Password',
+      confirmPasswordPlaceholder: 'Please confirm password',
+      confirmPasswordRequired: 'Confirm password cannot be empty',
+      passwordLength: 'Length must be between 6 and 20 characters',
+      passwordMismatch: 'The two passwords do not match',
+      resetPasswordSuccess: 'Updated successfully',
       keyPassword: 'Key Password',
       keyPasswordPlaceholder: 'Please enter key password',
+      keyPasswordLength: 'Key password length must be 6 digits',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteSuccess: 'Deleted successfully',
       remarkPlaceholder: 'Please enter content',
       importDialog: 'User Import Dialog',
       uploadTip: 'Drag file here or click to upload',
-      fileFormat: 'Only xls and xlsx format files are allowed.',
+      fileFormat: 'Only xls, xlsx format files are allowed.',
       downloadTemplate: 'Download Template',
       viewDialog: 'View User Face and Fingerprint Dialog',
       serialNo: 'Serial No.',
       group: 'Group',
-      fingerprintData: 'User Fingerprint Data'
+      fingerprintData: 'Employee Fingerprint Data',
+      faceData: 'Employee Face Data',
+      profile: {
+        personalInfo: 'Personal Information',
+        basicInfo: 'Basic Information',
+        resetPassword: 'Change Password',
+        dept: 'Department',
+        role: 'Role',
+        clickToUploadAvatar: 'Click to upload avatar',
+        editAvatar: 'Edit Avatar',
+        fileFormatError: 'File format error, please upload image files such as JPG, PNG.'
+      },
+      authRole: {
+        basicInfo: 'Basic Information',
+        roleInfo: 'Role Information',
+        authSuccess: 'Authorization successful'
+      }
     },
     dept: {
-      deptName: 'Department Name',
+      deptName: 'Dept. Name',
       deptNamePlaceholder: 'Please enter department name',
       status: 'Status',
-      deptStatus: 'Department Status',
+      deptStatus: 'Dept. Status',
       expandCollapse: 'Expand/Collapse',
       sort: 'Sort',
-      createTime: 'Create Time',
-      parentDept: 'Parent Department',
+      createTime: 'Creation Date',
+      parentDept: 'Parent Dept.',
       parentDeptPlaceholder: 'Select parent department',
       displaySort: 'Display Sort',
       leader: 'Leader',
       leaderPlaceholder: 'Please enter leader',
-      phone: 'Contact Phone',
-      phonePlaceholder: 'Please enter contact phone',
+      phone: 'Phone',
+      phonePlaceholder: 'Please enter phone number',
       email: 'Email',
       emailPlaceholder: 'Please enter email',
-      dialogTitle: 'Add or Modify Department Dialog',
+      dialogTitle: 'Add or Edit Department Dialog',
       parentDeptRequired: 'Parent department cannot be empty',
       deptNameRequired: 'Department name cannot be empty',
       displaySortRequired: 'Display sort cannot be empty',
       emailFormat: 'Please enter a valid email address',
       phoneFormat: 'Please enter a valid phone number',
       addDept: 'Add Department',
-      editDept: 'Modify Department',
-      editSuccess: 'Modify Success',
-      addSuccess: 'Add Success',
-      deleteConfirm: 'Are you sure to delete the item with name?',
-      deleteSuccess: 'Delete Success'
+      editDept: 'Edit Department',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete data item with name?',
+      deleteSuccess: 'Deleted successfully'
     },
     post: {
       postCode: 'Post Code',
@@ -172,20 +231,26 @@ export default {
       postStatus: 'Post Status',
       postNo: 'Post No.',
       postSort: 'Post Sort',
-      createTime: 'Create Time',
-      dialogTitle: 'Add or Modify Post Dialog',
+      createTime: 'Creation Date',
+      dialogTitle: 'Add or Edit Post Dialog',
       codeNamePlaceholder: 'Please enter code name',
       postOrder: 'Post Order',
-      dialogTitle2: 'Add or Modify Post Dialog',
+      dialogTitle2: 'Add or Edit Post Dialog',
+      parentPost: 'Parent Post',
+      parentPostPlaceholder: 'Select parent post',
+      postPersonnel: 'Post Personnel',
+      view: 'View',
       addPost: 'Add Post',
-      editPost: 'Modify Post',
+      editPost: 'Edit Post',
       postNameRequired: 'Post name cannot be empty',
+      parentPostRequired: 'Parent post cannot be empty',
       postCodeRequired: 'Post code cannot be empty',
       postOrderRequired: 'Post order cannot be empty',
-      editSuccess: 'Modify Success',
-      addSuccess: 'Add Success',
-      deleteConfirm: 'Are you sure to delete the post with number?',
-      deleteSuccess: 'Delete Success'
+      confirmPost: 'Confirm to "{text}" "{postName}" post?',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete data item with post number?',
+      deleteSuccess: 'Deleted successfully'
     },
     unit: {
       unitNo: 'Unit No.',
@@ -195,22 +260,22 @@ export default {
       status: 'Status',
       unitType: 'Unit Type',
       sort: 'Sort',
-      createTime: 'Create Time',
-      dialogTitle: 'Add or Modify Unit Dialog',
+      createTime: 'Creation Date',
+      dialogTitle: 'Add or Edit Unit Dialog',
       internal: 'Internal',
       external: 'External',
       remarkPlaceholder: 'Please enter remark',
       unitNameRequired: 'Unit name cannot be empty',
       enable: 'Enable',
       disable: 'Disable',
-      confirmPost: 'Confirm post?',
+      confirmPost: 'Confirm to post?',
       success: 'Success',
       addUnit: 'Add Unit',
-      editUnit: 'Modify Unit',
-      editSuccess: 'Modify Success',
-      addSuccess: 'Add Success',
-      deleteConfirm: 'Are you sure to delete the selected items?',
-      deleteSuccess: 'Delete Success'
+      editUnit: 'Edit Unit',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete selected data items?',
+      deleteSuccess: 'Deleted successfully'
     },
     role: {
       roleName: 'Role Name',
@@ -234,12 +299,30 @@ export default {
       postPermission: 'Post Permission',
       allDataPermission: 'All Data Permission',
       customDataPermission: 'Custom Data Permission',
-      deptDataPermission: 'Department Data Permission',
-      deptAndBelowDataPermission: 'Department and Below Data Permission',
-      onlySelfDataPermission: 'Only Self Data Permission',
+      deptDataPermission: 'Dept. Data Permission',
+      deptAndBelowDataPermission: 'Dept. and Below Data Permission',
+      onlySelfDataPermission: 'Self Data Only',
       roleNameRequired: 'Role name cannot be empty',
       roleKeyRequired: 'Permission key cannot be empty',
-      roleOrderRequired: 'Role order cannot be empty'
+      roleOrderRequired: 'Role order cannot be empty',
+      addRole: 'Add Role',
+      editRole: 'Edit Role',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteSuccess: 'Deleted successfully',
+      roleId: 'Role ID',
+      selectUser: {
+        title: 'Select User',
+        selectUserRequired: 'Please select users to assign'
+      },
+      authUser: {
+        addUser: 'Add User',
+        batchCancelAuth: 'Batch Cancel Authorization',
+        cancelAuth: 'Cancel Authorization',
+        cancelAuthConfirm: 'Confirm to cancel role for user "{userName}"?',
+        batchCancelAuthConfirm: 'Cancel authorization for selected users?',
+        cancelAuthSuccess: 'Authorization cancelled successfully'
+      }
     }
   },
   commonComponents: {
@@ -247,10 +330,15 @@ export default {
       layoutSize: 'Layout Size'
     },
     sidebar: {
-      logo: 'Doctor Safety'
+      logo: 'Bosch Safety'
     },
     modal: {
-      systemTip: 'System Tip'
+      systemTip: 'System Tip',
+      savingToLocal: 'Saving to local, please wait...',
+      clearingCache: 'Clearing settings cache and refreshing, please wait...'
+    },
+    settings: {
+      themeStyleSettings: 'Theme Style Settings'
     },
     imageUpload: {
       uploadTip: 'Upload Tip',
@@ -261,11 +349,11 @@ export default {
       file: 'file',
       preview: 'Preview',
       loading: 'Loading',
-      formatError: 'File format is incorrect, please upload image format file!',
-      sizeError: 'Uploaded avatar image size cannot exceed MB!',
+      formatError: 'File format incorrect, please upload image format file!',
+      sizeError: 'Upload image size cannot exceed MB!',
       uploading: 'Uploading image, please wait...',
       countError: 'Upload file count cannot exceed!',
-      uploadFailed: 'Upload image failed, please try again'
+      uploadFailed: 'Upload failed, please retry'
     }
   },
   router: {
@@ -275,17 +363,2094 @@ export default {
     sopNew: 'SOP Management - New SOP',
     sopEdit: 'SOP Management - Edit SOP',
     sopView: 'SOP Management - View SOP',
-    jobNew: 'Job Management - New Job Ticket',
+    jobNew: 'Job Management - New Work Permit',
     jobExecute: 'Job Execution - Job Status',
     preview: 'Preview',
-    craftDetail: 'Craft Detail',
+    craftDetail: 'Process Detail',
     materialInstructionDetail: 'Material Instruction Detail',
-    deviceDetail: 'Device Detail',
+    deviceDetail: 'Equipment Detail',
     detail: 'Detail',
-    materialSpec: 'Material Specification',
+    materialSpec: 'Material Spec.',
     assignUser: 'Assign User',
-    dictData: 'Dictionary Data',
+    dictData: 'Dict. Data',
     ruleComposition: 'Rule Composition'
+  },
+  mes: {
+    hardwareType: {
+      hardwareTypeCode: 'Hardware Type Code',
+      hardwareTypeCodePlaceholder: 'Please enter hardware type code',
+      typeName: 'Type Name',
+      typeNamePlaceholder: 'Please enter type name',
+      status: 'Status',
+      statusPlaceholder: 'Please select status',
+      enable: 'Enable',
+      disable: 'Disable',
+      hardwareTypeNo: 'Hardware Type No.',
+      dialogTitle: 'Add or Edit Equipment Type Dialog',
+      parentType: 'Parent Type',
+      parentTypePlaceholder: 'Please select parent type',
+      autoGenerate: 'Auto Generate',
+      hardwareCodeRequired: 'Hardware code cannot be empty',
+      hardwareNameRequired: 'Hardware name cannot be empty',
+      addHardwareType: 'Add Hardware Type',
+      editHardwareType: 'Edit Hardware Type',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete hardware type with code?',
+      deleteSuccess: 'Deleted successfully'
+    },
+    rfid: {
+      rfidCode: 'RFID Code',
+      rfidCodePlaceholder: 'Please enter RFID code',
+      rfidContent: 'RFID Content',
+      rfidContentPlaceholder: 'Please enter lock cabinet name',
+      rfidType: 'RFID Type',
+      rfidTypePlaceholder: 'Please select RFID type',
+      status: 'Status',
+      statusPlaceholder: 'Please select status',
+      batchDelete: 'Batch Delete',
+      rifidCode: 'RIFID Code',
+      createTime: 'Creation Date',
+      dialogTitle: 'Add or Edit Equipment Repair Order Dialog',
+      autoGenerate: 'Auto Generate',
+      rfidContentPlaceholder2: 'Please enter RFID content',
+      remarkPlaceholder: 'Please enter remark',
+      rfidCodeRequired: 'RFID code cannot be empty',
+      rfidContentRequired: 'RFID content cannot be empty',
+      rfidTypeRequired: 'RFID type cannot be empty',
+      addRfid: 'Add RFID Info',
+      editRfid: 'Edit RFID Info',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete selected data items?',
+      deleteSuccess: 'Deleted successfully'
+    },
+    workCard: {
+      workCardCode: 'Work Card Code',
+      workCardCodePlaceholder: 'Please enter work card code',
+      workCardType: 'Work Card Type',
+      workCardTypePlaceholder: 'Please select work card type',
+      userName: 'User Name',
+      userPlaceholder: 'Please select work card user',
+      workCardNFC: 'Work Card NFC',
+      status: 'Status',
+      dialogTitle: 'Add or Edit Equipment Repair Order Dialog',
+      keyCodePlaceholder: 'Please enter key code',
+      autoGenerate: 'Auto Generate',
+      nfcPlaceholder: 'Please enter work card NFC',
+      remarkPlaceholder: 'Please enter remark',
+      workCardCodeRequired: 'Work card code cannot be empty',
+      userNameRequired: 'User name cannot be empty',
+      nfcRequired: 'Work card NFC cannot be empty',
+      workCardTypeRequired: 'Work card type cannot be empty',
+      addWorkCard: 'Add Work Card Info',
+      editWorkCard: 'Edit Work Card Info',
+      employeeCard: 'Employee Card',
+      tempCard: 'Temporary Card',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete data item with code?',
+      deleteSuccess: 'Deleted successfully'
+    },
+    lockCabinet: {
+      lockCabinetName: 'Lock Cabinet Name',
+      lockCabinetNamePlaceholder: 'Please enter lock cabinet name',
+      isOnline: 'Online',
+      isOnlinePlaceholder: 'Please select online status',
+      status: 'Status',
+      statusPlaceholder: 'Please select status',
+      batchDelete: 'Batch Delete',
+      lockCabinetCode: 'Lock Cabinet Code',
+      hardwareId: 'Hardware ID',
+      hardwareSerialNo: 'Hardware Serial No.',
+      post: 'Post',
+      image: 'Image',
+      icon: 'Icon',
+      detail: 'Detail',
+      view: 'View',
+      test: 'Test',
+      dialogTitle: 'Add or Edit Equipment Repair Order Dialog',
+      lockCabinetNo: 'Lock Cabinet No.',
+      lockCabinetNoPlaceholder: 'Please enter lock cabinet number',
+      autoGenerate: 'Auto Generate',
+      postNo: 'Post No.',
+      postPlaceholder: 'Select post',
+      hardwareIdPlaceholder: 'Please select hardware ID',
+      remarkPlaceholder: 'Please enter remark',
+      testType: 'Type',
+      typePlaceholder: 'Please enter type',
+      serialNo: 'Serial No.',
+      serialNoPlaceholder: 'Please enter loto serial number',
+      content: 'Content',
+      contentPlaceholder: 'Please enter content',
+      lockCabinetCodeRequired: 'Lock cabinet code cannot be empty',
+      lockCabinetNameRequired: 'Lock cabinet name cannot be empty',
+      hardwareIdRequired: 'Hardware ID cannot be empty',
+      postNoRequired: 'Post number cannot be empty',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      testSuccess: 'Test successful',
+      deleteConfirm: 'Confirm to delete selected data items?',
+      deleteSuccess: 'Deleted successfully',
+      lockCabinetView: 'Lock Cabinet View',
+      listView: 'List View',
+      slotCode: 'Slot Code',
+      slotCodePlaceholder: 'Please enter slot code',
+      slotType: 'Slot Type',
+      slotTypePlaceholder: 'Please select slot type',
+      row: 'Row',
+      col: 'Column',
+      isOccupied: 'Occupied',
+      occupiedHardwareId: 'Occupied Hardware ID',
+      lockCabinetNo2: 'Lock Cabinet No.',
+      slotNo: 'Slot No.',
+      slotNoPlaceholder: 'Please enter slot number',
+      rowPlaceholder: 'Please enter row',
+      colPlaceholder: 'Please enter column',
+      occupiedHardwareIdPlaceholder: 'Please select hardware ID',
+      addSlot: 'Add Slot Data Info',
+      editSlot: 'Edit Slot Data Info'
+    },
+    hardwareInfo: {
+      hardwareCode: 'Hardware Code',
+      hardwareCodePlaceholder: 'Please enter hardware code',
+      hardwareName: 'Hardware Name',
+      hardwareNamePlaceholder: 'Please enter hardware name',
+      status: 'Status',
+      statusPlaceholder: 'Please select hardware status',
+      hardwareType: 'Hardware Type',
+      hardwareTypePlaceholder: 'Please select hardware type',
+      specModel: 'Spec. Model',
+      specModelPlaceholder: 'Please enter spec. model',
+      createTime: 'Creation Date',
+      startDate: 'Start Date',
+      endDate: 'End Date',
+      batchDelete: 'Batch Delete',
+      hardwareNo: 'Hardware Code',
+      serialNo: 'Serial No.',
+      hardwareStatus: 'Hardware Status',
+      enableTime: 'Enable Time',
+      availableCount: 'Available Count',
+      usedCount: 'Used Count',
+      availableLifespan: 'Available Lifespan',
+      usedLifespan: 'Used Lifespan',
+      dialogTitle: 'Add or Edit Equipment Repair Order Dialog',
+      autoGenerate: 'Auto Generate',
+      hardwareTypePlaceholder2: 'Please select hardware type',
+      serialNoPlaceholder: 'Please enter serial number',
+      availableCountPlaceholder: 'Please enter available count',
+      usedCountPlaceholder: 'Please enter used count',
+      availableLifespanPlaceholder: 'Please enter available lifespan',
+      usedLifespanPlaceholder: 'Please enter used lifespan',
+      enableDate: 'Enable Date',
+      enableDatePlaceholder: 'Please select enable date',
+      online: 'Online',
+      offline: 'Offline',
+      exception: 'Exception',
+      hardwareCodeRequired: 'Hardware code cannot be empty',
+      hardwareNameRequired: 'Hardware name cannot be empty',
+      hardwareTypeRequired: 'Hardware type cannot be empty',
+      lastWeek: 'Last Week',
+      lastMonth: 'Last Month',
+      lastThreeMonths: 'Last Three Months',
+      addHardwareInfo: 'Add Hardware Info',
+      editHardwareInfo: 'Edit Hardware Info',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete data item with hardware code?',
+      deleteSuccess: 'Deleted successfully'
+    },
+    mapData: {
+      close: 'Close',
+      save: 'Save',
+      reset: 'Reset',
+      saveConfirm: 'Please confirm to save changes',
+      tip: 'Tip'
+    }
+  },
+  device: {
+    machineryType: {
+      typeName: 'Type Name',
+      typeNamePlaceholder: 'Please enter equipment type name',
+      isEnable: 'Enabled',
+      isEnablePlaceholder: 'Select Yes or No',
+      machineryTypeCode: 'Equipment Type Code',
+      machineryTypeName: 'Equipment Type Name',
+      dialogTitle: 'Add or Edit Equipment Type Dialog',
+      parentType: 'Parent Type',
+      parentTypePlaceholder: 'Please select parent type',
+      remarkPlaceholder: 'Please enter content',
+      parentTypeRequired: 'Parent type cannot be empty',
+      machineryTypeNameRequired: 'Equipment type name cannot be empty',
+      isEnableRequired: 'Enabled status cannot be empty',
+      addMachineryType: 'Add Equipment Type',
+      editMachineryType: 'Edit Equipment Type',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete data item with equipment type number?',
+      deleteSuccess: 'Deleted successfully'
+    },
+    machinery: {
+      categoryNamePlaceholder: 'Please enter category name',
+      machineryCode: 'Equipment Code',
+      machineryCodePlaceholder: 'Please enter equipment code',
+      machineryName: 'Equipment Name',
+      machineryNamePlaceholder: 'Please enter equipment name',
+      brand: 'Brand',
+      specModel: 'Spec. Model',
+      workshop: 'Workshop',
+      machineryStatus: 'Equipment Status',
+      dialogTitle: 'Add or Edit Equipment Dialog',
+      autoGenerate: 'Auto Generate',
+      brandPlaceholder: 'Please enter brand',
+      category: 'Equipment Category',
+      categoryPlaceholder: 'Please select category',
+      specModelPlaceholder: 'Please enter spec. model',
+      workshopPlaceholder: 'Please select workshop',
+      remarkPlaceholder: 'Please enter content',
+      back: 'Back',
+      machineryCodeRequired: 'Equipment code cannot be empty',
+      machineryCodeLength: 'Equipment code length must be less than 64 characters',
+      machineryNameRequired: 'Equipment name cannot be empty',
+      workshopRequired: 'Workshop cannot be empty',
+      categoryRequired: 'Equipment category cannot be empty',
+      importDialog: 'Material Import Dialog',
+      uploadTip: 'Drag file here or click to upload',
+      updateExisting: 'Update existing equipment data?',
+      fileFormat: 'Only xls, xlsx format files are allowed.',
+      downloadTemplate: 'Download Template'
+    },
+    segregationPoint: {
+      pointName: 'Isolation Point Name',
+      pointNamePlaceholder: 'Please enter isolation point name',
+      pointType: 'Isolation Point Type',
+      pointTypePlaceholder: 'Please select isolation point type',
+      status: 'Status',
+      statusPlaceholder: 'Please select status',
+      batchDelete: 'Batch Delete',
+      pointNo: 'Isolation Point No.',
+      dangerEnergyType: 'Hazardous Energy Type',
+      dialogTitle: 'Add or Edit Isolation Point Dialog',
+      dangerEnergyTypePlaceholder: 'Please select hazardous energy type',
+      remarkPlaceholder: 'Please enter remark',
+      pointNameRequired: 'Isolation point name cannot be empty',
+      pointTypeRequired: 'Isolation point type cannot be empty',
+      dangerEnergyTypeRequired: 'Hazardous energy type cannot be empty',
+      addPoint: 'Add Isolation Point',
+      editPoint: 'Edit Isolation Point',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete data item with isolation point number?',
+      deleteSuccess: 'Deleted successfully'
+    },
+    switchManagement: {
+      switchName: 'Switch Name',
+      switchNamePlaceholder: 'Please enter switch name',
+      switchType: 'Switch Type',
+      switchTypePlaceholder: 'Please select switch type',
+      status: 'Status',
+      statusPlaceholder: 'Please select status',
+      batchDelete: 'Batch Delete',
+      switchNo: 'Switch No.',
+      dialogTitle: 'Add or Edit Switch Dialog',
+      remarkPlaceholder: 'Please enter remark',
+      switchNameRequired: 'Switch name cannot be empty',
+      switchTypeRequired: 'Switch type cannot be empty',
+      addSwitch: 'Add Switch',
+      editSwitch: 'Edit Switch',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete data item with switch number?',
+      deleteSuccess: 'Deleted successfully'
+    },
+    lotoStation: {
+      stationName: 'LOTO Station Name',
+      stationNamePlaceholder: 'Please enter LOTO station name',
+      status: 'Status',
+      statusPlaceholder: 'Please select status',
+      batchDelete: 'Batch Delete',
+      stationNo: 'LOTO Station No.',
+      dialogTitle: 'Add or Edit LOTO Station Dialog',
+      remarkPlaceholder: 'Please enter remark',
+      stationNameRequired: 'LOTO station name cannot be empty',
+      addStation: 'Add LOTO Station',
+      editStation: 'Edit LOTO Station',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete data item with LOTO station number?',
+      deleteSuccess: 'Deleted successfully'
+    },
+    switchMotor: {
+      motorName: 'Motor Name',
+      motorNamePlaceholder: 'Please enter motor name',
+      motorType: 'Motor Type',
+      motorTypePlaceholder: 'Please select motor type',
+      status: 'Status',
+      statusPlaceholder: 'Please select status',
+      batchDelete: 'Batch Delete',
+      motorNo: 'Motor No.',
+      dialogTitle: 'Add or Edit Motor Dialog',
+      remarkPlaceholder: 'Please enter remark',
+      motorNameRequired: 'Motor name cannot be empty',
+      motorTypeRequired: 'Motor type cannot be empty',
+      addMotor: 'Add Motor',
+      editMotor: 'Edit Motor',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete data item with motor number?',
+      deleteSuccess: 'Deleted successfully'
+    },
+    technology: {
+      selectPostTip: 'Please select post name below',
+      craft: 'Process',
+      device: 'Equipment',
+      craftName: 'Process Name',
+      craftNamePlaceholder: 'Please enter process name',
+      deviceName: 'Equipment Name',
+      deviceNamePlaceholder: 'Please enter equipment name',
+      craftNo: 'Process No.',
+      deviceNo: 'Equipment No.',
+      craftImage: 'Process Image',
+      deviceImage: 'Equipment Image',
+      dialogTitle: 'Add or Edit Department Dialog',
+      namePlaceholder: 'Please enter name',
+      postPlaceholder: 'Please select post',
+      cabinetPlaceholder: 'Please select cabinet',
+      deviceInfo: 'Equipment Info',
+      lotoStation: 'LOTO Station',
+      deviceCraftName: 'Equipment/Process Name',
+      deviceCraftNamePlaceholder: 'Please enter equipment/process name',
+      deviceCraftCode: 'Equipment/Process Code',
+      deviceCraftCodePlaceholder: 'Please enter equipment/process code',
+      autoGenerate: 'Auto Generate',
+      deviceCraftType: 'Equipment/Process Type',
+      deviceCraftTypePlaceholder: 'Please enter equipment/process type',
+      craftImage2: 'Process Image',
+      deviceCraftCodeRequired: 'Equipment/process code cannot be empty',
+      deviceCraftNameRequired: 'Equipment/process name cannot be empty',
+      postRequired: 'Post cannot be empty',
+      cabinetRequired: 'Cabinet cannot be empty',
+      craftInfo: 'Process Info',
+      deviceList: 'Equipment List',
+      sopList: 'SOP List',
+      deviceCraftImage: 'Process/Equipment Process Image',
+      lotoStationInfo: 'LOTO Station Info',
+      lockStationInfo: 'Lock Station Info',
+      eightSteps: 'Eight Steps',
+      deviceCode: 'Equipment Code',
+      deviceName2: 'Equipment Name',
+      deviceImage2: 'Equipment Image',
+      sopName: 'SOP Name',
+      workContent: 'Work Content',
+      deviceListDialog: 'Add or Edit Equipment List Dialog',
+      deviceNamePlaceholder2: 'Please enter equipment name',
+      deviceCodePlaceholder: 'Please enter equipment number'
+    }
+  },
+  sop: {
+    sopName: 'SOP Name',
+    sopNamePlaceholder: 'Please enter SOP name',
+    sopType: 'SOP Type',
+    sopTypePlaceholder: 'Please select SOP type',
+    status: 'Status',
+    statusPlaceholder: 'Please select status',
+    batchDelete: 'Batch Delete',
+    sopNo: 'SOP No.',
+    view: 'View',
+    dialogTitle: 'Add or Edit SOP Dialog',
+    sopNoPlaceholder: 'Please enter SOP number',
+    autoGenerate: 'Auto Generate',
+    sopContent: 'SOP Content',
+    isolationPointInfo: 'Isolation Point Info',
+    isolationPoint: 'Isolation Point',
+    isolationPointType: 'Isolation Point Type',
+    dangerEnergyType: 'Hazardous Energy Type',
+    preIsolationPoint: 'Pre-Isolation Point',
+    personnelInfo: 'Personnel Info',
+    locker: 'Locker',
+    coLocker: 'Group Lock Member',
+    addInternalPerson: 'Add Internal Personnel',
+    addExternalPerson: 'Add External Personnel',
+    sopNameRequired: 'SOP name cannot be empty',
+    sopNoRequired: 'SOP number cannot be empty',
+    sopTypeRequired: 'SOP type cannot be empty',
+    addSop: 'Add SOP',
+    editSop: 'Edit SOP',
+    editSuccess: 'Updated successfully',
+    addSuccess: 'Added successfully',
+    deleteConfirm: 'Confirm to delete data item with SOP number?',
+    deleteSuccess: 'Deleted successfully',
+    newSop: {
+      title: 'LD-R&R SOP',
+      selectCraftDevice: 'Select Process/Equipment',
+      deviceCraftName: 'Equipment/Process Name',
+      post: 'Post',
+      deviceCraftType: 'Equipment/Process Type',
+      postType: 'Post Type',
+      sopType: 'SOP Type',
+      shiftChange: 'Shift Change',
+      cleaning: 'Cleaning',
+      changeover: 'Changeover',
+      repair: 'Repair',
+      pm: 'PM',
+      startExecute: 'Start Execute',
+      previousStep: 'Previous Step',
+      craftImage: 'Process/Equipment Process Image',
+      lotoStationInfo: 'LOTO Station Info',
+      eightSteps: 'Eight Steps',
+      step1: 'Step 1',
+      step2: 'Step 2',
+      step3: 'Step 3',
+      step4: 'Step 4',
+      step5: 'Step 5',
+      step6: 'Step 6',
+      step7: 'Step 7',
+      step8: 'Step 8',
+      executed: 'Executed',
+      assign: 'Assign',
+      execute: 'Execute',
+      step1Content: 'Identify work to be performed',
+      step2Content: 'Determine energy sources and isolation methods for lockout',
+      step3Content: 'Notify all affected employees',
+      step4Content: 'If equipment is running, shut down using normal operating procedures',
+      step5Content: 'Lockout and tagout',
+      step6Content: 'Verify energy isolation',
+      step7Content: 'Check before removing lock',
+      step8Content: 'Remove locks and restore isolation devices to normal position',
+      addPersonnel: 'Add Personnel',
+      selectInternalPerson: 'Select Internal Personnel',
+      personPlaceholder: 'Please select personnel',
+      selectExternalPerson: 'Select External Personnel'
+    },
+    viewSop: {
+      basicInfo: 'Basic Info',
+      sopName: 'SOP Name',
+      sopNamePlaceholder: 'Please enter SOP name',
+      sopNo: 'SOP No.',
+      sopNoPlaceholder: 'Please enter SOP number',
+      autoGenerate: 'Auto Generate',
+      sopType: 'SOP Type',
+      sopTypePlaceholder: 'Please select SOP type',
+      sopContent: 'SOP Content',
+      isolationPointInfo: 'Isolation Point Info',
+      isolationPoint: 'Isolation Point',
+      isolationPointType: 'Isolation Point Type',
+      dangerEnergyType: 'Hazardous Energy Type',
+      preIsolationPoint: 'Pre-Isolation Point',
+      personnelInfo: 'Personnel Info',
+      locker: 'Locker',
+      coLocker: 'Group Lock Member',
+      addInternalPerson: 'Add Internal Personnel',
+      addExternalPerson: 'Add External Personnel'
+    }
+  },
+  job: {
+    jobList: {
+      ticketName: 'Work Permit Name',
+      ticketNamePlaceholder: 'Please enter work permit name',
+      jobType: 'Job Type',
+      jobTypePlaceholder: 'Please select job type',
+      status: 'Status',
+      statusPlaceholder: 'Please select status',
+      batchDelete: 'Batch Delete',
+      ticketNo: 'Work Permit No.',
+      dialogTitle: 'Add or Edit Work Permit Dialog',
+      ticketNoPlaceholder: 'Please enter work permit number',
+      autoGenerate: 'Auto Generate',
+      remarkPlaceholder: 'Please enter remark',
+      ticketNameRequired: 'Work permit name cannot be empty',
+      ticketNoRequired: 'Work permit number cannot be empty',
+      jobTypeRequired: 'Job type cannot be empty',
+      addTicket: 'Add Work Permit',
+      editTicket: 'Edit Work Permit',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete data item with work permit number?',
+      deleteSuccess: 'Deleted successfully'
+    },
+    jobManagement: {
+      selectPost: 'Select Post',
+      selectSop: 'Select SOP',
+      jobDetail: 'Job Detail',
+      selectCraftDevice: 'Select Process/Equipment',
+      deviceCraftName: 'Equipment/Process Name',
+      sopType: 'SOP Type',
+      startExecute: 'Start Execute',
+      craftImage: 'Process/Equipment Process Image',
+      lockStationInfo: 'Lock Station Info',
+      eightSteps: 'Eight Steps',
+      step: 'Step',
+      stepLabel: 'Step',
+      status: 'Status',
+      assign: 'Assign',
+      executed: 'Executed',
+      execute: 'Execute',
+      content: 'Content',
+      detail: 'Detail',
+      view: 'View',
+      jobLog: 'Job Log',
+      all: 'All',
+      finishJob: 'Finish Job',
+      cancelJob: 'Cancel Job',
+      newLogAlert: 'New Log Alert',
+      addPersonnel: 'Add Personnel',
+      locker: 'Locker',
+      selectedPersonList: 'Selected Personnel List',
+      name: 'Name',
+      source: 'Source',
+      internal: 'Internal',
+      external: 'External',
+      internalCoLockerList: 'Internal Group Lock Member List',
+      internalPersonId: 'Internal Personnel ID',
+      searchName: 'Search Name',
+      externalCoLockerList: 'External Group Lock Member List',
+      externalPersonId: 'External Personnel ID',
+      lockerRequired: 'Locker cannot be empty',
+      jobStatus: 'Job Status',
+      jobNo: 'Job No.',
+      jobName: 'Job Name',
+      lockKey: 'Lock Key',
+      unlockKey: 'Unlock Key',
+      personnelStatus: 'Personnel Status',
+      coLocker: 'Group Lock Member',
+      isolationPointStatus: 'Isolation Point Status',
+      isolationPoint: 'Isolation Point',
+      padlockName: 'Padlock Name',
+      lockMechanism: 'Lock Mechanism',
+      close: 'Close',
+      affectedTickets: 'Affected Work Permits',
+      ticketNo: 'Work Permit No.',
+      ticketName: 'Work Permit Name',
+      ticketStatus: 'Work Permit Status',
+      ticketType: 'Work Permit Type',
+      lockStationInfo2: 'Lock Station Info',
+      isolationPointName: 'Isolation Point Name',
+      function: 'Function',
+      ongoingJobs: 'Jobs in Progress',
+      post: 'Post',
+      no: 'No.',
+      icon: 'Icon',
+      operation: 'Operation'
+    },
+    jobExecution: {
+      selectPost: 'Select Post',
+      selectSop: 'Select SOP',
+      jobDetail: 'Job Detail',
+      selectCraftDevice: 'Select Process/Equipment',
+      deviceCraftName: 'Equipment/Process Name',
+      sopType: 'SOP Type',
+      startExecute: 'Start Execute',
+      craftImage: 'Process/Equipment Process Image',
+      lockStationInfo: 'Lock Station Info',
+      eightSteps: 'Eight Steps',
+      step1: 'Step 1',
+      step2: 'Step 2',
+      step3: 'Step 3',
+      step4: 'Step 4',
+      step5: 'Step 5',
+      step6: 'Step 6',
+      step7: 'Step 7',
+      step8: 'Step 8',
+      executed: 'Executed',
+      assign: 'Assign',
+      execute: 'Execute',
+      view: 'View',
+      step1Content: 'Identify work to be performed',
+      step2Content: 'Determine energy sources and isolation methods for lockout',
+      step3Content: 'Notify all affected employees',
+      step4Content: 'If equipment is running, shut down using normal operating procedures',
+      step5Content: 'Lockout and tagout',
+      step6Content: 'Verify energy isolation',
+      step7Content: 'Check before removing lock',
+      step8Content: 'Remove locks and restore isolation devices to normal position'
+    },
+    jobDetail: {
+      jobStatus: 'Job Status',
+      jobName: 'Job Name',
+      status: 'Status',
+      lockKey: 'Lock Key',
+      unlockKey: 'Unlock Key',
+      personnelStatus: 'Personnel Status',
+      locker: 'Locker',
+      coLocker: 'Group Lock Member',
+      isolationPointStatus: 'Isolation Point Status',
+      isolationPoint: 'Isolation Point',
+      switchStatus: 'Switch Status',
+      padlockName: 'Padlock Name',
+      lockMechanism: 'Lock Mechanism'
+    }
+  },
+  statistics: {
+    lockerDaily: {
+      dailyLoanReturn: 'Daily Loan Return Statistics',
+      totalLoanCount: 'Total Loan Count',
+      totalNormalReturnCount: 'Total Normal Return Count',
+      totalTimeoutReturnCount: 'Total Timeout Return Count',
+      count: 'Count',
+      times: 'times'
+    },
+    lockerLending: {
+      avgLoanDuration: 'Average Material Loan Duration',
+      avgLoanHours: 'Average Loan Duration (Hours)',
+      hours: 'hours'
+    },
+    lockerCollection: {
+      materialLoan: 'Material Loan Statistics',
+      loanCount: 'Loan Count',
+      count: 'Count',
+      times: 'times'
+    },
+    lockerReturn: {
+      materialReturn: 'Material Return Statistics',
+      normalReturnCount: 'Normal Return Count',
+      timeoutReturnCount: 'Timeout Return Count',
+      count: 'Count'
+    },
+    lockerOpen: {
+      cabinetOpenClose: 'Cabinet Open/Close Count',
+      openCloseCount: 'Open/Close Count',
+      count: 'Count',
+      times: 'times'
+    },
+    lockerMistake: {
+      cabinetException: 'Cabinet Exception Statistics',
+      wrongPlacement: 'Wrong Placement',
+      timeoutNotClosed: 'Timeout Not Closed',
+      count: 'Count'
+    },
+    lockerChange: {
+      materialReplacement: 'Material Replacement Statistics',
+      normalReplacementCount: 'Normal Replacement Count',
+      expiredReplacementCount: 'Expired Replacement Count',
+      damagedReplacementCount: 'Damaged Replacement Count',
+      count: 'Count'
+    },
+    lockerSpeciality: {
+      specialStatus: 'Special Status Material Statistics (Current Time)',
+      aboutToExpire: 'About to Expire',
+      expired: 'Expired',
+      damaged: 'Damaged Count',
+      unit: 'pcs'
+    }
+  },
+  material: {
+    materialInfo: {
+      materialCode: 'Material Code',
+      materialCodePlaceholder: 'Please enter material code',
+      materialName: 'Material Name',
+      materialNamePlaceholder: 'Please enter material name',
+      materialType: 'Material Type',
+      materialTypePlaceholder: 'Please select material type',
+      status: 'Status',
+      statusPlaceholder: 'Please select status',
+      batchDelete: 'Batch Delete',
+      materialNo: 'Material No.',
+      dialogTitle: 'Add or Edit Material Dialog',
+      autoGenerate: 'Auto Generate',
+      materialTypePlaceholder2: 'Please select material type',
+      statusPlaceholder2: 'Please select status',
+      remarkPlaceholder: 'Please enter remark',
+      materialCodeRequired: 'Material code cannot be empty',
+      materialNameRequired: 'Material name cannot be empty',
+      materialTypeRequired: 'Material type cannot be empty',
+      addMaterial: 'Add Material',
+      editMaterial: 'Edit Material',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete data item with material number?',
+      deleteSuccess: 'Deleted successfully',
+      cabinet: 'Cabinet',
+      cabinetPlaceholder: 'Please select cabinet',
+      bindCabinet: 'Bind Cabinet',
+      bindCabinetPlaceholder: 'Please select bind cabinet',
+      rfid: 'RFID',
+      rfidPlaceholder: 'Please enter material RFID',
+      supplier: 'Supplier',
+      supplierPlaceholder: 'Please enter supplier',
+      expirationDate: 'Expiration Date',
+      selectDate: 'Select Date',
+      materialSpec: 'Material Spec.',
+      materialSpecType: 'Material Spec. Type',
+      materialSpecTypePlaceholder: 'Please select material spec. type',
+      materialSpecPlaceholder: 'Please enter material spec.',
+      isInCabinet: 'In Cabinet',
+      materialStatus: 'Material Status'
+    },
+    materialType: {
+      typeName: 'Type Name',
+      typeNamePlaceholder: 'Please enter type name',
+      status: 'Status',
+      statusPlaceholder: 'Please select status',
+      batchDelete: 'Batch Delete',
+      typeNo: 'Type No.',
+      dialogTitle: 'Add or Edit Material Type Dialog',
+      remarkPlaceholder: 'Please enter remark',
+      typeNameRequired: 'Type name cannot be empty',
+      addMaterialType: 'Add Material Type',
+      editMaterialType: 'Edit Material Type',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete data item with type number?',
+      deleteSuccess: 'Deleted successfully'
+    },
+    materialStandard: {
+      materialSpecType: 'Material Spec. Type',
+      materialSpecTypePlaceholder: 'Please enter material spec. type',
+      batchDelete: 'Batch Delete',
+      no: 'No.',
+      createTime: 'Creation Date',
+      specSettings: 'Spec. Settings',
+      remarkPlaceholder: 'Please enter content',
+      nameRequired: 'Name cannot be empty',
+      addMaterialSpecType: 'Add Material Spec. Type',
+      editMaterialSpecType: 'Edit Material Spec. Type',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete selected data items?',
+      deleteSuccess: 'Deleted successfully',
+      propertyForm: {
+        materialSpecTypeNo: 'Material Spec. Type No.',
+        materialSpecTypePlaceholder: 'Please enter material spec. type',
+        materialSpec: 'Material Spec.',
+        materialSpecPlaceholder: 'Please enter material spec.',
+        back: 'Back',
+        materialSpecRequired: 'Material spec. cannot be empty',
+        addMaterialSpec: 'Add Material Spec.',
+        editMaterialSpec: 'Edit Material Spec.'
+      }
+    },
+    collectionManagement: {
+      cabinet: 'Cabinet',
+      cabinetPlaceholder: 'Please select cabinet',
+      materialName: 'Material Name',
+      materialNamePlaceholder: 'Please enter material name',
+      materialType: 'Material Type',
+      materialTypePlaceholder: 'Please select material type',
+      loanPerson: 'Loan Person',
+      loanPersonPlaceholder: 'Please enter loan person',
+      loanTime: 'Loan Time',
+      startDate: 'Start Date',
+      endDate: 'End Date',
+      returnPerson: 'Return Person',
+      returnPersonPlaceholder: 'Please enter return person',
+      returnTime: 'Return Time',
+      status: 'Status',
+      timeoutNotReturned: 'Timeout Not Returned',
+      materialNo: 'Material No.',
+      materialImage: 'Material Image',
+      loanDuration: 'Loan Duration',
+      lastWeek: 'Last Week',
+      lastMonth: 'Last Month',
+      lastThreeMonths: 'Last Three Months'
+    },
+    inventory: {
+      materialType: 'Material Type',
+      overview: 'Overview',
+      inCabinet: 'In Cabinet',
+      loaned: 'Loaned',
+      normal: 'Normal',
+      expired: 'Expired',
+      damaged: 'Damaged'
+    },
+    instructions: {
+      title: 'Title',
+      titlePlaceholder: 'Please enter title',
+      materialType: 'Material Type',
+      materialTypePlaceholder: 'Please select material type',
+      type: 'Type',
+      batchDelete: 'Batch Delete',
+      instructionNo: 'Instruction No.',
+      sort: 'Sort',
+      file: 'File',
+      view: 'View',
+      detail: 'Detail',
+      addTime: 'Add Time',
+      dialogTitle: 'Add or Edit Material Dialog',
+      displaySort: 'Display Sort',
+      selectMaterialType: 'Select Material Type',
+      fileType: 'File Type',
+      delete: 'Delete',
+      import: 'Import',
+      uploadTip: 'Drag file here or click to upload',
+      fileFormat: 'mp4, pdf format files.',
+      confirm: 'Confirm',
+      uploading: 'Uploading',
+      deleteSuccess: 'Deleted successfully'
+    },
+    blacklist: {
+      employeeNo: 'Employee No.',
+      employeeNoPlaceholder: 'Please enter employee number',
+      name: 'Name',
+      namePlaceholder: 'Please enter name',
+      batchDelete: 'Batch Delete',
+      userNo: 'User No.',
+      createTime: 'Creation Date',
+      dialogTitle: 'Add or Edit Equipment Repair Order Dialog',
+      namePlaceholder2: 'Please enter name',
+      type: 'Type',
+      loginName: 'Login Name'
+    },
+    inspectionPlan: {
+      planName: 'Plan Name',
+      planNamePlaceholder: 'Please enter plan name',
+      cabinet: 'Cabinet',
+      cabinetPlaceholder: 'Please select inspection cabinet',
+      planDate: 'Plan Date',
+      startDate: 'Start Date',
+      endDate: 'End Date',
+      inspector: 'Inspector',
+      inspectorPlaceholder: 'Please select inspector',
+      status: 'Status',
+      startAutoCreate: 'Start Auto Create',
+      planFrequency: 'Plan Frequency',
+      planFrequencyPlaceholder: 'Please select plan frequency',
+      month: 'Month',
+      week: 'Week',
+      planDatePlaceholder: 'Please select plan date',
+      autoCreateNote: '(*Auto-created inspection plans cover all cabinets)',
+      planNo: 'Plan No.',
+      inspectionRecord: 'Inspection Record',
+      view: 'View',
+      dialogTitle: 'Add or Edit Team Dialog',
+      area: 'Area',
+      areaPlaceholder: 'Select area',
+      cabinetPlaceholder2: 'Please select inspection cabinet',
+      datePlaceholder: 'Please select date',
+      inspectionCabinetDetail: 'Inspection Cabinet Detail',
+      planName2: 'Plan Name',
+      inspectionCabinet: 'Inspection Cabinet',
+      signature: 'Signature',
+      detail: 'Detail',
+      close: 'Close',
+      cabinetInspectionRecord: 'Cabinet Inspection Record',
+      materialNo: 'Material No.',
+      materialName: 'Material Name',
+      materialType: 'Material Type',
+      materialImage: 'Material Image',
+      rfid: 'RFID',
+      inspectionTime: 'Inspection Time',
+      inspectionResult: 'Inspection Result',
+      exceptionReason: 'Exception Reason',
+      measure: 'Measure',
+      replacementRecord: 'Replacement Record'
+    },
+    inspectionRecord: {
+      planName: 'Plan Name',
+      planNamePlaceholder: 'Please enter plan name',
+      cabinet: 'Cabinet',
+      cabinetPlaceholder: 'Please select cabinet',
+      materialName: 'Material Name',
+      materialNamePlaceholder: 'Please enter material name',
+      materialType: 'Material Type',
+      materialTypePlaceholder: 'Please select material type',
+      rfid: 'RFID',
+      rfidPlaceholder: 'Please enter RFID',
+      inspectionTime: 'Inspection Time',
+      startDate: 'Start Date',
+      endDate: 'End Date',
+      inspectionResult: 'Inspection Result',
+      exceptionReason: 'Exception Reason',
+      status: 'Status',
+      planName2: 'Plan Name',
+      materialNo: 'Material No.',
+      measure: 'Measure'
+    },
+    replacementRecord: {
+      cabinet: 'Cabinet',
+      cabinetPlaceholder: 'Please select cabinet',
+      materialType: 'Material Type',
+      materialTypePlaceholder: 'Please select material type',
+      originalMaterialNo: 'Original Material No.',
+      originalMaterialNoPlaceholder: 'Please enter original material number',
+      originalRfid: 'Original RFID',
+      originalRfidPlaceholder: 'Please enter original RFID',
+      newMaterialNo: 'New Material No.',
+      newMaterialNoPlaceholder: 'Please enter new material number',
+      newRfid: 'New RFID',
+      newRfidPlaceholder: 'Please enter new RFID',
+      replacer: 'Replacer',
+      replacerPlaceholder: 'Please enter replacer',
+      replacementTime: 'Replacement Time',
+      startDate: 'Start Date',
+      endDate: 'End Date',
+      operationType: 'Operation Type',
+      operationTypePlaceholder: 'Please select operation type',
+      materialImage: 'Material Image',
+      originalMaterialName: 'Original Material Name',
+      newMaterialName: 'New Material Name',
+      repair: 'Repair',
+      replacement: 'Replacement'
+    },
+    lockers: {
+      cabinetLocation: 'Cabinet Location',
+      cabinetList: 'Cabinet List',
+      noDataTip: 'No data, please configure in Basic Data menu',
+      areaNamePlaceholder: 'Please enter area name',
+      cabinetNo: 'Cabinet No.',
+      cabinetNoPlaceholder: 'Please enter cabinet number',
+      cabinetName: 'Cabinet Name',
+      cabinetNamePlaceholder: 'Please enter cabinet name',
+      cabinetImage: 'Cabinet Image',
+      cabinetStatus: 'Cabinet Status',
+      exceptionType: 'Exception Type',
+      cabinetDetail: 'Cabinet Detail',
+      view: 'View',
+      exceptionInfo: 'Exception Info'
+    }
+  },
+  exception: {
+    manual: {
+      exceptionName: 'Exception Name',
+      exceptionNamePlaceholder: 'Please enter exception name',
+      exceptionType: 'Exception Type',
+      exceptionTypePlaceholder: 'Please select exception type',
+      status: 'Status',
+      statusPlaceholder: 'Please select status',
+      batchDelete: 'Batch Delete',
+      exceptionNo: 'Exception No.',
+      dialogTitle: 'Add or Edit Exception Dialog',
+      remarkPlaceholder: 'Please enter remark',
+      exceptionNameRequired: 'Exception name cannot be empty',
+      exceptionTypeRequired: 'Exception type cannot be empty',
+      addException: 'Add Exception',
+      editException: 'Edit Exception',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete data item with exception number?',
+      deleteSuccess: 'Deleted successfully'
+    },
+    management: {
+      cabinet: 'Cabinet',
+      cabinetPlaceholder: 'Please select cabinet',
+      materialName: 'Material Name',
+      materialNamePlaceholder: 'Please enter material name',
+      returnPerson: 'Return Person',
+      returnPersonPlaceholder: 'Please enter return person',
+      status: 'Status',
+      statusPlaceholder: 'Please select status',
+      exceptionTime: 'Exception Time',
+      startDate: 'Start Date',
+      endDate: 'End Date',
+      exceptionResolveTime: 'Exception Resolve Time',
+      no: 'No.',
+      returnCabinet: 'Return Cabinet',
+      rfid: 'RFID'
+    },
+    doorException: {
+      cabinet: 'Cabinet',
+      cabinetPlaceholder: 'Please select cabinet',
+      status: 'Status',
+      statusPlaceholder: 'Please select status',
+      exceptionTime: 'Exception Time',
+      startDate: 'Start Date',
+      endDate: 'End Date',
+      exceptionResolveTime: 'Exception Resolve Time',
+      no: 'No.'
+    }
+  },
+  email: {
+    template: {
+      templateName: 'Template Name',
+      templateNamePlaceholder: 'Please enter template name',
+      templateType: 'Template Type',
+      templateTypePlaceholder: 'Please select template type',
+      status: 'Status',
+      statusPlaceholder: 'Please select status',
+      batchDelete: 'Batch Delete',
+      templateNo: 'Template No.',
+      dialogTitle: 'Add or Edit Email Template Dialog',
+      remarkPlaceholder: 'Please enter remark',
+      templateNameRequired: 'Template name cannot be empty',
+      templateTypeRequired: 'Template type cannot be empty',
+      addTemplate: 'Add Email Template',
+      editTemplate: 'Edit Email Template',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete data item with template number?',
+      deleteSuccess: 'Deleted successfully'
+    },
+    notify: {
+      notifyName: 'Notify Name',
+      notifyNamePlaceholder: 'Please enter notify name',
+      notifyType: 'Notify Type',
+      notifyTypePlaceholder: 'Please select notify type',
+      status: 'Status',
+      statusPlaceholder: 'Please select status',
+      batchDelete: 'Batch Delete',
+      notifyNo: 'Notify No.',
+      dialogTitle: 'Add or Edit Email Notification Dialog',
+      remarkPlaceholder: 'Please enter remark',
+      notifyNameRequired: 'Notify name cannot be empty',
+      notifyTypeRequired: 'Notify type cannot be empty',
+      addNotify: 'Add Email Notification',
+      editNotify: 'Edit Email Notification',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete data item with notify number?',
+      deleteSuccess: 'Deleted successfully'
+    }
+  },
+  systemOther: {
+    menu: {
+      menuName: 'Menu Name',
+      menuNamePlaceholder: 'Please enter menu name',
+      status: 'Status',
+      statusPlaceholder: 'Please select status',
+      menuNo: 'Menu No.',
+      icon: 'Icon',
+      sort: 'Sort',
+      dialogTitle: 'Add or Edit Menu Dialog',
+      parentMenu: 'Parent Menu',
+      parentMenuPlaceholder: 'Select parent menu',
+      menuType: 'Menu Type',
+      directory: 'Directory',
+      menu: 'Menu',
+      button: 'Button',
+      routePath: 'Route Path',
+      routePathPlaceholder: 'Please enter route path',
+      routeAddress: 'Route Address',
+      routeAddressPlaceholder: 'Please enter route address',
+      routeParam: 'Route Parameter',
+      routeParamPlaceholder: 'Please enter route parameter',
+      componentPath: 'Component Path',
+      componentPathPlaceholder: 'Please enter component path',
+      permissionKey: 'Permission Key',
+      permissionKeyPlaceholder: 'Please enter permission key',
+      menuIcon: 'Menu Icon',
+      selectIcon: 'Click to select icon',
+      displaySort: 'Display Sort',
+      displayOrder: 'Display Order',
+      isExternal: 'External Link',
+      isExternalLink: 'Is External Link',
+      isCache: 'Is Cache',
+      cache: 'Cache',
+      noCache: 'No Cache',
+      isShow: 'Show',
+      displayStatus: 'Display Status',
+      parentMenuRequired: 'Parent menu cannot be empty',
+      menuNameRequired: 'Menu name cannot be empty',
+      routePathRequired: 'Route path cannot be empty',
+      addMenu: 'Add Menu',
+      editMenu: 'Edit Menu',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete data item with name "{menuName}"?',
+      deleteSuccess: 'Deleted successfully'
+    },
+    dict: {
+      dictName: 'Dict. Name',
+      dictNamePlaceholder: 'Please enter dictionary name',
+      dictType: 'Dict. Type',
+      dictTypePlaceholder: 'Please enter dictionary type',
+      status: 'Status',
+      statusPlaceholder: 'Please select status',
+      dictNo: 'Dict. No.',
+      createTime: 'Creation Date',
+      dictData: 'Dict. Data',
+      dialogTitle: 'Add or Edit Dictionary Type Dialog',
+      remarkPlaceholder: 'Please enter remark',
+      dictNameRequired: 'Dictionary name cannot be empty',
+      dictTypeRequired: 'Dictionary type cannot be empty',
+      addDictType: 'Add Dictionary Type',
+      editDictType: 'Edit Dictionary Type',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete data item with dictionary number "{dictIds}"?',
+      deleteSuccess: 'Deleted successfully',
+      refreshCache: 'Refresh Cache',
+      refreshSuccess: 'Refreshed successfully',
+      data: {
+        dictLabel: 'Dict. Label',
+        dictLabelPlaceholder: 'Please enter dictionary label',
+        dataStatus: 'Data Status',
+        dictCode: 'Dict. Code',
+        dictKey: 'Dict. Key',
+        dictSort: 'Dict. Sort',
+        dialogTitle: 'Add or Edit Parameter Config Dialog',
+        dictType: 'Dict. Type',
+        dataLabel: 'Data Label',
+        dataLabelPlaceholder: 'Please enter data label',
+        dataKey: 'Data Key',
+        dataKeyPlaceholder: 'Please enter data key',
+        styleAttr: 'Style Attr.',
+        styleAttrPlaceholder: 'Please enter style attribute',
+        displaySort: 'Display Sort',
+        echoStyle: 'Echo Style',
+        default: 'Default',
+        primary: 'Primary',
+        success: 'Success',
+        info: 'Info',
+        warning: 'Warning',
+        danger: 'Danger',
+        dataValue: 'Data Value',
+        dataValuePlaceholder: 'Please enter data value',
+        cssClass: 'CSS Class',
+        cssClassPlaceholder: 'Please enter CSS class',
+        listClass: 'List Class',
+        dataLabelRequired: 'Data label cannot be empty',
+        dataValueRequired: 'Data value cannot be empty',
+        dataKeyRequired: 'Data key cannot be empty',
+        dataSortRequired: 'Data sort cannot be empty',
+        addDictData: 'Add Dictionary Data',
+        editDictData: 'Edit Dictionary Data',
+        editSuccess: 'Updated successfully',
+        addSuccess: 'Added successfully',
+        deleteConfirm: 'Confirm to delete data item with dictionary code "{dictCodes}"?',
+        deleteSuccess: 'Deleted successfully'
+      }
+    },
+    notice: {
+      noticeTitle: 'Notice Title',
+      noticeTitlePlaceholder: 'Please enter notice title',
+      noticeType: 'Notice Type',
+      noticeTypePlaceholder: 'Please select notice type',
+      status: 'Status',
+      statusPlaceholder: 'Please select status',
+      noticeNo: 'Notice No.',
+      serialNo: 'Serial No.',
+      operator: 'Operator',
+      operatorPlaceholder: 'Please enter operator',
+      type: 'Type',
+      creator: 'Creator',
+      content: 'Content',
+      createTime: 'Creation Date',
+      dialogTitle: 'Add or Edit Notice Dialog',
+      noticeContent: 'Notice Content',
+      noticeTitleRequired: 'Notice title cannot be empty',
+      noticeTypeRequired: 'Notice type cannot be empty',
+      addNotice: 'Add Notice',
+      editNotice: 'Edit Notice',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete data item with notice number "{noticeIds}"?',
+      deleteSuccess: 'Deleted successfully'
+    },
+    config: {
+      paramName: 'Param. Name',
+      paramNamePlaceholder: 'Please enter parameter name',
+      paramKey: 'Param. Key',
+      paramKeyPlaceholder: 'Please enter parameter key',
+      paramType: 'Param. Type',
+      paramTypePlaceholder: 'Please select parameter type',
+      refreshCache: 'Refresh Cache',
+      paramNo: 'Param. No.',
+      paramValue: 'Param. Value',
+      dialogTitle: 'Add or Edit Parameter Config Dialog',
+      paramValuePlaceholder: 'Please enter parameter value',
+      remarkPlaceholder: 'Please enter remark',
+      configName: 'Parameter Name',
+      configNamePlaceholder: 'Please enter parameter name',
+      configKey: 'Parameter Key',
+      configKeyPlaceholder: 'Please enter parameter key',
+      configValue: 'Parameter Value',
+      configValuePlaceholder: 'Please enter parameter value',
+      configId: 'Parameter ID',
+      systemBuiltIn: 'System Built-in',
+      configNameRequired: 'Parameter name cannot be empty',
+      configKeyRequired: 'Parameter key cannot be empty',
+      configValueRequired: 'Parameter value cannot be empty',
+      paramNameRequired: 'Parameter name cannot be empty',
+      paramKeyRequired: 'Parameter key cannot be empty',
+      paramValueRequired: 'Parameter value cannot be empty',
+      addConfig: 'Add Parameter',
+      editConfig: 'Edit Parameter',
+      addParam: 'Add Parameter',
+      editParam: 'Edit Parameter',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete data item with parameter number "{configIds}"?',
+      deleteSuccess: 'Deleted successfully',
+      refreshSuccess: 'Refreshed successfully'
+    },
+    message: {
+      messageType: 'Message Type',
+      messageTypePlaceholder: 'Please select message type',
+      messageLevel: 'Message Level',
+      messageLevelPlaceholder: 'Please select message level',
+      sender: 'Sender',
+      senderPlaceholder: 'Please enter sender',
+      recipient: 'Recipient',
+      recipientPlaceholder: 'Please enter recipient',
+      recipientSelectPlaceholder: 'Please select recipient',
+      title: 'Title',
+      titlePlaceholder: 'Please enter title',
+      content: 'Content',
+      processTime: 'Process Time',
+      callback: 'Callback Address',
+      callbackPlaceholder: 'Please enter callback address',
+      test: 'Test',
+      messageTypeRequired: 'Message type cannot be empty',
+      messageLevelRequired: 'Message level cannot be empty',
+      messageTitleRequired: 'Message title cannot be empty',
+      messageContentRequired: 'Message content cannot be empty',
+      recipientRequired: 'Recipient cannot be empty',
+      addMessage: 'Add Message',
+      editMessage: 'Edit Message',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete data item with message number "{messageIds}"?',
+      deleteSuccess: 'Deleted successfully'
+    },
+    autocode: {
+      ruleName: 'Rule Name',
+      ruleNamePlaceholder: 'Please enter rule name',
+      ruleCode: 'Rule Code',
+      ruleCodePlaceholder: 'Please enter rule code',
+      ruleType: 'Rule Type',
+      ruleTypePlaceholder: 'Please select rule type',
+      enableStatus: 'Enable Status',
+      status: 'Status',
+      statusPlaceholder: 'Please select status',
+      ruleNo: 'Rule No.',
+      ruleComposition: 'Rule Composition',
+      maxLength: 'Max Length',
+      isPadded: 'Is Padded',
+      isEnabled: 'Is Enabled',
+      description: 'Description',
+      descriptionPlaceholder: 'Please enter description',
+      paddedChar: 'Padded Char',
+      paddedCharPlaceholder: 'Please enter padded character',
+      paddedMethod: 'Padded Method',
+      leftPad: 'Left Pad',
+      rightPad: 'Right Pad',
+      dialogTitle: 'Add or Edit Auto Code Rule Dialog',
+      remarkPlaceholder: 'Please enter remark',
+      ruleCodeRequired: 'Rule code cannot be empty',
+      ruleNameRequired: 'Rule name cannot be empty',
+      ruleTypeRequired: 'Rule type cannot be empty',
+      addRule: 'Add Code Rule',
+      editRule: 'Edit Code Rule',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete data item with code rule "{ruleIds}"?',
+      deleteSuccess: 'Deleted successfully',
+      part: {
+        partCode: 'Part Code',
+        partCodePlaceholder: 'Please enter part code',
+        partName: 'Part Name',
+        partNamePlaceholder: 'Please enter part name',
+        partIndex: 'Part Index',
+        partIndexPlaceholder: 'Please enter part index',
+        partType: 'Part Type',
+        partLength: 'Part Length',
+        partLengthPlaceholder: 'Please enter part length',
+        dateFormat: 'Date Time Format',
+        dateFormatPlaceholder: 'Please enter date time format',
+        inputCharacter: 'Input Character',
+        inputCharacterPlaceholder: 'Please enter input character',
+        fixCharacter: 'Fixed Character',
+        fixCharacterPlaceholder: 'Please enter fixed character',
+        seriaStartNo: 'Serial Start No.',
+        seriaStartNoPlaceholder: 'Please enter serial start number',
+        seriaStep: 'Serial Step',
+        seriaStepPlaceholder: 'Please enter serial step',
+        cycleFlag: 'Cycle Flag',
+        cycleMethod: 'Cycle Method',
+        partCodeRequired: 'Part code cannot be empty',
+        partNameRequired: 'Part name cannot be empty',
+        partIndexRequired: 'Part index cannot be empty',
+        addPart: 'Add Rule Part',
+        editPart: 'Edit Rule Part',
+        deleteConfirm: 'Confirm to delete rule part ID "{partIds}"?'
+      }
+    },
+    configuration: {
+      paramName: 'Param. Name',
+      paramNamePlaceholder: 'Please enter parameter name',
+      paramKey: 'Param. Key',
+      paramKeyPlaceholder: 'Please enter parameter key',
+      paramValue: 'Param. Value',
+      paramValuePlaceholder: 'Please enter parameter value',
+      refreshCache: 'Refresh Cache',
+      paramType: 'Param. Type',
+      dialogTitle: 'Add or Edit Basic Data Config Dialog',
+      paramTypePlaceholder: 'Please select parameter type',
+      valueType: 'Value Type',
+      text: 'Text',
+      image: 'Image',
+      remarkPlaceholder: 'Please enter remark',
+      paramNameRequired: 'Parameter name cannot be empty',
+      paramKeyRequired: 'Parameter key cannot be empty',
+      paramValueRequired: 'Parameter value cannot be empty',
+      refreshCache: 'Refresh Cache',
+      refreshSuccess: 'Refreshed successfully',
+      addConfig: 'Add Basic Data',
+      editConfig: 'Edit Basic Data',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteSuccess: 'Deleted successfully',
+      dialogTitle: 'Add or Edit Basic Data Config Dialog'
+    },
+    mapConfig: {
+      mapName: 'Map Name',
+      mapNamePlaceholder: 'Please enter map name',
+      mapShortNamePlaceholder: 'Please enter map short name',
+      fingerprintFaceImport: 'Fingerprint Face Import',
+      fingerprintImport: 'Fingerprint Import',
+      faceImport: 'Face Import',
+      mapNo: 'Map No.',
+      mapShortName: 'Map Short Name',
+      mapImage: 'Map Image',
+      imageWidth: 'Image Width',
+      imageWidthPlaceholder: 'Please enter image width',
+      imageHeight: 'Image Height',
+      imageHeightPlaceholder: 'Please enter image height',
+      mapWidth: 'Map Width',
+      mapHeight: 'Map Height',
+      xCoordinate: 'X Coordinate',
+      xCoordinatePlaceholder: 'Please enter X coordinate',
+      yCoordinate: 'Y Coordinate',
+      yCoordinatePlaceholder: 'Please enter Y coordinate',
+      mapNameRequired: 'Map name cannot be empty',
+      mapImageRequired: 'Map image cannot be empty',
+      addMap: 'Add Map Data',
+      editMap: 'Edit Map Data',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      createTime: 'Creation Date',
+      detail: 'Detail',
+      dialogTitle: 'Add or Edit Parameter Config Dialog',
+      mapWidthPlaceholder: 'Please enter image width',
+      mapHeightPlaceholder: 'Please enter image height',
+      xCoordinatePlaceholder: 'Please enter X coordinate',
+      yCoordinatePlaceholder: 'Please enter Y coordinate',
+      userNamePlaceholder: 'Please enter userName',
+      fingerprintImport: 'Fingerprint Import',
+      faceImport: 'Face Import',
+      fingerprintLogin: 'Fingerprint Login',
+      faceLogin: 'Face Login',
+      uploadTip: 'Drag file here or click to upload',
+      updateExisting: 'Update existing equipment data?',
+      fileFormat: 'Only xls, xlsx format files are allowed.',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteConfirm: 'Confirm to delete selected data items?',
+      deleteSuccess: 'Deleted successfully'
+    },
+    mapPoint: {
+      mapName: 'Map Name',
+      import: 'Import',
+      mapPointNo: 'Map Point No.',
+      mapType: 'Map Type',
+      entityName: 'Entity Name',
+      xCoordinate: 'X Coordinate',
+      yCoordinate: 'Y Coordinate',
+      createTime: 'Creation Date',
+      dialogTitle: 'Add or Edit Parameter Config Dialog',
+      entity: 'Entity',
+      selectEntity: 'Select Entity',
+      xCoordinatePlaceholder: 'Please enter X coordinate',
+      yCoordinatePlaceholder: 'Please enter Y coordinate',
+      mapNameRequired: 'Map name cannot be empty',
+      mapTypeRequired: 'Map type cannot be empty',
+      addMapPoint: 'Add Map Point Data',
+      editMapPoint: 'Edit Map Point Data',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteSuccess: 'Deleted successfully',
+      createTime: 'Creation Date',
+      dialogTitle: 'Add or Edit Parameter Config Dialog'
+    }
+  },
+  monitor: {
+    operlog: {
+      systemModule: 'System Module',
+      systemModulePlaceholder: 'Please enter system module',
+      operName: 'Operator',
+      operNamePlaceholder: 'Please enter operator',
+      type: 'Type',
+      operType: 'Operation Type',
+      operTypePlaceholder: 'Operation Type',
+      operStatus: 'Operation Status',
+      operStatusPlaceholder: 'Operation Status',
+      operTime: 'Operation Time',
+      operId: 'Log ID',
+      requestMethod: 'Request Method',
+      operIp: 'Operation IP',
+      operLocation: 'Operation Location',
+      operDate: 'Operation Date',
+      detail: 'Detail',
+      detailTitle: 'Operation Log Detail',
+      operModule: 'Operation Module',
+      loginInfo: 'Login Info',
+      operUrl: 'Request URL',
+      method: 'Method',
+      operParam: 'Request Parameter',
+      jsonResult: 'Response Parameter',
+      normal: 'Normal',
+      failed: 'Failed',
+      errorMsg: 'Error Message',
+      clean: 'Clean',
+      deleteConfirm: 'Confirm to delete log ID "{operIds}"?',
+      deleteSuccess: 'Deleted successfully',
+      cleanConfirm: 'Confirm to clean all operation log data?',
+      cleanSuccess: 'Cleaned successfully'
+    },
+    logininfor: {
+      loginAddress: 'Login Address',
+      loginAddressPlaceholder: 'Please enter login address',
+      loginStatusPlaceholder: 'Login Status',
+      loginTime: 'Login Time',
+      infoId: 'Access ID',
+      loginLocation: 'Login Location',
+      browser: 'Browser',
+      os: 'Operating System',
+      loginStatus: 'Login Status',
+      operInfo: 'Operation Info',
+      loginDate: 'Login Date',
+      clean: 'Clean',
+      deleteConfirm: 'Confirm to delete access ID "{infoIds}"?',
+      deleteSuccess: 'Deleted successfully',
+      cleanConfirm: 'Confirm to clean all login log data?',
+      cleanSuccess: 'Cleaned successfully'
+    },
+    online: {
+      tokenId: 'Token ID',
+      loginName: 'Login Name',
+      deptName: 'Dept. Name',
+      host: 'Host',
+      forceLogout: 'Force Logout',
+      forceLogoutConfirm: 'Confirm to force logout user "{userName}"?',
+      forceLogoutSuccess: 'Force logout successful'
+    }
+  },
+  mes: {
+    lockCabinet: {
+      cabinetName: 'Lock Cabinet Name',
+      cabinetNamePlaceholder: 'Please enter lock cabinet name',
+      isOnline: 'Is Online',
+      isOnlinePlaceholder: 'Please select online status',
+      cabinetCode: 'Lock Cabinet Code',
+      cabinetCodePlaceholder: 'Please enter lock cabinet code',
+      hardwareId: 'Hardware ID',
+      hardwareIdPlaceholder: 'Please select hardware ID',
+      serialNumber: 'Hardware Serial Number',
+      picture: 'Picture',
+      icon: 'Icon',
+      detail: 'Detail',
+      test: 'Test',
+      workstationId: 'Workstation ID',
+      autoGenerate: 'Auto Generate',
+      addCabinet: 'Add Lock Cabinet',
+      editCabinet: 'Edit Lock Cabinet',
+      cabinetCodeRequired: 'Lock cabinet code cannot be empty',
+      cabinetNameRequired: 'Lock cabinet name cannot be empty',
+      hardwareIdRequired: 'Hardware ID cannot be empty',
+      workstationIdRequired: 'Workstation ID cannot be empty',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteSuccess: 'Deleted successfully',
+      testSuccess: 'Test successful',
+      type: 'Type',
+      typePlaceholder: 'Please enter type',
+      serialNo: 'Serial Number',
+      serialNoPlaceholder: 'Please enter lotoSerialNumber',
+      content: 'Content',
+      contentPlaceholder: 'Please enter content'
+    },
+    hardwareInfo: {
+      hardwareCode: 'Hardware Code',
+      hardwareCodePlaceholder: 'Please enter hardware code',
+      hardwareName: 'Hardware Name',
+      hardwareNamePlaceholder: 'Please enter hardware name',
+      statusPlaceholder: 'Please select hardware status',
+      hardwareType: 'Hardware Type',
+      hardwareTypePlaceholder: 'Please select hardware type',
+      specModel: 'Spec. Model',
+      specModelPlaceholder: 'Please enter spec. model',
+      serialNo: 'Serial No.',
+      serialNoPlaceholder: 'Please enter serial number',
+      hardwareStatus: 'Hardware Status',
+      enableTime: 'Enable Time',
+      availableCount: 'Available Count',
+      availableCountPlaceholder: 'Please enter available count',
+      usedCount: 'Used Count',
+      usedCountPlaceholder: 'Please enter used count',
+      availableLifespan: 'Available Lifespan',
+      availableLifespanPlaceholder: 'Please enter available lifespan',
+      usedLifespan: 'Used Lifespan',
+      usedLifespanPlaceholder: 'Please enter used lifespan',
+      enableDate: 'Enable Date',
+      enableDatePlaceholder: 'Please select enable date',
+      online: 'Online',
+      offline: 'Offline',
+      exception: 'Exception',
+      autoGenerate: 'Auto Generate',
+      addHardwareInfo: 'Add Hardware Info',
+      editHardwareInfo: 'Edit Hardware Info',
+      hardwareCodeRequired: 'Hardware code cannot be empty',
+      hardwareNameRequired: 'Hardware name cannot be empty',
+      hardwareTypeRequired: 'Hardware type cannot be empty',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteSuccess: 'Deleted successfully',
+      deleteConfirm: 'Confirm to delete hardware code "{hardwareCode}"?',
+      lastWeek: 'Last Week',
+      lastMonth: 'Last Month',
+      lastThreeMonths: 'Last Three Months'
+    },
+    hardwareType: {
+      hardwareTypeCode: 'Hardware Type Code',
+      hardwareTypeCodePlaceholder: 'Please enter hardware type code',
+      typeName: 'Type Name',
+      typeNamePlaceholder: 'Please enter type name',
+      parentType: 'Parent Type',
+      parentTypePlaceholder: 'Please select parent type',
+      autoGenerate: 'Auto Generate',
+      addHardwareType: 'Add Hardware Type',
+      editHardwareType: 'Edit Hardware Type',
+      hardwareTypeCodeRequired: 'Hardware code cannot be empty',
+      typeNameRequired: 'Hardware name cannot be empty',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteSuccess: 'Deleted successfully',
+      deleteConfirm: 'Delete hardware type with code "{hardwareTypeCode}"?'
+    },
+    rfid: {
+      rfidCode: 'RFID Code',
+      rfidCodePlaceholder: 'Please enter RFID code',
+      rfidContent: 'RFID Content',
+      rfidContentPlaceholder: 'Please enter RFID content',
+      rfidType: 'RFID Type',
+      rfidTypePlaceholder: 'Please select RFID type',
+      autoGenerate: 'Auto Generate',
+      addRfid: 'Add RFID Info',
+      editRfid: 'Edit RFID Info',
+      rfidCodeRequired: 'RFID code cannot be empty',
+      rfidContentRequired: 'RFID content cannot be empty',
+      rfidTypeRequired: 'RFID type cannot be empty',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteSuccess: 'Deleted successfully'
+    },
+    workCard: {
+      cardCode: 'Work Card Code',
+      cardCodePlaceholder: 'Please enter work card code',
+      cardType: 'Work Card Type',
+      cardTypePlaceholder: 'Please select work card type',
+      cardNfc: 'Work Card NFC',
+      cardNfcPlaceholder: 'Please enter work card NFC',
+      userName: 'User Name',
+      userNamePlaceholder: 'Please select work card user',
+      autoGenerate: 'Auto Generate',
+      addWorkCard: 'Add Work Card Info',
+      editWorkCard: 'Edit Work Card Info',
+      cardCodeRequired: 'Work card code cannot be empty',
+      userNameRequired: 'User name cannot be empty',
+      cardNfcRequired: 'Work card NFC cannot be empty',
+      cardTypeRequired: 'Work card type cannot be empty',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteSuccess: 'Deleted successfully',
+      deleteConfirm: 'Confirm to delete work card with code "{cardCode}"?'
+    },
+    lock: {
+      locksetCode: 'Lock Set Code',
+      locksetCodePlaceholder: 'Please enter lock set code',
+      locksetName: 'Lock Set Name',
+      locksetNamePlaceholder: 'Please enter lock set name',
+      locksetType: 'Lock Set Type',
+      locksetTypePlaceholder: 'Select lock set type',
+      locksetNfc: 'Lock Set NFC',
+      locksetNfcPlaceholder: 'Please enter lock set NFC',
+      locksetRfid: 'Lock Set RFID',
+      locksetRfidPlaceholder: 'Please enter lock set RFID',
+      materialsName: 'Material Name',
+      materialsNamePlaceholder: 'Please select material name',
+      locksetSpec: 'Lock Set Spec',
+      locksetSpecPlaceholder: 'Please enter lock set spec',
+      autoGenerate: 'Auto Generate',
+      addLock: 'Add Lock Set Info',
+      editLock: 'Edit Lock Set Info',
+      locksetCodeRequired: 'Lock set code cannot be empty',
+      locksetNameRequired: 'Lock set name cannot be empty',
+      locksetNfcRequired: 'Lock set NFC cannot be empty',
+      locksetRfidRequired: 'Lock set RFID cannot be empty',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteSuccess: 'Deleted successfully',
+      deleteConfirm: 'Confirm to delete lock set with code "{locksetCode}"?',
+      lastWeek: 'Last Week',
+      lastMonth: 'Last Month',
+      lastThreeMonths: 'Last Three Months'
+    },
+    materialInfo: {
+      materialsCabinet: 'Materials Cabinet',
+      bindMaterialsCabinet: 'Bind Materials Cabinet',
+      materialsCabinetPlaceholder: 'Please select materials cabinet',
+      bindMaterialsCabinetPlaceholder: 'Please select bind materials cabinet',
+      materialsName: 'Materials Name',
+      materialsNamePlaceholder: 'Please enter materials name',
+      materialsId: 'Materials ID',
+      materialsType: 'Materials Type',
+      materialsTypePlaceholder: 'Please select materials type',
+      materialsTypeSelectPlaceholder: 'Select materials type',
+      propertyType: 'Property Type',
+      propertyTypePlaceholder: 'Please select property type',
+      properties: 'Properties',
+      propertiesPlaceholder: 'Please select properties',
+      rfid: 'RFID',
+      rfidPlaceholder: 'Please enter RFID',
+      rfidInputPlaceholder: 'Please enter materials RFID',
+      supplier: 'Supplier',
+      supplierPlaceholder: 'Please enter supplier',
+      expirationDate: 'Expiration Date',
+      inCabinet: 'In Cabinet',
+      inCabinetPlaceholder: 'In Cabinet',
+      statusPlaceholder: 'Materials Status',
+      materialsPicture: 'Materials Picture',
+      batchAdd: 'Batch Add',
+      bindMaterials: 'Bind Materials',
+      addMaterialInfo: 'Add Materials Info',
+      editMaterialInfo: 'Edit Materials Info',
+      materialsNameRequired: 'Materials name cannot be empty',
+      materialsTypeRequired: 'Materials type cannot be empty',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteSuccess: 'Deleted successfully',
+      bindSuccess: 'Bound successfully',
+      importMaterials: 'Import Materials',
+      importResult: 'Import Result',
+      uploadText: 'Drag file here, or',
+      clickUpload: 'click to upload',
+      uploadTip: 'Only xls, xlsx format files are allowed.',
+      downloadTemplate: 'Download Template',
+      empty: 'Empty',
+      datePlaceholder: 'Select Date',
+      lastWeek: 'Last Week',
+      lastMonth: 'Last Month',
+      lastThreeMonths: 'Last Three Months'
+    },
+    materialType: {
+      materialsTypeCode: 'Materials Type Code',
+      materialsTypeCodePlaceholder: 'Please enter materials type code',
+      materialsTypeName: 'Materials Type Name',
+      materialsTypeNamePlaceholder: 'Please enter type name',
+      materialsTypeNameInputPlaceholder: 'Please enter materials type name',
+      materialsTypeIcon: 'Materials Type Icon',
+      materialsTypePicture: 'Materials Type Thumbnail',
+      materialsTypeThumbnail: 'Materials Thumbnail',
+      properties: 'Properties',
+      propertiesPlaceholder: 'Please select properties',
+      checkStandard: 'Check Standard',
+      checkStandardPlaceholder: 'Please enter check standard',
+      autoGenerate: 'Auto Generate',
+      addMaterialType: 'Add Materials Type',
+      editMaterialType: 'Edit Materials Type',
+      materialsTypeCodeRequired: 'Materials type code cannot be empty',
+      materialsTypeNameRequired: 'Materials type name cannot be empty',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteSuccess: 'Deleted successfully',
+      viewMaterialType: 'View Materials Type',
+      remarkPlaceholder: 'Please enter',
+      deleteConfirm: 'Confirm to delete item with team ID "{teamId}"?',
+      day: 'Day',
+      hour: 'Hour',
+      minute: 'Minute',
+      second: 'Second'
+    },
+    lockers: {
+      cabinetLocation: 'Cabinet Location',
+      cabinetList: 'Cabinet List',
+      noDataTip: 'No data, please configure in Basic Data menu',
+      exceptionInfo: 'Exception Info',
+      cabinet: 'Cabinet',
+      exceptionType: 'Exception Type',
+      workstationNamePlaceholder: 'Please enter workstation name',
+      cabinetId: 'Cabinet ID',
+      cabinetIdPlaceholder: 'Please enter cabinet ID',
+      cabinetName: 'Cabinet Name',
+      cabinetNamePlaceholder: 'Please enter cabinet name',
+      cabinetCode: 'Cabinet Code',
+      cabinetCodePlaceholder: 'Please enter cabinet code',
+      cabinetPicture: 'Cabinet Picture',
+      cabinetStatus: 'Cabinet Status',
+      cabinetDetail: 'Cabinet Detail',
+      workstation: 'Workstation',
+      workstationPlaceholder: 'Select workstation',
+      autoGenerate: 'Auto Generate',
+      addCabinetInfo: 'Add Cabinet Info',
+      editCabinetInfo: 'Edit Cabinet Info',
+      cabinetCodeRequired: 'Cabinet code cannot be empty',
+      cabinetNameRequired: 'Cabinet name cannot be empty',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteSuccess: 'Deleted successfully',
+      lastWeek: 'Last Week',
+      lastMonth: 'Last Month',
+      lastThreeMonths: 'Last Three Months',
+      misplacedCabinet: 'Materials Misplaced',
+      expiredDamaged: 'Materials Expired/Damaged',
+      timeoutUnclosed: 'Timeout Unclosed',
+      unknown: 'Unknown',
+      second: 'Second',
+      minute: 'Minute',
+      hour: 'Hour',
+      misplacedCount: '{count} materials misplaced',
+      expiredDamagedCount: '{count} materials expired or damaged',
+      timeoutUnclosedStatus: 'Cabinet door unclosed for {time}'
+    },
+    replacementRecords: {
+      cabinet: 'Cabinet',
+      cabinetPlaceholder: 'Please select cabinet',
+      materialsType: 'Materials Type',
+      materialsTypePlaceholder: 'Please select materials type',
+      oldMaterialsId: 'Old Materials ID',
+      oldMaterialsIdPlaceholder: 'Please enter old materials ID',
+      oldMaterialsIdInputPlaceholder: 'Please enter old materials ID',
+      oldMaterialsName: 'Old Materials Name',
+      oldRfid: 'Old RFID',
+      oldRfidPlaceholder: 'Please enter old RFID',
+      oldMaterialsRfid: 'Old Materials RFID',
+      oldMaterialsRfidInputPlaceholder: 'Please enter old materials RFID',
+      newMaterialsId: 'New Materials ID',
+      newMaterialsIdPlaceholder: 'Please enter new materials ID',
+      newMaterialsIdInputPlaceholder: 'Please enter new materials ID',
+      newMaterialsName: 'New Materials Name',
+      newRfid: 'New RFID',
+      newRfidPlaceholder: 'Please enter new RFID',
+      newMaterialsRfid: 'New Materials RFID',
+      newMaterialsRfidInputPlaceholder: 'Please enter new materials RFID',
+      changeUser: 'Change User',
+      changeUserPlaceholder: 'Please enter change user',
+      changeUserSelectPlaceholder: 'Please select change user',
+      changeTime: 'Change Time',
+      changeDate: 'Change Date',
+      changeDatePlaceholder: 'Please select date',
+      operateType: 'Operate Type',
+      operateTypePlaceholder: 'Please select operate type',
+      materialsPicture: 'Materials Picture',
+      planId: 'Plan ID',
+      planIdPlaceholder: 'Please select check plan',
+      checkRecordId: 'Check Record ID',
+      checkRecordIdPlaceholder: 'Please enter check record ID',
+      repair: 'Repair',
+      replace: 'Replace',
+      addRecord: 'Add Replacement Record',
+      editRecord: 'Edit Replacement Record',
+      userRequired: 'User cannot be empty',
+      taskNameRequired: 'Task name cannot be empty',
+      checkFrequencyRequired: 'Check frequency cannot be empty',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteSuccess: 'Deleted successfully',
+      deleteConfirm: 'Confirm to delete record with ID "{changeId}"?',
+      lastWeek: 'Last Week',
+      lastMonth: 'Last Month',
+      lastThreeMonths: 'Last Three Months'
+    },
+    blacklist: {
+      userName: 'User Name',
+      userNamePlaceholder: 'Please enter user name',
+      nickName: 'Name',
+      nickNamePlaceholder: 'Please enter name',
+      userId: 'User ID',
+      loginName: 'Login Name',
+      type: 'Type',
+      addBlacklist: 'Add Blacklist',
+      addSuccess: 'Added successfully',
+      deleteSuccess: 'Deleted successfully',
+      deleteConfirm: 'Confirm to delete selected items?'
+    },
+    inspectionPlan: {
+      planName: 'Plan Name',
+      planNamePlaceholder: 'Please enter plan name',
+      planNamePrefix: 'Materials Inspection Plan',
+      planId: 'Plan ID',
+      cabinet: 'Cabinet',
+      cabinetPlaceholder: 'Please select inspection cabinet',
+      cabinetSelectPlaceholder: 'Please select cabinets to inspect',
+      planDate: 'Plan Date',
+      planDatePlaceholder: 'Please select date',
+      planDateSelectPlaceholder: 'Please select plan date',
+      checkUser: 'Inspector',
+      checkUserPlaceholder: 'Please select inspector',
+      checkRecord: 'Check Record',
+      cabinetDetail: 'Inspection Cabinet Details',
+      inspectionCabinet: 'Inspection Cabinet',
+      signature: 'Signature',
+      detail: 'Detail',
+      cabinetCheckRecord: 'Cabinet Check Record',
+      materialsId: 'Materials ID',
+      materialsName: 'Materials Name',
+      materialsType: 'Materials Type',
+      materialsPicture: 'Materials Picture',
+      rfid: 'RFID',
+      checkTime: 'Check Time',
+      exceptionReason: 'Exception Reason',
+      workstation: 'Workstation',
+      workstationPlaceholder: 'Select workstation',
+      enableAutoCreate: 'Enable Auto Create',
+      planFrequency: 'Plan Frequency',
+      planFrequencyPlaceholder: 'Please select plan frequency',
+      month: 'Month',
+      week: 'Week',
+      autoCreateTip: '(*Auto-created inspection plans cover all cabinets)',
+      addPlan: 'Add Inspection Plan',
+      editPlan: 'Edit Inspection Plan',
+      dateRequired: 'Date cannot be empty',
+      planNameRequired: 'Plan name cannot be empty',
+      checkUserRequired: 'Inspector cannot be empty',
+      cabinetRequired: 'Cabinet cannot be empty',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteSuccess: 'Deleted successfully',
+      deleteConfirm: 'Confirm to delete selected items?',
+      updateSuccess: 'Updated successfully',
+      lastWeek: 'Last Week',
+      lastMonth: 'Last Month',
+      lastThreeMonths: 'Last Three Months',
+      monday: 'Monday',
+      tuesday: 'Tuesday',
+      wednesday: 'Wednesday',
+      thursday: 'Thursday',
+      friday: 'Friday',
+      saturday: 'Saturday',
+      sunday: 'Sunday',
+      countUnit: ''
+    },
+    inspectionRecord: {
+      planName: 'Plan Name',
+      planNamePlaceholder: 'Please enter plan name',
+      cabinet: 'Cabinet',
+      cabinetPlaceholder: 'Please select cabinet',
+      materialsName: 'Materials Name',
+      materialsNamePlaceholder: 'Please enter materials name',
+      materialsType: 'Materials Type',
+      materialsTypePlaceholder: 'Please select materials type',
+      rfid: 'RFID',
+      rfidPlaceholder: 'Please enter RFID',
+      checkTime: 'Check Time',
+      checkResult: 'Check Result',
+      exceptionReason: 'Exception Reason',
+      materialsId: 'Materials ID',
+      materialsPicture: 'Materials Picture',
+      measure: 'Measure',
+      replacementRecord: 'Replacement Record',
+      addRecord: 'Add Check Record',
+      editRecord: 'Edit Check Record',
+      userRequired: 'User cannot be empty',
+      taskNameRequired: 'Task name cannot be empty',
+      checkFrequencyRequired: 'Check frequency cannot be empty',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteSuccess: 'Deleted successfully',
+      deleteConfirm: 'Confirm to delete record with ID "{checkId}"?',
+      lastWeek: 'Last Week',
+      lastMonth: 'Last Month',
+      lastThreeMonths: 'Last Three Months'
+    },
+    collectionManagement: {
+      cabinet: 'Cabinet',
+      cabinetPlaceholder: 'Please select cabinet',
+      materialsName: 'Materials Name',
+      materialsNamePlaceholder: 'Please enter materials name',
+      materialsType: 'Materials Type',
+      materialsTypePlaceholder: 'Please select materials type',
+      loanUser: 'Loan User',
+      loanUserPlaceholder: 'Please enter loan user',
+      loanTime: 'Loan Time',
+      restitutionUser: 'Return User',
+      restitutionUserPlaceholder: 'Please enter return user',
+      restitutionTime: 'Return Time',
+      materialsId: 'Materials ID',
+      materialsPicture: 'Materials Picture',
+      loanDuration: 'Loan Duration',
+      timeoutNotReturned: 'Timeout Not Returned',
+      lastWeek: 'Last Week',
+      lastMonth: 'Last Month',
+      lastThreeMonths: 'Last Three Months'
+    },
+    expireRemind: {
+      materialsCode: 'Materials Code',
+      materialsCodePlaceholder: 'Please enter materials code',
+      materialsName: 'Materials Name',
+      materialsNamePlaceholder: 'Please enter materials name',
+      expireTime: 'Expire Time',
+      dateTimePlaceholder: 'Select date time',
+      cabinet: 'Cabinet',
+      cabinetPlaceholder: 'Please select cabinet',
+      notifyUser: 'Notify User',
+      read: 'Read',
+      unread: 'Unread',
+      lastWeek: 'Last Week',
+      lastMonth: 'Last Month',
+      lastThreeMonths: 'Last Three Months'
+    },
+    returnRemind: {
+      materialsCode: 'Materials Code',
+      materialsCodePlaceholder: 'Please enter materials code',
+      materialsName: 'Materials Name',
+      materialsNamePlaceholder: 'Please enter materials name',
+      loanUser: 'Loan User',
+      loanUserPlaceholder: 'Please enter loan user',
+      loanTime: 'Loan Time',
+      loanCabinet: 'Loan Cabinet',
+      loanCabinetPlaceholder: 'Please select loan cabinet',
+      remindUser: 'Remind User',
+      dueTime: 'Due Time',
+      dateTimePlaceholder: 'Select date time',
+      read: 'Read',
+      unread: 'Unread',
+      lastWeek: 'Last Week',
+      lastMonth: 'Last Month',
+      lastThreeMonths: 'Last Three Months'
+    },
+    standard: {
+      propertyName: 'Property Type',
+      propertyNamePlaceholder: 'Please enter property type',
+      propertyId: 'ID',
+      propertySetting: 'Property Setting',
+      remarkPlaceholder: 'Please enter content',
+      addProperty: 'Add Property Type',
+      editProperty: 'Edit Property Type',
+      nameRequired: 'Name cannot be empty',
+      materialsTypeRequired: 'Materials type cannot be empty',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteSuccess: 'Deleted successfully',
+      deleteConfirm: 'Confirm to delete selected items?'
+    },
+    instructions: {
+      title: 'Title',
+      titlePlaceholder: 'Please enter title',
+      materialsType: 'Materials Type',
+      materialsTypePlaceholder: 'Please select materials type',
+      materialsTypeSelectPlaceholder: 'Select materials type',
+      fileType: 'Type',
+      fileTypePlaceholder: 'File Type',
+      file: 'File',
+      instructionsId: 'Instructions ID',
+      orderNum: 'Order',
+      detail: 'Detail',
+      createTime: 'Create Time',
+      addInstructions: 'Add Materials Instructions',
+      editInstructions: 'Edit Materials Instructions',
+      materialsNameRequired: 'Materials name cannot be empty',
+      materialsTypeRequired: 'Materials type cannot be empty',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteSuccess: 'Deleted successfully',
+      deleteConfirm: 'Confirm to delete selected items?',
+      uploading: 'Uploading',
+      uploadTip: 'Drag file here or click to upload',
+      fileFormatTip: 'mp4, pdf format files.'
+    },
+    inventory: {
+      materialsType: 'Materials Type'
+    },
+    keys: {
+      keyCode: 'Key Code',
+      keyCodePlaceholder: 'Please enter key code',
+      keyName: 'Key Name',
+      keyNamePlaceholder: 'Please enter key name',
+      keyNfc: 'Key NFC',
+      keyNfcPlaceholder: 'Please enter key NFC',
+      keySpec: 'Key Spec',
+      keySpecPlaceholder: 'Please enter key spec',
+      macAddress: 'MAC Address',
+      macAddressPlaceholder: 'Please enter MAC address',
+      hardwareName: 'Hardware',
+      hardwareNamePlaceholder: 'Please select hardware',
+      autoGenerate: 'Auto Generate',
+      remarkPlaceholder: 'Please enter remark',
+      addKey: 'Add Key Information',
+      editKey: 'Edit Key Information',
+      keyCodeRequired: 'Key code cannot be empty',
+      keyNameRequired: 'Key name cannot be empty',
+      keyNfcRequired: 'Key NFC cannot be empty',
+      macAddressRequired: 'MAC address cannot be empty',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteSuccess: 'Deleted successfully',
+      deleteConfirm: 'Confirm to delete key with code "{keyCode}"?'
+    },
+    padLocks: {
+      lockCode: 'Padlock Code',
+      lockCodePlaceholder: 'Please enter padlock code',
+      lockName: 'Padlock Name',
+      lockNamePlaceholder: 'Please enter padlock name',
+      lockNfc: 'Padlock NFC',
+      lockNfcPlaceholder: 'Please enter padlock NFC',
+      lockSpec: 'Padlock Spec',
+      lockSpecPlaceholder: 'Please enter padlock spec',
+      lockTypeName: 'Padlock Type',
+      lockTypeNamePlaceholder: 'Please select padlock type',
+      hardwareName: 'Hardware',
+      hardwareNamePlaceholder: 'Please select hardware',
+      autoGenerate: 'Auto Generate',
+      remarkPlaceholder: 'Please enter remark',
+      addPadLock: 'Add Padlock Information',
+      editPadLock: 'Edit Padlock Information',
+      lockCodeRequired: 'Padlock code cannot be empty',
+      lockNameRequired: 'Padlock name cannot be empty',
+      lockNfcRequired: 'Padlock NFC cannot be empty',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteSuccess: 'Deleted successfully',
+      deleteConfirm: 'Confirm to delete padlock with code "{lockCode}"?'
+    },
+    lockCabinetSlots: {
+      slotCode: 'Slot Code',
+      slotCodePlaceholder: 'Please enter slot code',
+      slotType: 'Slot Type',
+      slotTypePlaceholder: 'Please select slot type',
+      statusPlaceholder: 'Please select status',
+      row: 'Row',
+      rowPlaceholder: 'Please enter row',
+      col: 'Column',
+      colPlaceholder: 'Please enter column',
+      isOccupied: 'Is Occupied',
+      hardwareId: 'Hardware ID',
+      hardwareIdPlaceholder: 'Please select hardware ID',
+      cabinetId: 'Cabinet ID',
+      autoGenerate: 'Auto Generate',
+      remarkPlaceholder: 'Please enter remark',
+      addSlot: 'Add Slot Information',
+      editSlot: 'Edit Slot Information',
+      slotCodeRequired: 'Slot code cannot be empty',
+      slotTypeRequired: 'Slot type cannot be empty',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteSuccess: 'Deleted successfully',
+      deleteConfirm: 'Confirm to delete selected items?'
+    },
+    standardPropertyForm: {
+      valueName: 'Property Value',
+      valueNamePlaceholder: 'Please enter property value',
+      propertyId: 'Property ID',
+      recordId: 'ID',
+      addPropertyValue: 'Add Property Value',
+      editPropertyValue: 'Edit Property Value',
+      valueNameRequired: 'Property value cannot be empty',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteSuccess: 'Deleted successfully',
+      deleteConfirm: 'Confirm to delete selected items?'
+    },
+    emailTemplates: {
+      templateCode: 'Template Code',
+      templateCodePlaceholder: 'Please enter template code',
+      templateName: 'Template Name',
+      templateNamePlaceholder: 'Please enter template name',
+      templateTitle: 'Template Title',
+      templateTitlePlaceholder: 'Please enter template title',
+      templateContent: 'Template Content',
+      templateContentPlaceholder: 'Please enter template content',
+      content: 'Content',
+      createTime: 'Create Time',
+      viewContent: 'View Content',
+      addTemplate: 'Add Email Template',
+      editTemplate: 'Edit Email Template',
+      templateCodeRequired: 'Template code cannot be empty',
+      templateNameRequired: 'Template name cannot be empty',
+      templateContentRequired: 'Template content cannot be empty',
+      editSuccess: 'Updated successfully',
+      addSuccess: 'Added successfully',
+      deleteSuccess: 'Deleted successfully',
+      deleteConfirm: 'Confirm to delete selected items?'
+    }
   }
 }
 

+ 955 - 20
src/i18n/lang/zh.js

@@ -17,11 +17,26 @@ export default {
     updateTime: '更新时间',
     remark: '备注',
     pleaseSelect: '请选择',
+    select: '选择',
     pleaseInput: '请输入',
     success: '成功',
     failed: '失败',
     loading: '加载中...',
-    noData: '暂无数据'
+    noData: '暂无数据',
+    deleteConfirm: '是否确认删除所选数据项?',
+    startDate: '开始日期',
+    endDate: '结束日期',
+    yes: '是',
+    no: '否',
+    close: '关闭',
+    back: '返回',
+    serialNo: '序号',
+    enable: '启用',
+    disable: '停用',
+    importFileFormat: '仅允许导入xls、xlsx格式文件。',
+    importResult: '导入结果',
+    batchDelete: '批量删除',
+    view: '查看'
   },
   login: {
     title: '系统登录',
@@ -47,7 +62,11 @@ export default {
     logout: '退出登录',
     logoutConfirm: '确定注销并退出系统吗?',
     tip: '提示',
-    language: '语言切换'
+    language: '语言切换',
+    switchLanguageSuccess: '切换语言成功',
+    chinese: '中文',
+    english: 'English',
+    layoutSize: '布局大小'
   },
   dashboard: {
     materialsTotal: '物资总数',
@@ -119,10 +138,34 @@ export default {
       filterKeyword: '输入关键字进行过滤',
       gender: '用户性别',
       genderPlaceholder: '请选择性别',
+      nickName: '用户昵称',
+      nickNameRequired: '用户昵称不能为空',
+      userName: '登录账号',
+      userNamePlaceholder: '请输入用户名称',
+      male: '男',
+      female: '女',
+      emailRequired: '邮箱地址不能为空',
+      phoneRequired: '手机号码不能为空',
       userPassword: '用户密码',
       userPasswordPlaceholder: '请输入用户密码',
+      oldPassword: '旧密码',
+      oldPasswordPlaceholder: '请输入旧密码',
+      oldPasswordRequired: '旧密码不能为空',
+      newPassword: '新密码',
+      newPasswordPlaceholder: '请输入新密码',
+      newPasswordRequired: '新密码不能为空',
+      confirmPassword: '确认密码',
+      confirmPasswordPlaceholder: '请确认密码',
+      confirmPasswordRequired: '确认密码不能为空',
+      passwordLength: '长度在 6 到 20 个字符',
+      passwordMismatch: '两次输入的密码不一致',
+      resetPasswordSuccess: '修改成功',
       keyPassword: '钥匙密码',
       keyPasswordPlaceholder: '请输入钥匙密码',
+      keyPasswordLength: '钥匙密码长度必须等于6位',
+      editSuccess: '修改成功',
+      addSuccess: '新增成功',
+      deleteSuccess: '删除成功',
       remarkPlaceholder: '请输入内容',
       importDialog: '用户导入对话框',
       uploadTip: '将文件拖到此处,或点击上传',
@@ -131,7 +174,23 @@ export default {
       viewDialog: '查看用户人脸和指纹弹窗',
       serialNo: '序号',
       group: '分组',
-      fingerprintData: '人员指纹数据'
+      fingerprintData: '人员指纹数据',
+      faceData: '人员面部数据',
+      profile: {
+        personalInfo: '个人信息',
+        basicInfo: '基本资料',
+        resetPassword: '修改密码',
+        dept: '所属部门',
+        role: '所属角色',
+        clickToUploadAvatar: '点击上传头像',
+        editAvatar: '修改头像',
+        fileFormatError: '文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。'
+      },
+      authRole: {
+        basicInfo: '基本信息',
+        roleInfo: '角色信息',
+        authSuccess: '授权成功'
+      }
     },
     dept: {
       deptName: '部门名称',
@@ -177,11 +236,17 @@ export default {
       codeNamePlaceholder: '请输入编码名称',
       postOrder: '岗位顺序',
       dialogTitle2: '添加或修改岗位对话框',
+      parentPost: '上级岗位',
+      parentPostPlaceholder: '选择上级岗位',
+      postPersonnel: '岗位人员',
+      view: '查看',
       addPost: '添加岗位',
       editPost: '修改岗位',
       postNameRequired: '岗位名称不能为空',
+      parentPostRequired: '上级岗位不能为空',
       postCodeRequired: '岗位编码不能为空',
       postOrderRequired: '岗位顺序不能为空',
+      confirmPost: '确认要"{text}""{postName}"岗位吗?',
       editSuccess: '修改成功',
       addSuccess: '新增成功',
       deleteConfirm: '是否确认删除岗位编号为的数据项?',
@@ -239,7 +304,25 @@ export default {
       onlySelfDataPermission: '仅本人数据权限',
       roleNameRequired: '角色名称不能为空',
       roleKeyRequired: '权限字符不能为空',
-      roleOrderRequired: '角色顺序不能为空'
+      roleOrderRequired: '角色顺序不能为空',
+      addRole: '添加角色',
+      editRole: '修改角色',
+      editSuccess: '修改成功',
+      addSuccess: '新增成功',
+      deleteSuccess: '删除成功',
+      roleId: '角色编号',
+      selectUser: {
+        title: '选择用户',
+        selectUserRequired: '请选择要分配的用户'
+      },
+      authUser: {
+        addUser: '添加用户',
+        batchCancelAuth: '批量取消授权',
+        cancelAuth: '取消授权',
+        cancelAuthConfirm: '确认要取消该用户"{userName}"角色吗?',
+        batchCancelAuthConfirm: '是否取消选中用户授权数据项?',
+        cancelAuthSuccess: '取消授权成功'
+      }
     }
   },
   commonComponents: {
@@ -250,7 +333,12 @@ export default {
       logo: '博士安全'
     },
     modal: {
-      systemTip: '系统提示'
+      systemTip: '系统提示',
+      savingToLocal: '正在保存到本地,请稍候...',
+      clearingCache: '正在清除设置缓存并刷新,请稍候...'
+    },
+    settings: {
+      themeStyleSettings: '主题风格设置'
     },
     imageUpload: {
       uploadTip: '上传提示',
@@ -1320,15 +1408,25 @@ export default {
       button: '按钮',
       routePath: '路由地址',
       routePathPlaceholder: '请输入路由地址',
+      routeAddress: '路由地址',
+      routeAddressPlaceholder: '请输入路由地址',
+      routeParam: '路由参数',
+      routeParamPlaceholder: '请输入路由参数',
       componentPath: '组件路径',
       componentPathPlaceholder: '请输入组件路径',
       permissionKey: '权限标识',
       permissionKeyPlaceholder: '请输入权限标识',
       menuIcon: '菜单图标',
+      selectIcon: '点击选择图标',
       displaySort: '显示排序',
+      displayOrder: '显示排序',
       isExternal: '是否外链',
+      isExternalLink: '是否外链',
       isCache: '是否缓存',
+      cache: '缓存',
+      noCache: '不缓存',
       isShow: '是否显示',
+      displayStatus: '显示状态',
       parentMenuRequired: '上级菜单不能为空',
       menuNameRequired: '菜单名称不能为空',
       routePathRequired: '路由地址不能为空',
@@ -1336,7 +1434,7 @@ export default {
       editMenu: '修改菜单',
       editSuccess: '修改成功',
       addSuccess: '新增成功',
-      deleteConfirm: '是否确认删除菜单编号为的数据项?',
+      deleteConfirm: '是否确认删除名称为"{menuName}"的数据项?',
       deleteSuccess: '删除成功'
     },
     dict: {
@@ -1357,8 +1455,10 @@ export default {
       editDictType: '修改字典类型',
       editSuccess: '修改成功',
       addSuccess: '新增成功',
-      deleteConfirm: '是否确认删除字典编号为的数据项?',
+      deleteConfirm: '是否确认删除字典编号为"{dictIds}"的数据项?',
       deleteSuccess: '删除成功',
+      refreshCache: '刷新缓存',
+      refreshSuccess: '刷新成功',
       data: {
         dictLabel: '字典标签',
         dictLabelPlaceholder: '请输入字典标签',
@@ -1382,9 +1482,21 @@ export default {
         info: '信息',
         warning: '警告',
         danger: '危险',
+        dataValue: '数据键值',
+        dataValuePlaceholder: '请输入数据键值',
+        cssClass: '样式属性',
+        cssClassPlaceholder: '请输入样式属性',
+        listClass: '回显样式',
         dataLabelRequired: '数据标签不能为空',
+        dataValueRequired: '数据键值不能为空',
         dataKeyRequired: '数据键值不能为空',
-        dataSortRequired: '数据顺序不能为空'
+        dataSortRequired: '数据顺序不能为空',
+        addDictData: '添加字典数据',
+        editDictData: '修改字典数据',
+        editSuccess: '修改成功',
+        addSuccess: '新增成功',
+        deleteConfirm: '是否确认删除字典编码为"{dictCodes}"的数据项?',
+        deleteSuccess: '删除成功'
       }
     },
     notice: {
@@ -1395,6 +1507,12 @@ export default {
       status: '状态',
       statusPlaceholder: '请选择状态',
       noticeNo: '公告编号',
+      serialNo: '序号',
+      operator: '操作人员',
+      operatorPlaceholder: '请输入操作人员',
+      type: '类型',
+      creator: '创建者',
+      content: '内容',
       createTime: '创建时间',
       dialogTitle: '添加或修改公告对话框',
       noticeContent: '公告内容',
@@ -1404,10 +1522,18 @@ export default {
       editNotice: '修改公告',
       editSuccess: '修改成功',
       addSuccess: '新增成功',
-      deleteConfirm: '是否确认删除公告编号为的数据项?',
+      deleteConfirm: '是否确认删除公告编号为"{noticeIds}"的数据项?',
       deleteSuccess: '删除成功'
     },
     config: {
+      configName: '参数名称',
+      configNamePlaceholder: '请输入参数名称',
+      configKey: '参数键名',
+      configKeyPlaceholder: '请输入参数键名',
+      configValue: '参数键值',
+      configValuePlaceholder: '请输入参数键值',
+      configId: '参数主键',
+      systemBuiltIn: '系统内置',
       paramName: '参数名称',
       paramNamePlaceholder: '请输入参数名称',
       paramKey: '参数键名',
@@ -1420,36 +1546,113 @@ export default {
       dialogTitle: '添加或修改参数配置对话框',
       paramValuePlaceholder: '请输入参数键值',
       remarkPlaceholder: '请输入备注',
+      configNameRequired: '参数名称不能为空',
+      configKeyRequired: '参数键名不能为空',
+      configValueRequired: '参数键值不能为空',
       paramNameRequired: '参数名称不能为空',
       paramKeyRequired: '参数键名不能为空',
       paramValueRequired: '参数键值不能为空',
+      addConfig: '添加参数',
+      editConfig: '修改参数',
       addParam: '添加参数',
       editParam: '修改参数',
       editSuccess: '修改成功',
       addSuccess: '新增成功',
-      deleteConfirm: '是否确认删除参数编号为的数据项?',
+      deleteConfirm: '是否确认删除参数编号为"{configIds}"的数据项?',
       deleteSuccess: '删除成功',
       refreshSuccess: '刷新成功'
     },
+    message: {
+      messageType: '消息类型',
+      messageTypePlaceholder: '请选择消息类型',
+      messageLevel: '消息级别',
+      messageLevelPlaceholder: '请选择消息级别',
+      sender: '发送人',
+      senderPlaceholder: '请输入发送人',
+      recipient: '接收人',
+      recipientPlaceholder: '请输入接收人',
+      recipientSelectPlaceholder: '请选择接收人',
+      title: '标题',
+      titlePlaceholder: '请输入标题',
+      content: '内容',
+      processTime: '处理时间',
+      callback: '回调地址',
+      callbackPlaceholder: '请输入回调地址',
+      test: '测试',
+      messageTypeRequired: '消息类型不能为空',
+      messageLevelRequired: '消息级别不能为空',
+      messageTitleRequired: '消息标题不能为空',
+      messageContentRequired: '消息内容不能为空',
+      recipientRequired: '接收人不能为空',
+      addMessage: '添加消息',
+      editMessage: '修改消息',
+      editSuccess: '修改成功',
+      addSuccess: '新增成功',
+      deleteConfirm: '是否确认删除消息编号为"{messageIds}"的数据项?',
+      deleteSuccess: '删除成功'
+    },
     autocode: {
       ruleName: '规则名称',
       ruleNamePlaceholder: '请输入规则名称',
+      ruleCode: '规则编码',
+      ruleCodePlaceholder: '请输入规则编码',
       ruleType: '规则类型',
       ruleTypePlaceholder: '请选择规则类型',
+      enableStatus: '启用状态',
       status: '状态',
       statusPlaceholder: '请选择状态',
       ruleNo: '规则编号',
       ruleComposition: '规则组成',
+      maxLength: '最大长度',
+      isPadded: '是否补齐',
+      isEnabled: '是否可用',
+      description: '描述',
+      descriptionPlaceholder: '请输入描述信息',
+      paddedChar: '补齐字符',
+      paddedCharPlaceholder: '请输入补齐字符',
+      paddedMethod: '补齐方式',
+      leftPad: '左补齐',
+      rightPad: '右补齐',
       dialogTitle: '添加或修改自动编码规则对话框',
       remarkPlaceholder: '请输入备注',
+      ruleCodeRequired: '规则编码不能为空',
       ruleNameRequired: '规则名称不能为空',
       ruleTypeRequired: '规则类型不能为空',
-      addRule: '添加规则',
-      editRule: '修改规则',
+      addRule: '添加编码规则',
+      editRule: '修改编码规则',
       editSuccess: '修改成功',
       addSuccess: '新增成功',
-      deleteConfirm: '是否确认删除规则编号为的数据项?',
-      deleteSuccess: '删除成功'
+      deleteConfirm: '是否确认删除编码规则为"{ruleIds}"的数据项?',
+      deleteSuccess: '删除成功',
+      part: {
+        partCode: '组成编码',
+        partCodePlaceholder: '请输入组成编码',
+        partName: '组成名称',
+        partNamePlaceholder: '请输入组成名称',
+        partIndex: '分段序号',
+        partIndexPlaceholder: '请输入分段序号',
+        partType: '分段类型',
+        partLength: '分段长度',
+        partLengthPlaceholder: '请输入分段长度',
+        dateFormat: '日期时间格式',
+        dateFormatPlaceholder: '请输入日期时间格式',
+        inputCharacter: '输入字符',
+        inputCharacterPlaceholder: '请填写输入字符',
+        fixCharacter: '固定字符',
+        fixCharacterPlaceholder: '请填写固定字符',
+        seriaStartNo: '起始流水号',
+        seriaStartNoPlaceholder: '请填写起始流水号',
+        seriaStep: '流水号步长',
+        seriaStepPlaceholder: '请填写流水号步长',
+        cycleFlag: '是否循环',
+        cycleMethod: '循环方式',
+        partCodeRequired: '组成编码不能为空',
+        partNameRequired: '组成名称不能为空',
+        partIndexRequired: '组成序号不能为空',
+        addPart: '添加规则组成',
+        editPart: '修改规则组成',
+        deleteConfirm: '是否确认删除规则组成ID为"{partIds}"的数据项?'
+      }
     },
     configuration: {
       paramName: '参数名称',
@@ -1458,27 +1661,50 @@ export default {
       paramKeyPlaceholder: '请输入参数键名',
       paramValue: '参数键值',
       paramValuePlaceholder: '请输入参数键值',
-      refreshCache: '刷新缓存',
       paramType: '参数类型',
-      dialogTitle: '添加或修改基础数据配置对话框',
       paramTypePlaceholder: '请选择参数类型',
       valueType: '键值类型',
       text: '文字',
       image: '图片',
       remarkPlaceholder: '请输入备注',
-      refreshSuccess: '刷新成功'
+      paramNameRequired: '参数名称不能为空',
+      paramKeyRequired: '参数键名不能为空',
+      paramValueRequired: '参数键值不能为空',
+      refreshCache: '刷新缓存',
+      refreshSuccess: '刷新成功',
+      addConfig: '添加基础数据',
+      editConfig: '修改基础数据',
+      editSuccess: '修改成功',
+      addSuccess: '新增成功',
+      deleteSuccess: '删除成功',
+      dialogTitle: '添加或修改基础数据配置对话框'
     },
     mapConfig: {
       mapName: '地图名称',
       mapNamePlaceholder: '请输入地图名称',
+      mapShortNamePlaceholder: '请输入地图简称',
       fingerprintFaceImport: '指纹人脸导入',
+      fingerprintImport: '指纹导入',
+      faceImport: '人脸导入',
       mapNo: '地图编号',
       mapShortName: '地图简称',
       mapImage: '地图图片',
+      imageWidth: '图片宽度',
+      imageWidthPlaceholder: '请输入图片宽度',
+      imageHeight: '图片高度',
+      imageHeightPlaceholder: '请输入图片高度',
       mapWidth: '地图宽度',
       mapHeight: '地图高度',
       xCoordinate: '横坐标',
+      xCoordinatePlaceholder: '请输入横坐标',
       yCoordinate: '纵坐标',
+      yCoordinatePlaceholder: '请输入纵坐标',
+      mapNameRequired: '地图名称不能为空',
+      mapImageRequired: '地图图片不能为空',
+      addMap: '添加地图数据',
+      editMap: '修改地图数据',
+      editSuccess: '修改成功',
+      addSuccess: '新增成功',
       createTime: '创建时间',
       detail: '详情',
       dialogTitle: '添加或修改参数配置对话框',
@@ -1505,12 +1731,721 @@ export default {
       mapPointNo: '地图点位编号',
       mapType: '地图类型',
       entityName: '实体名称',
+      entity: '实体',
+      selectEntity: '选择实体',
       xCoordinate: '横坐标',
+      xCoordinatePlaceholder: '请输入横坐标',
       yCoordinate: '纵坐标',
+      yCoordinatePlaceholder: '请输入纵坐标',
+      mapNameRequired: '地图名称不能为空',
+      mapTypeRequired: '地图类型不能为空',
+      addMapPoint: '添加地图点位数据',
+      editMapPoint: '修改地图点位数据',
+      editSuccess: '修改成功',
+      addSuccess: '新增成功',
+      deleteSuccess: '删除成功',
       createTime: '创建时间',
-      dialogTitle: '添加或修改参数配置对话框',
-      entity: '实体',
-      entityPlaceholder: '选择实体'
+      dialogTitle: '添加或修改参数配置对话框'
+    }
+  },
+  monitor: {
+    operlog: {
+      systemModule: '系统模块',
+      systemModulePlaceholder: '请输入系统模块',
+      operName: '操作人员',
+      operNamePlaceholder: '请输入操作人员',
+      type: '类型',
+      operType: '操作类型',
+      operTypePlaceholder: '操作类型',
+      operStatus: '操作状态',
+      operStatusPlaceholder: '操作状态',
+      operTime: '操作时间',
+      operId: '日志编号',
+      requestMethod: '请求方式',
+      operIp: '操作地址',
+      operLocation: '操作地点',
+      operDate: '操作日期',
+      detail: '详细',
+      detailTitle: '操作日志详细',
+      operModule: '操作模块',
+      loginInfo: '登录信息',
+      operUrl: '请求地址',
+      method: '操作方法',
+      operParam: '请求参数',
+      jsonResult: '返回参数',
+      normal: '正常',
+      failed: '失败',
+      errorMsg: '异常信息',
+      clean: '清空',
+      deleteConfirm: '是否确认删除日志编号为"{operIds}"的数据项?',
+      deleteSuccess: '删除成功',
+      cleanConfirm: '是否确认清空所有操作日志数据项?',
+      cleanSuccess: '清空成功'
+    },
+    logininfor: {
+      loginAddress: '登录地址',
+      loginAddressPlaceholder: '请输入登录地址',
+      loginStatusPlaceholder: '登录状态',
+      loginTime: '登录时间',
+      infoId: '访问编号',
+      loginLocation: '登录地点',
+      browser: '浏览器',
+      os: '操作系统',
+      loginStatus: '登录状态',
+      operInfo: '操作信息',
+      loginDate: '登录日期',
+      clean: '清空',
+      deleteConfirm: '是否确认删除访问编号为"{infoIds}"的数据项?',
+      deleteSuccess: '删除成功',
+      cleanConfirm: '是否确认清空所有登录日志数据项?',
+      cleanSuccess: '清空成功'
+    },
+    online: {
+      tokenId: '会话编号',
+      loginName: '登录名称',
+      deptName: '部门名称',
+      host: '主机',
+      forceLogout: '强退',
+      forceLogoutConfirm: '是否确认强退名称为"{userName}"的用户?',
+      forceLogoutSuccess: '强退成功'
+    }
+  },
+  mes: {
+    lockCabinet: {
+      cabinetName: '锁柜名称',
+      cabinetNamePlaceholder: '请输入锁柜名称',
+      isOnline: '是否在线',
+      isOnlinePlaceholder: '请选择是否在线',
+      cabinetCode: '锁柜编码',
+      cabinetCodePlaceholder: '请输入锁柜编号',
+      hardwareId: '硬件ID',
+      hardwareIdPlaceholder: '请选择硬件ID',
+      serialNumber: '硬件序列号',
+      picture: '图片',
+      icon: '图标',
+      detail: '详情',
+      test: '测试',
+      workstationId: '岗位序号',
+      autoGenerate: '自动生成',
+      addCabinet: '添加锁柜信息',
+      editCabinet: '编辑锁柜信息',
+      cabinetCodeRequired: '锁柜编码不能为空',
+      cabinetNameRequired: '锁柜名称不能为空',
+      hardwareIdRequired: '硬件ID不能为空',
+      workstationIdRequired: '岗位序号不能为空',
+      editSuccess: '修改成功',
+      addSuccess: '新增成功',
+      deleteSuccess: '删除成功',
+      testSuccess: '测试成功',
+      type: '类型',
+      typePlaceholder: '请输入type',
+      serialNo: '序列号',
+      serialNoPlaceholder: '请输入lotoSerialNumber',
+      content: '内容',
+      contentPlaceholder: '请输入content'
+    },
+    hardwareInfo: {
+      hardwareCode: '硬件编码',
+      hardwareCodePlaceholder: '请输入硬件编码',
+      hardwareName: '硬件名称',
+      hardwareNamePlaceholder: '请输入硬件名称',
+      statusPlaceholder: '请选择硬件状态',
+      hardwareType: '硬件类型',
+      hardwareTypePlaceholder: '请选择硬件类型',
+      specModel: '规格型号',
+      specModelPlaceholder: '请输入规格型号',
+      serialNo: '序列号',
+      serialNoPlaceholder: '请输入序列号',
+      hardwareStatus: '硬件状态',
+      enableTime: '启用时间',
+      availableCount: '可用次数',
+      availableCountPlaceholder: '请输入可用次数',
+      usedCount: '已用次数',
+      usedCountPlaceholder: '请输入已用次数',
+      availableLifespan: '可用寿命',
+      availableLifespanPlaceholder: '请输入可用寿命',
+      usedLifespan: '已用寿命',
+      usedLifespanPlaceholder: '请输入已用寿命',
+      enableDate: '启用日期',
+      enableDatePlaceholder: '请选择启用日期',
+      online: '在线',
+      offline: '离线',
+      exception: '异常',
+      autoGenerate: '自动生成',
+      addHardwareInfo: '新增硬件信息',
+      editHardwareInfo: '编辑硬件信息',
+      hardwareCodeRequired: '硬件编码不能为空',
+      hardwareNameRequired: '硬件名称不能为空',
+      hardwareTypeRequired: '硬件类型不能为空',
+      editSuccess: '修改成功',
+      addSuccess: '新增成功',
+      deleteSuccess: '删除成功',
+      deleteConfirm: '是否确认删除硬件编码为"{hardwareCode}"的数据项?',
+      lastWeek: '最近一周',
+      lastMonth: '最近一个月',
+      lastThreeMonths: '最近三个月'
+    },
+    hardwareType: {
+      hardwareTypeCode: '硬件类型编号',
+      hardwareTypeCodePlaceholder: '请输入硬件类型编号',
+      typeName: '类型名称',
+      typeNamePlaceholder: '请输入类型名称',
+      parentType: '父类型',
+      parentTypePlaceholder: '请选择父类型',
+      autoGenerate: '自动生成',
+      addHardwareType: '新增硬件类型',
+      editHardwareType: '编辑硬件类型',
+      hardwareTypeCodeRequired: '硬件编号不能为空',
+      typeNameRequired: '硬件名称不能为空',
+      editSuccess: '修改成功',
+      addSuccess: '新增成功',
+      deleteSuccess: '删除成功',
+      deleteConfirm: '是否删除硬件编号为"{hardwareTypeCode}"的硬件类型?'
+    },
+    rfid: {
+      rfidCode: 'RFID编码',
+      rfidCodePlaceholder: '请输入RFID编码',
+      rfidContent: 'RFID内容',
+      rfidContentPlaceholder: '请输入RFID内容',
+      rfidType: 'RFID类型',
+      rfidTypePlaceholder: '请选择RFID类型',
+      autoGenerate: '自动生成',
+      addRfid: '添加RFID信息',
+      editRfid: '编辑RFID信息',
+      rfidCodeRequired: 'RFID编码不能为空',
+      rfidContentRequired: 'RFID内容不能为空',
+      rfidTypeRequired: 'RFID类型不能为空',
+      editSuccess: '修改成功',
+      addSuccess: '新增成功',
+      deleteSuccess: '删除成功'
+    },
+    workCard: {
+      cardCode: '工卡编码',
+      cardCodePlaceholder: '请输入工卡编码',
+      cardType: '工卡类型',
+      cardTypePlaceholder: '请选择工卡类型',
+      cardNfc: '工卡NFC',
+      cardNfcPlaceholder: '请输入工卡Nfc',
+      userName: '用户名称',
+      userNamePlaceholder: '请选择工卡用户',
+      autoGenerate: '自动生成',
+      addWorkCard: '添加工卡信息',
+      editWorkCard: '编辑工卡信息',
+      cardCodeRequired: '工卡编码不能为空',
+      userNameRequired: '用户名称不能为空',
+      cardNfcRequired: '工卡NFC不能为空',
+      cardTypeRequired: '工卡类型不能为空',
+      editSuccess: '修改成功',
+      addSuccess: '新增成功',
+      deleteSuccess: '删除成功',
+      deleteConfirm: '是否确认删除编码为"{cardCode}"的数据项?'
+    },
+    lock: {
+      locksetCode: '锁具机构编码',
+      locksetCodePlaceholder: '请输入锁具机构编码',
+      locksetName: '锁具机构名称',
+      locksetNamePlaceholder: '请输入锁具机构名称',
+      locksetType: '锁具机构类型',
+      locksetTypePlaceholder: '选择锁具机构类型',
+      locksetNfc: '锁具机构NFC',
+      locksetNfcPlaceholder: '请输入锁具机构Nfc',
+      locksetRfid: '锁具机构RFID',
+      locksetRfidPlaceholder: '请输入锁具机构RFID',
+      materialsName: '物资名称',
+      materialsNamePlaceholder: '请选择物资名称',
+      locksetSpec: '锁具机构型号',
+      locksetSpecPlaceholder: '请输入锁具机构型号',
+      autoGenerate: '自动生成',
+      addLock: '新增锁具机构信息',
+      editLock: '编辑锁具机构信息',
+      locksetCodeRequired: '锁具机构编码不能为空',
+      locksetNameRequired: '锁具机构名称不能为空',
+      locksetNfcRequired: '锁具机构NFC不能为空',
+      locksetRfidRequired: '锁具机构RFID不能为空',
+      editSuccess: '修改成功',
+      addSuccess: '新增成功',
+      deleteSuccess: '删除成功',
+      deleteConfirm: '是否确认删除编码为"{locksetCode}"的数据项?',
+      lastWeek: '最近一周',
+      lastMonth: '最近一个月',
+      lastThreeMonths: '最近三个月'
+    },
+    materialInfo: {
+      materialsCabinet: '物资柜',
+      bindMaterialsCabinet: '绑定物资柜',
+      materialsCabinetPlaceholder: '请选择物资柜',
+      bindMaterialsCabinetPlaceholder: '请选择绑定物资柜',
+      materialsName: '物资名称',
+      materialsNamePlaceholder: '请输入物资名称',
+      materialsId: '物资编号',
+      materialsType: '物资类型',
+      materialsTypePlaceholder: '请选择物资类型',
+      materialsTypeSelectPlaceholder: '选择物资类型',
+      propertyType: '物资规格种类',
+      propertyTypePlaceholder: '请选择物资规格种类',
+      properties: '物资规格',
+      propertiesPlaceholder: '请选择物资规格',
+      rfid: 'RFID',
+      rfidPlaceholder: '请输入RFID',
+      rfidInputPlaceholder: '请输入物资RFID',
+      supplier: '供应商',
+      supplierPlaceholder: '请输入供应商',
+      expirationDate: '有效期截止',
+      inCabinet: '是否在柜中',
+      inCabinetPlaceholder: '是否在柜中',
+      statusPlaceholder: '物资状态',
+      materialsPicture: '物资图片',
+      batchAdd: '批量新增',
+      bindMaterials: '绑定物资',
+      addMaterialInfo: '新增物资信息',
+      editMaterialInfo: '修改物资信息',
+      materialsNameRequired: '物资名称不能为空',
+      materialsTypeRequired: '物资类型不能为空',
+      editSuccess: '修改成功',
+      addSuccess: '新增成功',
+      deleteSuccess: '删除成功',
+      bindSuccess: '绑定成功',
+      importMaterials: '物资导入',
+      importResult: '导入结果',
+      uploadText: '将文件拖到此处,或',
+      clickUpload: '点击上传',
+      uploadTip: '仅允许导入xls、xlsx格式文件。',
+      downloadTemplate: '下载模板',
+      empty: '空',
+      datePlaceholder: '选择日期',
+      lastWeek: '最近一周',
+      lastMonth: '最近一个月',
+      lastThreeMonths: '最近三个月'
+    },
+    materialType: {
+      materialsTypeCode: '物资类型编码',
+      materialsTypeCodePlaceholder: '请输入物资类型编码',
+      materialsTypeName: '物资类型名称',
+      materialsTypeNamePlaceholder: '请输入类型名称',
+      materialsTypeNameInputPlaceholder: '请输入物资类型名称',
+      materialsTypeIcon: '物资类型图标',
+      materialsTypePicture: '物资类型缩略图',
+      materialsTypeThumbnail: '物资缩略图',
+      properties: '物资规格',
+      propertiesPlaceholder: '请选择规格',
+      checkStandard: '检查标准',
+      checkStandardPlaceholder: '请输入检查标准',
+      autoGenerate: '自动生成',
+      addMaterialType: '新增物资类型',
+      editMaterialType: '修改物资类型',
+      materialsTypeCodeRequired: '物资类型编码不能为空',
+      materialsTypeNameRequired: '物资类型名称不能为空',
+      editSuccess: '修改成功',
+      addSuccess: '新增成功',
+      deleteSuccess: '删除成功',
+      viewMaterialType: '查看物资类型',
+      remarkPlaceholder: '请输入',
+      deleteConfirm: '是否确认删除班组编号为"{teamId}"的数据项?',
+      day: '天',
+      hour: '时',
+      minute: '分',
+      second: '秒'
+    },
+    lockers: {
+      cabinetLocation: '物资柜位置',
+      cabinetList: '物资柜列表',
+      noDataTip: '暂无数据,请到基础数据菜单进行配置',
+      exceptionInfo: '异常信息',
+      cabinet: '物资柜',
+      exceptionType: '异常类型',
+      workstationNamePlaceholder: '请输入区域名称',
+      cabinetId: '物资柜编号',
+      cabinetIdPlaceholder: '请输入物资柜编号',
+      cabinetName: '物资柜名称',
+      cabinetNamePlaceholder: '请输入物资柜名称',
+      cabinetCode: '物资柜编码',
+      cabinetCodePlaceholder: '请输入物资柜编码',
+      cabinetPicture: '物资柜图片',
+      cabinetStatus: '物资柜状态',
+      cabinetDetail: '物资柜详情',
+      workstation: '所属区域',
+      workstationPlaceholder: '选择所属区域',
+      autoGenerate: '自动生成',
+      addCabinetInfo: '新增物资柜信息',
+      editCabinetInfo: '修改物资柜信息',
+      cabinetCodeRequired: '物资柜编码不能为空',
+      cabinetNameRequired: '物资柜名称不能为空',
+      editSuccess: '修改成功',
+      addSuccess: '新增成功',
+      deleteSuccess: '删除成功',
+      lastWeek: '最近一周',
+      lastMonth: '最近一个月',
+      lastThreeMonths: '最近三个月',
+      misplacedCabinet: '物资放错柜子',
+      expiredDamaged: '物资过期损坏',
+      timeoutUnclosed: '超时未关柜门',
+      unknown: '未知',
+      second: '秒',
+      minute: '分钟',
+      hour: '小时',
+      misplacedCount: '{count}件物资放错',
+      expiredDamagedCount: '{count}件物资过期或损坏',
+      timeoutUnclosedStatus: '柜门超过{time}未关'
+    },
+    replacementRecords: {
+      cabinet: '物资柜',
+      cabinetPlaceholder: '请选择物资柜',
+      materialsType: '物资类型',
+      materialsTypePlaceholder: '请选择物资类型',
+      oldMaterialsId: '原物资编号',
+      oldMaterialsIdPlaceholder: '请输入原物资编号',
+      oldMaterialsIdInputPlaceholder: '请输入原物资Id',
+      oldMaterialsName: '原物资名称',
+      oldRfid: '原RFID',
+      oldRfidPlaceholder: '请输入原RFID',
+      oldMaterialsRfid: '原物资Rfid',
+      oldMaterialsRfidInputPlaceholder: '请输入原物资Rfid',
+      newMaterialsId: '新物资编号',
+      newMaterialsIdPlaceholder: '请输入新物资编号',
+      newMaterialsIdInputPlaceholder: '请输入新物资Id',
+      newMaterialsName: '新物资名称',
+      newRfid: '新RFID',
+      newRfidPlaceholder: '请输入新RFID',
+      newMaterialsRfid: '新物资RFID',
+      newMaterialsRfidInputPlaceholder: '请输入新物资RFID',
+      changeUser: '更换人',
+      changeUserPlaceholder: '请输入更换人',
+      changeUserSelectPlaceholder: '请选择更换员',
+      changeTime: '更换时间',
+      changeDate: '更换日期',
+      changeDatePlaceholder: '请选择日期',
+      operateType: '操作类型',
+      operateTypePlaceholder: '请选择操作类型',
+      materialsPicture: '物资图片',
+      planId: '计划名称Id',
+      planIdPlaceholder: '请选择检查计划',
+      checkRecordId: '检查记录Id',
+      checkRecordIdPlaceholder: '请输入检查记录Id',
+      repair: '维修',
+      replace: '更换',
+      addRecord: '新增更换记录',
+      editRecord: '编辑更换记录',
+      userRequired: '人员不能为空',
+      taskNameRequired: '任务名称不能为空',
+      checkFrequencyRequired: '检查时间频率不能为空',
+      editSuccess: '修改成功',
+      addSuccess: '新增成功',
+      deleteSuccess: '删除成功',
+      deleteConfirm: '是否确认删除编号为"{changeId}"的数据项?',
+      lastWeek: '最近一周',
+      lastMonth: '最近一个月',
+      lastThreeMonths: '最近三个月'
+    },
+    blacklist: {
+      userName: '工号',
+      userNamePlaceholder: '请输入工号',
+      nickName: '姓名',
+      nickNamePlaceholder: '请输入姓名',
+      userId: '用户编号',
+      loginName: '登录名',
+      type: '类型',
+      addBlacklist: '新增黑名单',
+      addSuccess: '新增成功',
+      deleteSuccess: '删除成功',
+      deleteConfirm: '是否确认删除所选数据项?'
+    },
+    inspectionPlan: {
+      planName: '计划名称',
+      planNamePlaceholder: '请输入计划名称',
+      planNamePrefix: '物资检查计划',
+      planId: '计划编号',
+      cabinet: '物资柜',
+      cabinetPlaceholder: '请选择检查的物资柜',
+      cabinetSelectPlaceholder: '请选择需要检查的物资柜',
+      planDate: '计划日期',
+      planDatePlaceholder: '请选择日期',
+      planDateSelectPlaceholder: '请选择计划日期',
+      checkUser: '检察员',
+      checkUserPlaceholder: '请选择检察员',
+      checkRecord: '检查记录',
+      cabinetDetail: '巡检物资柜详情',
+      inspectionCabinet: '巡检物资柜',
+      signature: '签名',
+      detail: '详情',
+      cabinetCheckRecord: '物资柜检查记录',
+      materialsId: '物资编号',
+      materialsName: '物资名称',
+      materialsType: '物资类型',
+      materialsPicture: '物资图片',
+      rfid: 'RFID',
+      checkTime: '检查时间',
+      exceptionReason: '异常原因',
+      workstation: '所属区域',
+      workstationPlaceholder: '选择所属区域',
+      enableAutoCreate: '启动自动创建',
+      planFrequency: '计划频率',
+      planFrequencyPlaceholder: '请选择计划频率',
+      month: '月',
+      week: '周',
+      autoCreateTip: '(*自动创建的检查计划,覆盖所有物资柜)',
+      addPlan: '新增检查计划',
+      editPlan: '修改检查计划',
+      dateRequired: '日期不能为空',
+      planNameRequired: '计划名称不能为空',
+      checkUserRequired: '检察员不能为空',
+      cabinetRequired: '物资柜不能为空',
+      editSuccess: '修改成功',
+      addSuccess: '新增成功',
+      deleteSuccess: '删除成功',
+      deleteConfirm: '是否确认删除所选数据项?',
+      updateSuccess: '更新成功',
+      lastWeek: '最近一周',
+      lastMonth: '最近一个月',
+      lastThreeMonths: '最近三个月',
+      monday: '周一',
+      tuesday: '周二',
+      wednesday: '周三',
+      thursday: '周四',
+      friday: '周五',
+      saturday: '周六',
+      sunday: '周日',
+      countUnit: '个'
+    },
+    inspectionRecord: {
+      planName: '计划名称',
+      planNamePlaceholder: '请输入计划名称',
+      cabinet: '物资柜',
+      cabinetPlaceholder: '请选择物资柜',
+      materialsName: '物资名称',
+      materialsNamePlaceholder: '请输入物资名称',
+      materialsType: '物资类型',
+      materialsTypePlaceholder: '请选择物资类型',
+      rfid: 'RFID',
+      rfidPlaceholder: '请输入RFID',
+      checkTime: '检查时间',
+      checkResult: '检查结果',
+      exceptionReason: '异常原因',
+      materialsId: '物资编号',
+      materialsPicture: '物资图片',
+      measure: '措施',
+      replacementRecord: '更换记录',
+      addRecord: '新增检查记录',
+      editRecord: '编辑检查记录',
+      userRequired: '人员不能为空',
+      taskNameRequired: '任务名称不能为空',
+      checkFrequencyRequired: '检查时间频率不能为空',
+      editSuccess: '修改成功',
+      addSuccess: '新增成功',
+      deleteSuccess: '删除成功',
+      deleteConfirm: '是否确认删除编号为"{checkId}"的数据项?',
+      lastWeek: '最近一周',
+      lastMonth: '最近一个月',
+      lastThreeMonths: '最近三个月'
+    },
+    collectionManagement: {
+      cabinet: '物资柜',
+      cabinetPlaceholder: '请选择物资柜',
+      materialsName: '物资名称',
+      materialsNamePlaceholder: '请输入物资名称',
+      materialsType: '物资类型',
+      materialsTypePlaceholder: '请选择物资类型',
+      loanUser: '领取人',
+      loanUserPlaceholder: '请输入领取人',
+      loanTime: '领取时间',
+      restitutionUser: '归还人',
+      restitutionUserPlaceholder: '请输入归还人',
+      restitutionTime: '归还时间',
+      materialsId: '物资编号',
+      materialsPicture: '物资图片',
+      loanDuration: '借出时长',
+      timeoutNotReturned: '超时未还',
+      lastWeek: '最近一周',
+      lastMonth: '最近一个月',
+      lastThreeMonths: '最近三个月'
+    },
+    expireRemind: {
+      materialsCode: '物资编码',
+      materialsCodePlaceholder: '请输入物资编码',
+      materialsName: '物资名称',
+      materialsNamePlaceholder: '请输入物资名称',
+      expireTime: '过期时间',
+      dateTimePlaceholder: '选择日期时间',
+      cabinet: '所属柜',
+      cabinetPlaceholder: '请选择所属柜',
+      notifyUser: '通知人',
+      read: '已读',
+      unread: '未读',
+      lastWeek: '最近一周',
+      lastMonth: '最近一个月',
+      lastThreeMonths: '最近三个月'
+    },
+    returnRemind: {
+      materialsCode: '物资编码',
+      materialsCodePlaceholder: '请输入物资编码',
+      materialsName: '物资名称',
+      materialsNamePlaceholder: '请输入物资名称',
+      loanUser: '领取人',
+      loanUserPlaceholder: '请输入领取人',
+      loanTime: '领取时间',
+      loanCabinet: '领取柜',
+      loanCabinetPlaceholder: '请选择领取柜',
+      remindUser: '提醒人',
+      dueTime: '到期时间',
+      dateTimePlaceholder: '选择日期时间',
+      read: '已读',
+      unread: '未读',
+      lastWeek: '最近一周',
+      lastMonth: '最近一个月',
+      lastThreeMonths: '最近三个月'
+    },
+    standard: {
+      propertyName: '物资规格种类',
+      propertyNamePlaceholder: '请输入物资规格种类',
+      propertyId: '编号',
+      propertySetting: '规格设置',
+      remarkPlaceholder: '请输入内容',
+      addProperty: '新增物资规格种类',
+      editProperty: '修改物资规格种类',
+      nameRequired: '名称不能为空',
+      materialsTypeRequired: '物资类型不能为空',
+      editSuccess: '修改成功',
+      addSuccess: '新增成功',
+      deleteSuccess: '删除成功',
+      deleteConfirm: '是否确认删除所选数据项?'
+    },
+    instructions: {
+      title: '标题',
+      titlePlaceholder: '请输入标题',
+      materialsType: '物资类型',
+      materialsTypePlaceholder: '请选择物资类型',
+      materialsTypeSelectPlaceholder: '选择物资类型',
+      fileType: '类型',
+      fileTypePlaceholder: '文件类型',
+      file: '文件',
+      instructionsId: '说明编号',
+      orderNum: '排序',
+      detail: '详情',
+      createTime: '添加时间',
+      addInstructions: '新增物资说明',
+      editInstructions: '修改物资说明',
+      materialsNameRequired: '物资名称不能为空',
+      materialsTypeRequired: '物资类型不能为空',
+      editSuccess: '修改成功',
+      addSuccess: '新增成功',
+      deleteSuccess: '删除成功',
+      deleteConfirm: '是否确认删除所选数据项?',
+      uploading: '正在上传',
+      uploadTip: '将文件拖到此处,或点击上传',
+      fileFormatTip: 'mp4、pdf格式文件。'
+    },
+    inventory: {
+      materialsType: '物资类型'
+    },
+    keys: {
+      keyCode: '钥匙编码',
+      keyCodePlaceholder: '请输入钥匙编码',
+      keyName: '钥匙名称',
+      keyNamePlaceholder: '请输入钥匙名称',
+      keyNfc: '钥匙NFC',
+      keyNfcPlaceholder: '请输入钥匙Nfc',
+      keySpec: '钥匙型号',
+      keySpecPlaceholder: '请输入钥匙型号',
+      macAddress: 'MAC地址',
+      macAddressPlaceholder: '请输入Mac地址',
+      hardwareName: '所属硬件',
+      hardwareNamePlaceholder: '请选择所属硬件',
+      autoGenerate: '自动生成',
+      remarkPlaceholder: '请输入备注',
+      addKey: '新增钥匙信息',
+      editKey: '编辑钥匙信息',
+      keyCodeRequired: '钥匙编码不能为空',
+      keyNameRequired: '钥匙名称不能为空',
+      keyNfcRequired: '钥匙NFC不能为空',
+      macAddressRequired: 'MAC地址不能为空',
+      editSuccess: '修改成功',
+      addSuccess: '新增成功',
+      deleteSuccess: '删除成功',
+      deleteConfirm: '是否确认删除编码为"{keyCode}"的数据项?'
+    },
+    padLocks: {
+      lockCode: '挂锁编码',
+      lockCodePlaceholder: '请输入挂锁编码',
+      lockName: '挂锁名称',
+      lockNamePlaceholder: '请输入挂锁名称',
+      lockNfc: '挂锁NFC',
+      lockNfcPlaceholder: '请输入挂锁Nfc',
+      lockSpec: '挂锁型号',
+      lockSpecPlaceholder: '请输入挂锁型号',
+      lockTypeName: '挂锁类型',
+      lockTypeNamePlaceholder: '请选择挂锁类型',
+      hardwareName: '所属硬件',
+      hardwareNamePlaceholder: '请选择所属硬件',
+      autoGenerate: '自动生成',
+      remarkPlaceholder: '请输入备注',
+      addPadLock: '新增挂锁信息',
+      editPadLock: '编辑挂锁信息',
+      lockCodeRequired: '挂锁编码不能为空',
+      lockNameRequired: '挂锁名称不能为空',
+      lockNfcRequired: '挂锁NFC不能为空',
+      editSuccess: '修改成功',
+      addSuccess: '新增成功',
+      deleteSuccess: '删除成功',
+      deleteConfirm: '是否确认删除编码为"{lockCode}"的数据项?'
+    },
+    lockCabinetSlots: {
+      slotCode: '仓位编码',
+      slotCodePlaceholder: '请输入仓位编码',
+      slotType: '仓位类型',
+      slotTypePlaceholder: '请选择仓位类型',
+      statusPlaceholder: '请选择状态',
+      row: '行',
+      rowPlaceholder: '请输入行',
+      col: '列',
+      colPlaceholder: '请输入列',
+      isOccupied: '是否被占用',
+      hardwareId: '占用仓位的硬件ID',
+      hardwareIdPlaceholder: '请选择硬件ID',
+      cabinetId: '锁柜序号',
+      autoGenerate: '自动生成',
+      remarkPlaceholder: '请输入备注',
+      addSlot: '添加仓位数据信息',
+      editSlot: '编辑仓位数据信息',
+      slotCodeRequired: '仓位编码不能为空',
+      slotTypeRequired: '仓位类型不能为空',
+      editSuccess: '修改成功',
+      addSuccess: '新增成功',
+      deleteSuccess: '删除成功',
+      deleteConfirm: '是否确认删除所选数据项?'
+    },
+    standardPropertyForm: {
+      valueName: '物资规格',
+      valueNamePlaceholder: '请输入物资规格',
+      propertyId: '物资规格种类编号',
+      recordId: '编号',
+      addPropertyValue: '新增物资规格',
+      editPropertyValue: '修改物资规格',
+      valueNameRequired: '物资规格不能为空',
+      editSuccess: '修改成功',
+      addSuccess: '新增成功',
+      deleteSuccess: '删除成功',
+      deleteConfirm: '是否确认删除所选数据项?'
+    },
+    emailTemplates: {
+      templateCode: '邮件模板编号',
+      templateCodePlaceholder: '请输入邮件模板编号',
+      templateName: '邮件模板名称',
+      templateNamePlaceholder: '请输入邮件模板名称',
+      templateTitle: '邮件模板标题',
+      templateTitlePlaceholder: '请输入邮件模板标题',
+      templateContent: '邮件模板内容',
+      templateContentPlaceholder: '请输入邮件模板内容',
+      content: '内容',
+      createTime: '新增时间',
+      viewContent: '内容查看',
+      addTemplate: '新增邮件模板',
+      editTemplate: '修改邮件模板',
+      templateCodeRequired: '邮件模板编号不能为空',
+      templateNameRequired: '邮件模板名称不能为空',
+      templateContentRequired: '邮件模板内容不能为空',
+      editSuccess: '修改成功',
+      addSuccess: '新增成功',
+      deleteSuccess: '删除成功',
+      deleteConfirm: '是否确认删除所选数据项?'
     }
   }
 }

+ 2 - 2
src/layout/components/Navbar.vue

@@ -19,11 +19,11 @@
 
         <screenfull id="screenfull" class="right-menu-item hover-effect" />
 
-        <el-tooltip content="布局大小" effect="dark" placement="bottom">
+        <el-tooltip :content="$t('navbar.layoutSize')" effect="dark" placement="bottom">
           <size-select id="size-select" class="right-menu-item hover-effect" />
         </el-tooltip>
 
-        <el-tooltip :content="$t('navbar.language') || '语言切换'" effect="dark" placement="bottom">
+        <el-tooltip :content="$t('navbar.language')" effect="dark" placement="bottom">
           <lang-select id="lang-select" class="right-menu-item hover-effect" />
         </el-tooltip>
 

+ 3 - 3
src/layout/components/Settings/index.vue

@@ -3,7 +3,7 @@
     <div>
       <div class="setting-drawer-content">
         <div class="setting-drawer-title">
-          <h3 class="drawer-title">主题风格设置</h3>
+          <h3 class="drawer-title">{{ $t('commonComponents.settings.themeStyleSettings') }}</h3>
         </div>
         <div class="setting-drawer-block-checbox">
           <div class="setting-drawer-block-checbox-item" @click="handleTheme('theme-dark')">
@@ -163,7 +163,7 @@ export default {
       this.sideTheme = val;
     },
     saveSetting() {
-      this.$modal.loading("正在保存到本地,请稍候...");
+      this.$modal.loading(this.$t('commonComponents.modal.savingToLocal'));
       this.$cache.local.set(
         "layout-setting",
         `{
@@ -179,7 +179,7 @@ export default {
       setTimeout(this.$modal.closeLoading(), 1000)
     },
     resetSetting() {
-      this.$modal.loading("正在清除设置缓存并刷新,请稍候...");
+      this.$modal.loading(this.$t('commonComponents.modal.clearingCache'));
       this.$cache.local.remove("layout-setting")
       setTimeout("window.location.reload()", 1000)
     }

+ 3 - 2
src/layout/components/Sidebar/Logo.vue

@@ -31,12 +31,13 @@ export default {
     },
     sideTheme() {
       return this.$store.state.settings.sideTheme
+    },
+    title() {
+      return this.$t('commonComponents.sidebar.logo')
     }
   },
   data() {
     return {
-      // title: '国软科技',
-      title:'博士安全',
       logo: logoImg
     }
   }

+ 44 - 41
src/views/mes/email/emailTemplates/index.vue

@@ -8,18 +8,18 @@
       v-show="showSearch"
       @submit.native.prevent
     >
-      <el-form-item label="邮件模板名称" prop="templateName">
+      <el-form-item :label="$t('mes.emailTemplates.templateName')" prop="templateName">
         <el-input
           v-model="queryParams.templateName"
-          placeholder="请输入邮件模板名称"
+          :placeholder="$t('mes.emailTemplates.templateNamePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="邮件模板标题" prop="templateTitle">
+      <el-form-item :label="$t('mes.emailTemplates.templateTitle')" prop="templateTitle">
         <el-input
           v-model="queryParams.templateTitle"
-          placeholder="请输入邮件模板标题"
+          :placeholder="$t('mes.emailTemplates.templateTitlePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
@@ -31,14 +31,14 @@
           icon="el-icon-search"
           size="mini"
           @click="handleQuery"
-          >搜索
+          >{{ $t('common.search') }}
         </el-button>
         <el-button
           v-no-more-click
           icon="el-icon-refresh"
           size="mini"
           @click="resetQuery"
-          >重置</el-button
+          >{{ $t('common.reset') }}</el-button
         >
       </el-form-item>
     </el-form>
@@ -52,7 +52,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['iscs:template:add']"
-          >新增
+          >{{ $t('common.add') }}
         </el-button>
       </el-col>
 <!--      <el-col :span="1.5">-->
@@ -83,23 +83,23 @@
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column
         prop="templateCode"
-        label="邮件模板编号"
+        :label="$t('mes.emailTemplates.templateCode')"
       ></el-table-column>
       <el-table-column
         prop="templateName"
-        label="邮件模板名称"
+        :label="$t('mes.emailTemplates.templateName')"
       ></el-table-column>
       <el-table-column
         prop="templateTitle"
-        label="邮件模板标题"
+        :label="$t('mes.emailTemplates.templateTitle')"
       ></el-table-column>
-      <el-table-column prop="templateContent" label="内容" width="120">
+      <el-table-column prop="templateContent" :label="$t('mes.emailTemplates.content')" width="120">
         <template slot-scope="scope">
-          <el-button type="text" @click="check(scope.row)">查看</el-button>
+          <el-button type="text" @click="check(scope.row)">{{ $t('common.view') }}</el-button>
         </template>
       </el-table-column>
       <el-table-column
-        label="新增时间"
+        :label="$t('mes.emailTemplates.createTime')"
         align="center"
         prop="createTime"
         width="150"
@@ -109,7 +109,7 @@
         </template>
       </el-table-column>
       <el-table-column
-        label="操作"
+        :label="$t('common.operation')"
         align="center"
         class-name="small-padding fixed-width"
       >
@@ -121,7 +121,7 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['iscs:template:edit']"
-            >修改
+            >{{ $t('common.edit') }}
           </el-button>
           <el-button
             v-no-more-click
@@ -130,7 +130,7 @@
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['iscs:template:remove']"
-            >删除
+            >{{ $t('common.delete') }}
           </el-button>
         </template>
       </el-table-column>
@@ -145,43 +145,43 @@
     <!-- 新增或修改邮件模板对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="120px">
-        <el-form-item label="邮件模板编号" prop="templateCode">
+        <el-form-item :label="$t('mes.emailTemplates.templateCode')" prop="templateCode">
           <el-input
             :disabled="isEdit"
             v-model="form.templateCode"
-            placeholder="请输入邮件模板编号"
+            :placeholder="$t('mes.emailTemplates.templateCodePlaceholder')"
           />
         </el-form-item>
-        <el-form-item label="邮件模板名称" prop="templateName">
+        <el-form-item :label="$t('mes.emailTemplates.templateName')" prop="templateName">
           <el-input
             v-model="form.templateName"
-            placeholder="请输入邮件模板名称"
+            :placeholder="$t('mes.emailTemplates.templateNamePlaceholder')"
           />
         </el-form-item>
-        <el-form-item label="邮件模板标题" prop="templateTitle">
+        <el-form-item :label="$t('mes.emailTemplates.templateTitle')" prop="templateTitle">
           <el-input
             v-model="form.templateTitle"
-            placeholder="请输入邮件模板标题"
+            :placeholder="$t('mes.emailTemplates.templateTitlePlaceholder')"
           />
         </el-form-item>
-        <el-form-item label="邮件模板内容" prop="templateContent">
+        <el-form-item :label="$t('mes.emailTemplates.templateContent')" prop="templateContent">
           <el-input
             type="textarea"
             :rows="20"
             v-model="form.templateContent"
-            placeholder="请输入邮件模板内容"
+            :placeholder="$t('mes.emailTemplates.templateContentPlaceholder')"
           />
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button v-no-more-click type="primary" @click="submitForm"
-          >确 定</el-button
+          >{{ $t('common.confirm') }}</el-button
         >
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
     <el-dialog
-      title="内容查看"
+      :title="$t('mes.emailTemplates.viewContent')"
       :visible.sync="openCheck"
       width="600px"
       append-to-body
@@ -194,7 +194,7 @@
         ></el-input>
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <el-button v-no-more-click @click="cancel">关 闭</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.close') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -252,19 +252,22 @@ export default {
       isEdit: false,
       // 表单参数
       form: {},
-      // 表单校验
-      rules: {
+    };
+  },
+  computed: {
+    rules() {
+      return {
         templateCode: [
-          { required: true, message: "邮件模板编号不能为空", trigger: "blur" },
+          { required: true, message: this.$t('mes.emailTemplates.templateCodeRequired'), trigger: "blur" },
         ],
         name: [
-          { required: true, message: "邮件模板名称不能为空", trigger: "blur" },
+          { required: true, message: this.$t('mes.emailTemplates.templateNameRequired'), trigger: "blur" },
         ],
         content: [
-          { required: true, message: "邮件模板内容不能为空", trigger: "blur" },
+          { required: true, message: this.$t('mes.emailTemplates.templateContentRequired'), trigger: "blur" },
         ],
-      },
-    };
+      };
+    }
   },
   created() {
     this.getList();
@@ -323,7 +326,7 @@ export default {
       this.reset();
       this.open = true;
       this.isEdit = false;
-      this.title = "新增邮件模板";
+      this.title = this.$t('mes.emailTemplates.addTemplate');
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -333,7 +336,7 @@ export default {
       getEmailTemplatesInfo(row.templateId).then((response) => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改邮件模板";
+        this.title = this.$t('mes.emailTemplates.editTemplate');
       });
     },
     /** 提交按钮 */
@@ -342,13 +345,13 @@ export default {
         if (valid) {
           if (this.isEdit) {
             updateEmailTemplates(this.form).then((response) => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('mes.emailTemplates.editSuccess'));
               this.open = false;
               this.getList();
             });
           } else {
             addEmailTemplates(this.form).then((response) => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('mes.emailTemplates.addSuccess'));
               this.open = false;
               this.getList();
             });
@@ -366,13 +369,13 @@ export default {
     handleDelete(row) {
       const templateIds = row.templateId || this.codes;
       this.$modal
-        .confirm("是否确认删除所选数据项?")
+        .confirm(this.$t('mes.emailTemplates.deleteConfirm'))
         .then(function () {
           return delEmailTemplates(templateIds);
         })
         .then(() => {
           this.getList();
-          this.$modal.msgSuccess("删除成功");
+          this.$modal.msgSuccess(this.$t('mes.emailTemplates.deleteSuccess'));
         })
         .catch(() => {});
     },

+ 60 - 89
src/views/mes/hw/Keys/index.vue

@@ -9,19 +9,19 @@
       label-width="100px"
     >
       <el-row>
-        <el-form-item label="钥匙编码" prop="keyCode">
+        <el-form-item :label="$t('mes.keys.keyCode')" prop="keyCode">
           <el-input
             v-model="queryParams.keyCode"
-            placeholder="请输入钥匙编码"
+            :placeholder="$t('mes.keys.keyCodePlaceholder')"
             clearable
             @keyup.enter.native="handleQuery"
           />
         </el-form-item>
 
-        <el-form-item label="钥匙名称" prop="keyName">
+        <el-form-item :label="$t('mes.keys.keyName')" prop="keyName">
           <el-input
             v-model="queryParams.keyName"
-            placeholder="请输入钥匙名称"
+            :placeholder="$t('mes.keys.keyNamePlaceholder')"
             clearable
             @keyup.enter.native="handleQuery"
           />
@@ -33,10 +33,10 @@
             icon="el-icon-search"
             size="mini"
             @click="handleQuery"
-            >搜索
+            >{{ $t('common.search') }}
           </el-button>
           <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery"
-            >重置
+            >{{ $t('common.reset') }}
           </el-button>
         </el-form-item>
       </el-row>
@@ -51,7 +51,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['mes:hw:key:add']"
-          >新增
+          >{{ $t('common.add') }}
         </el-button>
       </el-col>
 
@@ -64,7 +64,7 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['mes:hw:key:batchremove']"
-          >批量删除
+          >{{ $t('common.batchDelete') }}
         </el-button>
       </el-col>
       <right-toolbar
@@ -80,33 +80,33 @@
     >
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column
-        label="钥匙编码"
+        :label="$t('mes.keys.keyCode')"
         width="150px"
         align="center"
         prop="keyCode"
       />
       <el-table-column
-        label="钥匙名称"
+        :label="$t('mes.keys.keyName')"
         width="180px"
         align="center"
         prop="keyName"
       />
       <el-table-column
-        label="钥匙NFC"
+        :label="$t('mes.keys.keyNfc')"
         width="180px"
         align="center"
         prop="keyNfc"
         :show-overflow-tooltip="true"
       />
       <el-table-column
-        label="钥匙型号"
+        :label="$t('mes.keys.keySpec')"
         width="180px"
         align="center"
         prop="keySpec"
         :show-overflow-tooltip="true"
       />
-      <el-table-column label="MAC地址" align="center" prop="macAddress" />
-      <el-table-column label="状态" align="center" prop="exStatus">
+      <el-table-column :label="$t('mes.keys.macAddress')" align="center" prop="macAddress" />
+      <el-table-column :label="$t('common.status')" align="center" prop="exStatus">
         <template slot-scope="scope">
           <el-switch
             style="pointer-events: none;"
@@ -120,15 +120,15 @@
           <span v-else>-</span>
         </template>
       </el-table-column>
-      <el-table-column label="备注" align="center" prop="exRemark" >
+      <el-table-column :label="$t('common.remark')" align="center" prop="exRemark" >
 <!--        <template slot-scope="scope">-->
 <!--          <dict-tag v-if="scope.row.exRemark" :options="dict.type.key_reason" :value="scope.row.exRemark"/>-->
 <!--          <span v-else>-</span>-->
 <!--        </template>-->
       </el-table-column>
-      <el-table-column label="所属硬件" align="center" prop="hardwareName" />
+      <el-table-column :label="$t('mes.keys.hardwareName')" align="center" prop="hardwareName" />
       <el-table-column
-        label="创建时间"
+        :label="$t('common.createTime')"
         align="center"
         prop="createTime"
         width="180"
@@ -139,7 +139,7 @@
       </el-table-column>
 
       <el-table-column
-        label="操作"
+        :label="$t('common.operation')"
         align="center"
         class-name="small-padding fixed-width"
         fixed="right"
@@ -151,7 +151,7 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['mes:hw:key:edit']"
-            >编辑
+            >{{ $t('common.edit') }}
           </el-button>
           <el-button v-no-more-click
             size="mini"
@@ -159,7 +159,7 @@
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['mes:hw:key:remove']"
-            >删除
+            >{{ $t('common.delete') }}
           </el-button>
           <!--          <el-button v-no-more-click size="mini" type="text">预览</el-button>-->
         </template>
@@ -177,10 +177,10 @@
     <!-- 添加或修改设备维修单对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="450px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="120px">
-        <el-form-item label="所属硬件" prop="hardwareId">
+        <el-form-item :label="$t('mes.keys.hardwareName')" prop="hardwareId">
           <el-select
             v-model="form.hardwareId"
-            placeholder="请选择所属硬件"
+            :placeholder="$t('mes.keys.hardwareNamePlaceholder')"
             clearable
             style="width: 100%"
           >
@@ -194,10 +194,10 @@
         </el-form-item>
         <el-row>
           <el-col :span="15">
-            <el-form-item label="钥匙编码" prop="keyCode">
+            <el-form-item :label="$t('mes.keys.keyCode')" prop="keyCode">
               <el-input
                 v-model="form.keyCode"
-                placeholder="请输入钥匙编码"
+                :placeholder="$t('mes.keys.keyCodePlaceholder')"
                 style="width: 100%"
               />
             </el-form-item>
@@ -207,7 +207,7 @@
               <el-switch
                 v-model="autoGenFlag"
                 active-color="#13ce66"
-                active-text="自动生成"
+                :active-text="$t('mes.keys.autoGenerate')"
                 @change="handleAutoGenChange(autoGenFlag)"
               >
               </el-switch>
@@ -215,31 +215,31 @@
           </el-col>
         </el-row>
 
-        <el-form-item label="钥匙名称" prop="keyName">
-          <el-input v-model="form.keyName" placeholder="请输入钥匙名称" />
+        <el-form-item :label="$t('mes.keys.keyName')" prop="keyName">
+          <el-input v-model="form.keyName" :placeholder="$t('mes.keys.keyNamePlaceholder')" />
         </el-form-item>
-        <el-form-item label="钥匙NFC" prop="keyNfc">
+        <el-form-item :label="$t('mes.keys.keyNfc')" prop="keyNfc">
           <el-input
             v-model="form.keyNfc"
-            placeholder="请输入钥匙Nfc"
+            :placeholder="$t('mes.keys.keyNfcPlaceholder')"
             maxlength="16"
           />
         </el-form-item>
-        <el-form-item label="MAC地址" prop="macAddress">
+        <el-form-item :label="$t('mes.keys.macAddress')" prop="macAddress">
           <el-input
             v-model="form.macAddress"
-            placeholder="请输入Mac地址"
+            :placeholder="$t('mes.keys.macAddressPlaceholder')"
 
           />
         </el-form-item>
-        <el-form-item label="钥匙型号" prop="keySpec">
+        <el-form-item :label="$t('mes.keys.keySpec')" prop="keySpec">
           <el-input
             v-model="form.keySpec"
-            placeholder="请输入钥匙型号"
+            :placeholder="$t('mes.keys.keySpecPlaceholder')"
 
           />
         </el-form-item>
-        <el-form-item label="状态" prop="exStatus">
+        <el-form-item :label="$t('common.status')" prop="exStatus">
           <el-radio-group v-model="form.exStatus">
             <el-radio
               v-for="dict in dict.type.key_status"
@@ -249,8 +249,8 @@
             >
           </el-radio-group>
         </el-form-item>
-        <el-form-item label="备注" prop="exRemark" >
-          <el-input v-model="form.exRemark" placeholder="请输入备注"/>
+        <el-form-item :label="$t('common.remark')" prop="exRemark" >
+          <el-input v-model="form.exRemark" :placeholder="$t('mes.keys.remarkPlaceholder')"/>
           <!--          <el-select v-model="form.exRemark">-->
           <!--            <el-option-->
           <!--              v-for="dict in dict.type.padlock_reason"-->
@@ -266,8 +266,8 @@
 <!--        </el-form-item>-->
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <el-button v-no-more-click type="primary" @click="submitForm">确 定</el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click type="primary" @click="submitForm">{{ $t('common.confirm') }}</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -334,59 +334,30 @@ export default {
       form: {
         hardwareId: null,
       },
-      // 表单校验
-      rules: {
+
+      // 新增状态
+
+      EditId: 0, //修改判断
+      machinerytypeOptions: [], //锁具机构类型
+    };
+  },
+  computed: {
+    rules() {
+      return {
         keyCode: [
-          { required: true, message: "钥匙编码不能为空", trigger: "blur" },
+          { required: true, message: this.$t('mes.keys.keyCodeRequired'), trigger: "blur" },
         ],
         keyName: [
-          { required: true, message: "钥匙名称不能为空", trigger: "blur" },
+          { required: true, message: this.$t('mes.keys.keyNameRequired'), trigger: "blur" },
         ],
         keyNfc: [
-          { required: true, message: "钥匙NFC不能为空", trigger: "blur" },
+          { required: true, message: this.$t('mes.keys.keyNfcRequired'), trigger: "blur" },
         ],
         macAddress: [
-          { required: true, message: "MAC地址不能为空", trigger: "blur" },
-        ],
-      },
-      // 日期选择
-      pickerOptions: {
-        shortcuts: [
-          {
-            text: "最近一周",
-            onClick(picker) {
-              const end = new Date();
-              const start = new Date();
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
-              picker.$emit("pick", [start, end]);
-            },
-          },
-          {
-            text: "最近一个月",
-            onClick(picker) {
-              const end = new Date();
-              const start = new Date();
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
-              picker.$emit("pick", [start, end]);
-            },
-          },
-          {
-            text: "最近三个月",
-            onClick(picker) {
-              const end = new Date();
-              const start = new Date();
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
-              picker.$emit("pick", [start, end]);
-            },
-          },
+          { required: true, message: this.$t('mes.keys.macAddressRequired'), trigger: "blur" },
         ],
-      },
-
-      // 新增状态
-
-      EditId: 0, //修改判断
-      machinerytypeOptions: [], //锁具机构类型
-    };
+      };
+    }
   },
   created() {
     this.getList();
@@ -472,7 +443,7 @@ export default {
       this.reset();
       this.open = true;
       this.EditId = null;
-      this.title = "新增钥匙信息";
+      this.title = this.$t('mes.keys.addKey');
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -481,7 +452,7 @@ export default {
       getKeyInfoAPI(this.EditId).then((response) => {
         this.form = response.data;
         this.open = true;
-        this.title = "编辑钥匙信息";
+        this.title = this.$t('mes.keys.editKey');
       });
     },
     /** 提交按钮 */
@@ -491,14 +462,14 @@ export default {
           if (this.EditId != null) {
             console.log(this.form,'编辑传递的form')
             updateKeyAPI(this.form).then((response) => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('mes.keys.editSuccess'));
               this.open = false;
               this.getList();
             });
           } else {
             // console.log(this.form, "form");
             addKeyAPI(this.form).then((response) => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('mes.keys.addSuccess'));
               this.open = false;
               this.EditId = null;
               this.getList();
@@ -512,13 +483,13 @@ export default {
       const repairIds = row.keyId || this.ids;
       const repairCodes = row.keyCode || this.codes;
       this.$modal
-        .confirm('是否确认删除编码为"' + repairCodes + '"的数据项?')
+        .confirm(this.$t('mes.keys.deleteConfirm', { keyCode: repairCodes }))
         .then(function () {
           return delKeyAPI(repairIds);
         })
         .then(() => {
           this.getList();
-          this.$modal.msgSuccess("删除成功");
+          this.$modal.msgSuccess(this.$t('mes.keys.deleteSuccess'));
         })
         .catch(() => {});
     },

+ 64 - 61
src/views/mes/hw/Lock/index.vue

@@ -9,31 +9,31 @@
       label-width="100px"
     >
       <el-row>
-        <el-form-item label="锁具机构编码" prop="locksetCode">
+        <el-form-item :label="$t('mes.lock.locksetCode')" prop="locksetCode">
           <el-input
             v-model="queryParams.locksetCode"
-            placeholder="请输入锁具机构编码"
+            :placeholder="$t('mes.lock.locksetCodePlaceholder')"
             clearable
             @keyup.enter.native="handleQuery"
           />
         </el-form-item>
 
-        <el-form-item label="锁具机构名称" prop="locksetName">
+        <el-form-item :label="$t('mes.lock.locksetName')" prop="locksetName">
           <el-input
             v-model="queryParams.locksetName"
-            placeholder="请输入锁具机构名称"
+            :placeholder="$t('mes.lock.locksetNamePlaceholder')"
             clearable
             @keyup.enter.native="handleQuery"
           />
         </el-form-item>
 
-        <el-form-item label="锁具机构类型" prop="locksetTypeName">
+        <el-form-item :label="$t('mes.lock.locksetType')" prop="locksetTypeName">
           <treeselect
             style="width: 218px"
             v-model="queryParams.locksetTypeId"
             :options="locksetTypeOption"
             :normalizer="normalizer"
-            placeholder="选择锁具机构类型"
+            :placeholder="$t('mes.lock.locksetTypePlaceholder')"
           />
         </el-form-item>
 
@@ -43,10 +43,10 @@
             icon="el-icon-search"
             size="mini"
             @click="handleQuery"
-            >搜索
+            >{{ $t('common.search') }}
           </el-button>
           <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery"
-            >重置
+            >{{ $t('common.reset') }}
           </el-button>
         </el-form-item>
       </el-row>
@@ -61,7 +61,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['mes:hw:lk:add']"
-          >新增
+          >{{ $t('common.add') }}
         </el-button>
       </el-col>
 
@@ -74,7 +74,7 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['mes:hw:lk:batchremove']"
-          >批量删除
+          >{{ $t('common.batchDelete') }}
         </el-button>
       </el-col>
       <right-toolbar
@@ -90,25 +90,25 @@
     >
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column
-        label="锁具机构编码"
+        :label="$t('mes.lock.locksetCode')"
         width="150px"
         align="center"
         prop="locksetCode"
       />
       <el-table-column
-        label="锁具机构名称"
+        :label="$t('mes.lock.locksetName')"
         width="180px"
         align="center"
         prop="locksetName"
         :show-overflow-tooltip="true"
       />
-      <el-table-column label="锁具机构类型" align="center" prop="locksetTypeName" />
-      <el-table-column label="锁具机构NFC" align="center" prop="locksetNfc" />
-      <el-table-column label="锁具机构RFID" align="center" prop="locksetRfid" />
-      <el-table-column label="物资名称" align="center" prop="materialsName" />
-      <el-table-column label="锁具机构型号" align="center" prop="locksetSpec" />
+      <el-table-column :label="$t('mes.lock.locksetType')" align="center" prop="locksetTypeName" />
+      <el-table-column :label="$t('mes.lock.locksetNfc')" align="center" prop="locksetNfc" />
+      <el-table-column :label="$t('mes.lock.locksetRfid')" align="center" prop="locksetRfid" />
+      <el-table-column :label="$t('mes.lock.materialsName')" align="center" prop="materialsName" />
+      <el-table-column :label="$t('mes.lock.locksetSpec')" align="center" prop="locksetSpec" />
       <el-table-column
-        label="创建时间"
+        :label="$t('common.createTime')"
         align="center"
         prop="createTime"
         width="180"
@@ -119,7 +119,7 @@
       </el-table-column>
 
       <el-table-column
-        label="操作"
+        :label="$t('common.operation')"
         align="center"
         class-name="small-padding fixed-width"
         fixed="right"
@@ -131,7 +131,7 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['mes:hw:lk:edit']"
-            >编辑
+            >{{ $t('common.edit') }}
           </el-button>
           <el-button
             v-no-more-click
@@ -140,7 +140,7 @@
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['mes:hw:lk:remove']"
-            >删除
+            >{{ $t('common.delete') }}
           </el-button>
           <!--          <el-button v-no-more-click size="mini" type="text">预览</el-button>-->
         </template>
@@ -158,20 +158,20 @@
     <!-- 添加或修改设备维修单对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="450px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="120px">
-        <el-form-item label="锁具机构类型" prop="locksetTypeId">
+        <el-form-item :label="$t('mes.lock.locksetType')" prop="locksetTypeId">
           <treeselect
             v-model="form.locksetTypeId"
             :options="locksetTypeOption"
             :normalizer="normalizer"
-            placeholder="选择锁具机构类型"
+            :placeholder="$t('mes.lock.locksetTypePlaceholder')"
           />
         </el-form-item>
         <el-row>
           <el-col :span="15">
-            <el-form-item label="锁具机构编码" prop="locksetCode">
+            <el-form-item :label="$t('mes.lock.locksetCode')" prop="locksetCode">
               <el-input
                 v-model="form.locksetCode"
-                placeholder="请输入锁具机构编码"
+                :placeholder="$t('mes.lock.locksetCodePlaceholder')"
                 style="width: 100%"
               />
             </el-form-item>
@@ -181,26 +181,26 @@
               <el-switch
                 v-model="autoGenFlag"
                 active-color="#13ce66"
-                active-text="自动生成"
+                :active-text="$t('mes.lock.autoGenerate')"
                 @change="handleAutoGenChange(autoGenFlag)"
               >
               </el-switch>
             </el-form-item>
           </el-col>
         </el-row>
-        <el-form-item label="锁具机构名称" prop="locksetName">
-          <el-input v-model="form.locksetName" placeholder="请输入锁具机构名称" />
+        <el-form-item :label="$t('mes.lock.locksetName')" prop="locksetName">
+          <el-input v-model="form.locksetName" :placeholder="$t('mes.lock.locksetNamePlaceholder')" />
         </el-form-item>
-        <el-form-item label="锁具机构NFC" prop="locksetNfc">
-          <el-input v-model="form.locksetNfc" placeholder="请输入锁具机构Nfc" />
+        <el-form-item :label="$t('mes.lock.locksetNfc')" prop="locksetNfc">
+          <el-input v-model="form.locksetNfc" :placeholder="$t('mes.lock.locksetNfcPlaceholder')" />
         </el-form-item>
-        <el-form-item label="锁具机构RFID" prop="locksetRfid" >
-          <el-input v-model="form.locksetRfid" placeholder="请输入锁具机构RFID" />
+        <el-form-item :label="$t('mes.lock.locksetRfid')" prop="locksetRfid" >
+          <el-input v-model="form.locksetRfid" :placeholder="$t('mes.lock.locksetRfidPlaceholder')" />
         </el-form-item>
-        <el-form-item label="物资名称" prop="materialsId">
+        <el-form-item :label="$t('mes.lock.materialsName')" prop="materialsId">
           <el-select
             v-model="form.materialsId"
-            placeholder="请选择物资名称"
+            :placeholder="$t('mes.lock.materialsNamePlaceholder')"
             clearable
             style="width: 100%"
           >
@@ -212,13 +212,13 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="锁具机构型号" prop="locksetSpec">
-          <el-input v-model="form.locksetSpec" placeholder="请输入锁具机构型号" maxlength="16"/>
+        <el-form-item :label="$t('mes.lock.locksetSpec')" prop="locksetSpec">
+          <el-input v-model="form.locksetSpec" :placeholder="$t('mes.lock.locksetSpecPlaceholder')" maxlength="16"/>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <el-button v-no-more-click type="primary" @click="submitForm">确 定</el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click type="primary" @click="submitForm">{{ $t('common.confirm') }}</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -289,23 +289,32 @@ export default {
       // 表单校验
       rules: {
         locksetCode: [
-          { required: true, message: "锁具机构编码不能为空", trigger: "blur" },
+          { required: true, message: this.$t('mes.lock.locksetCodeRequired'), trigger: "blur" },
         ],
         locksetName: [
-          { required: true, message: "锁具机构名称不能为空", trigger: "blur" },
+          { required: true, message: this.$t('mes.lock.locksetNameRequired'), trigger: "blur" },
         ],
         locksetNfc: [
-          { required: true, message: "锁具机构NFC不能为空", trigger: "blur" },
+          { required: true, message: this.$t('mes.lock.locksetNfcRequired'), trigger: "blur" },
         ],
         locksetRfid: [
-          { required: true, message: "锁具机构RFID不能为空", trigger: "blur" },
+          { required: true, message: this.$t('mes.lock.locksetRfidRequired'), trigger: "blur" },
         ],
       },
-      // 日期选择
-      pickerOptions: {
+      value2: "",
+      // 新增状态
+
+      EditId: 0, //修改判断
+      cascaderOptions: [], // 转换后的数据
+      flatHardwareTypeOption: [], // 用于快速查找
+    };
+  },
+  computed: {
+    pickerOptions() {
+      return {
         shortcuts: [
           {
-            text: "最近一周",
+            text: this.$t('mes.lock.lastWeek'),
             onClick(picker) {
               const end = new Date();
               const start = new Date();
@@ -314,7 +323,7 @@ export default {
             },
           },
           {
-            text: "最近一个月",
+            text: this.$t('mes.lock.lastMonth'),
             onClick(picker) {
               const end = new Date();
               const start = new Date();
@@ -323,7 +332,7 @@ export default {
             },
           },
           {
-            text: "最近三个月",
+            text: this.$t('mes.lock.lastThreeMonths'),
             onClick(picker) {
               const end = new Date();
               const start = new Date();
@@ -332,14 +341,8 @@ export default {
             },
           },
         ],
-      },
-      value2: "",
-      // 新增状态
-
-      EditId: 0, //修改判断
-      cascaderOptions: [], // 转换后的数据
-      flatHardwareTypeOption: [], // 用于快速查找
-    };
+      };
+    }
   },
   created() {
     this.getList();
@@ -460,7 +463,7 @@ export default {
       this.reset();
       this.open = true;
       this.EditId = null;
-      this.title = "新增锁具机构信息";
+      this.title = this.$t('mes.lock.addLock');
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -470,7 +473,7 @@ export default {
         // console.log(response, "编辑拿到单挑数");
         this.form = response.data;
         this.open = true;
-        this.title = "编辑锁具机构信息";
+        this.title = this.$t('mes.lock.editLock');
       });
     },
     /** 提交按钮 */
@@ -479,14 +482,14 @@ export default {
         if (valid) {
           if (this.EditId != null) {
             updateLockAPI(this.form).then((response) => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('mes.lock.editSuccess'));
               this.open = false;
               this.getList();
             });
           } else {
             // console.log(this.form, "form");
             addLockAPI(this.form).then((response) => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('mes.lock.addSuccess'));
               this.open = false;
               this.EditId = null;
               this.getList();
@@ -500,13 +503,13 @@ export default {
       const repairIds = row.locksetId || this.ids;
       const repairCodes = row.locksetCode || this.codes;
       this.$modal
-        .confirm('是否确认删除编码为"' + repairCodes + '"的数据项?')
+        .confirm(this.$t('mes.lock.deleteConfirm', { locksetCode: repairCodes }))
         .then(function () {
           return delLockAPI(repairIds);
         })
         .then(() => {
           this.getList();
-          this.$modal.msgSuccess("删除成功");
+          this.$modal.msgSuccess(this.$t('mes.lock.deleteSuccess'));
         })
         .catch(() => {});
     },

+ 84 - 81
src/views/mes/hw/information/index.vue

@@ -9,27 +9,27 @@
       label-width="100px"
     >
       <el-row>
-        <el-form-item label="硬件编码" prop="hardwareCode">
+        <el-form-item :label="$t('mes.hardwareInfo.hardwareCode')" prop="hardwareCode">
           <el-input
             v-model="queryParams.hardwareCode"
-            placeholder="请输入硬件编码"
+            :placeholder="$t('mes.hardwareInfo.hardwareCodePlaceholder')"
             clearable
             @keyup.enter.native="handleQuery"
           />
         </el-form-item>
-        <el-form-item label="硬件名称" prop="hardwareName">
+        <el-form-item :label="$t('mes.hardwareInfo.hardwareName')" prop="hardwareName">
           <el-input
             v-model="queryParams.hardwareName"
-            placeholder="请输入硬件名称"
+            :placeholder="$t('mes.hardwareInfo.hardwareNamePlaceholder')"
             clearable
             @keyup.enter.native="handleQuery"
           />
         </el-form-item>
 
-        <el-form-item label="状态" prop="status">
+        <el-form-item :label="$t('common.status')" prop="status">
           <el-select
             v-model="queryParams.status"
-            placeholder="请选择硬件状态"
+            :placeholder="$t('mes.hardwareInfo.statusPlaceholder')"
             clearable
           >
             <el-option
@@ -41,32 +41,32 @@
           </el-select>
         </el-form-item>
 
-        <el-form-item label="硬件类型" prop="hardwareTypeId">
+        <el-form-item :label="$t('mes.hardwareInfo.hardwareType')" prop="hardwareTypeId">
           <treeselect
             style="width: 215px"
             v-model="queryParams.hardwareTypeId"
             :options="hardwareTypeOption"
             :show-count="true"
-            placeholder="请选择硬件类型"
+            :placeholder="$t('mes.hardwareInfo.hardwareTypePlaceholder')"
           />
         </el-form-item>
       </el-row>
-      <el-form-item label="规格型号" prop="hardwareSpec">
+      <el-form-item :label="$t('mes.hardwareInfo.specModel')" prop="hardwareSpec">
         <el-input
           v-model="queryParams.hardwareSpec"
-          placeholder="请输入规格型号"
+          :placeholder="$t('mes.hardwareInfo.specModelPlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="创建时间" prop="createTime">
+      <el-form-item :label="$t('common.createTime')" prop="createTime">
         <el-date-picker
           v-model="createTime"
           type="datetimerange"
           :picker-options="pickerOptions"
           range-separator="-"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
+          :start-placeholder="$t('common.startDate')"
+          :end-placeholder="$t('common.endDate')"
           align="right"
           style="width: 540px"
         >
@@ -94,14 +94,14 @@
           icon="el-icon-search"
           size="mini"
           @click="handleQuery"
-          >搜索</el-button
+          >{{ $t('common.search') }}</el-button
         >
         <el-button
           v-no-more-click
           icon="el-icon-refresh"
           size="mini"
           @click="resetQuery"
-          >重置</el-button
+          >{{ $t('common.reset') }}</el-button
         >
       </el-form-item>
     </el-form>
@@ -116,7 +116,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['mes:hw:information:add']"
-          >新增</el-button
+          >{{ $t('common.add') }}</el-button
         >
       </el-col>
       <!-- <el-col :span="1.5">
@@ -141,7 +141,7 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['mes:hw:information:batchremove']"
-          >批量删除</el-button
+          >{{ $t('common.batchDelete') }}</el-button
         >
       </el-col>
       <right-toolbar
@@ -157,27 +157,27 @@
     >
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column
-        label="硬件编码"
+        :label="$t('mes.hardwareInfo.hardwareCode')"
         width="120px"
         align="center"
         prop="hardwareCode"
       />
       <el-table-column
-        label="硬件名称"
+        :label="$t('mes.hardwareInfo.hardwareName')"
         width="150px"
         align="center"
         prop="hardwareName"
         :show-overflow-tooltip="true"
       />
       <el-table-column
-        label="硬件类型"
+        :label="$t('mes.hardwareInfo.hardwareType')"
         align="center"
         prop="hardwareTypeName"
       />
-      <el-table-column label="规格型号" align="center" prop="hardwareSpec" />
-      <el-table-column label="序列号" align="center" prop="serialNumber" />
+      <el-table-column :label="$t('mes.hardwareInfo.specModel')" align="center" prop="hardwareSpec" />
+      <el-table-column :label="$t('mes.hardwareInfo.serialNo')" align="center" prop="serialNumber" />
       <!-- <el-table-column label="所属车间" align="center" prop="workshopName" /> -->
-      <el-table-column label="硬件状态" align="center" prop="status">
+      <el-table-column :label="$t('mes.hardwareInfo.hardwareStatus')" align="center" prop="status">
         <template slot-scope="scope">
           <dict-tag
             :options="dict.type.hardware_status"
@@ -186,7 +186,7 @@
         </template>
       </el-table-column>
       <el-table-column
-        label="创建时间"
+        :label="$t('common.createTime')"
         align="center"
         prop="createTime"
         width="180"
@@ -196,7 +196,7 @@
         </template>
       </el-table-column>
       <el-table-column
-        label="启用时间"
+        :label="$t('mes.hardwareInfo.enableTime')"
         align="center"
         prop="activationTime"
         width="120"
@@ -205,12 +205,12 @@
           <span>{{ scope.row.activationTime }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="可用次数" align="center" prop="availableTimes" />
-      <el-table-column label="已用次数" align="center" prop="usedTimes" />
-      <el-table-column label="可用寿命" align="center" prop="availableLife" />
-      <el-table-column label="已用寿命" align="center" prop="usedLife" />
+      <el-table-column :label="$t('mes.hardwareInfo.availableCount')" align="center" prop="availableTimes" />
+      <el-table-column :label="$t('mes.hardwareInfo.usedCount')" align="center" prop="usedTimes" />
+      <el-table-column :label="$t('mes.hardwareInfo.availableLifespan')" align="center" prop="availableLife" />
+      <el-table-column :label="$t('mes.hardwareInfo.usedLifespan')" align="center" prop="usedLife" />
       <el-table-column
-        label="操作"
+        :label="$t('common.operation')"
         align="center"
         class-name="small-padding fixed-width"
         fixed="right"
@@ -223,7 +223,7 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['mes:hw:information:edit']"
-            >编辑</el-button
+            >{{ $t('common.edit') }}</el-button
           >
           <el-button
             v-no-more-click
@@ -232,7 +232,7 @@
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['mes:hw:information:remove']"
-            >删除</el-button
+            >{{ $t('common.delete') }}</el-button
           >
           <!--          <el-button v-no-more-click size="mini" type="text">预览</el-button>-->
         </template>
@@ -257,10 +257,10 @@
       <el-form ref="form" :model="form" :rules="rules" label-width="120px">
         <el-row>
           <el-col :span="8">
-            <el-form-item label="硬件编码" prop="hardwareCode">
+            <el-form-item :label="$t('mes.hardwareInfo.hardwareCode')" prop="hardwareCode">
               <el-input
                 v-model="form.hardwareCode"
-                placeholder="请输入硬件编码"
+                :placeholder="$t('mes.hardwareInfo.hardwareCodePlaceholder')"
                 style="width: 100%"
               />
             </el-form-item>
@@ -270,7 +270,7 @@
               <el-switch
                 v-model="autoGenFlag"
                 active-color="#13ce66"
-                active-text="自动生成"
+                :active-text="$t('mes.hardwareInfo.autoGenerate')"
                 @change="handleAutoGenChange(autoGenFlag)"
                 v-if="optType != 'view'"
               >
@@ -278,60 +278,60 @@
             </el-form-item>
           </el-col>
           <el-col :span="11">
-            <el-form-item label="硬件类型" prop="hardwareTypeId">
+            <el-form-item :label="$t('mes.hardwareInfo.hardwareType')" prop="hardwareTypeId">
               <treeselect
                 v-model="form.hardwareTypeId"
                 :options="hardwareTypeOption"
                 @input="onSelectChange"
                 :show-count="true"
-                placeholder="请选择硬件类型"
+                :placeholder="$t('mes.hardwareInfo.hardwareTypePlaceholder')"
               />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="11">
-            <el-form-item label="硬件名称" prop="hardwareName">
+            <el-form-item :label="$t('mes.hardwareInfo.hardwareName')" prop="hardwareName">
               <el-input
                 v-model="form.hardwareName"
-                placeholder="请输入硬件名称"
+                :placeholder="$t('mes.hardwareInfo.hardwareNamePlaceholder')"
               />
             </el-form-item>
           </el-col>
           <el-col :span="11">
-            <el-form-item label="规格型号" prop="hardwareSpec">
+            <el-form-item :label="$t('mes.hardwareInfo.specModel')" prop="hardwareSpec">
               <el-input
                 v-model="form.hardwareSpec"
-                placeholder="请输入规格型号"
+                :placeholder="$t('mes.hardwareInfo.specModelPlaceholder')"
               />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col span="11">
-            <el-form-item label="序列号" prop="serialNumber">
+            <el-form-item :label="$t('mes.hardwareInfo.serialNo')" prop="serialNumber">
               <el-input
                 v-model="form.serialNumber"
-                placeholder="请输入序列号"
+                :placeholder="$t('mes.hardwareInfo.serialNoPlaceholder')"
               />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="11">
-            <el-form-item label="可用次数" prop="availableTimes">
+            <el-form-item :label="$t('mes.hardwareInfo.availableCount')" prop="availableTimes">
               <el-input
                 v-model="form.availableTimes"
-                placeholder="请输入可用次数"
+                :placeholder="$t('mes.hardwareInfo.availableCountPlaceholder')"
                 disabled
               />
             </el-form-item>
           </el-col>
           <el-col :span="11">
-            <el-form-item label="已用次数" prop="usedTimes">
+            <el-form-item :label="$t('mes.hardwareInfo.usedCount')" prop="usedTimes">
               <el-input
                 v-model="form.usedTimes"
-                placeholder="请输入已用次数"
+                :placeholder="$t('mes.hardwareInfo.usedCountPlaceholder')"
                 disabled
               />
             </el-form-item>
@@ -339,29 +339,29 @@
         </el-row>
         <el-row>
           <el-col :span="11">
-            <el-form-item label="可用寿命" prop="availableLife">
+            <el-form-item :label="$t('mes.hardwareInfo.availableLifespan')" prop="availableLife">
               <el-input
                 v-model="form.availableLife"
-                placeholder="请输入可用寿命"
+                :placeholder="$t('mes.hardwareInfo.availableLifespanPlaceholder')"
               />
             </el-form-item>
           </el-col>
           <el-col :span="11">
-            <el-form-item label="已用寿命" prop="usedLife">
-              <el-input v-model="form.usedLife" placeholder="请输入已用寿命" />
+            <el-form-item :label="$t('mes.hardwareInfo.usedLifespan')" prop="usedLife">
+              <el-input v-model="form.usedLife" :placeholder="$t('mes.hardwareInfo.usedLifespanPlaceholder')" />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="11">
-            <el-form-item label="启用日期" prop="activationTime">
+            <el-form-item :label="$t('mes.hardwareInfo.enableDate')" prop="activationTime">
               <el-date-picker
                 clearable
                 v-model="form.activationTime"
                 style="width: 100%"
                 type="date"
                 value-format="yyyy-MM-dd"
-                placeholder="请选择启用日期"
+                :placeholder="$t('mes.hardwareInfo.enableDatePlaceholder')"
               >
               </el-date-picker> </el-form-item
           ></el-col>
@@ -382,14 +382,14 @@
                 />
               </el-select>
             </el-form-item> -->
-            <el-form-item label="状态" prop="status">
+            <el-form-item :label="$t('common.status')" prop="status">
               <el-radio v-model="form.status" label="1" v-removeAriaHidden
                 ><img
                   src="@/assets/images/success.png"
                   alt=""
                   class="imgstatus"
                 />
-                在线</el-radio
+                {{ $t('mes.hardwareInfo.online') }}</el-radio
               >
               <el-radio v-model="form.status" v-removeAriaHidden label="2"
                 ><img
@@ -397,11 +397,11 @@
                   alt=""
                   class="imgstatus"
                 />
-                离线</el-radio
+                {{ $t('mes.hardwareInfo.offline') }}</el-radio
               >
               <el-radio v-model="form.status" v-removeAriaHidden label="3"
                 ><img src="@/assets/images/warn.png" alt="" class="imgstatus" />
-                异常</el-radio
+                {{ $t('mes.hardwareInfo.exception') }}</el-radio
               >
             </el-form-item>
           </el-col>
@@ -409,9 +409,9 @@
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button v-no-more-click type="primary" @click="submitForm"
-          >确 定</el-button
+          >{{ $t('common.confirm') }}</el-button
         >
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -489,20 +489,29 @@ export default {
       // 表单校验
       rules: {
         hardwareCode: [
-          { required: true, message: "硬件编码不能为空", trigger: "blur" },
+          { required: true, message: this.$t('mes.hardwareInfo.hardwareCodeRequired'), trigger: "blur" },
         ],
         hardwareName: [
-          { required: true, message: "硬件名称不能为空", trigger: "blur" },
+          { required: true, message: this.$t('mes.hardwareInfo.hardwareNameRequired'), trigger: "blur" },
         ],
         hardwareTypeId:[
-          { required: true, message: "硬件类型不能为空", trigger: "blur" },
+          { required: true, message: this.$t('mes.hardwareInfo.hardwareTypeRequired'), trigger: "blur" },
         ]
       },
-      // 日期选择
-      pickerOptions: {
+      value2: "",
+      // 新增状态
+      radio: 3,
+      EditId: 0, //修改判断
+      cascaderOptions: [], // 转换后的数据
+      flatHardwareTypeOption: [], // 用于快速查找
+    };
+  },
+  computed: {
+    pickerOptions() {
+      return {
         shortcuts: [
           {
-            text: "最近一周",
+            text: this.$t('mes.hardwareInfo.lastWeek'),
             onClick(picker) {
               const end = new Date();
               const start = new Date();
@@ -511,7 +520,7 @@ export default {
             },
           },
           {
-            text: "最近一个月",
+            text: this.$t('mes.hardwareInfo.lastMonth'),
             onClick(picker) {
               const end = new Date();
               const start = new Date();
@@ -520,7 +529,7 @@ export default {
             },
           },
           {
-            text: "最近三个月",
+            text: this.$t('mes.hardwareInfo.lastThreeMonths'),
             onClick(picker) {
               const end = new Date();
               const start = new Date();
@@ -529,14 +538,8 @@ export default {
             },
           },
         ],
-      },
-      value2: "",
-      // 新增状态
-      radio: 3,
-      EditId: 0, //修改判断
-      cascaderOptions: [], // 转换后的数据
-      flatHardwareTypeOption: [], // 用于快速查找
-    };
+      };
+    }
   },
   created() {
     this.getList();
@@ -715,7 +718,7 @@ export default {
       this.reset();
       this.open = true;
       this.EditId = null;
-      this.title = "新增硬件信息";
+      this.title = this.$t('mes.hardwareInfo.addHardwareInfo');
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -724,7 +727,7 @@ export default {
       getHardwareInfo(this.EditId).then((response) => {
         this.form = response.data;
         this.open = true;
-        this.title = "编辑硬件信息";
+        this.title = this.$t('mes.hardwareInfo.editHardwareInfo');
       });
     },
     /** 提交按钮 */
@@ -733,14 +736,14 @@ export default {
         if (valid) {
           if (this.EditId != null) {
             updateHardware(this.form).then((response) => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('mes.hardwareInfo.editSuccess'));
               this.open = false;
               this.getList();
             });
           } else {
             // console.log(this.form, "form");
             addHardware(this.form).then((response) => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('mes.hardwareInfo.addSuccess'));
               this.open = false;
               this.EditId = null;
               this.getList();
@@ -754,13 +757,13 @@ export default {
       const repairIds = row.id || this.ids;
       const repairCodes = row.hardwareCode || this.codes;
       this.$modal
-        .confirm('是否确认删除硬件编码为"' + repairCodes + '"的数据项?')
+        .confirm(this.$t('mes.hardwareInfo.deleteConfirm', { hardwareCode: repairCodes }))
         .then(function () {
           return delHardware(repairIds);
         })
         .then(() => {
           this.getList();
-          this.$modal.msgSuccess("删除成功");
+          this.$modal.msgSuccess(this.$t('mes.hardwareInfo.deleteSuccess'));
         })
         .catch(() => {});
     },

+ 65 - 65
src/views/mes/hw/lockCabinet/index.vue

@@ -9,19 +9,19 @@
       label-width="100px"
     >
       <el-row>
-        <el-form-item label="锁柜名称" prop="cabinetName">
+        <el-form-item :label="$t('mes.lockCabinet.cabinetName')" prop="cabinetName">
           <el-input
             v-model="queryParams.cabinetName"
-            placeholder="请输入锁柜名称"
+            :placeholder="$t('mes.lockCabinet.cabinetNamePlaceholder')"
             clearable
             @keyup.enter.native="handleQuery"
           />
         </el-form-item>
 
-        <el-form-item label="是否在线" prop="isOnline">
+        <el-form-item :label="$t('mes.lockCabinet.isOnline')" prop="isOnline">
           <el-select
             v-model="queryParams.isOnline"
-            placeholder="请选择是否在线"
+            :placeholder="$t('mes.lockCabinet.isOnlinePlaceholder')"
             clearable
           >
             <el-option
@@ -32,10 +32,10 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="状态" prop="status">
+        <el-form-item :label="$t('common.status')" prop="status">
           <el-select
             v-model="queryParams.status"
-            placeholder="请选择状态"
+            :placeholder="$t('common.pleaseSelect')"
             clearable
           >
             <el-option
@@ -54,14 +54,14 @@
             icon="el-icon-search"
             size="mini"
             @click="handleQuery"
-          >搜索
+          >{{ $t('common.search') }}
           </el-button>
           <el-button
             v-no-more-click
             icon="el-icon-refresh"
             size="mini"
             @click="resetQuery"
-          >重置
+          >{{ $t('common.reset') }}
           </el-button>
         </el-form-item>
       </el-row>
@@ -77,7 +77,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['mes:hw:work:add']"
-        >新增
+        >{{ $t('common.add') }}
         </el-button>
       </el-col>
 
@@ -91,7 +91,7 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['mes:hw:work:batchremove']"
-        >批量删除
+        >{{ $t('common.batchDelete') }}
         </el-button>
       </el-col>
       <right-toolbar
@@ -107,17 +107,17 @@
     >
       <el-table-column type="selection" width="55" align="center"/>
       <el-table-column
-        label="锁柜编码"
+        :label="$t('mes.lockCabinet.cabinetCode')"
         width="150px"
         align="center"
         prop="cabinetCode"
       />
-      <el-table-column label="锁柜名称" align="center" prop="cabinetName"/>
-      <el-table-column label="硬件ID" align="center" prop="hardwareId"></el-table-column>
-      <el-table-column label="硬件序列号" align="center" prop="serialNumber"></el-table-column>
-      <el-table-column label="岗位" align="center" prop="workstationName">
+      <el-table-column :label="$t('mes.lockCabinet.cabinetName')" align="center" prop="cabinetName"/>
+      <el-table-column :label="$t('mes.lockCabinet.hardwareId')" align="center" prop="hardwareId"></el-table-column>
+      <el-table-column :label="$t('mes.lockCabinet.serialNumber')" align="center" prop="serialNumber"></el-table-column>
+      <el-table-column :label="$t('system.post.postName')" align="center" prop="workstationName">
       </el-table-column>
-      <el-table-column label="图片" align="left" prop="cabinetPicture">
+      <el-table-column :label="$t('mes.lockCabinet.picture')" align="left" prop="cabinetPicture">
         <template slot-scope="scope">
           <div class="img-box" v-if="scope.row.cabinetPicture">
             <el-image
@@ -137,7 +137,7 @@
           <span v-else>-</span>
         </template>
       </el-table-column>
-      <el-table-column label="图标" align="left" prop="cabinetIcon">
+      <el-table-column :label="$t('mes.lockCabinet.icon')" align="left" prop="cabinetIcon">
         <template slot-scope="scope">
           <div class="img-box" v-if="scope.row.cabinetIcon">
             <el-image
@@ -157,13 +157,13 @@
           <span v-else>-</span>
         </template>
       </el-table-column>
-      <el-table-column label="是否在线" align="center" prop="isOnline">
+      <el-table-column :label="$t('mes.lockCabinet.isOnline')" align="center" prop="isOnline">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.isOnline_status" :value="scope.row.isOnline"/>
 
         </template>
       </el-table-column>
-      <el-table-column label="状态" align="center" prop="status">
+      <el-table-column :label="$t('common.status')" align="center" prop="status">
         <template slot-scope="scope">
           <el-switch
             style="pointer-events: none;"
@@ -177,20 +177,20 @@
           <span v-else>-</span>
         </template>
       </el-table-column>
-      <el-table-column label="备注" align="center" prop="remark"></el-table-column>
-      <el-table-column label="创建时间" align="center" prop="createTime"></el-table-column>
-      <el-table-column label="详情" align="center" prop="detail">
+      <el-table-column :label="$t('common.remark')" align="center" prop="remark"></el-table-column>
+      <el-table-column :label="$t('common.createTime')" align="center" prop="createTime"></el-table-column>
+      <el-table-column :label="$t('mes.lockCabinet.detail')" align="center" prop="detail">
         <template slot-scope="scope">
-          <el-button type="text" @click="lookDetail(scope.row)">查看</el-button>
+          <el-button type="text" @click="lookDetail(scope.row)">{{ $t('common.view') }}</el-button>
         </template>
       </el-table-column>
-      <el-table-column label="测试" align="center" prop="detail" v-hasPermi="['iscs:cabinet:test']">
+      <el-table-column :label="$t('mes.lockCabinet.test')" align="center" prop="detail" v-hasPermi="['iscs:cabinet:test']">
         <template slot-scope="scope">
-          <el-button type="text" @click="openDialogFunction(scope.row)">查看</el-button>
+          <el-button type="text" @click="openDialogFunction(scope.row)">{{ $t('common.view') }}</el-button>
         </template>
       </el-table-column>
       <el-table-column
-        label="操作"
+        :label="$t('common.operation')"
         align="center"
         class-name="small-padding fixed-width"
         fixed="right"
@@ -203,7 +203,7 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['mes:hw:work:edit']"
-          >编辑
+          >{{ $t('common.edit') }}
           </el-button>
           <el-button
             v-no-more-click
@@ -212,7 +212,7 @@
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['mes:hw:work:remove']"
-          >删除
+          >{{ $t('common.delete') }}
           </el-button>
           <!--          <el-button v-no-more-click size="mini" type="text">预览</el-button>-->
         </template>
@@ -231,10 +231,10 @@
       <el-form ref="form" :model="form" :rules="rules" label-width="120px">
         <el-row>
           <el-col :span="15">
-            <el-form-item label="锁柜编号" prop="cabinetCode">
+            <el-form-item :label="$t('mes.lockCabinet.cabinetCode')" prop="cabinetCode">
               <el-input
                 v-model="form.cabinetCode"
-                placeholder="请输入锁柜编号"
+                :placeholder="$t('mes.lockCabinet.cabinetCodePlaceholder')"
                 style="width: 100%"
               />
             </el-form-item>
@@ -244,26 +244,26 @@
               <el-switch
                 v-model="autoGenFlag"
                 active-color="#13ce66"
-                active-text="自动生成"
+                :active-text="$t('mes.lockCabinet.autoGenerate')"
                 @change="handleAutoGenChange(autoGenFlag)"
               >
               </el-switch>
             </el-form-item>
           </el-col>
         </el-row>
-        <el-form-item label="锁柜名称" prop="cabinetName" style="width: 380px">
+        <el-form-item :label="$t('mes.lockCabinet.cabinetName')" prop="cabinetName" style="width: 380px">
           <el-input
             v-model="form.cabinetName"
-            placeholder="请输入锁柜名称"
+            :placeholder="$t('mes.lockCabinet.cabinetNamePlaceholder')"
           />
         </el-form-item>
-        <el-form-item label="岗位序号" prop="workstationId" style="width: 380px">
-          <treeselect v-model="form.workstationId" :options="marsOptions"  :normalizer="Marsnormalizer" placeholder="选择岗位" />
+        <el-form-item :label="$t('mes.lockCabinet.workstationId')" prop="workstationId" style="width: 380px">
+          <treeselect v-model="form.workstationId" :options="marsOptions"  :normalizer="Marsnormalizer" :placeholder="$t('system.post.postPlaceholder')" />
         </el-form-item>
-        <el-form-item label="硬件ID" prop="hardwareId" style="width: 380px">
+        <el-form-item :label="$t('mes.lockCabinet.hardwareId')" prop="hardwareId" style="width: 380px">
           <el-select
             v-model="form.hardwareId"
-            placeholder="请选择硬件ID"
+            :placeholder="$t('mes.lockCabinet.hardwareIdPlaceholder')"
             clearable
             style="width: 100%"
             @change="handleSelectHardware"
@@ -276,7 +276,7 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="是否在线" prop="isOnline">
+        <el-form-item :label="$t('mes.lockCabinet.isOnline')" prop="isOnline">
           <el-radio-group v-model="form.isOnline">
             <el-radio
               v-for="dict in dict.type.isOnline_status"
@@ -286,7 +286,7 @@
             </el-radio>
           </el-radio-group>
         </el-form-item>
-        <el-form-item label="状态" prop="status">
+        <el-form-item :label="$t('common.status')" prop="status">
           <el-radio-group v-model="form.status">
             <el-radio
               v-for="dict in dict.type.canbinet_status"
@@ -298,7 +298,7 @@
         </el-form-item>
         <el-row>
           <el-col :span="10">
-            <el-form-item label="图标" prop="cabinetIcon">
+            <el-form-item :label="$t('mes.lockCabinet.icon')" prop="cabinetIcon">
               <ImageUploadSingle
                 :limit="1"
                 :value="form.cabinetIcon"
@@ -309,7 +309,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="10">
-            <el-form-item label="图片" prop="cabinetPicture">
+            <el-form-item :label="$t('mes.lockCabinet.picture')" prop="cabinetPicture">
               <ImageUploadSingle
                 :limit="1"
                 :value="form.cabinetPicture"
@@ -320,37 +320,37 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-form-item label="备注" prop="remark" style="width: 380px">
-          <el-input v-model="form.remark" placeholder="请输入备注"/>
+        <el-form-item :label="$t('common.remark')" prop="remark" style="width: 380px">
+          <el-input v-model="form.remark" :placeholder="$t('common.pleaseInput') + $t('common.remark')"/>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button v-no-more-click type="primary" @click="submitForm"
-        >确 定
+        >{{ $t('common.confirm') }}
         </el-button
         >
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
 <!--    测试弹框-->
-    <el-dialog title="测试" :visible.sync="openDialog" width="650px" append-to-body>
+    <el-dialog :title="$t('mes.lockCabinet.test')" :visible.sync="openDialog" width="650px" append-to-body>
       <el-form ref="form" :model="DialogData"  label-width="100px">
-        <el-form-item label="类型">
-          <el-input v-model="DialogData.type" placeholder="请输入type"></el-input>
+        <el-form-item :label="$t('mes.lockCabinet.type')">
+          <el-input v-model="DialogData.type" :placeholder="$t('mes.lockCabinet.typePlaceholder')"></el-input>
         </el-form-item>
-        <el-form-item label="序列号">
-          <el-input v-model="DialogData.lotoSerialNumber"  placeholder="请输入lotoSerialNumber"></el-input>
+        <el-form-item :label="$t('mes.lockCabinet.serialNo')">
+          <el-input v-model="DialogData.lotoSerialNumber"  :placeholder="$t('mes.lockCabinet.serialNoPlaceholder')"></el-input>
         </el-form-item>
-        <el-form-item label="内容">
-          <el-input v-model="DialogData.content"  placeholder="请输入content"></el-input>
+        <el-form-item :label="$t('mes.lockCabinet.content')">
+          <el-input v-model="DialogData.content"  :placeholder="$t('mes.lockCabinet.contentPlaceholder')"></el-input>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button v-no-more-click type="primary" @click="submitTestForm"
-        >确 定
+        >{{ $t('common.confirm') }}
         </el-button
         >
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -420,16 +420,16 @@ export default {
       // 表单校验
       rules: {
         cabinetCode: [
-          {required: true, message: "锁柜编码不能为空", trigger: "blur"},
+          {required: true, message: this.$t('mes.lockCabinet.cabinetCodeRequired'), trigger: "blur"},
         ],
         cabinetName: [
-          {required: true, message: "锁柜名称不能为空", trigger: "blur"},
+          {required: true, message: this.$t('mes.lockCabinet.cabinetNameRequired'), trigger: "blur"},
         ],
         hardwareId:[
-          {required: true, message: "硬件ID不能为空", trigger: "blur"},
+          {required: true, message: this.$t('mes.lockCabinet.hardwareIdRequired'), trigger: "blur"},
         ],
         workstationId:[
-          {required: true, message: "岗位序号不能为空", trigger: "blur"},
+          {required: true, message: this.$t('mes.lockCabinet.workstationIdRequired'), trigger: "blur"},
         ]
       },
       // 新增状态
@@ -561,7 +561,7 @@ export default {
       this.reset();
       this.open = true;
       this.EditId = null;
-      this.title = "添加锁柜信息";
+      this.title = this.$t('mes.lockCabinet.addCabinet');
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -572,7 +572,7 @@ export default {
         this.form = response.data;
 
         this.open = true;
-        this.title = "编辑锁柜信息";
+        this.title = this.$t('mes.lockCabinet.editCabinet');
       });
     },
     /** 提交按钮 */
@@ -581,13 +581,13 @@ export default {
         if (valid) {
           if (this.EditId != null) {
             updateIsLockCabinet(this.form).then((response) => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('mes.lockCabinet.editSuccess'));
               this.open = false;
               this.getList();
             });
           } else {
             insertIsLockCabinet(this.form).then((response) => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('mes.lockCabinet.addSuccess'));
               this.open = false;
               this.EditId = null;
               this.getList();
@@ -609,7 +609,7 @@ export default {
         content:this.DialogData.content,
       }
       sendDataToLoto(params).then(response => {
-        this.$modal.msgSuccess('测试成功');
+        this.$modal.msgSuccess(this.$t('mes.lockCabinet.testSuccess'));
         this.openDialog=false;
         this.DialogData.type=''
         this.DialogData.lotoSerialNumber=''
@@ -640,13 +640,13 @@ export default {
       const repairIds = row.cabinetId || this.ids;
       const repairCodes = row.cabinetCode || this.codes;
       this.$modal
-        .confirm('是否确认删除所选数据项?')
+        .confirm(this.$t('common.deleteConfirm'))
         .then(function () {
           return deleteIsLockCabinetByCabinetIds(repairIds);
         })
         .then(() => {
           this.getList();
-          this.$modal.msgSuccess("删除成功");
+          this.$modal.msgSuccess(this.$t('mes.lockCabinet.deleteSuccess'));
         })
         .catch(() => {
         });

+ 56 - 53
src/views/mes/hw/lockCabinet/lookList.vue

@@ -9,19 +9,19 @@
       label-width="100px"
     >
       <el-row>
-        <el-form-item label="仓位编码" prop="slotCode">
+        <el-form-item :label="$t('mes.lockCabinetSlots.slotCode')" prop="slotCode">
           <el-input
             v-model="queryParams.slotCode"
-            placeholder="请输入仓位编码"
+            :placeholder="$t('mes.lockCabinetSlots.slotCodePlaceholder')"
             clearable
             @keyup.enter.native="handleQuery"
           />
         </el-form-item>
 
-        <el-form-item label="仓位类型" prop="slotType">
+        <el-form-item :label="$t('mes.lockCabinetSlots.slotType')" prop="slotType">
           <el-select
             v-model="queryParams.slotType"
-            placeholder="请选择仓位类型"
+            :placeholder="$t('mes.lockCabinetSlots.slotTypePlaceholder')"
             clearable
           >
             <el-option
@@ -32,10 +32,10 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="状态" prop="status">
+        <el-form-item :label="$t('common.status')" prop="status">
           <el-select
             v-model="queryParams.status"
-            placeholder="请选择状态"
+            :placeholder="$t('mes.lockCabinetSlots.statusPlaceholder')"
             clearable
           >
             <el-option
@@ -54,14 +54,14 @@
             icon="el-icon-search"
             size="mini"
             @click="handleQuery"
-          >搜索
+          >{{ $t('common.search') }}
           </el-button>
           <el-button
             v-no-more-click
             icon="el-icon-refresh"
             size="mini"
             @click="resetQuery"
-          >重置
+          >{{ $t('common.reset') }}
           </el-button>
         </el-form-item>
       </el-row>
@@ -77,7 +77,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['mes:hw:work:add']"
-        >新增
+        >{{ $t('common.add') }}
         </el-button>
       </el-col>
 
@@ -91,7 +91,7 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['mes:hw:work:batchremove']"
-        >批量删除
+        >{{ $t('common.batchDelete') }}
         </el-button>
       </el-col>
       <right-toolbar
@@ -107,30 +107,30 @@
     >
       <el-table-column type="selection" width="55" align="center"/>
       <el-table-column
-        label="仓位编码"
+        :label="$t('mes.lockCabinetSlots.slotCode')"
         width="150px"
         align="center"
         prop="slotCode"
       />
-      <el-table-column label="仓位类型" align="center" prop="slotType">
+      <el-table-column :label="$t('mes.lockCabinetSlots.slotType')" align="center" prop="slotType">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.slot_type" :value="scope.row.slotType"/>
         </template>
       </el-table-column>
 
-      <el-table-column label="行" align="center" prop="row">
+      <el-table-column :label="$t('mes.lockCabinetSlots.row')" align="center" prop="row">
 
       </el-table-column>
-      <el-table-column label="列" align="center" prop="col">
+      <el-table-column :label="$t('mes.lockCabinetSlots.col')" align="center" prop="col">
 
       </el-table-column>
-      <el-table-column label="是否被占用" align="center" prop="isOccupied">
+      <el-table-column :label="$t('mes.lockCabinetSlots.isOccupied')" align="center" prop="isOccupied">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.isOccupied_status" :value="scope.row.isOccupied"/>
         </template>
       </el-table-column>
-      <el-table-column label="占用仓位的硬件ID" align="center" prop="hardwareId"></el-table-column>
-      <el-table-column label="状态" align="center" prop="status">
+      <el-table-column :label="$t('mes.lockCabinetSlots.hardwareId')" align="center" prop="hardwareId"></el-table-column>
+      <el-table-column :label="$t('common.status')" align="center" prop="status">
         <template slot-scope="scope">
           <el-switch
             style="pointer-events: none;"
@@ -144,13 +144,13 @@
           <span v-else>-</span>
         </template>
       </el-table-column>
-      <el-table-column label="备注" align="center" prop="remark">
+      <el-table-column :label="$t('common.remark')" align="center" prop="remark">
 
       </el-table-column>
-      <el-table-column label="创建时间" align="center" prop="createTime"></el-table-column>
+      <el-table-column :label="$t('common.createTime')" align="center" prop="createTime"></el-table-column>
 
       <el-table-column
-        label="操作"
+        :label="$t('common.operation')"
         align="center"
         class-name="small-padding fixed-width"
         fixed="right"
@@ -163,7 +163,7 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['mes:hw:work:edit']"
-          >编辑
+          >{{ $t('common.edit') }}
           </el-button>
           <el-button
             v-no-more-click
@@ -172,7 +172,7 @@
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['mes:hw:work:remove']"
-          >删除
+          >{{ $t('common.delete') }}
           </el-button>
           <!--          <el-button v-no-more-click size="mini" type="text">预览</el-button>-->
         </template>
@@ -189,17 +189,17 @@
     <!-- 添加或修改设备维修单对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="140px">
-        <el-form-item label="锁柜序号" prop="cabinetId" style="width: 380px">
+        <el-form-item :label="$t('mes.lockCabinetSlots.cabinetId')" prop="cabinetId" style="width: 380px">
           <el-select v-model="form.cabinetId">
             <el-option v-for="dict in this.LockCabinetList" :value="dict.value" :label="dict.label"></el-option>
           </el-select>
         </el-form-item>
         <el-row>
           <el-col :span="15">
-            <el-form-item label="仓位编号" prop="slotCode">
+            <el-form-item :label="$t('mes.lockCabinetSlots.slotCode')" prop="slotCode">
               <el-input
                 v-model="form.slotCode"
-                placeholder="请输入仓位编号"
+                :placeholder="$t('mes.lockCabinetSlots.slotCodePlaceholder')"
                 style="width: 100%"
               />
             </el-form-item>
@@ -209,7 +209,7 @@
               <el-switch
                 v-model="autoGenFlag"
                 active-color="#13ce66"
-                active-text="自动生成"
+                :active-text="$t('mes.lockCabinetSlots.autoGenerate')"
                 @change="handleAutoGenChange(autoGenFlag)"
               >
               </el-switch>
@@ -217,25 +217,25 @@
           </el-col>
         </el-row>
 
-        <el-form-item label="仓位类型" prop="slotType">
+        <el-form-item :label="$t('mes.lockCabinetSlots.slotType')" prop="slotType">
           <el-select v-model="form.slotType">
             <el-option v-for="dict in dict.type.slot_type" :value="dict.value" :label="dict.label"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="行" prop="row" style="width: 360px">
+        <el-form-item :label="$t('mes.lockCabinetSlots.row')" prop="row" style="width: 360px">
           <el-input
             v-model="form.row"
-            placeholder="请输入行"
+            :placeholder="$t('mes.lockCabinetSlots.rowPlaceholder')"
 
           />
         </el-form-item>
-        <el-form-item label="列" prop="col" style="width: 360px">
+        <el-form-item :label="$t('mes.lockCabinetSlots.col')" prop="col" style="width: 360px">
           <el-input
             v-model="form.col"
-            placeholder="请输入列"
+            :placeholder="$t('mes.lockCabinetSlots.colPlaceholder')"
           />
         </el-form-item>
-        <el-form-item label="是否被占用" prop="isOccupied">
+        <el-form-item :label="$t('mes.lockCabinetSlots.isOccupied')" prop="isOccupied">
           <el-radio-group v-model="form.isOccupied">
             <el-radio
               v-for="dict in dict.type.isOccupied_status"
@@ -245,10 +245,10 @@
             </el-radio>
           </el-radio-group>
         </el-form-item>
-        <el-form-item label="占用仓位的硬件Id" prop="hardwareId" style="width: 360px" v-if="form.isOccupied=='1'">
+        <el-form-item :label="$t('mes.lockCabinetSlots.hardwareId')" prop="hardwareId" style="width: 360px" v-if="form.isOccupied=='1'">
           <el-select
             v-model="form.hardwareId"
-            placeholder="请选择硬件ID"
+            :placeholder="$t('mes.lockCabinetSlots.hardwareIdPlaceholder')"
             clearable
             style="width: 100%"
             @change="handleSelectHardware"
@@ -261,7 +261,7 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="状态" prop="status">
+        <el-form-item :label="$t('common.status')" prop="status">
           <el-radio-group v-model="form.status">
             <el-radio
               v-for="dict in dict.type.slot_status"
@@ -272,16 +272,16 @@
           </el-radio-group>
         </el-form-item>
 
-        <el-form-item label="备注" prop="remark" style="width: 360px">
-          <el-input v-model="form.remark" placeholder="请输入备注"/>
+        <el-form-item :label="$t('common.remark')" prop="remark" style="width: 360px">
+          <el-input v-model="form.remark" :placeholder="$t('mes.lockCabinetSlots.remarkPlaceholder')"/>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button v-no-more-click type="primary" @click="submitForm"
-        >确 定
+        >{{ $t('common.confirm') }}
         </el-button
         >
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -352,22 +352,25 @@ export default {
       hardwareList: [],
       // 表单参数
       form: {},
-      // 表单校验
-      rules: {
+      // 新增状态
+      EditId: 0, //修改判断
+    };
+  },
+  computed: {
+    rules() {
+      return {
         slotCode: [
-          {required: true, message: "锁柜编码不能为空", trigger: "blur"},
+          {required: true, message: this.$t('mes.lockCabinetSlots.slotCodeRequired'), trigger: "blur"},
         ],
         slotType: [
-          {required: true, message: "锁柜名称不能为空", trigger: "blur"},
+          {required: true, message: this.$t('mes.lockCabinetSlots.slotTypeRequired'), trigger: "blur"},
         ],
         // hardwareId: [
         //   {required: true, message: "硬件ID不能为空", trigger: "blur"},
         // ],
 
-      },
-      // 新增状态
-      EditId: 0, //修改判断
-    };
+      };
+    }
   },
   created() {
     this.getList();
@@ -483,7 +486,7 @@ export default {
       this.reset();
       this.open = true;
       this.EditId = null;
-      this.title = "添加仓位数据信息";
+      this.title = this.$t('mes.lockCabinetSlots.addSlot');
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -494,7 +497,7 @@ export default {
         this.form = response.data;
 
         this.open = true;
-        this.title = "编辑仓位数据信息";
+        this.title = this.$t('mes.lockCabinetSlots.editSlot');
       });
     },
     /** 提交按钮 */
@@ -503,13 +506,13 @@ export default {
         if (valid) {
           if (this.EditId != null) {
             updateIsLockCabinetSlots(this.form).then((response) => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('mes.lockCabinetSlots.editSuccess'));
               this.open = false;
               this.getList();
             });
           } else {
             insertIsLockCabinetSlots(this.form).then((response) => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('mes.lockCabinetSlots.addSuccess'));
               this.open = false;
               this.EditId = null;
               this.getList();
@@ -524,13 +527,13 @@ export default {
       const repairIds = row.slotId || this.ids;
       const repairCodes = row.slotCode || this.codes;
       this.$modal
-        .confirm('是否确认删除所选数据项?')
+        .confirm(this.$t('mes.lockCabinetSlots.deleteConfirm'))
         .then(function () {
           return deleteIsLockCabinetSlotsBySlotIds(repairIds);
         })
         .then(() => {
           this.getList();
-          this.$modal.msgSuccess("删除成功");
+          this.$modal.msgSuccess(this.$t('mes.lockCabinetSlots.deleteSuccess'));
         })
         .catch(() => {
         });

+ 58 - 87
src/views/mes/hw/padLocks/index.vue

@@ -9,19 +9,19 @@
       label-width="100px"
     >
       <el-row>
-        <el-form-item label="挂锁编码" prop="lockCode">
+        <el-form-item :label="$t('mes.padLocks.lockCode')" prop="lockCode">
           <el-input
             v-model="queryParams.lockCode"
-            placeholder="请输入挂锁编码"
+            :placeholder="$t('mes.padLocks.lockCodePlaceholder')"
             clearable
             @keyup.enter.native="handleQuery"
           />
         </el-form-item>
 
-        <el-form-item label="挂锁名称" prop="lockName">
+        <el-form-item :label="$t('mes.padLocks.lockName')" prop="lockName">
           <el-input
             v-model="queryParams.lockName"
-            placeholder="请输入挂锁名称"
+            :placeholder="$t('mes.padLocks.lockNamePlaceholder')"
             clearable
             @keyup.enter.native="handleQuery"
           />
@@ -34,14 +34,14 @@
             icon="el-icon-search"
             size="mini"
             @click="handleQuery"
-          >搜索
+          >{{ $t('common.search') }}
           </el-button>
           <el-button
             v-no-more-click
             icon="el-icon-refresh"
             size="mini"
             @click="resetQuery"
-          >重置
+          >{{ $t('common.reset') }}
           </el-button>
         </el-form-item>
       </el-row>
@@ -57,7 +57,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['mes:hw:plk:add']"
-        >新增
+        >{{ $t('common.add') }}
         </el-button>
       </el-col>
 
@@ -71,7 +71,7 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['mes:hw:plk:batchremove']"
-        >批量删除
+        >{{ $t('common.batchDelete') }}
         </el-button>
       </el-col>
       <right-toolbar
@@ -87,29 +87,29 @@
     >
       <el-table-column type="selection" width="55" align="center"/>
       <el-table-column
-        label="挂锁编码"
+        :label="$t('mes.padLocks.lockCode')"
         width="150px"
         align="center"
         prop="lockCode"
       />
       <el-table-column
-        label="挂锁名称"
+        :label="$t('mes.padLocks.lockName')"
         width="200px"
         align="center"
         prop="lockName"
       />
       <el-table-column
-        label="挂锁NFC"
+        :label="$t('mes.padLocks.lockNfc')"
         width="180px"
         align="center"
         prop="lockNfc"
         :show-overflow-tooltip="true"
       />
 
-      <el-table-column label="所属硬件" align="center" prop="hardwareName"/>
-      <el-table-column label="挂锁类型" align="center" prop="lockTypeName"/>
-      <el-table-column label="挂锁型号" align="center" prop="lockSpec"/>
-      <el-table-column label="状态" align="center" prop="exStatus">
+      <el-table-column :label="$t('mes.padLocks.hardwareName')" align="center" prop="hardwareName"/>
+      <el-table-column :label="$t('mes.padLocks.lockTypeName')" align="center" prop="lockTypeName"/>
+      <el-table-column :label="$t('mes.padLocks.lockSpec')" align="center" prop="lockSpec"/>
+      <el-table-column :label="$t('common.status')" align="center" prop="exStatus">
         <template slot-scope="scope">
           <el-switch
             style="pointer-events: none;"
@@ -133,14 +133,14 @@
 <!--          <span>{{ scope.row.remark }}</span>-->
 <!--        </template>-->
 <!--      </el-table-column>-->
-      <el-table-column label="备注" align="center" prop="exRemark">
+      <el-table-column :label="$t('common.remark')" align="center" prop="exRemark">
 <!--        <template slot-scope="scope">-->
 <!--          <dict-tag v-if="scope.row.exRemark" :options="dict.type.padlock_reason" :value="scope.row.exRemark"/>-->
 <!--          <span v-else>-</span>-->
 <!--        </template>-->
       </el-table-column>
       <el-table-column
-        label="创建时间"
+        :label="$t('common.createTime')"
         align="center"
         prop="createTime"
         width="180"
@@ -151,7 +151,7 @@
       </el-table-column>
 
       <el-table-column
-        label="操作"
+        :label="$t('common.operation')"
         align="center"
         class-name="small-padding fixed-width"
         fixed="right"
@@ -164,7 +164,7 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['mes:hw:plk:edit']"
-          >编辑
+          >{{ $t('common.edit') }}
           </el-button>
           <el-button
             v-no-more-click
@@ -173,7 +173,7 @@
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['mes:hw:plk:remove']"
-          >删除
+          >{{ $t('common.delete') }}
           </el-button>
           <!--          <el-button v-no-more-click size="mini" type="text">预览</el-button>-->
         </template>
@@ -191,10 +191,10 @@
     <!-- 添加或修改设备维修单对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="450px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="120px">
-        <el-form-item label="所属硬件" prop="hardwareId">
+        <el-form-item :label="$t('mes.padLocks.hardwareName')" prop="hardwareId">
           <el-select
             v-model="form.hardwareId"
-            placeholder="请选择所属硬件"
+            :placeholder="$t('mes.padLocks.hardwareNamePlaceholder')"
             clearable
             style="width: 100%"
           >
@@ -206,20 +206,20 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="挂锁类型" prop="lockTypeId">
+        <el-form-item :label="$t('mes.padLocks.lockTypeName')" prop="lockTypeId">
           <!-- <el-input v-model="form.lockTypeId" placeholder="请输入挂锁类型Id" /> -->
           <treeselect
             v-model="form.lockTypeId"
             :options="lockTypeOption"
-            placeholder="请选择挂锁类型"
+            :placeholder="$t('mes.padLocks.lockTypeNamePlaceholder')"
           />
         </el-form-item>
         <el-row>
           <el-col :span="15">
-            <el-form-item label="挂锁编码" prop="lockCode">
+            <el-form-item :label="$t('mes.padLocks.lockCode')" prop="lockCode">
               <el-input
                 v-model="form.lockCode"
-                placeholder="请输入挂锁编码"
+                :placeholder="$t('mes.padLocks.lockCodePlaceholder')"
                 style="width: 100%"
               />
             </el-form-item>
@@ -229,7 +229,7 @@
               <el-switch
                 v-model="autoGenFlag"
                 active-color="#13ce66"
-                active-text="自动生成"
+                :active-text="$t('mes.padLocks.autoGenerate')"
                 @change="handleAutoGenChange(autoGenFlag)"
               >
               </el-switch>
@@ -237,23 +237,23 @@
           </el-col>
         </el-row>
 
-        <el-form-item label="挂锁名称" prop="lockName">
-          <el-input v-model="form.lockName" placeholder="请输入挂锁名称"/>
+        <el-form-item :label="$t('mes.padLocks.lockName')" prop="lockName">
+          <el-input v-model="form.lockName" :placeholder="$t('mes.padLocks.lockNamePlaceholder')"/>
         </el-form-item>
-        <el-form-item label="挂锁NFC" prop="lockNfc">
+        <el-form-item :label="$t('mes.padLocks.lockNfc')" prop="lockNfc">
           <el-input
             v-model="form.lockNfc"
-            placeholder="请输入挂锁Nfc"
+            :placeholder="$t('mes.padLocks.lockNfcPlaceholder')"
           />
         </el-form-item>
-        <el-form-item label="挂锁型号" prop="lockSpec">
+        <el-form-item :label="$t('mes.padLocks.lockSpec')" prop="lockSpec">
           <el-input
             v-model="form.lockSpec"
-            placeholder="请输入挂锁型号"
+            :placeholder="$t('mes.padLocks.lockSpecPlaceholder')"
 
           />
         </el-form-item>
-        <el-form-item label="状态" prop="exStatus">
+        <el-form-item :label="$t('common.status')" prop="exStatus">
           <el-radio-group v-model="form.exStatus">
             <el-radio
               v-for="dict in dict.type.padlock_status"
@@ -264,8 +264,8 @@
             >
           </el-radio-group>
         </el-form-item>
-        <el-form-item label="备注" prop="exRemark" >
-          <el-input v-model="form.exRemark" placeholder="请输入备注"/>
+        <el-form-item :label="$t('common.remark')" prop="exRemark" >
+          <el-input v-model="form.exRemark" :placeholder="$t('mes.padLocks.remarkPlaceholder')"/>
 <!--          <el-select v-model="form.exRemark">-->
 <!--            <el-option-->
 <!--              v-for="dict in dict.type.padlock_reason"-->
@@ -281,10 +281,10 @@
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button v-no-more-click type="primary" @click="submitForm"
-        >确 定
+        >{{ $t('common.confirm') }}
         </el-button
         >
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -354,55 +354,26 @@ export default {
         hardwareId: null,
         lockTypeId: null,
       },
-      // 表单校验
-      rules: {
+      // 新增状态
+      EditId: 0, //修改判断
+      lockTypeOption: [], //挂锁类型
+      flatlockTypeOption: [], // 用于快速查找
+    };
+  },
+  computed: {
+    rules() {
+      return {
         lockCode: [
-          {required: true, message: "挂锁编码不能为空", trigger: "blur"},
+          {required: true, message: this.$t('mes.padLocks.lockCodeRequired'), trigger: "blur"},
         ],
         lockName: [
-          {required: true, message: "挂锁名称不能为空", trigger: "blur"},
+          {required: true, message: this.$t('mes.padLocks.lockNameRequired'), trigger: "blur"},
         ],
         lockNfc: [
-          {required: true, message: "挂锁NFC不能为空", trigger: "blur"},
-        ],
-      },
-      // 日期选择
-      pickerOptions: {
-        shortcuts: [
-          {
-            text: "最近一周",
-            onClick(picker) {
-              const end = new Date();
-              const start = new Date();
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
-              picker.$emit("pick", [start, end]);
-            },
-          },
-          {
-            text: "最近一个月",
-            onClick(picker) {
-              const end = new Date();
-              const start = new Date();
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
-              picker.$emit("pick", [start, end]);
-            },
-          },
-          {
-            text: "最近三个月",
-            onClick(picker) {
-              const end = new Date();
-              const start = new Date();
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
-              picker.$emit("pick", [start, end]);
-            },
-          },
+          {required: true, message: this.$t('mes.padLocks.lockNfcRequired'), trigger: "blur"},
         ],
-      },
-      // 新增状态
-      EditId: 0, //修改判断
-      lockTypeOption: [], //挂锁类型
-      flatlockTypeOption: [], // 用于快速查找
-    };
+      };
+    }
   },
   created() {
     this.getList();
@@ -550,7 +521,7 @@ export default {
       this.reset();
       this.open = true;
       this.EditId = null;
-      this.title = "新增挂锁信息";
+      this.title = this.$t('mes.padLocks.addPadLock');
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -559,7 +530,7 @@ export default {
       getPadLockInfoAPI(this.EditId).then((response) => {
         this.form = response.data;
         this.open = true;
-        this.title = "编辑挂锁信息";
+        this.title = this.$t('mes.padLocks.editPadLock');
       });
     },
     /** 提交按钮 */
@@ -568,14 +539,14 @@ export default {
         if (valid) {
           if (this.EditId != null) {
             updatePadLockAPI(this.form).then((response) => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('mes.padLocks.editSuccess'));
               this.open = false;
               this.getList();
             });
           } else {
             // console.log(this.form, "form");
             addPadLockAPI(this.form).then((response) => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('mes.padLocks.addSuccess'));
               this.open = false;
               this.EditId = null;
               this.getList();
@@ -589,13 +560,13 @@ export default {
       const repairIds = row.lockId || this.ids;
       const repairCodes = row.lockCode || this.codes;
       this.$modal
-        .confirm('是否确认删除编码为"' + repairCodes + '"的数据项?')
+        .confirm(this.$t('mes.padLocks.deleteConfirm', { lockCode: repairCodes }))
         .then(function () {
           return delPadLockAPI(repairIds);
         })
         .then(() => {
           this.getList();
-          this.$modal.msgSuccess("删除成功");
+          this.$modal.msgSuccess(this.$t('mes.padLocks.deleteSuccess'));
         })
         .catch(() => {
         });

+ 42 - 42
src/views/mes/hw/rfid/index.vue

@@ -9,27 +9,27 @@
       label-width="100px"
     >
       <el-row>
-        <el-form-item label="RFID编码" prop="rfidCode">
+        <el-form-item :label="$t('mes.rfid.rfidCode')" prop="rfidCode">
           <el-input
             v-model="queryParams.rfidCode"
-            placeholder="请输入RFID编码"
+            :placeholder="$t('mes.rfid.rfidCodePlaceholder')"
             clearable
             @keyup.enter.native="handleQuery"
           />
         </el-form-item>
-        <el-form-item label="RFID内容" prop="rfid">
+        <el-form-item :label="$t('mes.rfid.rfidContent')" prop="rfid">
           <el-input
             v-model="queryParams.rfid"
-            placeholder="请输入锁柜名称"
+            :placeholder="$t('mes.rfid.rfidContentPlaceholder')"
             clearable
             @keyup.enter.native="handleQuery"
           />
         </el-form-item>
 
-        <el-form-item label="RFID类型" prop="rfidType">
+        <el-form-item :label="$t('mes.rfid.rfidType')" prop="rfidType">
           <el-select
             v-model="queryParams.rfidType"
-            placeholder="请选择RFID类型"
+            :placeholder="$t('mes.rfid.rfidTypePlaceholder')"
             clearable
           >
             <el-option
@@ -40,10 +40,10 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="状态" prop="status">
+        <el-form-item :label="$t('common.status')" prop="status">
           <el-select
             v-model="queryParams.status"
-            placeholder="请选择状态"
+            :placeholder="$t('common.pleaseSelect')"
             clearable
           >
             <el-option
@@ -62,14 +62,14 @@
             icon="el-icon-search"
             size="mini"
             @click="handleQuery"
-          >搜索
+          >{{ $t('common.search') }}
           </el-button>
           <el-button
             v-no-more-click
             icon="el-icon-refresh"
             size="mini"
             @click="resetQuery"
-          >重置
+          >{{ $t('common.reset') }}
           </el-button>
         </el-form-item>
       </el-row>
@@ -85,7 +85,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['mes:hw:work:add']"
-        >新增
+        >{{ $t('common.add') }}
         </el-button>
       </el-col>
 
@@ -99,7 +99,7 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['mes:hw:work:batchremove']"
-        >批量删除
+        >{{ $t('common.batchDelete') }}
         </el-button>
       </el-col>
       <right-toolbar
@@ -115,13 +115,13 @@
     >
       <el-table-column type="selection" width="55" align="center"/>
       <el-table-column
-        label="RIFID编码"
+        :label="$t('mes.rfid.rfidCode')"
         width="150px"
         align="center"
         prop="rfidCode"
       />
-      <el-table-column label="RFID内容" align="center" prop="rfid"/>
-      <el-table-column label="RFID类型" align="center" prop="rfidType">
+      <el-table-column :label="$t('mes.rfid.rfidContent')" align="center" prop="rfid"/>
+      <el-table-column :label="$t('mes.rfid.rfidType')" align="center" prop="rfidType">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.rfid_token_type" :value="scope.row.rfidType"/>
         </template>
@@ -130,7 +130,7 @@
 
 <!--      </el-table-column>-->
 
-      <el-table-column label="状态" align="center" prop="status">
+      <el-table-column :label="$t('common.status')" align="center" prop="status">
         <template slot-scope="scope">
           <el-switch
             style="pointer-events: none;"
@@ -144,12 +144,12 @@
           <span v-else>-</span>
         </template>
       </el-table-column>
-      <el-table-column label="备注" align="center" prop="remark"></el-table-column>
+      <el-table-column :label="$t('common.remark')" align="center" prop="remark"></el-table-column>
 
-      <el-table-column label="创建时间" align="center" prop="createTime"></el-table-column>
+      <el-table-column :label="$t('common.createTime')" align="center" prop="createTime"></el-table-column>
 
       <el-table-column
-        label="操作"
+        :label="$t('common.operation')"
         align="center"
         class-name="small-padding fixed-width"
         fixed="right"
@@ -162,7 +162,7 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['mes:hw:work:edit']"
-          >编辑
+          >{{ $t('common.edit') }}
           </el-button>
           <el-button
             v-no-more-click
@@ -171,7 +171,7 @@
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['mes:hw:work:remove']"
-          >删除
+          >{{ $t('common.delete') }}
           </el-button>
           <!--          <el-button v-no-more-click size="mini" type="text">预览</el-button>-->
         </template>
@@ -190,10 +190,10 @@
       <el-form ref="form" :model="form" :rules="rules" label-width="120px">
         <el-row>
           <el-col :span="15">
-            <el-form-item label="RFID编码" prop="rfidCode">
+            <el-form-item :label="$t('mes.rfid.rfidCode')" prop="rfidCode">
               <el-input
                 v-model="form.rfidCode"
-                placeholder="请输入RFID编码"
+                :placeholder="$t('mes.rfid.rfidCodePlaceholder')"
                 style="width: 100%"
               />
             </el-form-item>
@@ -203,25 +203,25 @@
               <el-switch
                 v-model="autoGenFlag"
                 active-color="#13ce66"
-                active-text="自动生成"
+                :active-text="$t('mes.rfid.autoGenerate')"
                 @change="handleAutoGenChange(autoGenFlag)"
               >
               </el-switch>
             </el-form-item>
           </el-col>
         </el-row>
-        <el-form-item label="RFID内容" prop="rfid" style="width: 380px">
+        <el-form-item :label="$t('mes.rfid.rfidContent')" prop="rfid" style="width: 380px">
           <el-input
             v-model="form.rfid"
-            placeholder="请输入RFID内容"
+            :placeholder="$t('mes.rfid.rfidContentPlaceholder')"
           />
         </el-form-item>
 
 
-        <el-form-item label="RFID类型" prop="rfidType" style="width: 380px">
+        <el-form-item :label="$t('mes.rfid.rfidType')" prop="rfidType" style="width: 380px">
           <el-select
             v-model="form.rfidType"
-            placeholder="请选择RFID类型"
+            :placeholder="$t('mes.rfid.rfidTypePlaceholder')"
             clearable
             style="width: 100%"
             @change="handleSelectHardware"
@@ -250,7 +250,7 @@
 <!--            />-->
 <!--          </el-select>-->
 <!--        </el-form-item>-->
-        <el-form-item label="状态" prop="status">
+        <el-form-item :label="$t('common.status')" prop="status">
           <el-radio-group v-model="form.status">
             <el-radio
               v-for="dict in dict.type.rfid_token_status"
@@ -261,16 +261,16 @@
           </el-radio-group>
         </el-form-item>
 
-        <el-form-item label="备注" prop="remark" style="width: 380px">
-          <el-input v-model="form.remark" placeholder="请输入备注"/>
+        <el-form-item :label="$t('common.remark')" prop="remark" style="width: 380px">
+          <el-input v-model="form.remark" :placeholder="$t('common.pleaseInput') + $t('common.remark')"/>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button v-no-more-click type="primary" @click="submitForm"
-        >确 定
+        >{{ $t('common.confirm') }}
         </el-button
         >
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -336,13 +336,13 @@ export default {
       // 表单校验
       rules: {
         rfidCode: [
-          {required: true, message: "RFID编码不能为空", trigger: "blur"},
+          {required: true, message: this.$t('mes.rfid.rfidCodeRequired'), trigger: "blur"},
         ],
         rfid: [
-          {required: true, message: "RFID内容不能为空", trigger: "blur"},
+          {required: true, message: this.$t('mes.rfid.rfidContentRequired'), trigger: "blur"},
         ],
         rfidType:[
-          {required: true, message: "RFID类型不能为空", trigger: "blur"},
+          {required: true, message: this.$t('mes.rfid.rfidTypeRequired'), trigger: "blur"},
         ],
        /* hardwareId:[
           {required: true, message: "硬件ID不能为空", trigger: "blur"},
@@ -441,7 +441,7 @@ export default {
       this.reset();
       this.open = true;
       this.EditId = null;
-      this.title = "添加RFID信息";
+      this.title = this.$t('mes.rfid.addRfid');
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -452,7 +452,7 @@ export default {
         this.form = response.data;
 
         this.open = true;
-        this.title = "编辑RFID信息";
+        this.title = this.$t('mes.rfid.editRfid');
       });
     },
     /** 提交按钮 */
@@ -461,13 +461,13 @@ export default {
         if (valid) {
           if (this.EditId != null) {
             updateIsRfidToken(this.form).then((response) => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('mes.rfid.editSuccess'));
               this.open = false;
               this.getList();
             });
           } else {
             insertIsRfidToken(this.form).then((response) => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('mes.rfid.addSuccess'));
               this.open = false;
               this.EditId = null;
               this.getList();
@@ -482,13 +482,13 @@ export default {
       const repairIds = row.rfidId || this.ids;
       const repairCodes = row.rfidCode || this.codes;
       this.$modal
-        .confirm('是否确认删除所选数据项?')
+        .confirm(this.$t('common.deleteConfirm'))
         .then(function () {
           return deleteIsRfidTokenByRfidIds(repairIds);
         })
         .then(() => {
           this.getList();
-          this.$modal.msgSuccess("删除成功");
+          this.$modal.msgSuccess(this.$t('mes.rfid.deleteSuccess'));
         })
         .catch(() => {
         });

+ 43 - 43
src/views/mes/hw/type/index.vue

@@ -8,31 +8,31 @@
       v-show="showSearch"
       label-width="100px"
     >
-      <el-form-item label="硬件类型编号" prop="hardwareTypeCode">
+      <el-form-item :label="$t('mes.hardwareType.hardwareTypeCode')" prop="hardwareTypeCode">
         <el-input
           v-model="queryParams.hardwareTypeCode"
-          placeholder="请输入硬件类型编号"
+          :placeholder="$t('mes.hardwareType.hardwareTypeCodePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="类型名称" prop="hardwareTypeName">
+      <el-form-item :label="$t('mes.hardwareType.typeName')" prop="hardwareTypeName">
         <el-input
           v-model="queryParams.hardwareTypeName"
-          placeholder="请输入类型名称"
+          :placeholder="$t('mes.hardwareType.typeNamePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
 
-      <el-form-item label="状态" prop="enableFlag">
+      <el-form-item :label="$t('common.status')" prop="enableFlag">
         <el-select
           v-model="queryParams.enableFlag"
-          placeholder="请选择状态"
+          :placeholder="$t('common.pleaseSelect')"
           clearable
         >
-          <el-option label="启用" value="y"></el-option>
-          <el-option label="禁用" value="n"></el-option>
+          <el-option :label="$t('common.enable')" value="y"></el-option>
+          <el-option :label="$t('common.disable')" value="n"></el-option>
 
           <!--          <el-option-->
           <!--            v-for="dict in dict.type.mes_order_status"-->
@@ -49,14 +49,14 @@
           icon="el-icon-search"
           size="mini"
           @click="handleQuery"
-          >搜索</el-button
+          >{{ $t('common.search') }}</el-button
         >
         <el-button
           v-no-more-click
           icon="el-icon-refresh"
           size="mini"
           @click="resetQuery"
-          >重置</el-button
+          >{{ $t('common.reset') }}</el-button
         >
       </el-form-item>
     </el-form>
@@ -67,7 +67,7 @@
       icon="el-icon-plus"
       @click="handleAdd"
       v-hasPermi="['mes:hw:type:add']"
-    >新增</el-button
+    >{{ $t('common.add') }}</el-button
     >
     <el-table
       v-loading="loading"
@@ -77,22 +77,22 @@
       :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
     >
       <el-table-column
-        label="硬件类型编号"
+        :label="$t('mes.hardwareType.hardwareTypeCode')"
         width="220"
         align="center"
         prop="hardwareTypeCode"
       />
       <el-table-column
-        label="类型名称"
+        :label="$t('mes.hardwareType.typeName')"
         width="150px"
         align="center"
         prop="hardwareTypeName"
         :show-overflow-tooltip="true"
       />
-      <el-table-column label="状态" align="center" prop="enableFlag">
+      <el-table-column :label="$t('common.status')" align="center" prop="enableFlag">
         <template slot-scope="scope">
-          <el-tag v-if="scope.row.enableFlag == 'y'">启用</el-tag>
-          <el-tag v-else type="danger">禁用</el-tag>
+          <el-tag v-if="scope.row.enableFlag == 'y'">{{ $t('common.enable') }}</el-tag>
+          <el-tag v-else type="danger">{{ $t('common.disable') }}</el-tag>
 
           <!--          <dict-tag-->
           <!--            :options="dict.type.mes_order_status"-->
@@ -113,9 +113,9 @@
       <!--          }}级-->
       <!--        </template>-->
       <!--      </el-table-column>-->
-      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column :label="$t('common.remark')" align="center" prop="remark" />
       <el-table-column
-        label="操作"
+        :label="$t('common.operation')"
         align="center"
         class-name="small-padding fixed-width"
       >
@@ -127,7 +127,7 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['mes:hw:type:edit']"
-            >编辑</el-button
+            >{{ $t('common.edit') }}</el-button
           >
           <el-button
             v-no-more-click
@@ -136,7 +136,7 @@
             icon="el-icon-plus"
             @click="handleAdd(scope.row)"
             v-hasPermi="['mes:hw:type:add']"
-            >新增</el-button
+            >{{ $t('common.add') }}</el-button
           >
 <!--           v-if="scope.row.parentTypeId != 0"-->
           <el-button
@@ -147,7 +147,7 @@
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['mes:hw:type:remove']"
-            >删除</el-button
+            >{{ $t('common.delete') }}</el-button
           >
         </template>
       </el-table-column>
@@ -158,22 +158,22 @@
       <el-form ref="form" :model="form" :rules="rules" label-width="120px">
         <el-row>
           <el-col :span="24" v-if="form.parentTypeId !== 0">
-            <el-form-item label="父类型" prop="parentTypeId">
+            <el-form-item :label="$t('mes.hardwareType.parentType')" prop="parentTypeId">
               <treeselect
                 v-model="form.parentTypeId"
                 :options="machinerytypeOptions"
                 :normalizer="normalizer"
-                placeholder="请选择父类型"
+                :placeholder="$t('mes.hardwareType.parentTypePlaceholder')"
               />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="18">
-            <el-form-item label="硬件类型编号" prop="hardwareTypeCode">
+            <el-form-item :label="$t('mes.hardwareType.hardwareTypeCode')" prop="hardwareTypeCode">
               <el-input
                 v-model="form.hardwareTypeCode"
-                placeholder="请输入硬件类型编号"
+                :placeholder="$t('mes.hardwareType.hardwareTypeCodePlaceholder')"
               />
             </el-form-item>
           </el-col>
@@ -182,7 +182,7 @@
               <el-switch
                 v-model="autoGenFlag"
                 active-color="#13ce66"
-                active-text="自动生成"
+                :active-text="$t('mes.hardwareType.autoGenerate')"
                 @change="handleAutoGenChange(autoGenFlag)"
               >
               </el-switch>
@@ -191,27 +191,27 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="类型名称" prop="hardwareTypeName">
+            <el-form-item :label="$t('mes.hardwareType.typeName')" prop="hardwareTypeName">
               <el-input
                 v-model="form.hardwareTypeName"
-                placeholder="请输入类型名称"
+                :placeholder="$t('mes.hardwareType.typeNamePlaceholder')"
               />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="状态" prop="enableFlag">
-              <el-radio v-model="form.enableFlag" label="y">启用</el-radio>
-              <el-radio v-model="form.enableFlag" label="n">禁用</el-radio>
+            <el-form-item :label="$t('common.status')" prop="enableFlag">
+              <el-radio v-model="form.enableFlag" label="y">{{ $t('common.enable') }}</el-radio>
+              <el-radio v-model="form.enableFlag" label="n">{{ $t('common.disable') }}</el-radio>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="24">
-            <el-form-item label="备注" prop="remark">
+            <el-form-item :label="$t('common.remark')" prop="remark">
               <el-input
                 v-model="form.remark"
                 type="textarea"
-                placeholder="请输入内容"
+                :placeholder="$t('common.pleaseInput') + $t('common.remark')"
               />
             </el-form-item>
           </el-col>
@@ -219,9 +219,9 @@
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button v-no-more-click type="primary" @click="submitForm"
-          >确 定</el-button
+          >{{ $t('common.confirm') }}</el-button
         >
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -282,10 +282,10 @@ export default {
       // 表单校验
       rules: {
         hardwareTypeCode: [
-          { required: true, message: "硬件编号不能为空", trigger: "blur" },
+          { required: true, message: this.$t('mes.hardwareType.hardwareTypeCodeRequired'), trigger: "blur" },
         ],
         hardwareTypeName: [
-          { required: true, message: "硬件名称不能为空", trigger: "blur" },
+          { required: true, message: this.$t('mes.hardwareType.typeNameRequired'), trigger: "blur" },
         ],
 
       },
@@ -376,7 +376,7 @@ export default {
       }
       this.form.enableFlag = "n";
       this.open = true;
-      this.title = "新增硬件类型";
+      this.title = this.$t('mes.hardwareType.addHardwareType');
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -391,7 +391,7 @@ export default {
       getHardwareTypeInfo(row.id).then((response) => {
         this.form = response.data;
         this.open = true;
-        this.title = "编辑硬件类型";
+        this.title = this.$t('mes.hardwareType.editHardwareType');
       });
     },
     /** 提交按钮 */
@@ -400,13 +400,13 @@ export default {
         if (valid) {
           if (this.form.id != null) {
             updateHardwareType(this.form).then((response) => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('mes.hardwareType.editSuccess'));
               this.open = false;
               this.getList();
             });
           } else {
             addHardwareType(this.form).then((response) => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('mes.hardwareType.addSuccess'));
               this.open = false;
               this.getList();
             });
@@ -429,13 +429,13 @@ export default {
       const repairIds = row.id || this.ids;
       const repairCodes = row.hardwareTypeCode;
       this.$modal
-        .confirm('是否删除硬件编号为"' + repairCodes + '"的硬件类型?')
+        .confirm(this.$t('mes.hardwareType.deleteConfirm', { hardwareTypeCode: repairCodes }))
         .then(function () {
           return delHardwareType(repairIds);
         })
         .then(() => {
           this.getList();
-          this.$modal.msgSuccess("删除成功");
+          this.$modal.msgSuccess(this.$t('mes.hardwareType.deleteSuccess'));
         })
         .catch(() => {});
     },

+ 43 - 43
src/views/mes/hw/workCard/index.vue

@@ -9,19 +9,19 @@
       label-width="100px"
     >
       <el-row>
-        <el-form-item label="工卡编码" prop="cardCode">
+        <el-form-item :label="$t('mes.workCard.cardCode')" prop="cardCode">
           <el-input
             v-model="queryParams.cardCode"
-            placeholder="请输入工卡编码"
+            :placeholder="$t('mes.workCard.cardCodePlaceholder')"
             clearable
             @keyup.enter.native="handleQuery"
           />
         </el-form-item>
 
-        <el-form-item label="工卡类型" prop="cardType">
+        <el-form-item :label="$t('mes.workCard.cardType')" prop="cardType">
           <el-select
             v-model="queryParams.cardType"
-            placeholder="请选择工卡类型"
+            :placeholder="$t('mes.workCard.cardTypePlaceholder')"
             clearable
           >
             <el-option
@@ -33,10 +33,10 @@
           </el-select>
         </el-form-item>
 
-        <el-form-item label="用户名称" prop="userName">
+        <el-form-item :label="$t('mes.workCard.userName')" prop="userName">
           <el-select
             v-model="queryParams.userName"
-            placeholder="请选择工卡用户"
+            :placeholder="$t('mes.workCard.userNamePlaceholder')"
             clearable
             style="width: 100%"
           >
@@ -56,14 +56,14 @@
             icon="el-icon-search"
             size="mini"
             @click="handleQuery"
-            >搜索
+            >{{ $t('common.search') }}
           </el-button>
           <el-button
             v-no-more-click
             icon="el-icon-refresh"
             size="mini"
             @click="resetQuery"
-            >重置
+            >{{ $t('common.reset') }}
           </el-button>
         </el-form-item>
       </el-row>
@@ -79,7 +79,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['mes:hw:work:add']"
-          >新增
+          >{{ $t('common.add') }}
         </el-button>
       </el-col>
 
@@ -93,7 +93,7 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['mes:hw:work:batchremove']"
-          >批量删除
+          >{{ $t('common.batchDelete') }}
         </el-button>
       </el-col>
       <right-toolbar
@@ -109,13 +109,13 @@
     >
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column
-        label="工卡编码"
+        :label="$t('mes.workCard.cardCode')"
         width="150px"
         align="center"
         prop="cardCode"
       />
       <el-table-column
-        label="工卡类型"
+        :label="$t('mes.workCard.cardType')"
         width="180px"
         align="center"
         prop="cardType"
@@ -128,14 +128,14 @@
         </template>
       </el-table-column>
       <el-table-column
-        label="工卡NFC"
+        :label="$t('mes.workCard.cardNfc')"
         width="180px"
         align="center"
         prop="cardNfc"
         :show-overflow-tooltip="true"
       />
-      <el-table-column label="用户名称" align="center" prop="userName" />
-      <el-table-column label="状态" align="center" prop="exStatus">
+      <el-table-column :label="$t('mes.workCard.userName')" align="center" prop="userName" />
+      <el-table-column :label="$t('common.status')" align="center" prop="exStatus">
         <template slot-scope="scope">
           <el-switch
             style="pointer-events: none;"
@@ -149,14 +149,14 @@
           <span v-else>-</span>
         </template>
       </el-table-column>
-      <el-table-column label="备注" align="center" prop="exRemark">
+      <el-table-column :label="$t('common.remark')" align="center" prop="exRemark">
 <!--        <template slot-scope="scope">-->
 <!--          <dict-tag v-if="scope.row.exRemark" :options="dict.type.job_card_reason" :value="scope.row.exRemark"/>-->
 <!--          <span v-else>-</span>-->
 <!--        </template>-->
       </el-table-column>
       <el-table-column
-        label="操作"
+        :label="$t('common.operation')"
         align="center"
         class-name="small-padding fixed-width"
         fixed="right"
@@ -169,7 +169,7 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['mes:hw:work:edit']"
-            >编辑
+            >{{ $t('common.edit') }}
           </el-button>
           <el-button
             v-no-more-click
@@ -178,7 +178,7 @@
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['mes:hw:work:remove']"
-            >删除
+            >{{ $t('common.delete') }}
           </el-button>
           <!--          <el-button v-no-more-click size="mini" type="text">预览</el-button>-->
         </template>
@@ -196,10 +196,10 @@
     <!-- 添加或修改设备维修单对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="450px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="120px">
-        <el-form-item label="用户名称" prop="userId" style="width: 340px">
+        <el-form-item :label="$t('mes.workCard.userName')" prop="userId" style="width: 340px">
           <el-select
             v-model="form.userId"
-            placeholder="请选择工卡用户"
+            :placeholder="$t('mes.workCard.userNamePlaceholder')"
             clearable
             style="width: 100%"
             @change="handleSelectUser"
@@ -214,10 +214,10 @@
         </el-form-item>
         <el-row>
           <el-col :span="15">
-            <el-form-item label="工卡编码" prop="cardCode">
+            <el-form-item :label="$t('mes.workCard.cardCode')" prop="cardCode">
               <el-input
                 v-model="form.cardCode"
-                placeholder="请输入钥匙编码"
+                :placeholder="$t('mes.workCard.cardCodePlaceholder')"
                 style="width: 100%"
               />
             </el-form-item>
@@ -227,24 +227,24 @@
               <el-switch
                 v-model="autoGenFlag"
                 active-color="#13ce66"
-                active-text="自动生成"
+                :active-text="$t('mes.workCard.autoGenerate')"
                 @change="handleAutoGenChange(autoGenFlag)"
               >
               </el-switch>
             </el-form-item>
           </el-col>
         </el-row>
-        <el-form-item label="工卡NFC" prop="cardNfc" style="width: 340px">
+        <el-form-item :label="$t('mes.workCard.cardNfc')" prop="cardNfc" style="width: 340px">
           <el-input
             v-model="form.cardNfc"
-            placeholder="请输入工卡Nfc"
+            :placeholder="$t('mes.workCard.cardNfcPlaceholder')"
             maxlength="16"
           />
         </el-form-item>
-        <el-form-item label="工卡类型" prop="cardType">
+        <el-form-item :label="$t('mes.workCard.cardType')" prop="cardType">
           <el-select
             v-model="form.cardType"
-            placeholder="请选择工卡类型"
+            :placeholder="$t('mes.workCard.cardTypePlaceholder')"
             clearable
           >
             <el-option
@@ -255,7 +255,7 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="状态" prop="exStatus">
+        <el-form-item :label="$t('common.status')" prop="exStatus">
           <el-radio-group v-model="form.exStatus">
             <el-radio
               v-for="dict in dict.type.job_card_status"
@@ -266,8 +266,8 @@
             >
           </el-radio-group>
         </el-form-item>
-        <el-form-item label="备注" prop="exRemark" >
-          <el-input v-model="form.exRemark" placeholder="请输入备注" />
+        <el-form-item :label="$t('common.remark')" prop="exRemark" >
+          <el-input v-model="form.exRemark" :placeholder="$t('common.pleaseInput') + $t('common.remark')" />
 <!--          <el-select v-model="form.exRemark">-->
 <!--            <el-option-->
 <!--              v-for="dict in dict.type.job_card_reason"-->
@@ -283,9 +283,9 @@
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button v-no-more-click type="primary" @click="submitForm"
-          >确 定</el-button
+          >{{ $t('common.confirm') }}</el-button
         >
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -353,16 +353,16 @@ export default {
       // 表单校验
       rules: {
         cardCode: [
-          { required: true, message: "工卡编码不能为空", trigger: "blur" },
+          { required: true, message: this.$t('mes.workCard.cardCodeRequired'), trigger: "blur" },
         ],
         userId: [
-          { required: true, message: "用户名称不能为空", trigger: "blur" },
+          { required: true, message: this.$t('mes.workCard.userNameRequired'), trigger: "blur" },
         ],
         cardNfc: [
-          { required: true, message: "工卡NFC不能为空", trigger: "blur" },
+          { required: true, message: this.$t('mes.workCard.cardNfcRequired'), trigger: "blur" },
         ],
         cardType: [
-          { required: true, message: "工卡类型不能为空", trigger: "blur" },
+          { required: true, message: this.$t('mes.workCard.cardTypeRequired'), trigger: "blur" },
         ],
       },
       // 新增状态
@@ -459,7 +459,7 @@ export default {
       this.reset();
       this.open = true;
       this.EditId = null;
-      this.title = "添加工卡信息";
+      this.title = this.$t('mes.workCard.addWorkCard');
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -474,7 +474,7 @@ export default {
           this.form.cardType='临时卡'
         }
         this.open = true;
-        this.title = "编辑工卡信息";
+        this.title = this.$t('mes.workCard.editWorkCard');
       });
     },
     /** 提交按钮 */
@@ -489,7 +489,7 @@ export default {
             }
 
             updateWorkCard(this.form).then((response) => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('mes.workCard.editSuccess'));
               this.open = false;
               this.getList();
             });
@@ -499,7 +499,7 @@ export default {
            this.form.userId=data.value;
             //  console.log(this.form, "form");
             addWorkCard(this.form).then((response) => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('mes.workCard.addSuccess'));
               this.open = false;
               this.EditId = null;
               this.getList();
@@ -513,13 +513,13 @@ export default {
       const repairIds = row.cardId || this.ids;
       const repairCodes = row.cardCode || this.codes;
       this.$modal
-        .confirm('是否确认删除编码为"' + repairCodes + '"的数据项?')
+        .confirm(this.$t('mes.workCard.deleteConfirm', { cardCode: repairCodes }))
         .then(function () {
           return delWorkCard(repairIds);
         })
         .then(() => {
           this.getList();
-          this.$modal.msgSuccess("删除成功");
+          this.$modal.msgSuccess(this.$t('mes.workCard.deleteSuccess'));
         })
         .catch(() => {});
     },

+ 63 - 60
src/views/mes/material/Inspectionrecords/index.vue

@@ -9,20 +9,20 @@
       label-width="100px"
       @submit.native.prevent
     >
-      <el-form-item label="计划名称" prop="planName">
+      <el-form-item :label="$t('mes.inspectionRecord.planName')" prop="planName">
         <el-input
           v-model="queryParams.planName"
-          placeholder="请输入计划名称"
+          :placeholder="$t('mes.inspectionRecord.planNamePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
 
-      <el-form-item label="物资柜" prop="cabinetId">
+      <el-form-item :label="$t('mes.inspectionRecord.cabinet')" prop="cabinetId">
         <el-select
           :disabled="visibleSelect"
           v-model="queryParams.cabinetId"
-          placeholder="请选择物资柜"
+          :placeholder="$t('mes.inspectionRecord.cabinetPlaceholder')"
           clearable
         >
           <el-option
@@ -33,32 +33,32 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="物资名称" prop="materialsName">
+      <el-form-item :label="$t('mes.inspectionRecord.materialsName')" prop="materialsName">
         <el-input
           v-model="queryParams.materialsName"
-          placeholder="请输入物资名称"
+          :placeholder="$t('mes.inspectionRecord.materialsNamePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="物资类型" prop="materialsTypeId">
+      <el-form-item :label="$t('mes.inspectionRecord.materialsType')" prop="materialsTypeId">
         <treeselect
           style="width: 215px"
           v-model="queryParams.materialsTypeId"
           :options="materialstypeOptions"
           :normalizer="materialnormalizer"
-          placeholder="请选择物资类型"
+          :placeholder="$t('mes.inspectionRecord.materialsTypePlaceholder')"
         />
       </el-form-item>
-      <el-form-item label="RFID" prop="materialsRfid">
+      <el-form-item :label="$t('mes.inspectionRecord.rfid')" prop="materialsRfid">
         <el-input
           v-model="queryParams.materialsRfid"
-          placeholder="请输入RFID"
+          :placeholder="$t('mes.inspectionRecord.rfidPlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="检查时间">
+      <el-form-item :label="$t('mes.inspectionRecord.checkTime')">
         <el-date-picker
           style="width: 215px"
           :default-time="['00:00:00', '23:59:59']"
@@ -66,8 +66,8 @@
           type="datetimerange"
           :picker-options="pickerOptions"
           range-separator="-"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
+          :start-placeholder="$t('common.startDate')"
+          :end-placeholder="$t('common.endDate')"
           align="right"
           @change="handleClearTime"
         >
@@ -84,8 +84,8 @@
       <!--      </el-form-item>-->
 
 
-      <el-form-item label="检查结果" prop="status">
-        <el-select v-model="queryParams.status" placeholder="检查结果">
+      <el-form-item :label="$t('mes.inspectionRecord.checkResult')" prop="status">
+        <el-select v-model="queryParams.status" :placeholder="$t('mes.inspectionRecord.checkResult')">
           <el-option
             v-for="dict in dict.type.checks_status"
             :key="dict.value"
@@ -94,8 +94,8 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="异常原因" prop="reason">
-        <el-select v-model="queryParams.reason" placeholder="状态">
+      <el-form-item :label="$t('mes.inspectionRecord.exceptionReason')" prop="reason">
+        <el-select v-model="queryParams.reason" :placeholder="$t('common.status')">
           <el-option
             v-for="dict in dict.type.exceptions_status"
             :key="dict.value"
@@ -111,7 +111,7 @@
           icon="el-icon-search"
           size="mini"
           @click="handleQuery"
-        >搜索
+        >{{ $t('common.search') }}
         </el-button
         >
         <el-button
@@ -119,7 +119,7 @@
           icon="el-icon-refresh"
           size="mini"
           @click="resetQuery"
-        >重置
+        >{{ $t('common.reset') }}
         </el-button
         >
       </el-form-item>
@@ -132,7 +132,7 @@
                  size="mini"
                  @click="handleExport"
                  v-hasPermi="['iscs:check:export']"
-      >导出
+      >{{ $t('common.export') }}
       </el-button>
       <!--      <el-col :span="1.5">-->
       <!--        <el-button-->
@@ -170,20 +170,20 @@
       @selection-change="handleSelectionChange"
     >
       <!--      <el-table-column type="selection" width="55" align="center"/>-->
-      <el-table-column label="计划名称" align="center" prop="planName" width="200">
+      <el-table-column :label="$t('mes.inspectionRecord.planName')" align="center" prop="planName" width="200">
         <template slot-scope="scope">
           <span v-if="scope.row.planName">{{scope.row.planName}}</span>
           <span v-else>-</span>
         </template>
       </el-table-column>
-      <el-table-column label="物资柜" align="center" prop="cabinetName">
+      <el-table-column :label="$t('mes.inspectionRecord.cabinet')" align="center" prop="cabinetName">
       </el-table-column>
-      <el-table-column label="物资编号" align="center" prop="materialsId">
+      <el-table-column :label="$t('mes.inspectionRecord.materialsId')" align="center" prop="materialsId">
       </el-table-column>
-      <el-table-column label="物资名称" align="center" prop="materialsName"/>
-      <el-table-column label="物资类型" align="center" prop="materialsTypeName"/>
+      <el-table-column :label="$t('mes.inspectionRecord.materialsName')" align="center" prop="materialsName"/>
+      <el-table-column :label="$t('mes.inspectionRecord.materialsType')" align="center" prop="materialsTypeName"/>
       <el-table-column
-        label="物资图片"
+        :label="$t('mes.inspectionRecord.materialsPicture')"
         align="center"
         prop="materialsTypePicture"
       >
@@ -197,14 +197,14 @@
           <span v-else>-</span>
         </template>
       </el-table-column>
-      <el-table-column label="RFID" align="center" prop="materialsRfid">
+      <el-table-column :label="$t('mes.inspectionRecord.rfid')" align="center" prop="materialsRfid">
         <template slot-scope="scope">
           <span v-if="scope.row.materialsRfid">{{scope.row.materialsRfid}}</span>
           <span v-else>-</span>
         </template>
       </el-table-column>
       <el-table-column
-        label="检查时间"
+        :label="$t('mes.inspectionRecord.checkTime')"
         align="center"
         prop="createTime"
         width="250"
@@ -213,19 +213,19 @@
           {{ scope.row.createTime }}
         </template>
       </el-table-column>
-      <el-table-column label="检查结果" align="center" prop="status">
+      <el-table-column :label="$t('mes.inspectionRecord.checkResult')" align="center" prop="status">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.checks_status" :value="scope.row.status"/>
         </template>
       </el-table-column>
-      <el-table-column label="异常原因" align="center" prop="reason">
+      <el-table-column :label="$t('mes.inspectionRecord.exceptionReason')" align="center" prop="reason">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.exceptions_status" :value="scope.row.reason" v-if="scope.row.reason!=='0'"/>
           <span v-else>-</span>
         </template>
       </el-table-column>
       <el-table-column
-        label="措施"
+        :label="$t('mes.inspectionRecord.measure')"
         align="center"
         prop="measure"
       >
@@ -234,9 +234,9 @@
           <span v-else>-</span>
         </template>
       </el-table-column>
-      <el-table-column label="更换记录" align="center" prop="status">
+      <el-table-column :label="$t('mes.inspectionRecord.replacementRecord')" align="center" prop="status">
         <template slot-scope="scope">
-          <el-button type="text" @click="goto(scope.row)">查看</el-button>
+          <el-button type="text" @click="goto(scope.row)">{{ $t('common.view') }}</el-button>
         </template>
       </el-table-column>
       <!--      <el-table-column-->
@@ -359,23 +359,16 @@ export default {
       planPersonOption: [], // 检查人员
       planList: [],//检查计划Id
       workstationOption: [],//所属岗位
-      // 表单校验
-      rules: {
-        userIdStr: [
-          { required: true, message: '人员不能为空', trigger: 'blur' }
-        ],
-        checkName: [
-          { required: true, message: '任务名称不能为空', trigger: 'blur' }
-        ],
-        cron: [
-          { required: true, message: '检查时间频率不能为空', trigger: 'blur' }
-        ]
-
-      },
-      pickerOptions: {
+      materialstypeOptions: [],
+      visibleSelect: false
+    }
+  },
+  computed: {
+    pickerOptions() {
+      return {
         shortcuts: [
           {
-            text: '最近一周',
+            text: this.$t('mes.inspectionRecord.lastWeek'),
             onClick(picker) {
               const end = new Date()
               const start = new Date()
@@ -384,7 +377,7 @@ export default {
             }
           },
           {
-            text: '最近一个月',
+            text: this.$t('mes.inspectionRecord.lastMonth'),
             onClick(picker) {
               const end = new Date()
               const start = new Date()
@@ -393,7 +386,7 @@ export default {
             }
           },
           {
-            text: '最近三个月',
+            text: this.$t('mes.inspectionRecord.lastThreeMonths'),
             onClick(picker) {
               const end = new Date()
               const start = new Date()
@@ -402,12 +395,22 @@ export default {
             }
           }
         ]
-      },
-      materialstypeOptions: [],
-      visibleSelect: false
+      };
+    },
+    rules() {
+      return {
+        userIdStr: [
+          { required: true, message: this.$t('mes.inspectionRecord.userRequired'), trigger: 'blur' }
+        ],
+        checkName: [
+          { required: true, message: this.$t('mes.inspectionRecord.taskNameRequired'), trigger: 'blur' }
+        ],
+        cron: [
+          { required: true, message: this.$t('mes.inspectionRecord.checkFrequencyRequired'), trigger: 'blur' }
+        ]
+      };
     }
   },
-
   created() {
     this.getList()
     this.getTreeselect()
@@ -608,7 +611,7 @@ export default {
       this.reset()
       this.open = true
       this.form.workstationId = null
-      this.title = '新增检查记录'
+      this.title = this.$t('mes.inspectionRecord.addRecord')
       this.optType = 'add'
     },
 
@@ -618,7 +621,7 @@ export default {
       selectCheckRecordById(row.recordId).then((response) => {
         this.form = response.data
         this.open = true
-        this.title = '编辑检查记录'
+        this.title = this.$t('mes.inspectionRecord.editRecord')
         this.optType = 'edit'
       })
     },
@@ -630,14 +633,14 @@ export default {
           if (this.form.recordId != null) {
             updateCheckRecord(this.form).then((response) => {
               console.log(response, '修改返回')
-              this.$modal.msgSuccess('修改成功')
+              this.$modal.msgSuccess(this.$t('mes.inspectionRecord.editSuccess'))
               this.open = false
               this.getList()
             })
           } else {
             addCheckRecord(this.form).then((response) => {
               console.log(response, '新增返回')
-              this.$modal.msgSuccess('新增成功')
+              this.$modal.msgSuccess(this.$t('mes.inspectionRecord.addSuccess'))
               this.open = false
               this.getList()
             })
@@ -650,13 +653,13 @@ export default {
       const checkIds = row.recordId || this.ids
 
       this.$modal
-        .confirm('是否确认删除编号为"' + checkIds + '"的数据项?')
+        .confirm(this.$t('mes.inspectionRecord.deleteConfirm', { checkId: checkIds }))
         .then(function() {
           return deleteCheckRecord(checkIds)
         })
         .then(() => {
           this.getList()
-          this.$modal.msgSuccess('删除成功')
+          this.$modal.msgSuccess(this.$t('mes.inspectionRecord.deleteSuccess'))
         })
         .catch(() => {
         })

+ 28 - 28
src/views/mes/material/blacklist/index.vue

@@ -10,18 +10,18 @@
       @submit.native.prevent
     >
       <el-row>
-        <el-form-item label="工号" prop="userName">
+        <el-form-item :label="$t('mes.blacklist.userName')" prop="userName">
           <el-input
             v-model="queryParams.userName"
-            placeholder="请输入工号"
+            :placeholder="$t('mes.blacklist.userNamePlaceholder')"
             clearable
             @keyup.enter.native="handleQuery"
           />
         </el-form-item>
-        <el-form-item label="姓名" prop="nickName">
+        <el-form-item :label="$t('mes.blacklist.nickName')" prop="nickName">
           <el-input
             v-model="queryParams.nickName"
-            placeholder="请输入姓名"
+            :placeholder="$t('mes.blacklist.nickNamePlaceholder')"
             clearable
             @keyup.enter.native="handleQuery"
           />
@@ -33,10 +33,10 @@
                      icon="el-icon-search"
                      size="mini"
                      @click="handleQuery"
-          >搜索
+          >{{ $t('common.search') }}
           </el-button>
           <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery"
-          >重置
+          >{{ $t('common.reset') }}
           </el-button>
         </el-form-item>
       </el-row>
@@ -51,7 +51,7 @@
                    size="mini"
                    @click="handleAdd"
                    v-hasPermi="['iscs:blacklist:add']"
-        >新增
+        >{{ $t('common.add') }}
         </el-button>
       </el-col>
 
@@ -64,7 +64,7 @@
                    :disabled="multiple"
                    @click="handleDelete"
                    v-hasPermi="['iscs:blacklist:remove']"
-        >批量删除
+        >{{ $t('common.batchDelete') }}
         </el-button>
       </el-col>
       <right-toolbar
@@ -80,28 +80,28 @@
     >
       <el-table-column type="selection" width="55" align="center"/>
       <el-table-column
-        label="用户编号"
+        :label="$t('mes.blacklist.userId')"
         width="180px"
         align="center"
         prop="userId"
       />
       <el-table-column
-        label="工号"
+        :label="$t('mes.blacklist.userName')"
         align="center"
         prop="userName"
       />
       <el-table-column
-        label="姓名"
+        :label="$t('mes.blacklist.nickName')"
         align="center"
         prop="nickName"
       />
       <el-table-column
-        label="创建时间"
+        :label="$t('common.createTime')"
         align="center"
         prop="createTime"
       />
       <el-table-column
-        label="操作"
+        :label="$t('common.operation')"
         align="center"
         class-name="small-padding fixed-width"
         fixed="right"
@@ -113,7 +113,7 @@
                      icon="el-icon-delete"
                      @click="handleDelete(scope.row)"
                      v-hasPermi="['iscs:blacklist:remove']"
-          >删除
+          >{{ $t('common.delete') }}
           </el-button>
 
         </template>
@@ -134,7 +134,7 @@
         <el-row :gutter="24">
           <el-col :span="11" style="margin-left: 20px">
             <!-- 穿梭框左边 -->
-            <el-input v-model="searchQueryLeft" placeholder="请输入姓名" @input="searchQueryLeftInput" style="margin-bottom: 5px"></el-input>
+            <el-input v-model="searchQueryLeft" :placeholder="$t('mes.blacklist.nickNamePlaceholder')" @input="searchQueryLeftInput" style="margin-bottom: 5px"></el-input>
             <el-table
               ref="multipleTable"
               :data="tableData1"
@@ -151,17 +151,17 @@
                 width="55"
                 align="center"
               ></el-table-column>
-              <el-table-column label="用户编号" align="center">
+              <el-table-column :label="$t('mes.blacklist.userId')" align="center">
                 <template slot-scope="{ row }">
                   <span>{{ row.userId }}</span>
                 </template>
               </el-table-column>
-              <el-table-column label="姓名" align="center">
+              <el-table-column :label="$t('mes.blacklist.nickName')" align="center">
                 <template slot-scope="{ row }">
                   <span>{{ row.nickName }}</span>
                 </template>
               </el-table-column>
-              <el-table-column label="登录名" align="center">
+              <el-table-column :label="$t('mes.blacklist.loginName')" align="center">
                 <template slot-scope="{ row }">
                   <span>{{ row.userName }}</span>
                 </template>
@@ -191,7 +191,7 @@
           </div>
           <el-col :span="11">
             <!-- 穿梭框右边 -->
-            <el-input v-model="searchQueryRight" placeholder="请输入姓名" @input="searchQueryRightInput" style="margin-bottom: 5px"></el-input>
+            <el-input v-model="searchQueryRight" :placeholder="$t('mes.blacklist.nickNamePlaceholder')" @input="searchQueryRightInput" style="margin-bottom: 5px"></el-input>
             <el-table
               ref="multipleTable"
               :data="tableData2"
@@ -208,17 +208,17 @@
                 width="55"
                 align="center"
               ></el-table-column>
-              <el-table-column label="用户编号" align="center">
+              <el-table-column :label="$t('mes.blacklist.userId')" align="center">
                 <template slot-scope="{ row }">
                   <span>{{ row.userId }}</span>
                 </template>
               </el-table-column>
-              <el-table-column label="类型" align="center">
+              <el-table-column :label="$t('mes.blacklist.type')" align="center">
                 <template slot-scope="{ row }">
                   <span>{{ row.nickName }}</span>
                 </template>
               </el-table-column>
-              <el-table-column label="登录名" align="center">
+              <el-table-column :label="$t('mes.blacklist.loginName')" align="center">
                 <template slot-scope="{ row }">
                   <span>{{ row.userName }}</span>
                 </template>
@@ -228,8 +228,8 @@
         </el-row>
       </div>
       <div slot="footer" class="dialog-footer">
-        <el-button v-no-more-click type="primary" @click="submitForm">确 定</el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click type="primary" @click="submitForm">{{ $t('common.confirm') }}</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -378,7 +378,7 @@ export default {
       this.reset()
       this.getOtherList()
       this.open = true
-      this.title = '新增黑名单'
+      this.title = this.$t('mes.blacklist.addBlacklist')
     },
 
     /** 提交按钮 */
@@ -391,7 +391,7 @@ export default {
       })
 
       addBlacklist(data).then((response) => {
-        this.$modal.msgSuccess('新增成功')
+        this.$modal.msgSuccess(this.$t('mes.blacklist.addSuccess'))
         this.open = false
         this.getList()
       })
@@ -447,13 +447,13 @@ export default {
       const repairIds = row.recordId || this.ids
       const nickName = row.nickName ||this.codes
       this.$modal
-        .confirm('是否确认删除所选数据项?')
+        .confirm(this.$t('mes.blacklist.deleteConfirm'))
         .then(function() {
           return delBlacklist(repairIds)
         })
         .then(() => {
           this.getList()
-          this.$modal.msgSuccess('删除成功')
+          this.$modal.msgSuccess(this.$t('mes.blacklist.deleteSuccess'))
         })
         .catch(() => {
         })

+ 47 - 43
src/views/mes/material/collectionmanagement/index.vue

@@ -10,12 +10,12 @@
       @submit.native.prevent
     >
       <el-row>
-        <el-form-item label="物资柜" prop="loanFromId">
+        <el-form-item :label="$t('mes.collectionManagement.cabinet')" prop="loanFromId">
           <el-select
             :disabled="visibleSelect"
             style="width: 215px"
             v-model="queryParams.loanFromId"
-            placeholder="请选择物资柜"
+            :placeholder="$t('mes.collectionManagement.cabinetPlaceholder')"
             clearable
           >
             <el-option
@@ -26,32 +26,32 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="物资名称" prop="materialsName">
+        <el-form-item :label="$t('mes.collectionManagement.materialsName')" prop="materialsName">
           <el-input
             v-model="queryParams.materialsName"
-            placeholder="请输入物资名称"
+            :placeholder="$t('mes.collectionManagement.materialsNamePlaceholder')"
             clearable
             @keyup.enter.native="handleQuery"
           />
         </el-form-item>
-        <el-form-item label="物资类型" prop="materialsTypeId">
+        <el-form-item :label="$t('mes.collectionManagement.materialsType')" prop="materialsTypeId">
           <treeselect
             style="width: 215px"
             v-model="queryParams.materialsTypeId"
             :options="machinerytypeOptions"
             :normalizer="normalizer"
-            placeholder="请选择物资类型"
+            :placeholder="$t('mes.collectionManagement.materialsTypePlaceholder')"
           />
         </el-form-item>
-        <el-form-item label="领取人" prop="loanUserName">
+        <el-form-item :label="$t('mes.collectionManagement.loanUser')" prop="loanUserName">
           <el-input
             v-model="queryParams.loanUserName"
-            placeholder="请输入领取人"
+            :placeholder="$t('mes.collectionManagement.loanUserPlaceholder')"
             clearable
             @keyup.enter.native="handleQuery"
           />
         </el-form-item>
-        <el-form-item label="领取时间" prop="">
+        <el-form-item :label="$t('mes.collectionManagement.loanTime')" prop="">
           <el-date-picker
             style="width: 210px"
             :default-time="['00:00:00', '23:59:59']"
@@ -59,22 +59,22 @@
             type="datetimerange"
             :picker-options="pickerOptions"
             range-separator="-"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
+            :start-placeholder="$t('common.startDate')"
+            :end-placeholder="$t('common.endDate')"
             align="right"
             @change="handleClearLoanTime"
           >
           </el-date-picker>
         </el-form-item>
-        <el-form-item label="归还人" prop="restitutionUserName">
+        <el-form-item :label="$t('mes.collectionManagement.restitutionUser')" prop="restitutionUserName">
           <el-input
             v-model="queryParams.restitutionUserName"
-            placeholder="请输入归还人"
+            :placeholder="$t('mes.collectionManagement.restitutionUserPlaceholder')"
             clearable
             @keyup.enter.native="handleQuery"
           />
         </el-form-item>
-        <el-form-item label="归还时间" prop="">
+        <el-form-item :label="$t('mes.collectionManagement.restitutionTime')" prop="">
           <el-date-picker
             style="width: 215px"
             :default-time="['00:00:00', '23:59:59']"
@@ -82,15 +82,15 @@
             type="datetimerange"
             :picker-options="pickerOptions"
             range-separator="-"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
+            :start-placeholder="$t('common.startDate')"
+            :end-placeholder="$t('common.endDate')"
             align="right"
             @change="handleClearRestitutionTime"
           >
           </el-date-picker>
         </el-form-item>
-        <el-form-item label="状态" prop="status">
-          <el-select v-model="queryParams.status" placeholder="状态">
+        <el-form-item :label="$t('common.status')" prop="status">
+          <el-select v-model="queryParams.status" :placeholder="$t('common.status')">
             <el-option
               v-for="dict in dict.type.record_of_collection"
               :key="dict.value"
@@ -131,14 +131,14 @@
             icon="el-icon-search"
             size="mini"
             @click="handleQuery"
-            >搜索</el-button
+            >{{ $t('common.search') }}</el-button
           >
           <el-button
             v-no-more-click
             icon="el-icon-refresh"
             size="mini"
             @click="resetQuery"
-            >重置</el-button
+            >{{ $t('common.reset') }}</el-button
           >
         </el-form-item>
       </el-row>
@@ -152,7 +152,7 @@
         v-if="!visibleSelect"
         @click="handleQueryStatus"
         style="margin: 0 2.5% 10px"
-        >超时未还</el-button
+        >{{ $t('mes.collectionManagement.timeoutNotReturned') }}</el-button
       >
     </el-row>
 
@@ -164,21 +164,21 @@
       <!--      <el-table-column type="selection" width="55" align="center" />-->
       <el-table-column
         v-if="!visibleSelect"
-        label="物资柜"
+        :label="$t('mes.collectionManagement.cabinet')"
         align="center"
         prop="loanFromName"
       >
       </el-table-column>
-      <el-table-column label="物资编号" align="center" prop="materialsId">
+      <el-table-column :label="$t('mes.collectionManagement.materialsId')" align="center" prop="materialsId">
       </el-table-column>
-      <el-table-column label="物资名称" align="center" prop="materialsName" />
+      <el-table-column :label="$t('mes.collectionManagement.materialsName')" align="center" prop="materialsName" />
       <el-table-column
-        label="物资类型"
+        :label="$t('mes.collectionManagement.materialsType')"
         align="center"
         prop="materialsTypeName"
         width="180"
       />
-      <el-table-column label="物资图片" prop="materialsTypePicture" width="90">
+      <el-table-column :label="$t('mes.collectionManagement.materialsPicture')" prop="materialsTypePicture" width="90">
         <template slot-scope="scope">
           <div class="img-box" v-if="scope.row.materialsTypePicture">
             <el-image
@@ -198,19 +198,19 @@
           <span v-else>-</span>
         </template>
       </el-table-column>
-      <el-table-column label="领取人" align="center" prop="loanUserName">
+      <el-table-column :label="$t('mes.collectionManagement.loanUser')" align="center" prop="loanUserName">
       </el-table-column>
-      <el-table-column label="领取时间" align="center" prop="loanTime" />
-      <el-table-column label="归还人" align="center" prop="restitutionUserName">
+      <el-table-column :label="$t('mes.collectionManagement.loanTime')" align="center" prop="loanTime" />
+      <el-table-column :label="$t('mes.collectionManagement.restitutionUser')" align="center" prop="restitutionUserName">
       </el-table-column>
       <!--      实际归还时间-->
       <el-table-column
-        label="归还时间"
+        :label="$t('mes.collectionManagement.restitutionTime')"
         align="center"
         prop="actualRestitutionTime"
       />
-      <el-table-column label="借出时长" align="center" prop="loanDuration" />
-      <el-table-column label="状态" align="center" prop="status">
+      <el-table-column :label="$t('mes.collectionManagement.loanDuration')" align="center" prop="loanDuration" />
+      <el-table-column :label="$t('common.status')" align="center" prop="status">
         <template slot-scope="scope">
           <dict-tag
             :options="dict.type.record_of_collection"
@@ -336,10 +336,19 @@ export default {
         current: 1,
         size: -1,
       },
-      pickerOptions: {
+      value2: "",
+      // 表单参数
+      form: {},
+      machinerytypeOptions: [],
+      visibleSelect: false,
+    };
+  },
+  computed: {
+    pickerOptions() {
+      return {
         shortcuts: [
           {
-            text: "最近一周",
+            text: this.$t('mes.collectionManagement.lastWeek'),
             onClick(picker) {
               const end = new Date();
               const start = new Date();
@@ -348,7 +357,7 @@ export default {
             },
           },
           {
-            text: "最近一个月",
+            text: this.$t('mes.collectionManagement.lastMonth'),
             onClick(picker) {
               const end = new Date();
               const start = new Date();
@@ -357,7 +366,7 @@ export default {
             },
           },
           {
-            text: "最近三个月",
+            text: this.$t('mes.collectionManagement.lastThreeMonths'),
             onClick(picker) {
               const end = new Date();
               const start = new Date();
@@ -366,13 +375,8 @@ export default {
             },
           },
         ],
-      },
-      value2: "",
-      // 表单参数
-      form: {},
-      machinerytypeOptions: [],
-      visibleSelect: false,
-    };
+      };
+    }
   },
   created() {
     this.queryParams.loanFromId = this.cabinetId || null;

+ 38 - 46
src/views/mes/material/expireremind/index.vue

@@ -9,24 +9,24 @@
       label-width="100px"
       @submit.native.prevent
     >
-      <el-form-item label="物资编码" prop="materialsCode">
+      <el-form-item :label="$t('mes.expireRemind.materialsCode')" prop="materialsCode">
         <el-input
           v-model="queryParams.materialsCode"
-          placeholder="请输入物资编码"
+          :placeholder="$t('mes.expireRemind.materialsCodePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="物资名称" prop="materialsName">
+      <el-form-item :label="$t('mes.expireRemind.materialsName')" prop="materialsName">
         <el-input
           v-model="queryParams.materialsName"
-          placeholder="请输入物资名称"
+          :placeholder="$t('mes.expireRemind.materialsNamePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="状态" prop="readFlag">
-        <el-select v-model="queryParams.readFlag" placeholder="状态">
+      <el-form-item :label="$t('common.status')" prop="readFlag">
+        <el-select v-model="queryParams.readFlag" :placeholder="$t('common.status')">
           <el-option
             v-for="dict in dict.type.reminders_status"
             :key="dict.value"
@@ -35,20 +35,20 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="过期时间" prop="timeoutAlarm">
+      <el-form-item :label="$t('mes.expireRemind.expireTime')" prop="timeoutAlarm">
         <el-date-picker
           v-model="timeoutAlarm"
           type="datetimerange"
-          placeholder="选择日期时间"
+          :placeholder="$t('mes.expireRemind.dateTimePlaceholder')"
           align="right"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
+          :start-placeholder="$t('common.startDate')"
+          :end-placeholder="$t('common.endDate')"
           :picker-options="pickerOptions"
         >
         </el-date-picker>
       </el-form-item>
-      <el-form-item label="所属柜" prop="loanFromName">
-        <el-select v-model="queryParams.loanFromId" placeholder="请选择所属柜">
+      <el-form-item :label="$t('mes.expireRemind.cabinet')" prop="loanFromName">
+        <el-select v-model="queryParams.loanFromId" :placeholder="$t('mes.expireRemind.cabinetPlaceholder')">
           <el-option
             v-for="dict in cabinets"
             :key="dict.value"
@@ -64,10 +64,10 @@
           icon="el-icon-search"
           size="mini"
           @click="handleQuery"
-          >搜索</el-button
+          >{{ $t('common.search') }}</el-button
         >
         <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery"
-          >重置</el-button
+          >{{ $t('common.reset') }}</el-button
         >
       </el-form-item>
     </el-form>
@@ -109,7 +109,7 @@
       @selection-change="handleSelectionChange"
     >
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="物资编码" align="center" prop="materialsCode">
+      <el-table-column :label="$t('mes.expireRemind.materialsCode')" align="center" prop="materialsCode">
         <template slot-scope="scope">
           <el-button v-no-more-click
             type="text"
@@ -119,18 +119,18 @@
           </el-button>
         </template>
       </el-table-column>
-      <el-table-column label="物资名称" align="center" prop="materialsName" />
-      <el-table-column label="通知人" align="center" prop="loanUserName">
+      <el-table-column :label="$t('mes.expireRemind.materialsName')" align="center" prop="materialsName" />
+      <el-table-column :label="$t('mes.expireRemind.notifyUser')" align="center" prop="loanUserName">
       </el-table-column>
-      <el-table-column label="所属柜" align="center" prop="loanFromName">
+      <el-table-column :label="$t('mes.expireRemind.cabinet')" align="center" prop="loanFromName">
       </el-table-column>
-      <el-table-column label="过期时间" align="center" prop="timeoutAlarm">
+      <el-table-column :label="$t('mes.expireRemind.expireTime')" align="center" prop="timeoutAlarm">
       </el-table-column>
 
-      <el-table-column label="状态" align="center" prop="readFlag">
+      <el-table-column :label="$t('common.status')" align="center" prop="readFlag">
         <template slot-scope="scope">
-          <el-tag type="primary" v-if="scope.row.readFlag == 0">已读</el-tag>
-          <el-tag type="danger" v-if="scope.row.readFlag == 1">未读</el-tag>
+          <el-tag type="primary" v-if="scope.row.readFlag == 0">{{ $t('mes.expireRemind.read') }}</el-tag>
+          <el-tag type="danger" v-if="scope.row.readFlag == 1">{{ $t('mes.expireRemind.unread') }}</el-tag>
         </template>
       </el-table-column>
       <!--      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">-->
@@ -221,10 +221,20 @@ export default {
         current: 1,
         size: -1,
       },
-      pickerOptions: {
+      cabinets: [], //物资所属柜
+      value2: "",
+      value3: "",
+
+      // 表单参数
+      form: {},
+    };
+  },
+  computed: {
+    pickerOptions() {
+      return {
         shortcuts: [
           {
-            text: "最近一周",
+            text: this.$t('mes.expireRemind.lastWeek'),
             onClick(picker) {
               const end = new Date();
               const start = new Date();
@@ -233,7 +243,7 @@ export default {
             },
           },
           {
-            text: "最近一个月",
+            text: this.$t('mes.expireRemind.lastMonth'),
             onClick(picker) {
               const end = new Date();
               const start = new Date();
@@ -242,7 +252,7 @@ export default {
             },
           },
           {
-            text: "最近三个月",
+            text: this.$t('mes.expireRemind.lastThreeMonths'),
             onClick(picker) {
               const end = new Date();
               const start = new Date();
@@ -251,26 +261,8 @@ export default {
             },
           },
         ],
-      },
-      cabinets: [], //物资所属柜
-      value2: "",
-      value3: "",
-
-      // 表单参数
-      form: {},
-      // 表单校验
-      rules: {
-        teamCode: [
-          { required: true, message: "班组编号不能为空", trigger: "blur" },
-        ],
-        teamName: [
-          { required: true, message: "班组名称不能为空", trigger: "blur" },
-        ],
-        calendarType: [
-          { required: true, message: "清选择班组类型", trigger: "blur" },
-        ],
-      },
-    };
+      };
+    }
   },
   created() {
     this.getList();

+ 90 - 136
src/views/mes/material/inspectionplan/index.vue

@@ -9,18 +9,18 @@
       label-width="90px"
       @submit.native.prevent
     >
-      <el-form-item label="计划名称" prop="planName" v-if="!visibleSelect">
+      <el-form-item :label="$t('mes.inspectionPlan.planName')" prop="planName" v-if="!visibleSelect">
         <el-input
           v-model="queryParams.planName"
-          placeholder="请输入计划名称"
+          :placeholder="$t('mes.inspectionPlan.planNamePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="物资柜" prop="cabinetId">
+      <el-form-item :label="$t('mes.inspectionPlan.cabinet')" prop="cabinetId">
         <el-select
           v-model="queryParams.cabinetId"
-          placeholder="请选择检查的物资柜"
+          :placeholder="$t('mes.inspectionPlan.cabinetPlaceholder')"
           clearable
           :disabled="visibleSelect"
         >
@@ -32,24 +32,24 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="计划日期">
+      <el-form-item :label="$t('mes.inspectionPlan.planDate')">
         <el-date-picker
           :default-time="['00:00:00', '23:59:59']"
           v-model="createTime"
           type="datetimerange"
           :picker-options="pickerOptions"
           range-separator="-"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
+          :start-placeholder="$t('common.startDate')"
+          :end-placeholder="$t('common.endDate')"
           align="right"
           @change="handleClearTime"
         >
         </el-date-picker>
       </el-form-item>
-      <el-form-item label="检察员" prop="checkUserName">
+      <el-form-item :label="$t('mes.inspectionPlan.checkUser')" prop="checkUserName">
         <el-select
           v-model="queryParams.checkUserName"
-          placeholder="请选择检察员"
+          :placeholder="$t('mes.inspectionPlan.checkUserPlaceholder')"
           clearable
         >
           <el-option
@@ -60,8 +60,8 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="状态" prop="status">
-        <el-select v-model="queryParams.status" placeholder="状态">
+      <el-form-item :label="$t('common.status')" prop="status">
+        <el-select v-model="queryParams.status" :placeholder="$t('common.status')">
           <el-option
             v-for="dict in dict.type.checking_status"
             :key="dict.value"
@@ -77,14 +77,14 @@
           icon="el-icon-search"
           size="mini"
           @click="handleQuery"
-        >搜索
+        >{{ $t('common.search') }}
         </el-button>
         <el-button
           v-no-more-click
           icon="el-icon-refresh"
           size="mini"
           @click="resetQuery"
-        >重置
+        >{{ $t('common.reset') }}
         </el-button>
       </el-form-item>
     </el-form>
@@ -99,7 +99,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['iscs:plan:add']"
-        >新增
+        >{{ $t('common.add') }}
         </el-button>
       </el-col>
       <!--       <el-col :span="1.5">-->
@@ -127,34 +127,34 @@
         <el-col :span="2" style="margin-top: 8px">
           <el-checkbox style="transform: scale(1.5);" v-model="autoConfig.startStatus" @change="handleClickStatus"
           ></el-checkbox>
-          <span style="margin-left: 6%;">启动自动创建</span>
+          <span style="margin-left: 6%;">{{ $t('mes.inspectionPlan.enableAutoCreate') }}</span>
         </el-col>
         <el-col :span="4">
-          <el-form-item label="计划频率">
+          <el-form-item :label="$t('mes.inspectionPlan.planFrequency')">
             <el-select
               :disabled="!autoConfig.startStatus"
               v-model="autoConfig.planFrequency"
-              placeholder="请选择计划频率"
+              :placeholder="$t('mes.inspectionPlan.planFrequencyPlaceholder')"
               clearable
               @change="handleFrequencyChange"
             >
               <el-option
-                label="月"
+                :label="$t('mes.inspectionPlan.month')"
                 value="月"
               />
               <el-option
-                label="周"
+                :label="$t('mes.inspectionPlan.week')"
                 value="周"
               />
             </el-select>
           </el-form-item>
         </el-col>
         <el-col :span="4">
-          <el-form-item label="计划日期">
+          <el-form-item :label="$t('mes.inspectionPlan.planDate')">
             <el-select
               :disabled="!autoConfig.startStatus"
               v-model="autoConfig.planDate"
-              placeholder="请选择计划日期"
+              :placeholder="$t('mes.inspectionPlan.planDateSelectPlaceholder')"
               clearable
               @change="handleClickAuto"
             >
@@ -168,11 +168,11 @@
           </el-form-item>
         </el-col>
         <el-col :span="5.5">
-          <el-form-item label="检察员">
+          <el-form-item :label="$t('mes.inspectionPlan.checkUser')">
             <el-select
               :disabled="!autoConfig.startStatus"
               v-model="autoConfig.checkUserId"
-              placeholder="请选择检察员"
+              :placeholder="$t('mes.inspectionPlan.checkUserPlaceholder')"
               clearable
               @change="handleClickAuto"
             >
@@ -186,7 +186,7 @@
           </el-form-item>
         </el-col>
         <el-col :span="5.5 " style="margin-top: 8px">
-          <span>(*自动创建的检查计划,覆盖所有物资柜)</span>
+          <span>{{ $t('mes.inspectionPlan.autoCreateTip') }}</span>
         </el-col>
       </el-form>
 
@@ -198,11 +198,11 @@
       @selection-change="handleSelectionChange"
     >
       <!-- <el-table-column type="selection" width="55" align="center" /> -->
-      <el-table-column label="计划编号" align="center" prop="planId">
+      <el-table-column :label="$t('mes.inspectionPlan.planId')" align="center" prop="planId">
       </el-table-column>
-      <el-table-column label="计划名称" align="center" prop="planName">
+      <el-table-column :label="$t('mes.inspectionPlan.planName')" align="center" prop="planName">
       </el-table-column>
-      <el-table-column label="物资柜" align="center" prop="cabinetName">
+      <el-table-column :label="$t('mes.inspectionPlan.cabinet')" align="center" prop="cabinetName">
         <template slot-scope="scope">
           <el-tooltip :content="scope.row.cabinetName" placement="top">
             <span style="color:#1890ff;cursor: pointer" @click="PlanDetail(scope.row)"
@@ -210,17 +210,17 @@
           </el-tooltip>
         </template>
       </el-table-column>
-      <el-table-column label="计划日期" align="center" prop="planDate">
+      <el-table-column :label="$t('mes.inspectionPlan.planDate')" align="center" prop="planDate">
         <template slot-scope="scope">
           {{ scope.row.planDate }}
         </template>
       </el-table-column>
-      <el-table-column label="检察员" align="center" prop="checkUserName">
+      <el-table-column :label="$t('mes.inspectionPlan.checkUser')" align="center" prop="checkUserName">
         <template slot-scope="scope">
           {{ scope.row.checkUserName }}
         </template>
       </el-table-column>
-      <el-table-column label="状态" align="center" prop="status">
+      <el-table-column :label="$t('common.status')" align="center" prop="status">
         <template slot-scope="scope">
           <dict-tag
             :options="dict.type.checking_status"
@@ -228,13 +228,13 @@
           />
         </template>
       </el-table-column>
-      <el-table-column label="检查记录" align="center" prop="status">
+      <el-table-column :label="$t('mes.inspectionPlan.checkRecord')" align="center" prop="status">
         <template slot-scope="scope">
-          <el-button type="text" @click="goto(scope.row)">查看</el-button>
+          <el-button type="text" @click="goto(scope.row)">{{ $t('common.view') }}</el-button>
         </template>
       </el-table-column>
       <el-table-column
-        label="操作"
+        :label="$t('common.operation')"
         align="center"
         class-name="small-padding fixed-width"
       >
@@ -247,7 +247,7 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['iscs:plan:query']"
-          >修改
+          >{{ $t('common.edit') }}
           </el-button>
 
           <el-button
@@ -257,7 +257,7 @@
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['iscs:plan:remove']"
-          >删除
+          >{{ $t('common.delete') }}
           </el-button>
         </template>
       </el-table-column>
@@ -276,20 +276,20 @@
         <span class="title">{{ title }}</span>
       </div>
       <el-form ref="form" :model="form" :rules="rules" label-width="110px">
-        <el-form-item label="计划名称" prop="planName">
-          <el-input v-model="form.planName" placeholder="请输入计划名称"/>
+        <el-form-item :label="$t('mes.inspectionPlan.planName')" prop="planName">
+          <el-input v-model="form.planName" :placeholder="$t('mes.inspectionPlan.planNamePlaceholder')"/>
         </el-form-item>
-        <el-form-item label="所属区域" prop="workstationId">
+        <el-form-item :label="$t('mes.inspectionPlan.workstation')" prop="workstationId">
           <treeselect style="width: 348px" v-model="form.workstationId" :options="workstationOption"
-                      :normalizer="normalizer" placeholder="选择所属区域"
+                      :normalizer="normalizer" :placeholder="$t('mes.inspectionPlan.workstationPlaceholder')"
           />
         </el-form-item>
-        <el-form-item label="物资柜" prop="cabinetIds">
+        <el-form-item :label="$t('mes.inspectionPlan.cabinet')" prop="cabinetIds">
           <el-select
             :disabled="visibleSelect"
             style="width: 348px"
             v-model="form.cabinetIds"
-            placeholder="请选择需要检查的物资柜"
+            :placeholder="$t('mes.inspectionPlan.cabinetSelectPlaceholder')"
             multiple
             clearable
           >
@@ -301,11 +301,11 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="计划日期" prop="planDate">
+        <el-form-item :label="$t('mes.inspectionPlan.planDate')" prop="planDate">
           <el-date-picker
             style="width: 350px"
             v-model="form.planDate"
-            placeholder="请选择日期"
+            :placeholder="$t('mes.inspectionPlan.planDatePlaceholder')"
             :picker-options="FormpickerOptions"
             align="right"
           >
@@ -313,11 +313,11 @@
         </el-form-item>
 
 
-        <el-form-item label="检察员" prop="checkUserId">
+        <el-form-item :label="$t('mes.inspectionPlan.checkUser')" prop="checkUserId">
           <el-select
             style="width: 348px"
             v-model="form.checkUserId"
-            placeholder="请选择检察员"
+            :placeholder="$t('mes.inspectionPlan.checkUserPlaceholder')"
             clearable
           >
             <el-option
@@ -333,23 +333,23 @@
 
       <div slot="footer" class="dialog-footer">
         <el-button v-no-more-click type="primary" @click="submitForm"
-        >确 定
+        >{{ $t('common.confirm') }}
         </el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
     <!--    签名弹窗-->
     <el-dialog :visible.sync="openTable" width="800px" append-to-body>
       <div slot="title" class="dialog-title">
         <i></i>
-        <span class="title">巡检物资柜详情</span>
+        <span class="title">{{ $t('mes.inspectionPlan.cabinetDetail') }}</span>
       </div>
       <el-table v-loading="loading" :data="PlanDetailTableList">
-        <el-table-column label="计划名称" align="center" prop="planName">
+        <el-table-column :label="$t('mes.inspectionPlan.planName')" align="center" prop="planName">
         </el-table-column>
-        <el-table-column label="巡检物资柜" align="center" prop="cabinetName">
+        <el-table-column :label="$t('mes.inspectionPlan.inspectionCabinet')" align="center" prop="cabinetName">
         </el-table-column>
-        <el-table-column label="签名" align="left" prop="signatureImg">
+        <el-table-column :label="$t('mes.inspectionPlan.signature')" align="left" prop="signatureImg">
           <template slot-scope="scope">
             <div class="img-box" v-if="scope.row.signatureImg">
               <el-image
@@ -369,36 +369,36 @@
             <span v-else>-</span>
           </template>
         </el-table-column>
-        <el-table-column label="操作" align="left" prop="">
+        <el-table-column :label="$t('common.operation')" align="left" prop="">
           <template slot-scope="scope">
-            <el-button type="text" @click="PlanDialogDetail(scope.row)">详情</el-button>
+            <el-button type="text" @click="PlanDialogDetail(scope.row)">{{ $t('mes.inspectionPlan.detail') }}</el-button>
           </template>
         </el-table-column>
       </el-table>
       <div slot="footer" class="dialog-footer">
-        <el-button v-no-more-click @click="cancel">关 闭</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.close') }}</el-button>
       </div>
     </el-dialog>
     <!--  签名详情弹窗-->
     <el-dialog :visible.sync="openRecord" width="1500px" append-to-body>
       <div slot="title" class="dialog-title">
         <i></i>
-        <span class="title">物资柜检查记录</span>
+        <span class="title">{{ $t('mes.inspectionPlan.cabinetCheckRecord') }}</span>
       </div>
       <el-table v-loading="loading" :data="RecordList">
-        <el-table-column label="计划名称" align="center" prop="planName" width="200">
+        <el-table-column :label="$t('mes.inspectionPlan.planName')" align="center" prop="planName" width="200">
           <template slot-scope="scope">
             {{ scope.row.planName }}
           </template>
         </el-table-column>
-        <el-table-column label="物资柜" align="center" prop="cabinetName">
+        <el-table-column :label="$t('mes.inspectionPlan.cabinet')" align="center" prop="cabinetName">
         </el-table-column>
-        <el-table-column label="物资编号" align="center" prop="materialsId">
+        <el-table-column :label="$t('mes.inspectionPlan.materialsId')" align="center" prop="materialsId">
         </el-table-column>
-        <el-table-column label="物资名称" align="center" prop="materialsName"/>
-        <el-table-column label="物资类型" align="center" prop="materialsTypeName"/>
+        <el-table-column :label="$t('mes.inspectionPlan.materialsName')" align="center" prop="materialsName"/>
+        <el-table-column :label="$t('mes.inspectionPlan.materialsType')" align="center" prop="materialsTypeName"/>
         <el-table-column
-          label="物资图片"
+          :label="$t('mes.inspectionPlan.materialsPicture')"
           align="center"
           prop="materialsTypePicture"
         >
@@ -412,10 +412,10 @@
             <span v-else>-</span>
           </template>
         </el-table-column>
-        <el-table-column label="RFID" align="center" prop="materialsRfid">
+        <el-table-column :label="$t('mes.inspectionPlan.rfid')" align="center" prop="materialsRfid">
         </el-table-column>
         <el-table-column
-          label="检查时间"
+          :label="$t('mes.inspectionPlan.checkTime')"
           align="center"
           prop="createTime"
           width="250"
@@ -424,12 +424,12 @@
             {{ scope.row.createTime }}
           </template>
         </el-table-column>
-        <el-table-column label="状态" align="center" prop="status">
+        <el-table-column :label="$t('common.status')" align="center" prop="status">
           <template slot-scope="scope">
             <dict-tag :options="dict.type.checks_status" :value="scope.row.status"/>
           </template>
         </el-table-column>
-        <el-table-column label="异常原因" align="center" prop="reason">
+        <el-table-column :label="$t('mes.inspectionPlan.exceptionReason')" align="center" prop="reason">
           <template slot-scope="scope">
             <dict-tag :options="dict.type.exceptions_status" :value="scope.row.reason"/>
           </template>
@@ -444,7 +444,7 @@
         @pagination="handlePagination"
       />
       <div slot="footer" class="dialog-footer">
-        <el-button v-no-more-click @click="cancelDetail">关 闭</el-button>
+        <el-button v-no-more-click @click="cancelDetail">{{ $t('common.close') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -538,52 +538,6 @@ export default {
       cabinets: [], //物资所属柜
       planPersonOption: [], // 检查人员
       workstationOption: [],//所属岗位
-      // 表单校验
-      rules: {
-        planDate: [
-          { required: true, message: '日期不能为空', trigger: 'blur' }
-        ],
-        planName: [
-          { required: true, message: '计划名称不能为空', trigger: 'blur' }
-        ],
-        checkUserId: [
-          { required: true, message: '检察员不能为空', trigger: 'blur' }
-        ],
-        cabinetIds: [
-          { required: true, message: '物资柜不能为空', trigger: 'blur' }
-        ]
-      },
-      pickerOptions: {
-        shortcuts: [
-          {
-            text: '最近一周',
-            onClick(picker) {
-              const end = new Date()
-              const start = new Date()
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
-              picker.$emit('pick', [start, end])
-            }
-          },
-          {
-            text: '最近一个月',
-            onClick(picker) {
-              const end = new Date()
-              const start = new Date()
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
-              picker.$emit('pick', [start, end])
-            }
-          },
-          {
-            text: '最近三个月',
-            onClick(picker) {
-              const end = new Date()
-              const start = new Date()
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
-              picker.$emit('pick', [start, end])
-            }
-          }
-        ]
-      },
       FormpickerOptions: {
         disabledDate(time) {
           return time.getTime() < Date.now() - 8.64e7
@@ -697,7 +651,7 @@ export default {
       updateAutomaticConfig(data).then(res => {
         console.log(res, '自动创建设置成功')
         if (res.data) {
-          this.$message.success('更新成功')
+          this.$message.success(this.$t('mes.inspectionPlan.updateSuccess'))
         }
       })
     },
@@ -714,13 +668,13 @@ export default {
         })
       } else if (frequency === '周') {
         this.planDateOptions = [
-          { value: 1, label: '周一' },
-          { value: 2, label: '周二' },
-          { value: 3, label: '周三' },
-          { value: 4, label: '周四' },
-          { value: 5, label: '周五' },
-          { value: 6, label: '周六' },
-          { value: 7, label: '周日' }
+          { value: 1, label: this.$t('mes.inspectionPlan.monday') },
+          { value: 2, label: this.$t('mes.inspectionPlan.tuesday') },
+          { value: 3, label: this.$t('mes.inspectionPlan.wednesday') },
+          { value: 4, label: this.$t('mes.inspectionPlan.thursday') },
+          { value: 5, label: this.$t('mes.inspectionPlan.friday') },
+          { value: 6, label: this.$t('mes.inspectionPlan.saturday') },
+          { value: 7, label: this.$t('mes.inspectionPlan.sunday') }
         ]
       } else {
         this.planDateOptions = []
@@ -751,13 +705,13 @@ export default {
         // 如果频率是周,将 planDate 转换为对应的中文星期
         if (res.data.planFrequency === '周') {
           const weekMap = {
-            1: '周一',
-            2: '周二',
-            3: '周三',
-            4: '周四',
-            5: '周五',
-            6: '周六',
-            7: '周日'
+            1: this.$t('mes.inspectionPlan.monday'),
+            2: this.$t('mes.inspectionPlan.tuesday'),
+            3: this.$t('mes.inspectionPlan.wednesday'),
+            4: this.$t('mes.inspectionPlan.thursday'),
+            5: this.$t('mes.inspectionPlan.friday'),
+            6: this.$t('mes.inspectionPlan.saturday'),
+            7: this.$t('mes.inspectionPlan.sunday')
           }
           this.autoConfig.planDate = weekMap[res.data.planDate] || res.data.planDate
         }
@@ -851,11 +805,11 @@ export default {
       const names = cabinetName.split(',')
       if (names.length == 1) {
         // return `${names.length}个 (${names[0]})`
-        return `${names.length}`
+        return `${names.length}${this.$t('mes.inspectionPlan.countUnit')}`
       }
       if (names.length > 1) {
         // return `${names.length}个 (${names[0]}...)`
-        return `${names.length}`
+        return `${names.length}${this.$t('mes.inspectionPlan.countUnit')}`
       }
       return names[0]
     },
@@ -917,12 +871,12 @@ export default {
       this.reset()
       this.open = true
       this.form.workstationId = null
-      this.title = '新增检查计划'
+      this.title = this.$t('mes.inspectionPlan.addPlan')
       this.optType = 'add'
       if (this.visibleSelect) {
         this.form.cabinetIds = [this.cabinetId]
       }
-      this.form.planName = `物资检查计划${this.formatELTime(new Date())}`
+      this.form.planName = `${this.$t('mes.inspectionPlan.planNamePrefix')}${this.formatELTime(new Date())}`
     },
 
     formatELTime(date) {
@@ -943,7 +897,7 @@ export default {
       selectPlanById(row.planId).then((response) => {
         this.form = response.data
         this.open = true
-        this.title = '修改检查计划'
+        this.title = this.$t('mes.inspectionPlan.editPlan')
         this.optType = 'edit'
       })
     },
@@ -956,7 +910,7 @@ export default {
             this.form.planDate = this.formatELTime(this.form.planDate)
             updatePlan(this.form).then((response) => {
               console.log(response, '修改返回')
-              this.$modal.msgSuccess('修改成功')
+              this.$modal.msgSuccess(this.$t('mes.inspectionPlan.editSuccess'))
               this.open = false
               this.getList()
             })
@@ -964,7 +918,7 @@ export default {
             this.form.planDate = this.formatELTime(this.form.planDate)
             addPlan(this.form).then((response) => {
               console.log(response, '新增返回')
-              this.$modal.msgSuccess('新增成功')
+              this.$modal.msgSuccess(this.$t('mes.inspectionPlan.addSuccess'))
               this.open = false
               this.getList()
             })
@@ -1017,13 +971,13 @@ export default {
     handleDelete(row) {
       const checkIds = row.planId || this.ids
       this.$modal
-        .confirm('是否确认删除所选数据项?')
+        .confirm(this.$t('mes.inspectionPlan.deleteConfirm'))
         .then(function() {
           return deletePlan(checkIds)
         })
         .then(() => {
           this.getList()
-          this.$modal.msgSuccess('删除成功')
+          this.$modal.msgSuccess(this.$t('mes.inspectionPlan.deleteSuccess'))
         })
         .catch(() => {
         })

+ 59 - 56
src/views/mes/material/instructions/index.vue

@@ -9,25 +9,25 @@
       label-width="100px"
       @submit.native.prevent
     >
-      <el-form-item label="标题" prop="instructionsTitle">
+      <el-form-item :label="$t('mes.instructions.title')" prop="instructionsTitle">
         <el-input
           v-model="queryParams.instructionsTitle"
-          placeholder="请输入标题"
+          :placeholder="$t('mes.instructions.titlePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="物资类型" prop="materialsTypeId">
+      <el-form-item :label="$t('mes.instructions.materialsType')" prop="materialsTypeId">
         <treeselect
           style="width: 200px"
           v-model="queryParams.materialsTypeId"
           :options="materialstypeOptions"
           :normalizer="materialnormalizer"
-          placeholder="请选择物资类型"
+          :placeholder="$t('mes.instructions.materialsTypePlaceholder')"
         />
       </el-form-item>
-      <el-form-item label="类型" prop="fileType">
-        <el-select v-model="queryParams.fileType" placeholder="类型">
+      <el-form-item :label="$t('mes.instructions.fileType')" prop="fileType">
+        <el-select v-model="queryParams.fileType" :placeholder="$t('mes.instructions.fileType')">
           <el-option
             v-for="dict in dict.type.file_type"
             :key="dict.value"
@@ -43,14 +43,14 @@
           icon="el-icon-search"
           size="mini"
           @click="handleQuery"
-          >搜索
+          >{{ $t('common.search') }}
         </el-button>
         <el-button
           v-no-more-click
           icon="el-icon-refresh"
           size="mini"
           @click="resetQuery"
-          >重置
+          >{{ $t('common.reset') }}
         </el-button>
       </el-form-item>
     </el-form>
@@ -65,7 +65,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['iscs:instructions:add']"
-          >新增
+          >{{ $t('common.add') }}
         </el-button>
       </el-col>
 
@@ -79,7 +79,7 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['iscs:instructions:remove']"
-          >批量删除
+          >{{ $t('common.batchDelete') }}
         </el-button>
       </el-col>
       <right-toolbar
@@ -95,7 +95,7 @@
     >
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column
-        label="说明编号"
+        :label="$t('mes.instructions.instructionsId')"
         align="center"
         prop="instructionsId"
         width="200"
@@ -103,20 +103,20 @@
       </el-table-column>
       <el-table-column
         prop="orderNum"
-        label="排序"
+        :label="$t('mes.instructions.orderNum')"
         width="100"
       ></el-table-column>
       <el-table-column
-        label="标题"
+        :label="$t('mes.instructions.title')"
         align="center"
         prop="instructionsTitle"
       />
       <el-table-column
-        label="物资类型"
+        :label="$t('mes.instructions.materialsType')"
         align="center"
         prop="materialsTypeName"
       />
-      <el-table-column label="类型" align="center" prop="fileType">
+      <el-table-column :label="$t('mes.instructions.fileType')" align="center" prop="fileType">
         <template slot-scope="scope">
           <dict-tag
             :options="dict.type.file_type"
@@ -124,22 +124,22 @@
           />
         </template>
       </el-table-column>
-      <el-table-column label="文件" align="center" prop="fileUrl">
+      <el-table-column :label="$t('mes.instructions.file')" align="center" prop="fileUrl">
         <template slot-scope="scope">
           <a :href="scope.row.fileUrl" target="_blank" style="color: #1890ff"
-            >查看</a
+            >{{ $t('common.view') }}</a
           >
         </template>
       </el-table-column>
-      <el-table-column label="详情" align="center" prop="fileUrl">
+      <el-table-column :label="$t('mes.instructions.detail')" align="center" prop="fileUrl">
         <template slot-scope="scope">
-          <el-button type="text" @click="detailCheck(scope.row)">查看</el-button>
+          <el-button type="text" @click="detailCheck(scope.row)">{{ $t('common.view') }}</el-button>
         </template>
       </el-table-column>
-      <el-table-column label="添加时间" prop="createTime" align="center">
+      <el-table-column :label="$t('mes.instructions.createTime')" prop="createTime" align="center">
       </el-table-column>
       <el-table-column
-        label="操作"
+        :label="$t('common.operation')"
         align="center"
         class-name="small-padding fixed-width"
       >
@@ -151,7 +151,7 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['iscs:instructions:edit']"
-            >修改
+            >{{ $t('common.edit') }}
           </el-button>
           <el-button
             v-no-more-click
@@ -160,7 +160,7 @@
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['iscs:instructions:remove']"
-            >删除
+            >{{ $t('common.delete') }}
           </el-button>
         </template>
       </el-table-column>
@@ -180,7 +180,7 @@
         <span class="title">{{ title }}</span>
       </div>
       <el-form ref="form" :model="form" :rules="rules" label-width="90px">
-        <el-form-item label="显示排序" prop="orderNum">
+        <el-form-item :label="$t('mes.instructions.orderNum')" prop="orderNum">
           <el-input-number
             style="width: 350px"
             v-model="form.orderNum"
@@ -188,26 +188,26 @@
             :min="0"
           />
         </el-form-item>
-        <el-form-item label="标题" prop="instructionsTitle">
+        <el-form-item :label="$t('mes.instructions.title')" prop="instructionsTitle">
           <el-input
             style="width: 350px"
             v-model="form.instructionsTitle"
-            placeholder="请输入标题"
+            :placeholder="$t('mes.instructions.titlePlaceholder')"
           />
         </el-form-item>
-        <el-form-item label="物资类型" prop="materialsTypeId">
+        <el-form-item :label="$t('mes.instructions.materialsType')" prop="materialsTypeId">
           <treeselect
             style="width: 350px"
             v-model="form.materialsTypeId"
             :options="materialstypeOptions"
             :normalizer="materialnormalizer"
-            placeholder="选择物资类型"
+            :placeholder="$t('mes.instructions.materialsTypeSelectPlaceholder')"
           />
         </el-form-item>
-        <el-form-item label="类型" prop="fileType">
+        <el-form-item :label="$t('mes.instructions.fileType')" prop="fileType">
           <el-select
             v-model="form.fileType"
-            placeholder="文件类型"
+            :placeholder="$t('mes.instructions.fileTypePlaceholder')"
             style="width: 350px"
           >
             <el-option
@@ -219,7 +219,7 @@
           </el-select>
         </el-form-item>
 
-        <el-form-item label="文件" prop="fileUrl">
+        <el-form-item :label="$t('mes.instructions.file')" prop="fileUrl">
           <div v-if="form.fileUrl">
             <div v-if="isVideo(form.fileUrl)">
               <video
@@ -242,7 +242,7 @@
               type="danger"
               size="mini"
               @click="deleteFile"
-              >删除</el-button
+              >{{ $t('common.delete') }}</el-button
             >
           </div>
           <div v-else>
@@ -254,7 +254,7 @@
               size="mini"
               @click="handleFileUpload"
               v-hasPermi="['iscs:sop:import']"
-              >导入</el-button
+              >{{ $t('common.import') }}</el-button
             >
           </div>
         </el-form-item>
@@ -263,9 +263,9 @@
 
       <div slot="footer" class="dialog-footer">
         <el-button v-no-more-click type="primary" @click="submitForm" :loading="loadingDialog"
-        >{{ loadingDialog?'正在上传':'确认' }}
+        >{{ loadingDialog ? $t('mes.instructions.uploading') : $t('common.confirm') }}
         </el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
 
     </el-dialog>
@@ -289,17 +289,17 @@
         drag
       >
         <i class="el-icon-upload"></i>
-        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <div class="el-upload__text">{{ $t('mes.instructions.uploadTip') }}</div>
         <div class="el-upload__tip text-center" slot="tip">
-          <span>mp4、pdf格式文件。</span>
+          <span>{{ $t('mes.instructions.fileFormatTip') }}</span>
         </div>
       </el-upload>
       <div slot="footer" class="dialog-footer">
         <el-button v-no-more-click type="primary" @click="submitFileForm"
-          >确 定</el-button
+          >{{ $t('common.confirm') }}</el-button
         >
         <el-button v-no-more-click @click="upload.open = false"
-          >取 消</el-button
+          >{{ $t('common.cancel') }}</el-button
         >
       </div>
     </el-dialog>
@@ -365,15 +365,6 @@ export default {
       form: {
         fileUrl: "",
       },
-      // 表单校验
-      rules: {
-        materialsName: [
-          { required: true, message: "物资名称不能为空", trigger: "blur" },
-        ],
-        materialsTypeId: [
-          { required: true, message: "物资类型不能为空", trigger: "blur" },
-        ],
-      },
       materialstypeOptions: [],
       // 用户导入参数
       upload: {
@@ -392,6 +383,18 @@ export default {
       },
     };
   },
+  computed: {
+    rules() {
+      return {
+        materialsName: [
+          { required: true, message: this.$t('mes.instructions.materialsNameRequired'), trigger: "blur" },
+        ],
+        materialsTypeId: [
+          { required: true, message: this.$t('mes.instructions.materialsTypeRequired'), trigger: "blur" },
+        ],
+      };
+    }
+  },
   created() {
     this.getList();
     this.getTreeselect();
@@ -410,7 +413,7 @@ export default {
       return url && (url.endsWith(".pdf") || url.includes("pdf"));
     },
     handleFileUpload() {
-      this.upload.title = "导入";
+      this.upload.title = this.$t('common.import');
       this.upload.open = true;
     },
     deleteFile() {
@@ -478,7 +481,7 @@ export default {
         "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
           response.msg +
           "</div>",
-        "导入结果",
+        this.$t('common.importResult'),
         { dangerouslyUseHTMLString: true }
       );
       this.getList();
@@ -518,7 +521,7 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "新增物资说明";
+      this.title = this.$t('mes.instructions.addInstructions');
       this.optType = "add";
     },
 
@@ -528,7 +531,7 @@ export default {
       getInstructionsInfo(row.instructionsId).then((response) => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改物资说明";
+        this.title = this.$t('mes.instructions.editInstructions');
         this.optType = "edit";
       });
     },
@@ -542,7 +545,7 @@ export default {
           if (this.form.instructionsId != null) {
             updateInstructions(this.form).then((response) => {
               console.log(response, "修改返回");
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('mes.instructions.editSuccess'));
               this.open = false;
               this.getList();
             }).finally(() => {
@@ -552,7 +555,7 @@ export default {
             console.log(this.form, "新增参数");
             addInstructions(this.form).then((response) => {
               console.log(response, "新增返回");
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('mes.instructions.addSuccess'));
               this.open = false;
               this.getList();
             }).finally(() => {
@@ -567,13 +570,13 @@ export default {
     handleDelete(row) {
       const instructionsId = row.instructionsId || this.ids;
       this.$modal
-        .confirm('是否确认删除所选数据项?')
+        .confirm(this.$t('mes.instructions.deleteConfirm'))
         .then(function () {
           return delInstructions(instructionsId);
         })
         .then(() => {
           this.getList();
-          this.$modal.msgSuccess("删除成功");
+          this.$modal.msgSuccess(this.$t('mes.instructions.deleteSuccess'));
         })
         .catch(() => {});
     },

+ 3 - 3
src/views/mes/material/inventory/index.vue

@@ -25,13 +25,13 @@
                size="mini"
                @click="handleExport"
 
-    >导出</el-button>
+    >{{ $t('common.export') }}</el-button>
     <!-- 表格部分 -->
     <div class="table-container">
       <table v-show="currentTab === '0' || currentTab === '1' || currentTab === '3'">
         <thead>
         <tr>
-          <th>物资类型</th>
+          <th>{{ $t('mes.inventory.materialsType') }}</th>
           <th v-for="cabinet in cabinets" :key="cabinet.cabinetId">{{ cabinet.cabinetName }}</th>
         </tr>
         </thead>
@@ -51,7 +51,7 @@
       <table v-show="currentTab === '2' || currentTab === '4' || currentTab === '5'">
         <thead>
         <tr>
-          <th>物资类型</th>
+          <th>{{ $t('mes.inventory.materialsType') }}</th>
           <th v-for="cabinet in cabinets" :key="cabinet.cabinetId">{{ cabinet.cabinetName }}</th>
         </tr>
         </thead>

+ 55 - 95
src/views/mes/material/lockers/index.vue

@@ -1,8 +1,8 @@
 <template>
   <div class="app-container">
     <el-radio-group v-model="tabPosition" style="margin: 5px">
-      <el-radio-button label="first">物资柜位置</el-radio-button>
-      <el-radio-button label="second">物资柜列表</el-radio-button>
+      <el-radio-button label="first">{{ $t('mes.lockers.cabinetLocation') }}</el-radio-button>
+      <el-radio-button label="second">{{ $t('mes.lockers.cabinetList') }}</el-radio-button>
     </el-radio-group>
     <!-- 优化后带样式的无数据提示盒子 -->
     <div
@@ -16,7 +16,7 @@
     text-align: center;
   "
     >
-      暂无数据,请到基础数据菜单进行配置
+      {{ $t('mes.lockers.noDataTip') }}
     </div>
     <div
       style="
@@ -110,13 +110,13 @@
         >
           <div style="display: flex">
             <img :src="this.ExceptionTableImage2" style="width: 20px;height: 20px;margin: 10px" alt="">
-            <span style="margin: 10px">异常信息</span>
+            <span style="margin: 10px">{{ $t('mes.lockers.exceptionInfo') }}</span>
           </div>
 
           <el-table :data="exceptionTable">
-            <el-table-column label="物资柜" prop="loanFromName"></el-table-column>
-            <el-table-column label="异常类型" prop="exceptionType"></el-table-column>
-            <el-table-column label="异常信息" prop="status"></el-table-column>
+            <el-table-column :label="$t('mes.lockers.cabinet')" prop="loanFromName"></el-table-column>
+            <el-table-column :label="$t('mes.lockers.exceptionType')" prop="exceptionType"></el-table-column>
+            <el-table-column :label="$t('mes.lockers.exceptionInfo')" prop="status"></el-table-column>
           </el-table>
         </div>
 
@@ -131,7 +131,7 @@
           <div class="head-container">
             <el-input
               v-model="queryParams.workstationName"
-              placeholder="请输入区域名称"
+              :placeholder="$t('mes.lockers.workstationNamePlaceholder')"
               clearable
               size="small"
               prefix-icon="el-icon-search"
@@ -164,19 +164,19 @@
             v-show="showSearch"
             label-width="100px"
           >
-            <el-form-item label="物资柜编号" prop="cabinetId">
+            <el-form-item :label="$t('mes.lockers.cabinetId')" prop="cabinetId">
               <el-input
                 v-model="queryParams.cabinetId"
-                placeholder="请输入物资柜编号"
+                :placeholder="$t('mes.lockers.cabinetIdPlaceholder')"
                 clearable
                 oninput="value=value.replace(/[^\d.]/g,'')"
                 @keyup.enter.native="handleQuery"
               />
             </el-form-item>
-            <el-form-item label="物资柜名称" prop="cabinetName">
+            <el-form-item :label="$t('mes.lockers.cabinetName')" prop="cabinetName">
               <el-input
                 v-model="queryParams.cabinetName"
-                placeholder="请输入物资柜名称"
+                :placeholder="$t('mes.lockers.cabinetNamePlaceholder')"
                 clearable
                 @keyup.enter.native="handleQuery"
               />
@@ -198,7 +198,7 @@
                 icon="el-icon-search"
                 size="mini"
                 @click="handleQuery"
-              >搜索
+              >{{ $t('common.search') }}
               </el-button
               >
               <el-button
@@ -206,7 +206,7 @@
                 icon="el-icon-refresh"
                 size="mini"
                 @click="resetQuery"
-              >重置
+              >{{ $t('common.reset') }}
               </el-button
               >
             </el-form-item>
@@ -222,7 +222,7 @@
               size="mini"
               @click="handleAdd"
               v-hasPermi="['iscs:cabinet:add']"
-            >新增
+            >{{ $t('common.add') }}
             </el-button>
           </el-col>
           <right-toolbar
@@ -236,10 +236,10 @@
           @selection-change="handleSelectionChange"
         >
           <!--          <el-table-column type="selection" width="55" align="center"/>-->
-          <el-table-column label="物资柜编号" align="center" prop="cabinetId">
+          <el-table-column :label="$t('mes.lockers.cabinetId')" align="center" prop="cabinetId">
           </el-table-column>
-          <el-table-column label="物资柜名称" prop="cabinetName" width="150"/>
-          <el-table-column label="物资柜图片" prop="cabinetPicture" width="100">
+          <el-table-column :label="$t('mes.lockers.cabinetName')" prop="cabinetName" width="150"/>
+          <el-table-column :label="$t('mes.lockers.cabinetPicture')" prop="cabinetPicture" width="100">
             <template slot-scope="scope">
               <div class="img-box" v-if="scope.row.cabinetPicture">
                 <el-image
@@ -259,7 +259,7 @@
               <span v-else>-</span>
             </template>
           </el-table-column>
-          <el-table-column label="物资柜状态" align="center" prop="status">
+          <el-table-column :label="$t('mes.lockers.cabinetStatus')" align="center" prop="status">
             <template slot-scope="scope">
               <dict-tag
                 :options="dict.type.cabinet_status"
@@ -267,7 +267,7 @@
               />
             </template>
           </el-table-column>
-          <el-table-column label="异常类型" prop="exReason" width="100">
+          <el-table-column :label="$t('mes.lockers.exceptionType')" prop="exReason" width="100">
             <template slot-scope="scope">
               <dict-tag
                 :options="dict.type.exception_reason"
@@ -275,19 +275,19 @@
               />
             </template>
           </el-table-column>
-          <el-table-column label="物资柜详情" align="center">
+          <el-table-column :label="$t('mes.lockers.cabinetDetail')" align="center">
             <template slot-scope="scope">
               <el-button
                 v-no-more-click
                 size="mini"
                 type="text"
                 @click="handleLook(scope.row)"
-              >查看
+              >{{ $t('common.view') }}
               </el-button>
             </template>
           </el-table-column>
           <el-table-column
-            label="操作"
+            :label="$t('common.operation')"
             align="center"
             class-name="small-padding fixed-width"
           >
@@ -299,7 +299,7 @@
                 icon="el-icon-edit"
                 @click="handleUpdate(scope.row)"
                 v-hasPermi="['iscs:cabinet:edit']"
-              >修改
+              >{{ $t('common.edit') }}
               </el-button>
               <el-button
                 v-no-more-click
@@ -308,7 +308,7 @@
                 icon="el-icon-delete"
                 @click="handleDelete(scope.row)"
                 v-hasPermi="['iscs:cabinet:remove']"
-              >删除
+              >{{ $t('common.delete') }}
               </el-button>
             </template>
           </el-table-column>
@@ -329,37 +329,37 @@
         <span class="title">{{ title }}</span>
       </div>
       <el-form ref="form" :model="form" :rules="rules" label-width="110px">
-        <el-form-item label="物资柜编码" prop="cabinetCode">
+        <el-form-item :label="$t('mes.lockers.cabinetCode')" prop="cabinetCode">
           <el-input
             v-model="form.cabinetCode"
-            placeholder="请输入物资柜编码"
+            :placeholder="$t('mes.lockers.cabinetCodePlaceholder')"
             style="width: 200px; margin-right: 10px"
           />
           <el-switch
             v-model="autoGenFlag"
             active-color="#13ce66"
-            active-text="自动生成"
+            :active-text="$t('mes.lockers.autoGenerate')"
             @change="handleAutoGenChange(autoGenFlag)"
           >
           </el-switch>
         </el-form-item>
-        <el-form-item label="物资柜名称" prop="cabinetName">
+        <el-form-item :label="$t('mes.lockers.cabinetName')" prop="cabinetName">
           <el-input
             style="width: 348px"
             v-model="form.cabinetName"
-            placeholder="请输入物资柜名称"
+            :placeholder="$t('mes.lockers.cabinetNamePlaceholder')"
           />
         </el-form-item>
-        <el-form-item label="所属区域" prop="workstationId">
+        <el-form-item :label="$t('mes.lockers.workstation')" prop="workstationId">
           <treeselect
             style="width: 348px"
             v-model="form.workstationId"
             :options="marsOptions"
             :normalizer="Marsnormalizer"
-            placeholder="选择所属区域"
+            :placeholder="$t('mes.lockers.workstationPlaceholder')"
           />
         </el-form-item>
-        <el-form-item label="物资柜图片" prop="cabinetPicture">
+        <el-form-item :label="$t('mes.lockers.cabinetPicture')" prop="cabinetPicture">
           <ImageUploadSingle
             :limit="1"
             :value="form.cabinetPicture"
@@ -368,11 +368,11 @@
             @onRemoved="handleIconRemoved"
           ></ImageUploadSingle>
         </el-form-item>
-        <el-form-item label="备注" prop="remark">
+        <el-form-item :label="$t('common.remark')" prop="remark">
           <el-input
             v-model="form.remark"
             type="textarea"
-            placeholder="请输入内容"
+            :placeholder="$t('common.pleaseInput') + $t('common.remark')"
             style="width: 348px"
           />
         </el-form-item>
@@ -384,12 +384,12 @@
           type="primary"
           @click="cancel"
           v-if="optType == 'view'"
-        >返回
+        >{{ $t('common.back') }}
         </el-button>
         <el-button v-no-more-click type="primary" @click="submitForm" v-else
-        >确 定
+        >{{ $t('common.confirm') }}
         </el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
 
@@ -472,48 +472,8 @@ export default {
         1: 'table_map1', //使用中
         2: 'table_map3' //异常
       },
-      pickerOptions: {
-        shortcuts: [
-          {
-            text: '最近一周',
-            onClick(picker) {
-              const end = new Date()
-              const start = new Date()
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
-              picker.$emit('pick', [start, end])
-            }
-          },
-          {
-            text: '最近一个月',
-            onClick(picker) {
-              const end = new Date()
-              const start = new Date()
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
-              picker.$emit('pick', [start, end])
-            }
-          },
-          {
-            text: '最近三个月',
-            onClick(picker) {
-              const end = new Date()
-              const start = new Date()
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
-              picker.$emit('pick', [start, end])
-            }
-          }
-        ]
-      },
       // 表单参数
       form: {},
-      // 表单校验
-      rules: {
-        cabinetCode: [
-          { required: true, message: '物资柜编码不能为空', trigger: 'blur' }
-        ],
-        cabinetName: [
-          { required: true, message: '物资柜名称不能为空', trigger: 'blur' }
-        ]
-      },
       marsOptions: [], //岗位
       TicketListPage: [], //R&R岗位
 
@@ -608,15 +568,15 @@ export default {
         // 整合归还异常的柜子信息
         const misplacedCabinetDetails = misplacedCabinets.map(cabinet => ({
           loanFromName: cabinet,
-          exceptionType: '物资放错柜子',
-          status: `${misplacedMaterials.filter(material => material.cabinetName === cabinet).length}件物资放错`
+          exceptionType: this.$t('mes.lockers.misplacedCabinet'),
+            status: this.$t('mes.lockers.misplacedCount', { count: misplacedMaterials.filter(material => material.cabinetName === cabinet).length })
         }))
 
         // 整合损坏、过期的柜子信息
         const damagedOrExpiredCabinetDetails = damagedOrExpiredCabinets.map(cabinet => ({
           loanFromName: cabinet,
-          exceptionType: '物资过期损坏',
-          status: `${damagedOrExpiredMaterials.filter(material => material.cabinetName === cabinet).length}件物资过期或损坏`
+          exceptionType: this.$t('mes.lockers.expiredDamaged'),
+            status: this.$t('mes.lockers.expiredDamagedCount', { count: damagedOrExpiredMaterials.filter(material => material.cabinetName === cabinet).length })
         }))
 
         // 调用 MaterialsLoanExceptionPage 接口获取柜门未关闭的数据
@@ -632,8 +592,8 @@ export default {
             // 整合柜门未关闭的柜子信息
             const unClosedCabinetDetails = unClosedCabinets.map(cabinet => ({
               loanFromName: cabinet.loanFromName,
-              exceptionType: '超时未关柜门',
-              status: `柜门超过${this.calculateTimeDifference(cabinet.occurTime)}未关`
+              exceptionType: this.$t('mes.lockers.timeoutUnclosed'),
+              status: this.$t('mes.lockers.timeoutUnclosedStatus', { time: this.calculateTimeDifference(cabinet.occurTime) })
             }))
             // 合并所有结果
             const result = [
@@ -733,26 +693,26 @@ export default {
     },
     //辅助函数计算超时时间
     calculateTimeDifference(occurTime) {
-      if (!occurTime) return '未知'
+      if (!occurTime) return this.$t('mes.lockers.unknown')
 
       // 将时间字符串转换为 Date 对象
       const occurDate = new Date(occurTime)
       if (isNaN(occurDate.getTime())) {
         console.error('Invalid date format:', occurTime)
-        return '未知'
+        return this.$t('mes.lockers.unknown')
       }
 
       const currentTime = new Date().getTime()
       const timeDifference = (currentTime - occurDate.getTime()) / (1000 * 60) // 转换为分钟
 
       if (timeDifference < 1) {
-        return `${(timeDifference * 60).toFixed(0)}`
+        return `${(timeDifference * 60).toFixed(0)}${this.$t('mes.lockers.second')}`
       } else if (timeDifference < 60) {
-        return `${timeDifference.toFixed(1)}分钟`
+        return `${timeDifference.toFixed(1)}${this.$t('mes.lockers.minute')}`
       } else {
         const hours = Math.floor(timeDifference / 60)
         const minutes = (timeDifference % 60).toFixed(0)
-        return `${hours}小时${minutes}分钟`
+        return `${hours}${this.$t('mes.lockers.hour')}${minutes}${this.$t('mes.lockers.minute')}`
       }
     },
 
@@ -895,7 +855,7 @@ export default {
       this.reset()
       this.open = true
       this.form.workstationId = null
-      this.title = '新增物资柜信息'
+      this.title = this.$t('mes.lockers.addCabinetInfo')
       this.optType = 'add'
     },
 
@@ -905,7 +865,7 @@ export default {
       selectMaterialsCabinetById(row.cabinetId).then((response) => {
         this.form = response.data
         this.open = true
-        this.title = '修改物资柜信息'
+        this.title = this.$t('mes.lockers.editCabinetInfo')
         this.optType = 'edit'
       })
     },
@@ -916,14 +876,14 @@ export default {
           if (this.form.cabinetId != null) {
             updateMaterialsCabinet(this.form).then((response) => {
               console.log(response, '修改返回')
-              this.$modal.msgSuccess('修改成功')
+              this.$modal.msgSuccess(this.$t('mes.lockers.editSuccess'))
               this.open = false
               this.getList()
             })
           } else {
             addMaterialsCabinet(this.form).then((response) => {
               console.log(response, '新增返回')
-              this.$modal.msgSuccess('新增成功')
+              this.$modal.msgSuccess(this.$t('mes.lockers.addSuccess'))
               this.open = false
               this.getList()
             })
@@ -936,13 +896,13 @@ export default {
       const cabinetIds = row.cabinetId || this.ids
       const cabinetCodes = row.cabinetCode || this.codes
       this.$modal
-        .confirm('是否确认删除所选数据项?')
+        .confirm(this.$t('common.deleteConfirm'))
         .then(function() {
           return deleteMaterialsCabinet(cabinetIds)
         })
         .then(() => {
           this.getList()
-          this.$modal.msgSuccess('删除成功')
+          this.$modal.msgSuccess(this.$t('mes.lockers.deleteSuccess'))
         })
         .catch(() => {
         })

+ 120 - 118
src/views/mes/material/materialinformation/index.vue

@@ -10,14 +10,14 @@
       @submit.native.prevent
     >
       <el-form-item
-        :label="visibleSelect ? '物资柜' : '绑定物资柜'"
+        :label="visibleSelect ? $t('mes.materialInfo.materialsCabinet') : $t('mes.materialInfo.bindMaterialsCabinet')"
         prop="materialsCabinetId"
       >
         <el-select
           style="width: 215px"
           :disabled="visibleSelect"
           v-model="queryParams.materialsCabinetId"
-          placeholder="请选择物资柜"
+          :placeholder="$t('mes.materialInfo.materialsCabinetPlaceholder')"
         >
           <el-option
             v-for="dict in cabinets"
@@ -27,29 +27,29 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="物资名称" prop="materialsName">
+      <el-form-item :label="$t('mes.materialInfo.materialsName')" prop="materialsName">
         <el-input
           style="width: 215px"
           v-model="queryParams.materialsName"
-          placeholder="请输入物资名称"
+          :placeholder="$t('mes.materialInfo.materialsNamePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="物资类型" prop="materialsTypeId">
+      <el-form-item :label="$t('mes.materialInfo.materialsType')" prop="materialsTypeId">
         <treeselect
           style="width: 215px"
           v-model="queryParams.materialsTypeId"
           :options="machinerytypeOptions"
           :normalizer="normalizer"
-          placeholder="请选择物资类型"
+          :placeholder="$t('mes.materialInfo.materialsTypePlaceholder')"
         />
       </el-form-item>
-      <el-form-item label="物资规格种类" prop="propertyId">
+      <el-form-item :label="$t('mes.materialInfo.propertyType')" prop="propertyId">
         <el-select
           style="width: 215px"
           v-model="queryParams.propertyId"
-          placeholder="请选择物资规格种类"
+          :placeholder="$t('mes.materialInfo.propertyTypePlaceholder')"
           @change="handlePropertyChange"
         >
           <el-option
@@ -60,11 +60,11 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="物资规格" prop="recordId">
+      <el-form-item :label="$t('mes.materialInfo.properties')" prop="recordId">
         <el-select
           style="width: 215px"
           v-model="queryParams.recordId"
-          placeholder="请选择物资规格"
+          :placeholder="$t('mes.materialInfo.propertiesPlaceholder')"
           :disabled="!queryParams.propertyId"
         >
           <el-option
@@ -75,25 +75,25 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="RFID" prop="materialsRfid">
+      <el-form-item :label="$t('mes.materialInfo.rfid')" prop="materialsRfid">
         <el-input
           style="width: 215px"
           v-model="queryParams.materialsRfid"
-          placeholder="请输入RFID"
+          :placeholder="$t('mes.materialInfo.rfidPlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="供应商" prop="supplier">
+      <el-form-item :label="$t('mes.materialInfo.supplier')" prop="supplier">
         <el-input
           style="width: 215px"
           v-model="queryParams.supplier"
-          placeholder="请输入供应商"
+          :placeholder="$t('mes.materialInfo.supplierPlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="有效期截止" prop="">
+      <el-form-item :label="$t('mes.materialInfo.expirationDate')" prop="">
         <el-date-picker
           style="width: 215px"
           :default-time="['00:00:00', '23:59:59']"
@@ -101,18 +101,18 @@
           type="datetimerange"
           :picker-options="pickerOptions"
           range-separator="-"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
+          :start-placeholder="$t('common.startDate')"
+          :end-placeholder="$t('common.endDate')"
           align="right"
           @change="handleClearTime"
         >
         </el-date-picker>
       </el-form-item>
-      <el-form-item label="是否在柜中" prop="loanState">
+      <el-form-item :label="$t('mes.materialInfo.inCabinet')" prop="loanState">
         <el-select
           style="width: 215px"
           v-model="queryParams.loanState"
-          placeholder="是否在柜中"
+          :placeholder="$t('mes.materialInfo.inCabinetPlaceholder')"
         >
           <el-option
             v-for="dict in dict.type.material_status"
@@ -122,11 +122,11 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="状态" prop="status">
+      <el-form-item :label="$t('common.status')" prop="status">
         <el-select
           style="width: 215px"
           v-model="queryParams.status"
-          placeholder="物资状态"
+          :placeholder="$t('mes.materialInfo.statusPlaceholder')"
         >
           <el-option
             v-for="dict in dict.type.material_info_status"
@@ -144,14 +144,14 @@
           icon="el-icon-search"
           size="mini"
           @click="handleQuery"
-          >搜索
+          >{{ $t('common.search') }}
         </el-button>
         <el-button
           v-no-more-click
           icon="el-icon-refresh"
           size="mini"
           @click="resetQuery"
-          >重置
+          >{{ $t('common.reset') }}
         </el-button>
       </el-form-item>
     </el-form>
@@ -166,7 +166,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['iscs:materials:add']"
-          >新增
+          >{{ $t('common.add') }}
         </el-button>
       </el-col>
 
@@ -179,7 +179,7 @@
           size="mini"
           @click="handleImport"
           v-hasPermi="['iscs:materials:import']"
-          >批量新增
+          >{{ $t('mes.materialInfo.batchAdd') }}
         </el-button>
       </el-col>
       <el-col :span="1.5">
@@ -192,7 +192,7 @@
           size="mini"
           @click="handleBind"
           v-hasPermi="['iscs:materials:add']"
-          >绑定物资
+          >{{ $t('mes.materialInfo.bindMaterials') }}
         </el-button>
       </el-col>
       <el-col :span="1.5">
@@ -205,7 +205,7 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['iscs:materials:remove']"
-          >批量删除
+          >{{ $t('common.batchDelete') }}
         </el-button>
       </el-col>
       <right-toolbar
@@ -222,7 +222,7 @@
       <el-table-column type="selection" width="55" align="center" />
 
       <el-table-column
-        :label="visibleSelect ? '物资柜' : '绑定物资柜'"
+        :label="visibleSelect ? $t('mes.materialInfo.materialsCabinet') : $t('mes.materialInfo.bindMaterialsCabinet')"
         align="center"
         prop="cabinetName"
       >
@@ -231,21 +231,21 @@
           <span v-else>-</span>
         </template>
       </el-table-column>
-      <el-table-column label="物资编号" align="center" prop="materialsId">
+      <el-table-column :label="$t('mes.materialInfo.materialsId')" align="center" prop="materialsId">
       </el-table-column>
-      <el-table-column label="物资名称" align="center" prop="materialsName" />
+      <el-table-column :label="$t('mes.materialInfo.materialsName')" align="center" prop="materialsName" />
       <el-table-column
-        label="物资类型"
+        :label="$t('mes.materialInfo.materialsType')"
         align="center"
         prop="materialsTypeName"
       />
       <el-table-column
-        label="物资规格种类"
+        :label="$t('mes.materialInfo.propertyType')"
         align="center"
         prop="propertiesProperty"
       />
-      <el-table-column label="物资规格" align="center" prop="propertiesValue" />
-      <el-table-column label="物资图片" prop="materialsTypePicture" width="90">
+      <el-table-column :label="$t('mes.materialInfo.properties')" align="center" prop="propertiesValue" />
+      <el-table-column :label="$t('mes.materialInfo.materialsPicture')" prop="materialsTypePicture" width="90">
         <template slot-scope="scope">
           <div class="img-box" v-if="scope.row.materialsTypePicture">
             <el-image
@@ -265,7 +265,7 @@
           <span v-else>-</span>
         </template>
       </el-table-column>
-      <el-table-column label="RFID" align="center" prop="materialsRfid">
+      <el-table-column :label="$t('mes.materialInfo.rfid')" align="center" prop="materialsRfid">
         <template slot-scope="scope">
           <span v-if="scope.row.materialsRfid">{{
             scope.row.materialsRfid
@@ -273,15 +273,15 @@
           <span v-else>-</span>
         </template>
       </el-table-column>
-      <el-table-column label="供应商" align="center" prop="supplier">
+      <el-table-column :label="$t('mes.materialInfo.supplier')" align="center" prop="supplier">
       </el-table-column>
       <!--      <el-table-column label="所属柜" align="center" prop="cabinetName" />-->
-      <el-table-column label="有效期截止" align="center" prop="expirationDate">
+      <el-table-column :label="$t('mes.materialInfo.expirationDate')" align="center" prop="expirationDate">
         <template slot-scope="scope">
           {{ scope.row.expirationDate }}
         </template>
       </el-table-column>
-      <el-table-column label="是否在柜中" align="center" prop="loanState">
+      <el-table-column :label="$t('mes.materialInfo.inCabinet')" align="center" prop="loanState">
         <template slot-scope="scope">
           <!--          <dict-tag-->
           <!--            :options="dict.type.material_status"-->
@@ -303,7 +303,7 @@
           <span v-if="scope.row.loanState == '1'">√</span> -->
         </template>
       </el-table-column>
-      <el-table-column label="状态" align="center" prop="status">
+      <el-table-column :label="$t('common.status')" align="center" prop="status">
         <template slot-scope="scope">
           <dict-tag
             :options="dict.type.material_info_status"
@@ -312,7 +312,7 @@
         </template>
       </el-table-column>
       <el-table-column
-        label="操作"
+        :label="$t('common.operation')"
         align="center"
         class-name="small-padding fixed-width"
       >
@@ -324,7 +324,7 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['iscs:materials:edit']"
-            >修改
+            >{{ $t('common.edit') }}
           </el-button>
           <el-button
             v-no-more-click
@@ -333,7 +333,7 @@
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['iscs:materials:remove']"
-            >删除
+            >{{ $t('common.delete') }}
           </el-button>
         </template>
       </el-table-column>
@@ -354,12 +354,12 @@
       <el-form ref="form" :model="form" :rules="rules" label-width="110px">
         <el-row>
           <el-col :span="12">
-            <el-form-item label="绑定物资柜" prop="materialsCabinetId">
+            <el-form-item :label="$t('mes.materialInfo.bindMaterialsCabinet')" prop="materialsCabinetId">
               <el-select
                 :disabled="visibleSelect"
                 style="width: 348px"
                 v-model="form.materialsCabinetId"
-                placeholder="请选择绑定物资柜"
+                :placeholder="$t('mes.materialInfo.bindMaterialsCabinetPlaceholder')"
               >
                 <el-option
                   v-for="dict in cabinets"
@@ -371,47 +371,47 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="物资名称" prop="materialsName">
+            <el-form-item :label="$t('mes.materialInfo.materialsName')" prop="materialsName">
               <el-input
                 v-model="form.materialsName"
-                placeholder="请输入物资名称"
+                :placeholder="$t('mes.materialInfo.materialsNamePlaceholder')"
               />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="物资类型" prop="materialsTypeId">
+            <el-form-item :label="$t('mes.materialInfo.materialsType')" prop="materialsTypeId">
               <treeselect
                 style="width: 350px"
                 v-model="form.materialsTypeId"
                 :options="machinerytypeOptions"
                 :normalizer="normalizer"
-                placeholder="选择物资类型"
+                :placeholder="$t('mes.materialInfo.materialsTypeSelectPlaceholder')"
               />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="RFID" prop="materialsRfid">
+            <el-form-item :label="$t('mes.materialInfo.rfid')" prop="materialsRfid">
               <el-input
                 v-model="form.materialsRfid"
-                placeholder="请输入物资RFID"
+                :placeholder="$t('mes.materialInfo.rfidInputPlaceholder')"
               />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="供应商" prop="supplier">
-              <el-input v-model="form.supplier" placeholder="请输入供应商" />
+            <el-form-item :label="$t('mes.materialInfo.supplier')" prop="supplier">
+              <el-input v-model="form.supplier" :placeholder="$t('mes.materialInfo.supplierPlaceholder')" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="有效期截止" prop="expirationDate">
+            <el-form-item :label="$t('mes.materialInfo.expirationDate')" prop="expirationDate">
               <el-date-picker
                 v-model="form.expirationDate"
                 type="date"
-                placeholder="选择日期"
+                :placeholder="$t('mes.materialInfo.datePlaceholder')"
                 :picker-options="FormpickerOptions"
                 @change="handleClearTime"
               >
@@ -421,7 +421,7 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="物资规格" prop="properties">
+            <el-form-item :label="$t('mes.materialInfo.properties')" prop="properties">
               <div
                 v-for="(property, index) in PropertyList"
                 :key="property.propertyId"
@@ -452,7 +452,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="12" style="height: 110px">
-            <el-form-item label="物资图片" prop="materialsTypePicture">
+            <el-form-item :label="$t('mes.materialInfo.materialsPicture')" prop="materialsTypePicture">
               <div class="img-box2" v-if="form.materialsTypePicture">
                 <el-image
                   style="width: 90px; height: 90px"
@@ -481,12 +481,12 @@
           type="primary"
           @click="cancel"
           v-if="optType == 'view'"
-          >返回
+          >{{ $t('common.back') }}
         </el-button>
         <el-button v-no-more-click type="primary" @click="submitForm" v-else
-          >确 定
+          >{{ $t('common.confirm') }}
         </el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
 
@@ -510,28 +510,28 @@
         drag
       >
         <i class="el-icon-upload"></i>
-        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <div class="el-upload__text">{{ $t('mes.materialInfo.uploadText') }}<em>{{ $t('mes.materialInfo.clickUpload') }}</em></div>
         <div class="el-upload__tip text-center" slot="tip">
           <!--          <div class="el-upload__tip" slot="tip">-->
           <!--            <el-checkbox v-model="upload.updateSupport"/>-->
           <!--            是否更新已经存在的用户数据-->
           <!--          </div>-->
-          <span>仅允许导入xls、xlsx格式文件。</span>
+          <span>{{ $t('mes.materialInfo.uploadTip') }}</span>
           <el-link
             type="primary"
             :underline="false"
             style="font-size: 12px; vertical-align: baseline"
             @click="importTemplate"
-            >下载模板
+            >{{ $t('mes.materialInfo.downloadTemplate') }}
           </el-link>
         </div>
       </el-upload>
       <div slot="footer" class="dialog-footer">
         <el-button v-no-more-click type="primary" @click="submitFileForm"
-          >确 定
+          >{{ $t('common.confirm') }}
         </el-button>
         <el-button v-no-more-click @click="upload.open = false"
-          >取 消
+          >{{ $t('common.cancel') }}
         </el-button>
       </div>
     </el-dialog>
@@ -540,23 +540,23 @@
     <el-dialog :visible.sync="openBind" width="1000px" append-to-body>
       <div slot="title" class="dialog-title">
         <i></i>
-        <span class="title">绑定物资</span>
+        <span class="title">{{ $t('mes.materialInfo.bindMaterials') }}</span>
       </div>
       <el-table
         :data="dialogMatList"
         @selection-change="handleSelectionBindChange"
       >
         <el-table-column type="selection" width="55" align="center" />
-        <el-table-column :sortable="true" label="物资编号" align="center" prop="materialsId" >
+        <el-table-column :sortable="true" :label="$t('mes.materialInfo.materialsId')" align="center" prop="materialsId" >
         </el-table-column>
-        <el-table-column label="物资名称" align="center" prop="materialsName" />
+        <el-table-column :label="$t('mes.materialInfo.materialsName')" align="center" prop="materialsName" />
         <el-table-column
-          label="物资类型"
+          :label="$t('mes.materialInfo.materialsType')"
           align="center"
           prop="materialsTypeName"
         />
         <el-table-column
-          label="物资图片"
+          :label="$t('mes.materialInfo.materialsPicture')"
           align="center"
           prop="materialsTypePicture"
         >
@@ -571,15 +571,15 @@
             <span v-else>-</span>
           </template>
         </el-table-column>
-        <el-table-column label="RFID" align="center" prop="materialsRfid" />
-        <el-table-column label="供应商" align="center" prop="supplier">
+        <el-table-column :label="$t('mes.materialInfo.rfid')" align="center" prop="materialsRfid" />
+        <el-table-column :label="$t('mes.materialInfo.supplier')" align="center" prop="supplier">
         </el-table-column>
-        <el-table-column label="有效期" align="center" prop="expirationDate">
+        <el-table-column :label="$t('mes.materialInfo.expirationDate')" align="center" prop="expirationDate">
           <template slot-scope="scope">
             {{ scope.row.expirationDate }}
           </template>
         </el-table-column>
-        <el-table-column label="状态" align="center" prop="loanState">
+        <el-table-column :label="$t('common.status')" align="center" prop="loanState">
           <template slot-scope="scope">
             <dict-tag
               :options="dict.type.material_status"
@@ -597,9 +597,9 @@
       />
       <div slot="footer" class="dialog-footer">
         <el-button v-no-more-click type="primary" @click="submitBind"
-          >确 定
+          >{{ $t('common.confirm') }}
         </el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -693,37 +693,6 @@ export default {
           return time.getTime() < Date.now() - 8.64e7;
         },
       },
-      pickerOptions: {
-        shortcuts: [
-          {
-            text: "最近一周",
-            onClick(picker) {
-              const end = new Date();
-              const start = new Date();
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
-              picker.$emit("pick", [start, end]);
-            },
-          },
-          {
-            text: "最近一个月",
-            onClick(picker) {
-              const end = new Date();
-              const start = new Date();
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
-              picker.$emit("pick", [start, end]);
-            },
-          },
-          {
-            text: "最近三个月",
-            onClick(picker) {
-              const end = new Date();
-              const start = new Date();
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
-              picker.$emit("pick", [start, end]);
-            },
-          },
-        ],
-      },
       // 用户导入参数
       upload: {
         // 是否显示弹出层(用户导入)
@@ -749,10 +718,10 @@ export default {
       // 表单校验
       rules: {
         materialsName: [
-          { required: true, message: "物资名称不能为空", trigger: "blur" },
+          { required: true, message: this.$t('mes.materialInfo.materialsNameRequired'), trigger: "blur" },
         ],
         materialsTypeId: [
-          { required: true, message: "物资类型不能为空", trigger: "blur" },
+          { required: true, message: this.$t('mes.materialInfo.materialsTypeRequired'), trigger: "blur" },
         ],
       },
       machinerytypeOptions: [],
@@ -803,6 +772,39 @@ export default {
     this.getTreeselect();
   },
   computed: {
+    pickerOptions() {
+      return {
+        shortcuts: [
+          {
+            text: this.$t('mes.materialInfo.lastWeek'),
+            onClick(picker) {
+              const end = new Date();
+              const start = new Date();
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+              picker.$emit("pick", [start, end]);
+            },
+          },
+          {
+            text: this.$t('mes.materialInfo.lastMonth'),
+            onClick(picker) {
+              const end = new Date();
+              const start = new Date();
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+              picker.$emit("pick", [start, end]);
+            },
+          },
+          {
+            text: this.$t('mes.materialInfo.lastThreeMonths'),
+            onClick(picker) {
+              const end = new Date();
+              const start = new Date();
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+              picker.$emit("pick", [start, end]);
+            },
+          },
+        ],
+      };
+    },
     filteredPropertyValues() {
       if (!this.queryParams.propertyId) {
         return [];
@@ -839,7 +841,7 @@ export default {
       updateMaterialsBinding(data).then((res) => {
         console.log(res, "绑定物资");
         if (res.data) {
-          this.$message.success("绑定成功");
+          this.$message.success(this.$t('mes.materialInfo.bindSuccess'));
           this.openBind = false;
         }
       });
@@ -1026,7 +1028,7 @@ export default {
             value: item.cabinetId,
             label: item.cabinetName,
           }));
-          this.cabinets.push({ value: 0, label: "空" });
+          this.cabinets.push({ value: 0, label: this.$t('mes.materialInfo.empty') });
         }
       });
     },
@@ -1038,7 +1040,7 @@ export default {
       this.PropertyList = []; //新增保持物资规格是清空的
       this.PropertyValueList = []; //新增保持物资规格是清空的
       this.open = true;
-      this.title = "新增物资信息";
+      this.title = this.$t('mes.materialInfo.addMaterialInfo');
       this.optType = "add";
       this.form.materialsTypeId = undefined;
       if (this.visibleSelect) {
@@ -1067,7 +1069,7 @@ export default {
           });
         }
         this.open = true;
-        this.title = "修改物资信息";
+        this.title = this.$t('mes.materialInfo.editMaterialInfo');
         this.optType = "edit";
         // 设置 selectedValues
         if (response.data.properties) {
@@ -1101,7 +1103,7 @@ export default {
             console.log(this.form,'修改传递的参数');
             updateMaterials(this.form).then((response) => {
               console.log(response, "修改返回");
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('mes.materialInfo.editSuccess'));
               this.open = false;
               this.getList();
             });
@@ -1112,7 +1114,7 @@ export default {
             console.log(this.form, "新增参数");
             addMaterials(this.form).then((response) => {
               console.log(response, "新增返回");
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('mes.materialInfo.addSuccess'));
               this.open = false;
               this.getList();
             });
@@ -1122,7 +1124,7 @@ export default {
     },
     /** 导入按钮操作 */
     handleImport() {
-      this.upload.title = "物资导入";
+      this.upload.title = this.$t('mes.materialInfo.importMaterials');
       this.upload.open = true;
     },
     /** 下载模板操作 */
@@ -1146,7 +1148,7 @@ export default {
         "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
           response.msg +
           "</div>",
-        "导入结果",
+        this.$t('mes.materialInfo.importResult'),
         { dangerouslyUseHTMLString: true }
       );
       this.getList();
@@ -1162,13 +1164,13 @@ export default {
       const materialsIds = row.materialsId || this.ids;
       const materialsCodes = row.materialsId || this.ids;
       this.$modal
-        .confirm("是否确认删除所选数据项?")
+        .confirm(this.$t('common.deleteConfirm'))
         .then(function () {
           return deleteMaterials(materialsIds);
         })
         .then(() => {
           this.getList();
-          this.$modal.msgSuccess("删除成功");
+          this.$modal.msgSuccess(this.$t('mes.materialInfo.deleteSuccess'));
         })
         .catch(() => {});
     },

+ 59 - 103
src/views/mes/material/replacementrecords/index.vue

@@ -9,11 +9,11 @@
       label-width="100px"
       @submit.native.prevent
     >
-      <el-form-item label="物资柜" prop="cabinetId">
+      <el-form-item :label="$t('mes.replacementRecords.cabinet')" prop="cabinetId">
         <el-select
           :disabled="visibleSelect"
           v-model="queryParams.cabinetId"
-          placeholder="请选择物资柜"
+          :placeholder="$t('mes.replacementRecords.cabinetPlaceholder')"
           clearable
         >
           <el-option
@@ -24,60 +24,60 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="物资类型" prop="materialsTypeId">
+      <el-form-item :label="$t('mes.replacementRecords.materialsType')" prop="materialsTypeId">
         <treeselect
           style="width: 210px"
           v-model="queryParams.materialsTypeId"
           :options="materialstypeOptions"
           :normalizer="materialnormalizer"
-          placeholder="请选择物资类型"
+          :placeholder="$t('mes.replacementRecords.materialsTypePlaceholder')"
         />
       </el-form-item>
 
-      <el-form-item label="原物资编号" prop="oldMaterialsId">
+      <el-form-item :label="$t('mes.replacementRecords.oldMaterialsId')" prop="oldMaterialsId">
         <el-input
           v-model="queryParams.oldMaterialsId"
-          placeholder="请输入原物资编号"
+          :placeholder="$t('mes.replacementRecords.oldMaterialsIdPlaceholder')"
           clearable
           oninput="value=value.replace(/[^\d.]/g,'')"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
 
-      <el-form-item label="原RFID" prop="oldMaterialsRfid">
+      <el-form-item :label="$t('mes.replacementRecords.oldRfid')" prop="oldMaterialsRfid">
         <el-input
           v-model="queryParams.oldMaterialsRfid"
-          placeholder="请输入原RFID"
+          :placeholder="$t('mes.replacementRecords.oldRfidPlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="新物资编号" prop="newMaterialsId">
+      <el-form-item :label="$t('mes.replacementRecords.newMaterialsId')" prop="newMaterialsId">
         <el-input
           v-model="queryParams.newMaterialsId"
-          placeholder="请输入新物资编号"
+          :placeholder="$t('mes.replacementRecords.newMaterialsIdPlaceholder')"
           clearable
           oninput="value=value.replace(/[^\d.]/g,'')"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="新RFID" prop="newMaterialsRfid">
+      <el-form-item :label="$t('mes.replacementRecords.newRfid')" prop="newMaterialsRfid">
         <el-input
           v-model="queryParams.newMaterialsRfid"
-          placeholder="请输入新RFID"
+          :placeholder="$t('mes.replacementRecords.newRfidPlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="更换人" prop="changeUserName">
+      <el-form-item :label="$t('mes.replacementRecords.changeUser')" prop="changeUserName">
         <el-input
           v-model="queryParams.changeUserName"
-          placeholder="请输入更换人"
+          :placeholder="$t('mes.replacementRecords.changeUserPlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="更换时间">
+      <el-form-item :label="$t('mes.replacementRecords.changeTime')">
         <el-date-picker
           style="width: 215px"
           :default-time="['00:00:00', '23:59:59']"
@@ -85,15 +85,15 @@
           type="datetimerange"
           :picker-options="pickerOptions"
           range-separator="-"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
+          :start-placeholder="$t('common.startDate')"
+          :end-placeholder="$t('common.endDate')"
           align="right"
           @change="handleClearTime"
         >
         </el-date-picker>
       </el-form-item>
-      <el-form-item label="操作类型" prop="operateType">
-        <el-select v-model="queryParams.operateType" placeholder="请选择操作类型">
+      <el-form-item :label="$t('mes.replacementRecords.operateType')" prop="operateType">
+        <el-select v-model="queryParams.operateType" :placeholder="$t('mes.replacementRecords.operateTypePlaceholder')">
           <el-option
             v-for="dict in dict.type.material_change_type"
             :key="dict.value"
@@ -109,7 +109,7 @@
           icon="el-icon-search"
           size="mini"
           @click="handleQuery"
-        >搜索
+        >{{ $t('common.search') }}
         </el-button
         >
         <el-button
@@ -117,7 +117,7 @@
           icon="el-icon-refresh"
           size="mini"
           @click="resetQuery"
-        >重置
+        >{{ $t('common.reset') }}
         </el-button
         >
       </el-form-item>
@@ -155,16 +155,16 @@
       @selection-change="handleSelectionChange"
     >
 <!--      <el-table-column type="selection" width="55" align="center"/>-->
-      <el-table-column label="物资柜" align="center" prop="cabinetName">
+      <el-table-column :label="$t('mes.replacementRecords.cabinet')" align="center" prop="cabinetName">
         <template slot-scope="scope">
           <span v-if="scope.row.cabinetName">{{scope.row.cabinetName}}</span>
           <span v-else>-</span>
         </template>
       </el-table-column>
 <!--      <el-table-column label="物资名称" align="center" prop="materialsName" />-->
-      <el-table-column label="物资类型" align="center" prop="materialsTypeName" />
+      <el-table-column :label="$t('mes.replacementRecords.materialsType')" align="center" prop="materialsTypeName" />
       <el-table-column
-        label="物资图片"
+        :label="$t('mes.replacementRecords.materialsPicture')"
         align="center"
         prop="materialsTypePicture"
       >
@@ -178,38 +178,38 @@
           <span v-else>-</span>
         </template>
       </el-table-column>
-      <el-table-column label="原物资编号" align="center" prop="oldMaterialsId">
+      <el-table-column :label="$t('mes.replacementRecords.oldMaterialsId')" align="center" prop="oldMaterialsId">
       </el-table-column>
-      <el-table-column label="原物资名称" align="center" prop="oldMaterialsName">
+      <el-table-column :label="$t('mes.replacementRecords.oldMaterialsName')" align="center" prop="oldMaterialsName">
       </el-table-column>
-      <el-table-column label="原RFID" align="center" prop="oldMaterialsRfid">
+      <el-table-column :label="$t('mes.replacementRecords.oldRfid')" align="center" prop="oldMaterialsRfid">
       </el-table-column>
-      <el-table-column label="新物资编号" align="center" prop="newMaterialsId">
+      <el-table-column :label="$t('mes.replacementRecords.newMaterialsId')" align="center" prop="newMaterialsId">
       </el-table-column>
-      <el-table-column label="新物资名称" align="center" prop="newMaterialsName">
+      <el-table-column :label="$t('mes.replacementRecords.newMaterialsName')" align="center" prop="newMaterialsName">
       </el-table-column>
-      <el-table-column label="新RFID" align="center" prop="newMaterialsRfid">
+      <el-table-column :label="$t('mes.replacementRecords.newRfid')" align="center" prop="newMaterialsRfid">
       </el-table-column>
       <el-table-column
-        label="更换人"
+        :label="$t('mes.replacementRecords.changeUser')"
         align="center"
         prop="changeUserName"
       >
       </el-table-column>
-      <el-table-column label="更换时间" align="center" prop="changeDate">
+      <el-table-column :label="$t('mes.replacementRecords.changeTime')" align="center" prop="changeDate">
         <template slot-scope="scope">
           <span v-if="scope.row.changeDate">{{scope.row.changeDate}}</span>
           <span v-else>-</span>
         </template>
       </el-table-column>
       <el-table-column
-        label="操作类型"
+        :label="$t('mes.replacementRecords.operateType')"
         align="center"
         prop="operateType"
       >
         <template slot-scope="scope">
-          <span v-if="scope.row.operateType==3">维修</span>
-          <span v-else>更换</span>
+          <span v-if="scope.row.operateType==3">{{ $t('mes.replacementRecords.repair') }}</span>
+          <span v-else>{{ $t('mes.replacementRecords.replace') }}</span>
         </template>
       </el-table-column>
 <!--      <el-table-column-->
@@ -254,11 +254,11 @@
         <span class="title">{{ title }}</span>
       </div>
       <el-form ref="form" :model="form" :rules="rules" label-width="110px">
-        <el-form-item label="计划名称Id" prop="planId">
+        <el-form-item :label="$t('mes.replacementRecords.planId')" prop="planId">
           <el-select
             style="width: 348px"
             v-model="form.planId"
-            placeholder="请选择检查计划"
+            :placeholder="$t('mes.replacementRecords.planIdPlaceholder')"
             clearable
           >
             <el-option
@@ -269,11 +269,11 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="更换日期">
+        <el-form-item :label="$t('mes.replacementRecords.changeDate')">
           <el-date-picker
             style="width: 350px"
             v-model="form.changeDate"
-            placeholder="请选择日期"
+            :placeholder="$t('mes.replacementRecords.changeDatePlaceholder')"
             :picker-options="pickerOptions"
             align="right"
           >
@@ -300,11 +300,11 @@
         <!--            />-->
         <!--          </el-select>-->
         <!--        </el-form-item>-->
-        <el-form-item label="更换员" prop="changeUserId">
+        <el-form-item :label="$t('mes.replacementRecords.changeUser')" prop="changeUserId">
           <el-select
             style="width: 348px"
             v-model="form.changeUserId"
-            placeholder="请选择更换员"
+            :placeholder="$t('mes.replacementRecords.changeUserSelectPlaceholder')"
             clearable
           >
             <el-option
@@ -315,10 +315,10 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="检查记录Id" prop="checkRecordId">
+        <el-form-item :label="$t('mes.replacementRecords.checkRecordId')" prop="checkRecordId">
           <el-input
             v-model="form.checkRecordId"
-            placeholder="请输入检查记录Id"
+            :placeholder="$t('mes.replacementRecords.checkRecordIdPlaceholder')"
             clearable
           />
         </el-form-item>
@@ -329,31 +329,31 @@
 <!--            clearable-->
 <!--          />-->
 <!--        </el-form-item>-->
-        <el-form-item label="新物资Id" prop="newMaterialsId">
+        <el-form-item :label="$t('mes.replacementRecords.newMaterialsId')" prop="newMaterialsId">
           <el-input
             v-model="form.newMaterialsId"
-            placeholder="请输入新物资Id"
+            :placeholder="$t('mes.replacementRecords.newMaterialsIdInputPlaceholder')"
             clearable
           />
         </el-form-item>
-        <el-form-item label="新物资RFID" prop="newMaterialsRfid">
+        <el-form-item :label="$t('mes.replacementRecords.newMaterialsRfid')" prop="newMaterialsRfid">
           <el-input
             v-model="form.newMaterialsRfid"
-            placeholder="请输入新物资RFID"
+            :placeholder="$t('mes.replacementRecords.newMaterialsRfidInputPlaceholder')"
             clearable
           />
         </el-form-item>
-        <el-form-item label="原物资Id" prop="oldMaterialsId">
+        <el-form-item :label="$t('mes.replacementRecords.oldMaterialsId')" prop="oldMaterialsId">
           <el-input
             v-model="form.oldMaterialsId"
-            placeholder="请输入原物资Id"
+            :placeholder="$t('mes.replacementRecords.oldMaterialsIdInputPlaceholder')"
             clearable
           />
         </el-form-item>
-        <el-form-item label="原物资Rfid" prop="oldMaterialsRfid">
+        <el-form-item :label="$t('mes.replacementRecords.oldMaterialsRfid')" prop="oldMaterialsRfid">
           <el-input
             v-model="form.oldMaterialsRfid"
-            placeholder="请输入原物资Rfid"
+            :placeholder="$t('mes.replacementRecords.oldMaterialsRfidInputPlaceholder')"
             clearable
           />
         </el-form-item>
@@ -361,9 +361,9 @@
 
       <div slot="footer" class="dialog-footer">
         <el-button v-no-more-click type="primary" @click="submitForm"
-        >确 定
+        >{{ $t('common.confirm') }}
         </el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -444,50 +444,6 @@ export default {
       cabinets: [], //物资所属柜
       planPersonOption: [],// 检查人员
       planList:[],//检查计划下拉
-      // 表单校验
-      rules: {
-        userIdStr: [
-          { required: true, message: '人员不能为空', trigger: 'blur' }
-        ],
-        checkName: [
-          { required: true, message: '任务名称不能为空', trigger: 'blur' }
-        ],
-        cron: [
-          { required: true, message: '检查时间频率不能为空', trigger: 'blur' }
-        ]
-
-      },
-      pickerOptions: {
-        shortcuts: [
-          {
-            text: "最近一周",
-            onClick(picker) {
-              const end = new Date();
-              const start = new Date();
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
-              picker.$emit("pick", [start, end]);
-            },
-          },
-          {
-            text: "最近一个月",
-            onClick(picker) {
-              const end = new Date();
-              const start = new Date();
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
-              picker.$emit("pick", [start, end]);
-            },
-          },
-          {
-            text: "最近三个月",
-            onClick(picker) {
-              const end = new Date();
-              const start = new Date();
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
-              picker.$emit("pick", [start, end]);
-            },
-          },
-        ],
-      },
       materialstypeOptions:[],
       visibleSelect:false,
     }
@@ -652,7 +608,7 @@ export default {
     handleAdd() {
       this.reset()
       this.open = true
-      this.title = '新增更换记录'
+      this.title = this.$t('mes.replacementRecords.addRecord')
       this.optType = 'add'
     },
 
@@ -662,7 +618,7 @@ export default {
       selectChangeRecordById(row.changeId).then((response) => {
         this.form = response.data
         this.open = true
-        this.title = '编辑更换记录'
+        this.title = this.$t('mes.replacementRecords.editRecord')
         this.optType = 'edit'
       })
     },
@@ -674,14 +630,14 @@ export default {
           if (this.form.changeId != null) {
             updateChangeRecord(this.form).then((response) => {
               console.log(response, '修改返回')
-              this.$modal.msgSuccess('修改成功')
+              this.$modal.msgSuccess(this.$t('mes.replacementRecords.editSuccess'))
               this.open = false
               this.getList()
             })
           } else {
             addChangeRecord(this.form).then((response) => {
               console.log(response, '新增返回')
-              this.$modal.msgSuccess('新增成功')
+              this.$modal.msgSuccess(this.$t('mes.replacementRecords.addSuccess'))
               this.open = false
               this.getList()
             })
@@ -694,13 +650,13 @@ export default {
       const changeIds = row.changeId || this.ids
 
       this.$modal
-        .confirm('是否确认删除编号为"' + changeIds + '"的数据项?')
+        .confirm(this.$t('mes.replacementRecords.deleteConfirm', { changeId: changeIds }))
         .then(function() {
           return deleteChangeRecord(changeIds)
         })
         .then(() => {
           this.getList()
-          this.$modal.msgSuccess('删除成功')
+          this.$modal.msgSuccess(this.$t('mes.replacementRecords.deleteSuccess'))
         })
         .catch(() => {
         })

+ 41 - 50
src/views/mes/material/returnremind/index.vue

@@ -9,45 +9,45 @@
       label-width="100px"
       @submit.native.prevent
     >
-      <el-form-item label="物资编码" prop="materialsCode">
+      <el-form-item :label="$t('mes.returnRemind.materialsCode')" prop="materialsCode">
         <el-input
           v-model="queryParams.materialsCode"
-          placeholder="请输入物资编码"
+          :placeholder="$t('mes.returnRemind.materialsCodePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="物资名称" prop="materialsName">
+      <el-form-item :label="$t('mes.returnRemind.materialsName')" prop="materialsName">
         <el-input
           v-model="queryParams.materialsName"
-          placeholder="请输入物资名称"
+          :placeholder="$t('mes.returnRemind.materialsNamePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="领取人" prop="loanUserName">
+      <el-form-item :label="$t('mes.returnRemind.loanUser')" prop="loanUserName">
         <el-input
           v-model="queryParams.loanUserName"
-          placeholder="请输入领取人"
+          :placeholder="$t('mes.returnRemind.loanUserPlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="领取时间" prop="loanTime">
+      <el-form-item :label="$t('mes.returnRemind.loanTime')" prop="loanTime">
         <el-date-picker
           v-model="loanTime"
           type="datetimerange"
-          placeholder="选择日期时间"
+          :placeholder="$t('mes.returnRemind.dateTimePlaceholder')"
           range-separator="-"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
+          :start-placeholder="$t('common.startDate')"
+          :end-placeholder="$t('common.endDate')"
           align="right"
           :picker-options="pickerOptions"
         >
         </el-date-picker>
       </el-form-item>
-      <el-form-item label="领取柜" prop="loanFromId">
-        <el-select v-model="queryParams.loanFromId" placeholder="请选择领取柜">
+      <el-form-item :label="$t('mes.returnRemind.loanCabinet')" prop="loanFromId">
+        <el-select v-model="queryParams.loanFromId" :placeholder="$t('mes.returnRemind.loanCabinetPlaceholder')">
           <el-option
             v-for="dict in cabinets"
             :key="dict.value"
@@ -57,8 +57,8 @@
         </el-select>
       </el-form-item>
 
-      <el-form-item label="状态" prop="readFlag">
-        <el-select v-model="queryParams.readFlag" placeholder="状态">
+      <el-form-item :label="$t('common.status')" prop="readFlag">
+        <el-select v-model="queryParams.readFlag" :placeholder="$t('common.status')">
           <el-option
             v-for="dict in dict.type.reminders_status"
             :key="dict.value"
@@ -73,10 +73,10 @@
           icon="el-icon-search"
           size="mini"
           @click="handleQuery"
-          >搜索</el-button
+          >{{ $t('common.search') }}</el-button
         >
         <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery"
-          >重置</el-button
+          >{{ $t('common.reset') }}</el-button
         >
       </el-form-item>
     </el-form>
@@ -106,7 +106,7 @@
       @selection-change="handleSelectionChange"
     >
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="物资编码" align="center" prop="materialsCode">
+      <el-table-column :label="$t('mes.returnRemind.materialsCode')" align="center" prop="materialsCode">
         <template slot-scope="scope">
           <el-button v-no-more-click
             type="text"
@@ -116,19 +116,19 @@
           </el-button>
         </template>
       </el-table-column>
-      <el-table-column label="物资名称" align="center" prop="materialsName" />
-      <el-table-column label="提醒人" align="center" prop="loanUserName">
+      <el-table-column :label="$t('mes.returnRemind.materialsName')" align="center" prop="materialsName" />
+      <el-table-column :label="$t('mes.returnRemind.remindUser')" align="center" prop="loanUserName">
       </el-table-column>
-      <el-table-column label="领取柜" align="center" prop="loanFromName">
+      <el-table-column :label="$t('mes.returnRemind.loanCabinet')" align="center" prop="loanFromName">
       </el-table-column>
-      <el-table-column label="领取时间" align="center" prop="loanTime">
+      <el-table-column :label="$t('mes.returnRemind.loanTime')" align="center" prop="loanTime">
       </el-table-column>
-      <el-table-column label="到期时间" align="center" prop="restitutionTime">
+      <el-table-column :label="$t('mes.returnRemind.dueTime')" align="center" prop="restitutionTime">
       </el-table-column>
-      <el-table-column label="状态" align="center" prop="readFlag">
+      <el-table-column :label="$t('common.status')" align="center" prop="readFlag">
         <template slot-scope="scope">
-          <el-tag type="primary" v-if="scope.row.readFlag == 0">已读</el-tag>
-          <el-tag type="danger" v-if="scope.row.readFlag == 1">未读</el-tag>
+          <el-tag type="primary" v-if="scope.row.readFlag == 0">{{ $t('mes.returnRemind.read') }}</el-tag>
+          <el-tag type="danger" v-if="scope.row.readFlag == 1">{{ $t('mes.returnRemind.unread') }}</el-tag>
         </template>
       </el-table-column>
       <!-- <el-table-column
@@ -216,10 +216,20 @@ export default {
         current: 1,
         size: -1,
       },
-      pickerOptions: {
+      cabinets: [], //物资所属柜
+      value2: "",
+      value3: "",
+
+      // 表单参数
+      form: {},
+    };
+  },
+  computed: {
+    pickerOptions() {
+      return {
         shortcuts: [
           {
-            text: "最近一周",
+            text: this.$t('mes.returnRemind.lastWeek'),
             onClick(picker) {
               const end = new Date();
               const start = new Date();
@@ -228,7 +238,7 @@ export default {
             },
           },
           {
-            text: "最近一个月",
+            text: this.$t('mes.returnRemind.lastMonth'),
             onClick(picker) {
               const end = new Date();
               const start = new Date();
@@ -237,7 +247,7 @@ export default {
             },
           },
           {
-            text: "最近三个月",
+            text: this.$t('mes.returnRemind.lastThreeMonths'),
             onClick(picker) {
               const end = new Date();
               const start = new Date();
@@ -246,27 +256,8 @@ export default {
             },
           },
         ],
-      },
-
-      cabinets: [], //物资所属柜
-      value2: "",
-      value3: "",
-
-      // 表单参数
-      form: {},
-      // 表单校验
-      rules: {
-        teamCode: [
-          { required: true, message: "班组编号不能为空", trigger: "blur" },
-        ],
-        teamName: [
-          { required: true, message: "班组名称不能为空", trigger: "blur" },
-        ],
-        calendarType: [
-          { required: true, message: "清选择班组类型", trigger: "blur" },
-        ],
-      },
-    };
+      };
+    }
   },
   created() {
     this.getList();

+ 39 - 36
src/views/mes/material/standard/PropertyForm.vue

@@ -9,19 +9,19 @@
       label-width="100px"
       @submit.native.prevent
     >
-      <el-form-item label="物资规格种类" prop="propertyName">
+      <el-form-item :label="$t('mes.standard.propertyName')" prop="propertyName">
         <el-input
           disabled
           v-model="queryParams.propertyName"
-          placeholder="请输入物资规格种类"
+          :placeholder="$t('mes.standard.propertyNamePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="物资规格" prop="valueName">
+      <el-form-item :label="$t('mes.standardPropertyForm.valueName')" prop="valueName">
         <el-input
           v-model="queryParams.valueName"
-          placeholder="请输入物资规格"
+          :placeholder="$t('mes.standardPropertyForm.valueNamePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
@@ -34,7 +34,7 @@
           icon="el-icon-search"
           size="mini"
           @click="handleQuery"
-        >搜索
+        >{{ $t('common.search') }}
         </el-button
         >
         <el-button
@@ -42,7 +42,7 @@
           icon="el-icon-refresh"
           size="mini"
           @click="resetQuery"
-        >重置
+        >{{ $t('common.reset') }}
         </el-button
         >
         <el-button
@@ -51,7 +51,7 @@
           icon="el-icon-close"
           size="mini"
           @click="goBack"
-        >返回
+        >{{ $t('common.back') }}
         </el-button
         >
       </el-form-item>
@@ -67,7 +67,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['iscs:propvalue:add']"
-        >新增
+        >{{ $t('common.add') }}
         </el-button>
       </el-col>
 
@@ -82,7 +82,7 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['iscs:propvalue:remove']"
-        >批量删除
+        >{{ $t('common.batchDelete') }}
         </el-button>
       </el-col>
       <right-toolbar
@@ -97,21 +97,21 @@
       @selection-change="handleSelectionChange"
     >
       <el-table-column type="selection" width="55" align="center"/>
-      <el-table-column label="编号" align="center" prop="recordId">
+      <el-table-column :label="$t('mes.standardPropertyForm.recordId')" align="center" prop="recordId">
       </el-table-column>
-      <el-table-column label="物资规格" align="center" prop="valueName"/>
+      <el-table-column :label="$t('mes.standardPropertyForm.valueName')" align="center" prop="valueName"/>
       <el-table-column
-        label="备注"
+        :label="$t('common.remark')"
         align="center"
         prop="remark"
       />
       <el-table-column
-        label="创建时间"
+        :label="$t('common.createTime')"
         align="center"
         prop="createTime"
       />
       <el-table-column
-        label="操作"
+        :label="$t('common.operation')"
         align="center"
         class-name="small-padding fixed-width"
       >
@@ -123,7 +123,7 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['iscs:propvalue:edit']"
-          >修改
+          >{{ $t('common.edit') }}
           </el-button>
 
           <el-button
@@ -133,7 +133,7 @@
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['iscs:propvalue:remove']"
-          >删除
+          >{{ $t('common.delete') }}
           </el-button>
         </template>
       </el-table-column>
@@ -152,37 +152,37 @@
         <span class="title">{{ title }}</span>
       </div>
       <el-form ref="form" :model="form" :rules="rules" label-width="130px">
-        <el-form-item label="物资规格种类编号" prop="propertyId">
+        <el-form-item :label="$t('mes.standardPropertyForm.propertyId')" prop="propertyId">
           <el-input
             disabled
             style="width: 350px"
             v-model="form.propertyId"
-            placeholder="请输入物资规格种类"
+            :placeholder="$t('mes.standard.propertyNamePlaceholder')"
           />
         </el-form-item>
-        <el-form-item label="物资规格" prop="valueName">
+        <el-form-item :label="$t('mes.standardPropertyForm.valueName')" prop="valueName">
           <el-input
             style="width: 350px"
             v-model="form.valueName"
-            placeholder="请输入物资规格"
+            :placeholder="$t('mes.standardPropertyForm.valueNamePlaceholder')"
           />
         </el-form-item>
-        <el-form-item label="备注" prop="remark">
+        <el-form-item :label="$t('common.remark')" prop="remark">
           <el-input
             type="textarea"
             style="width: 350px"
             v-model="form.remark"
-            placeholder="请输入内容"
+            :placeholder="$t('mes.standard.remarkPlaceholder')"
           />
         </el-form-item>
       </el-form>
 
       <div slot="footer" class="dialog-footer">
         <el-button v-no-more-click type="primary" @click="submitForm"
-        >确 定
+        >{{ $t('common.confirm') }}
         </el-button
         >
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
 
@@ -247,16 +247,19 @@ export default {
       form: {
         propertyId: ''
       },
-      // 表单校验
-      rules: {
+
+    }
+  },
+  computed: {
+    rules() {
+      return {
         valueName: [
-          { required: true, message: '物资规格不能为空', trigger: 'blur' }
+          { required: true, message: this.$t('mes.standardPropertyForm.valueNameRequired'), trigger: 'blur' }
         ],
         materialsTypeId: [
-          { required: true, message: '物资类型不能为空', trigger: 'blur' }
+          { required: true, message: this.$t('mes.standard.materialsTypeRequired'), trigger: 'blur' }
         ]
-      }
-
+      };
     }
   },
   created() {
@@ -315,7 +318,7 @@ export default {
       this.reset()
       this.open = true
       this.form.propertyId = this.$route.query.propertyId
-      this.title = '新增物资规格'
+      this.title = this.$t('mes.standardPropertyForm.addPropertyValue')
       this.optType = 'add'
     },
 
@@ -326,7 +329,7 @@ export default {
         console.log(response, '修改')
         this.form = response.data
         this.open = true
-        this.title = '修改物资规格'
+        this.title = this.$t('mes.standardPropertyForm.editPropertyValue')
         this.optType = 'edit'
       })
     },
@@ -338,7 +341,7 @@ export default {
           if (this.form.recordId != null) {
             updatePropertyValue(this.form).then((response) => {
               console.log(response, '修改返回')
-              this.$modal.msgSuccess('修改成功')
+              this.$modal.msgSuccess(this.$t('mes.standardPropertyForm.editSuccess'))
               this.open = false
               this.getList()
             })
@@ -346,7 +349,7 @@ export default {
             console.log(this.form, '新增参数')
             addPropertyValue(this.form).then((response) => {
               console.log(response, '新增返回')
-              this.$modal.msgSuccess('新增成功')
+              this.$modal.msgSuccess(this.$t('mes.standardPropertyForm.addSuccess'))
               this.open = false
               this.getList()
             })
@@ -359,13 +362,13 @@ export default {
     handleDelete(row) {
       const recordId = row.recordId || this.ids
       this.$modal
-        .confirm('是否确认删除所选数据项?')
+        .confirm(this.$t('mes.standardPropertyForm.deleteConfirm'))
         .then(function() {
           return deletePropertyValue(recordId)
         })
         .then(() => {
           this.getList()
-          this.$modal.msgSuccess('删除成功')
+          this.$modal.msgSuccess(this.$t('mes.standardPropertyForm.deleteSuccess'))
         })
         .catch(() => {
         })

+ 35 - 32
src/views/mes/material/standard/index.vue

@@ -9,10 +9,10 @@
       label-width="140px"
       @submit.native.prevent
     >
-      <el-form-item label="物资规格种类" prop="propertyName">
+      <el-form-item :label="$t('mes.standard.propertyName')" prop="propertyName">
         <el-input
           v-model="queryParams.propertyName"
-          placeholder="请输入物资规格种类"
+          :placeholder="$t('mes.standard.propertyNamePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
@@ -25,14 +25,14 @@
           icon="el-icon-search"
           size="mini"
           @click="handleQuery"
-          >搜索
+          >{{ $t('common.search') }}
         </el-button>
         <el-button
           v-no-more-click
           icon="el-icon-refresh"
           size="mini"
           @click="resetQuery"
-          >重置
+          >{{ $t('common.reset') }}
         </el-button>
       </el-form-item>
     </el-form>
@@ -47,7 +47,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['iscs:property:add']"
-          >新增
+          >{{ $t('common.add') }}
         </el-button>
       </el-col>
 
@@ -61,7 +61,7 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['iscs:property:remove']"
-          >批量删除
+          >{{ $t('common.batchDelete') }}
         </el-button>
       </el-col>
       <right-toolbar
@@ -76,17 +76,17 @@
       @selection-change="handleSelectionChange"
     >
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="编号" align="center" prop="propertyId">
+      <el-table-column :label="$t('mes.standard.propertyId')" align="center" prop="propertyId">
       </el-table-column>
       <el-table-column
-        label="物资规格种类"
+        :label="$t('mes.standard.propertyName')"
         align="center"
         prop="propertyName"
       />
-      <el-table-column label="备注" align="center" prop="remark" />
-      <el-table-column label="创建时间" align="center" prop="createTime" />
+      <el-table-column :label="$t('common.remark')" align="center" prop="remark" />
+      <el-table-column :label="$t('common.createTime')" align="center" prop="createTime" />
       <el-table-column
-        label="操作"
+        :label="$t('common.operation')"
         align="center"
         class-name="small-padding fixed-width"
       >
@@ -98,7 +98,7 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['iscs:property:edit']"
-            >修改
+            >{{ $t('common.edit') }}
           </el-button>
           <el-button
             v-no-more-click
@@ -107,7 +107,7 @@
             icon="el-icon-view"
             @click="handleValue(scope.row)"
             v-hasPermi="['iscs:property:edit']"
-            >规格设置
+            >{{ $t('mes.standard.propertySetting') }}
           </el-button>
           <el-button
             v-no-more-click
@@ -116,7 +116,7 @@
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['iscs:property:remove']"
-            >删除
+            >{{ $t('common.delete') }}
           </el-button>
         </template>
       </el-table-column>
@@ -135,28 +135,28 @@
         <span class="title">{{ title }}</span>
       </div>
       <el-form ref="form" :model="form" :rules="rules" label-width="150px">
-        <el-form-item label="物资规格种类" prop="propertyName">
+        <el-form-item :label="$t('mes.standard.propertyName')" prop="propertyName">
           <el-input
             style="width: 350px"
             v-model="form.propertyName"
-            placeholder="请输入物资规格种类"
+            :placeholder="$t('mes.standard.propertyNamePlaceholder')"
           />
         </el-form-item>
-        <el-form-item label="备注" prop="remark">
+        <el-form-item :label="$t('common.remark')" prop="remark">
           <el-input
             type="textarea"
             style="width: 350px"
             v-model="form.remark"
-            placeholder="请输入内容"
+            :placeholder="$t('mes.standard.remarkPlaceholder')"
           />
         </el-form-item>
       </el-form>
 
       <div slot="footer" class="dialog-footer">
         <el-button v-no-more-click type="primary" @click="submitForm"
-          >确 定
+          >{{ $t('common.confirm') }}
         </el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -216,16 +216,19 @@ export default {
       },
       // 表单参数
       form: {},
-      // 表单校验
-      rules: {
+    };
+  },
+  computed: {
+    rules() {
+      return {
         propertyName: [
-          { required: true, message: "名称不能为空", trigger: "blur" },
+          { required: true, message: this.$t('mes.standard.nameRequired'), trigger: "blur" },
         ],
         materialsTypeId: [
-          { required: true, message: "物资类型不能为空", trigger: "blur" },
+          { required: true, message: this.$t('mes.standard.materialsTypeRequired'), trigger: "blur" },
         ],
-      },
-    };
+      };
+    }
   },
   created() {
     this.getList();
@@ -283,7 +286,7 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "新增物资规格种类";
+      this.title = this.$t('mes.standard.addProperty');
       this.optType = "add";
     },
 
@@ -293,7 +296,7 @@ export default {
       selectPropertyById(row.propertyId).then((response) => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改物资规格种类";
+        this.title = this.$t('mes.standard.editProperty');
         this.optType = "edit";
       });
     },
@@ -305,7 +308,7 @@ export default {
           if (this.form.propertyId != null) {
             updateProperty(this.form).then((response) => {
               console.log(response, "修改返回");
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('mes.standard.editSuccess'));
               this.open = false;
               this.getList();
             });
@@ -313,7 +316,7 @@ export default {
             console.log(this.form, "新增参数");
             addProperty(this.form).then((response) => {
               console.log(response, "新增返回");
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('mes.standard.addSuccess'));
               this.open = false;
               this.getList();
             });
@@ -327,13 +330,13 @@ export default {
     handleDelete(row) {
       const propertyId = row.propertyId || this.ids;
       this.$modal
-        .confirm("是否确认删除所选数据项?")
+        .confirm(this.$t('mes.standard.deleteConfirm'))
         .then(function () {
           return deleteProperty(propertyId);
         })
         .then(() => {
           this.getList();
-          this.$modal.msgSuccess("删除成功");
+          this.$modal.msgSuccess(this.$t('mes.standard.deleteSuccess'));
         })
         .catch(() => {});
     },

+ 58 - 53
src/views/mes/material/typeofmaterial/index.vue

@@ -17,10 +17,10 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item> -->
-      <el-form-item label="物资类型名称" prop="materialsTypeName">
+      <el-form-item :label="$t('mes.materialType.materialsTypeName')" prop="materialsTypeName">
         <el-input
           v-model="queryParams.materialsTypeName"
-          placeholder="请输入类型名称"
+          :placeholder="$t('mes.materialType.materialsTypeNamePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
@@ -43,14 +43,14 @@
           icon="el-icon-search"
           size="mini"
           @click="handleQuery"
-          >搜索
+          >{{ $t('common.search') }}
         </el-button>
         <el-button
           v-no-more-click
           icon="el-icon-refresh"
           size="mini"
           @click="resetQuery"
-          >重置
+          >{{ $t('common.reset') }}
         </el-button>
       </el-form-item>
     </el-form>
@@ -61,7 +61,7 @@
       icon="el-icon-plus"
       v-hasPermi="['mes:mat:type:add']"
       @click="handleAdd"
-      >新增
+      >{{ $t('common.add') }}
     </el-button>
     <el-table
       v-loading="loading"
@@ -76,7 +76,7 @@
         prop="materialsTypeCode"
       /> -->
       <el-table-column
-        label="物资类型名称"
+        :label="$t('mes.materialType.materialsTypeName')"
         align="center"
         prop="materialsTypeName"
         :show-overflow-tooltip="true"
@@ -102,7 +102,7 @@
       <!--          <span>{{ formattedTime(scope.row.timeoutAlarm) }}</span>-->
       <!--        </template>-->
       <!--      </el-table-column>-->
-      <el-table-column label="物资类型图标" prop="materialsTypeIcon">
+      <el-table-column :label="$t('mes.materialType.materialsTypeIcon')" prop="materialsTypeIcon">
         <template slot-scope="scope">
           <div class="img-box" v-if="scope.row.materialsTypeIcon">
             <el-image
@@ -121,7 +121,7 @@
           <span v-else>-</span>
         </template>
       </el-table-column>
-      <el-table-column label="物资类型缩略图" prop="materialsTypePicture">
+      <el-table-column :label="$t('mes.materialType.materialsTypePicture')" prop="materialsTypePicture">
         <template slot-scope="scope">
           <div class="img-box" v-if="scope.row.materialsTypePicture">
             <el-image
@@ -152,7 +152,7 @@
       <!--        </template>-->
       <!--      </el-table-column>-->
       <el-table-column
-        label="操作"
+        :label="$t('common.operation')"
         align="center"
         class-name="small-padding fixed-width"
       >
@@ -164,7 +164,7 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['mes:mat:type:edit']"
-            >修改
+            >{{ $t('common.edit') }}
           </el-button>
           <el-button
             v-no-more-click
@@ -173,7 +173,7 @@
             icon="el-icon-plus"
             v-hasPermi="['mes:mat:type:add']"
             @click="handleAdd(scope.row)"
-            >新增
+            >{{ $t('common.add') }}
           </el-button>
           <!--           v-if="scope.row.parentId != 0"-->
           <el-button
@@ -183,7 +183,7 @@
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['mes:mat:type:remove']"
-            >删除
+            >{{ $t('common.delete') }}
           </el-button>
         </template>
       </el-table-column>
@@ -203,10 +203,10 @@
 <!--        </el-form-item>-->
         <el-row>
           <el-col :span="17">
-            <el-form-item label="物资类型编码" prop="materialsTypeCode">
+            <el-form-item :label="$t('mes.materialType.materialsTypeCode')" prop="materialsTypeCode">
               <el-input
                 v-model="form.materialsTypeCode"
-                placeholder="请输入物资类型编码"
+                :placeholder="$t('mes.materialType.materialsTypeCodePlaceholder')"
                 style="width: 318px"
               />
             </el-form-item>
@@ -216,25 +216,25 @@
               <el-switch
                 v-model="autoGenFlag"
                 active-color="#13ce66"
-                active-text="自动生成"
+                :active-text="$t('mes.materialType.autoGenerate')"
                 @change="handleAutoGenChange(autoGenFlag)"
               >
               </el-switch>
             </el-form-item>
           </el-col>
         </el-row>
-        <el-form-item label="物资类型名称" prop="materialsTypeName">
+        <el-form-item :label="$t('mes.materialType.materialsTypeName')" prop="materialsTypeName">
           <el-input
             v-model="form.materialsTypeName"
-            placeholder="请输入物资类型名称"
+            :placeholder="$t('mes.materialType.materialsTypeNameInputPlaceholder')"
             style="width: 318px"
           />
         </el-form-item>
-        <el-form-item label="物资规格" prop="propertyId">
+        <el-form-item :label="$t('mes.materialType.properties')" prop="propertyId">
           <el-select
             style="width: 318px"
             v-model="form.propertyIds"
-            placeholder="请选择规格"
+            :placeholder="$t('mes.materialType.propertiesPlaceholder')"
           >
             <el-option
               v-for="property in PropertyList"
@@ -247,7 +247,7 @@
         <el-row>
 
           <el-col :span="10">
-            <el-form-item label="物资类型图标" prop="materialsTypeIcon">
+            <el-form-item :label="$t('mes.materialType.materialsTypeIcon')" prop="materialsTypeIcon">
               <ImageUploadSingle
                 :limit="1"
                 :value="form.materialsTypeIcon"
@@ -258,7 +258,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="10">
-            <el-form-item label="物资缩略图" prop="materialsTypePicture">
+            <el-form-item :label="$t('mes.materialType.materialsTypeThumbnail')" prop="materialsTypePicture">
               <ImageUploadSingle
                 :limit="1"
                 :value="form.materialsTypePicture"
@@ -270,21 +270,21 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-form-item label="检查标准" prop="checkStandard">
+          <el-form-item :label="$t('mes.materialType.checkStandard')" prop="checkStandard">
             <el-input
               type="textarea"
               :rows="10"
               v-model="form.checkStandard"
-              placeholder="请输入检查标准"
+              :placeholder="$t('mes.materialType.checkStandardPlaceholder')"
               style="width: 420px"
             />
           </el-form-item>
         </el-row>
-        <el-form-item label="备注" prop="remark">
+        <el-form-item :label="$t('common.remark')" prop="remark">
           <el-input
             v-model="form.remark"
             type="textarea"
-            placeholder="请输入内容"
+            :placeholder="$t('common.pleaseInput') + $t('common.remark')"
             style="width: 420px"
           />
         </el-form-item>
@@ -372,9 +372,9 @@
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button v-no-more-click type="primary" @click="submitForm"
-          >确 定
+          >{{ $t('common.confirm') }}
         </el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -455,38 +455,43 @@ export default {
           seconds: 0,
         },
       },
-      timeUnits: [
+    };
+  },
+  computed: {
+    rules() {
+      return {
+        materialsTypeCode: [
+          { required: true, message: this.$t('mes.materialType.materialsTypeCodeRequired'), trigger: "blur" },
+        ],
+        materialsTypeName: [
+          { required: true, message: this.$t('mes.materialType.materialsTypeNameRequired'), trigger: "blur" },
+        ],
+      };
+    },
+    timeUnits() {
+      return [
         {
           name: "days",
-          label: "天",
+          label: this.$t('mes.materialType.day'),
           options: Array.from({ length: 31 }, (_, i) => i),
         },
         {
           name: "hours",
-          label: "时",
+          label: this.$t('mes.materialType.hour'),
           options: Array.from({ length: 24 }, (_, i) => i),
         },
         {
           name: "minutes",
-          label: "分",
+          label: this.$t('mes.materialType.minute'),
           options: Array.from({ length: 60 }, (_, i) => i),
         },
         {
           name: "seconds",
-          label: "秒",
+          label: this.$t('mes.materialType.second'),
           options: Array.from({ length: 60 }, (_, i) => i),
         },
-      ],
-      // 表单校验
-      rules: {
-        materialsTypeCode: [
-          { required: true, message: "物资类型编码不能为空", trigger: "blur" },
-        ],
-        materialsTypeName: [
-          { required: true, message: "物资类型名称不能为空", trigger: "blur" },
-        ],
-      },
-    };
+      ];
+    }
   },
   created() {
     this.getList();
@@ -590,7 +595,7 @@ export default {
       // this.form.restitutionRequired = 2
       // this.form.status = 'y'
       this.open = true;
-      this.title = "新增物资类型";
+      this.title = this.$t('mes.materialType.addMaterialType');
     },
     changeLabel() {
       this.$forceUpdate();
@@ -622,7 +627,7 @@ export default {
         this.timeValues.loanDuration = convertTime(response.data.loanDuration);
         this.timeValues.timeoutAlarm = convertTime(response.data.timeoutAlarm);
         this.open = true;
-        this.title = "修改物资类型";
+        this.title = this.$t('mes.materialType.editMaterialType');
       });
     },
     // 时间转换
@@ -633,10 +638,10 @@ export default {
       const seconds = totalSeconds % 60;
 
       const parts = [];
-      if (days > 0) parts.push(`${days}`);
-      if (hours > 0) parts.push(`${hours}小时`);
-      if (minutes > 0) parts.push(`${minutes}分钟`);
-      if (seconds > 0) parts.push(`${seconds}`);
+      if (days > 0) parts.push(`${days}${this.$t('mes.materialType.day')}`);
+      if (hours > 0) parts.push(`${hours}${this.$t('mes.materialType.hour')}`);
+      if (minutes > 0) parts.push(`${minutes}${this.$t('mes.materialType.minute')}`);
+      if (seconds > 0) parts.push(`${seconds}${this.$t('mes.materialType.second')}`);
 
       return parts.join(" ");
     },
@@ -659,7 +664,7 @@ export default {
         if (valid) {
           if (this.form.materialsTypeId != null) {
             updateMaterialsType(this.form).then((response) => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('mes.materialType.editSuccess'));
               this.open = false;
               this.getList();
             });
@@ -668,7 +673,7 @@ export default {
               this.form.parentId = 0;
             }
             addMaterialsType(this.form).then((response) => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('mes.materialType.addSuccess'));
               this.open = false;
               this.getList();
             });
@@ -692,13 +697,13 @@ export default {
       const materialsTypeIds = row.materialsTypeId;
       const materialsTypeCodes = row.materialsTypeCode;
       this.$modal
-        .confirm("是否删除所选数据项?")
+        .confirm(this.$t('common.deleteConfirm'))
         .then(function () {
           return deleteMaterialsType(materialsTypeIds);
         })
         .then(() => {
           this.getList();
-          this.$modal.msgSuccess("删除成功");
+          this.$modal.msgSuccess(this.$t('mes.materialType.deleteSuccess'));
         })
         .catch(() => {});
     },

+ 39 - 68
src/views/mes/material/typeofmaterial/index1.vue

@@ -8,19 +8,19 @@
       v-show="showSearch"
       label-width="100px"
     >
-      <el-form-item label="物资类型编码" prop="materialsTypeCode">
+      <el-form-item :label="$t('mes.materialType.materialsTypeCode')" prop="materialsTypeCode">
         <el-input
           v-model="queryParams.materialsTypeCode"
-          placeholder="请输入物资类型编码"
+          :placeholder="$t('mes.materialType.materialsTypeCodePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
 
-      <el-form-item label="物资类型名称" prop="materialsTypeName">
+      <el-form-item :label="$t('mes.materialType.materialsTypeName')" prop="materialsTypeName">
         <el-input
           v-model="queryParams.materialsTypeName"
-          placeholder="请输入物资类型名称"
+          :placeholder="$t('mes.materialType.materialsTypeNamePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
@@ -42,10 +42,10 @@
           icon="el-icon-search"
           size="mini"
           @click="handleQuery"
-          >搜索</el-button
+          >{{ $t('common.search') }}</el-button
         >
         <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery"
-          >重置</el-button
+          >{{ $t('common.reset') }}</el-button
         >
       </el-form-item>
     </el-form>
@@ -59,7 +59,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['mes:mat:type:add']"
-          >新增
+          >{{ $t('common.add') }}
         </el-button>
       </el-col>
       <!--      <el-col :span="1.5">-->
@@ -82,7 +82,7 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['mes:mat:type:batchremove']"
-          >批量删除
+          >{{ $t('common.batchDelete') }}
         </el-button>
       </el-col>
       <!--      <el-col :span="1.5">-->
@@ -108,7 +108,7 @@
     >
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column
-        label="物资类型编码"
+        :label="$t('mes.materialType.materialsTypeCode')"
         align="center"
         prop="materialsTypeCode"
       >
@@ -122,7 +122,7 @@
         </template>
       </el-table-column>
       <el-table-column
-        label="物资类型名称"
+        :label="$t('mes.materialType.materialsTypeName')"
         align="center"
         prop="materialsTypeName"
       />
@@ -140,7 +140,7 @@
       </el-table-column> -->
 
       <el-table-column
-        label="操作"
+        :label="$t('common.operation')"
         align="center"
         class-name="small-padding fixed-width"
       >
@@ -151,7 +151,7 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['mes:mat:type:edit']"
-            >编辑
+            >{{ $t('common.edit') }}
           </el-button>
           <el-button v-no-more-click
             size="mini"
@@ -159,7 +159,7 @@
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['mes:mat:type:remove']"
-            >删除
+            >{{ $t('common.delete') }}
           </el-button>
         </template>
       </el-table-column>
@@ -182,11 +182,11 @@
       <el-form ref="form" :model="form" :rules="rules" label-width="110px">
         <el-row>
           <el-col :span="16">
-            <el-form-item label="物资类型编码" prop="materialsTypeCode">
+            <el-form-item :label="$t('mes.materialType.materialsTypeCode')" prop="materialsTypeCode">
               <el-input
                 style="width: 290px"
                 v-model="form.materialsTypeCode"
-                placeholder="请输入物资类型编码"
+                :placeholder="$t('mes.materialType.materialsTypeCodePlaceholder')"
               />
             </el-form-item>
           </el-col>
@@ -203,18 +203,18 @@
               <el-switch
                 v-model="autoGenFlag"
                 active-color="#13ce66"
-                active-text="自动生成"
+                :active-text="$t('mes.materialType.autoGenerate')"
                 @change="handleAutoGenChange(autoGenFlag)"
               >
               </el-switch>
             </el-form-item>
           </el-col>
         </el-row>
-        <el-form-item label="物资类型名称" prop="materialsTypeName">
+        <el-form-item :label="$t('mes.materialType.materialsTypeName')" prop="materialsTypeName">
           <el-input
             style="width: 318px"
             v-model="form.materialsTypeName"
-            placeholder="请输入物资类型名称"
+            :placeholder="$t('mes.materialType.materialsTypeNamePlaceholder')"
           />
         </el-form-item>
         <!-- <el-form-item label="借用时长" prop="calendarType">
@@ -232,23 +232,23 @@
           <el-radio v-model="radio" label="1">启用</el-radio>
           <el-radio v-model="radio" label="2">禁用</el-radio>
         </el-form-item> -->
-        <el-form-item label="备注" prop="remark">
+        <el-form-item :label="$t('common.remark')" prop="remark">
           <el-input
             type="textarea"
             style="width: 318px"
             :row="4"
             v-model="form.remark"
-            placeholder="请输入"
+            :placeholder="$t('mes.materialType.remarkPlaceholder')"
           />
         </el-form-item>
       </el-form>
 
       <div slot="footer" class="dialog-footer">
         <el-button v-no-more-click type="primary" @click="cancel" v-if="optType == 'view'"
-          >返回</el-button
+          >{{ $t('common.back') }}</el-button
         >
-        <el-button v-no-more-click type="primary" @click="submitForm" v-else>确 定</el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click type="primary" @click="submitForm" v-else>{{ $t('common.confirm') }}</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -304,52 +304,23 @@ export default {
         materialsTypeName: null,
         // calendarType: null,
       },
-      pickerOptions: {
-        shortcuts: [
-          {
-            text: "最近一周",
-            onClick(picker) {
-              const end = new Date();
-              const start = new Date();
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
-              picker.$emit("pick", [start, end]);
-            },
-          },
-          {
-            text: "最近一个月",
-            onClick(picker) {
-              const end = new Date();
-              const start = new Date();
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
-              picker.$emit("pick", [start, end]);
-            },
-          },
-          {
-            text: "最近三个月",
-            onClick(picker) {
-              const end = new Date();
-              const start = new Date();
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
-              picker.$emit("pick", [start, end]);
-            },
-          },
-        ],
-      },
-
       value2: "",
 
       // 表单参数
       form: {},
-      // 表单校验
-      rules: {
+    };
+  },
+  computed: {
+    rules() {
+      return {
         materialsTypeCode: [
-          { required: true, message: "物资类型编码不能为空", trigger: "blur" },
+          { required: true, message: this.$t('mes.materialType.materialsTypeCodeRequired'), trigger: "blur" },
         ],
         materialsTypeName: [
-          { required: true, message: "物资类型名称不能为空", trigger: "blur" },
+          { required: true, message: this.$t('mes.materialType.materialsTypeNameRequired'), trigger: "blur" },
         ],
-      },
-    };
+      };
+    }
   },
   created() {
     this.getList();
@@ -417,7 +388,7 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "新增物资类型";
+      this.title = this.$t('mes.materialType.addMaterialType');
       this.optType = "add";
     },
     // 查询明细按钮操作
@@ -427,7 +398,7 @@ export default {
       getTeam(teamId).then((response) => {
         this.form = response.data;
         this.open = true;
-        this.title = "查看班组";
+        this.title = this.$t('mes.materialType.viewMaterialType');
         this.optType = "view";
       });
     },
@@ -438,7 +409,7 @@ export default {
       getTeam(teamId).then((response) => {
         this.form = response.data;
         this.open = true;
-        this.title = "编辑物资类型";
+        this.title = this.$t('mes.materialType.editMaterialType');
         this.optType = "edit";
       });
     },
@@ -448,13 +419,13 @@ export default {
         if (valid) {
           if (this.form.materialsTypeId != null) {
             updateMaterialsType(this.form).then((response) => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('mes.materialType.editSuccess'));
               this.open = false;
               this.getList();
             });
           } else {
             addMaterialsType(this.form).then((response) => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('mes.materialType.addSuccess'));
               this.open = false;
               this.getList();
             });
@@ -466,13 +437,13 @@ export default {
     handleDelete(row) {
       const teamIds = row.teamId || this.ids;
       this.$modal
-        .confirm('是否确认删除班组编号为"' + teamIds + '"的数据项?')
+        .confirm(this.$t('mes.materialType.deleteConfirm', { teamId: teamIds }))
         .then(function () {
           return delTeam(teamIds);
         })
         .then(() => {
           this.getList();
-          this.$modal.msgSuccess("删除成功");
+          this.$modal.msgSuccess(this.$t('mes.materialType.deleteSuccess'));
         })
         .catch(() => {});
     },

+ 27 - 27
src/views/monitor/logininfor/index.vue

@@ -1,28 +1,28 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="登录地址" prop="ipaddr">
+      <el-form-item :label="$t('monitor.logininfor.loginAddress')" prop="ipaddr">
         <el-input
           v-model="queryParams.ipaddr"
-          placeholder="请输入登录地址"
+          :placeholder="$t('monitor.logininfor.loginAddressPlaceholder')"
           clearable
           style="width: 240px;"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="用户名称" prop="userName">
+      <el-form-item :label="$t('system.user.userName')" prop="userName">
         <el-input
           v-model="queryParams.userName"
-          placeholder="请输入用户名称"
+          :placeholder="$t('system.user.userNamePlaceholder')"
           clearable
           style="width: 240px;"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="状态" prop="status">
+      <el-form-item :label="$t('common.status')" prop="status">
         <el-select
           v-model="queryParams.status"
-          placeholder="登录状态"
+          :placeholder="$t('monitor.logininfor.loginStatusPlaceholder')"
           clearable
           style="width: 240px"
         >
@@ -34,20 +34,20 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="登录时间">
+      <el-form-item :label="$t('monitor.logininfor.loginTime')">
         <el-date-picker
           v-model="dateRange"
           style="width: 240px"
           value-format="yyyy-MM-dd"
           type="daterange"
           range-separator="-"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
+          :start-placeholder="$t('common.startDate')"
+          :end-placeholder="$t('common.endDate')"
         ></el-date-picker>
       </el-form-item>
       <el-form-item>
-        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('common.search') }}</el-button>
+        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('common.reset') }}</el-button>
       </el-form-item>
     </el-form>
 
@@ -61,7 +61,7 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['monitor:logininfor:remove']"
-        >删除</el-button>
+        >{{ $t('common.delete') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -71,7 +71,7 @@
           size="mini"
           @click="handleClean"
           v-hasPermi="['monitor:logininfor:remove']"
-        >清空</el-button>
+        >{{ $t('monitor.logininfor.clean') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -81,26 +81,26 @@
           size="mini"
           @click="handleExport"
           v-hasPermi="['monitor:logininfor:export']"
-        >导出</el-button>
+        >{{ $t('common.export') }}</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table ref="tables" v-loading="loading" :data="list" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="handleSortChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="访问编号" align="center" prop="infoId" />
-      <el-table-column label="用户名称" align="center" prop="userName" :show-overflow-tooltip="true" sortable="custom" :sort-orders="['descending', 'ascending']" />
-      <el-table-column label="登录地址" align="center" prop="ipaddr" width="130" :show-overflow-tooltip="true" />
-      <el-table-column label="登录地点" align="center" prop="loginLocation" :show-overflow-tooltip="true" />
-      <el-table-column label="浏览器" align="center" prop="browser" :show-overflow-tooltip="true" />
-      <el-table-column label="操作系统" align="center" prop="os" />
-      <el-table-column label="登录状态" align="center" prop="status">
+      <el-table-column :label="$t('monitor.logininfor.infoId')" align="center" prop="infoId" />
+      <el-table-column :label="$t('system.user.userName')" align="center" prop="userName" :show-overflow-tooltip="true" sortable="custom" :sort-orders="['descending', 'ascending']" />
+      <el-table-column :label="$t('monitor.logininfor.loginAddress')" align="center" prop="ipaddr" width="130" :show-overflow-tooltip="true" />
+      <el-table-column :label="$t('monitor.logininfor.loginLocation')" align="center" prop="loginLocation" :show-overflow-tooltip="true" />
+      <el-table-column :label="$t('monitor.logininfor.browser')" align="center" prop="browser" :show-overflow-tooltip="true" />
+      <el-table-column :label="$t('monitor.logininfor.os')" align="center" prop="os" />
+      <el-table-column :label="$t('monitor.logininfor.loginStatus')" align="center" prop="status">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_common_status" :value="scope.row.status"/>
         </template>
       </el-table-column>
-      <el-table-column label="操作信息" align="center" prop="msg" />
-      <el-table-column label="登录日期" align="center" prop="loginTime" sortable="custom" :sort-orders="['descending', 'ascending']" width="180">
+      <el-table-column :label="$t('monitor.logininfor.operInfo')" align="center" prop="msg" />
+      <el-table-column :label="$t('monitor.logininfor.loginDate')" align="center" prop="loginTime" sortable="custom" :sort-orders="['descending', 'ascending']" width="180">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.loginTime) }}</span>
         </template>
@@ -191,20 +191,20 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const infoIds = row.infoId || this.ids;
-      this.$modal.confirm('是否确认删除访问编号为"' + infoIds + '"的数据项?').then(function() {
+      this.$modal.confirm(this.$t('monitor.logininfor.deleteConfirm', { infoIds: infoIds })).then(function() {
         return delLogininfor(infoIds);
       }).then(() => {
         this.getList();
-        this.$modal.msgSuccess("删除成功");
+        this.$modal.msgSuccess(this.$t('monitor.logininfor.deleteSuccess'));
       }).catch(() => {});
     },
     /** 清空按钮操作 */
     handleClean() {
-      this.$modal.confirm('是否确认清空所有登录日志数据项?').then(function() {
+      this.$modal.confirm(this.$t('monitor.logininfor.cleanConfirm')).then(function() {
         return cleanLogininfor();
       }).then(() => {
         this.getList();
-        this.$modal.msgSuccess("清空成功");
+        this.$modal.msgSuccess(this.$t('monitor.logininfor.cleanSuccess'));
       }).catch(() => {});
     },
     /** 导出按钮操作 */

+ 19 - 19
src/views/monitor/online/index.vue

@@ -1,25 +1,25 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px">
-      <el-form-item label="登录地址" prop="ipaddr">
+      <el-form-item :label="$t('monitor.logininfor.loginAddress')" prop="ipaddr">
         <el-input
           v-model="queryParams.ipaddr"
-          placeholder="请输入登录地址"
+          :placeholder="$t('monitor.logininfor.loginAddressPlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="用户名称" prop="userName">
+      <el-form-item :label="$t('system.user.userName')" prop="userName">
         <el-input
           v-model="queryParams.userName"
-          placeholder="请输入用户名称"
+          :placeholder="$t('system.user.userNamePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
       <el-form-item>
-        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('common.search') }}</el-button>
+        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('common.reset') }}</el-button>
       </el-form-item>
 
     </el-form>
@@ -28,24 +28,24 @@
       :data="list.slice((pageNum-1)*pageSize,pageNum*pageSize)"
       style="width: 100%;"
     >
-      <el-table-column label="序号" type="index" align="center">
+      <el-table-column :label="$t('common.serialNo')" type="index" align="center">
         <template slot-scope="scope">
           <span>{{(pageNum - 1) * pageSize + scope.$index + 1}}</span>
         </template>
       </el-table-column>
-      <el-table-column label="会话编号" align="center" prop="tokenId" :show-overflow-tooltip="true" />
-      <el-table-column label="登录名称" align="center" prop="userName" :show-overflow-tooltip="true" />
-      <el-table-column label="部门名称" align="center" prop="deptName" />
-      <el-table-column label="主机" align="center" prop="ipaddr" :show-overflow-tooltip="true" />
-      <el-table-column label="登录地点" align="center" prop="loginLocation" :show-overflow-tooltip="true" />
-      <el-table-column label="浏览器" align="center" prop="browser" />
-      <el-table-column label="操作系统" align="center" prop="os" />
-      <el-table-column label="登录时间" align="center" prop="loginTime" width="180">
+      <el-table-column :label="$t('monitor.online.tokenId')" align="center" prop="tokenId" :show-overflow-tooltip="true" />
+      <el-table-column :label="$t('monitor.online.loginName')" align="center" prop="userName" :show-overflow-tooltip="true" />
+      <el-table-column :label="$t('monitor.online.deptName')" align="center" prop="deptName" />
+      <el-table-column :label="$t('monitor.online.host')" align="center" prop="ipaddr" :show-overflow-tooltip="true" />
+      <el-table-column :label="$t('monitor.logininfor.loginLocation')" align="center" prop="loginLocation" :show-overflow-tooltip="true" />
+      <el-table-column :label="$t('monitor.logininfor.browser')" align="center" prop="browser" />
+      <el-table-column :label="$t('monitor.logininfor.os')" align="center" prop="os" />
+      <el-table-column :label="$t('monitor.logininfor.loginTime')" align="center" prop="loginTime" width="180">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.loginTime) }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column :label="$t('common.operation')" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button v-no-more-click
             size="mini"
@@ -53,7 +53,7 @@
             icon="el-icon-delete"
             @click="handleForceLogout(scope.row)"
             v-hasPermi="['monitor:online:forceLogout']"
-          >强退</el-button>
+          >{{ $t('monitor.online.forceLogout') }}</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -109,11 +109,11 @@ export default {
     },
     /** 强退按钮操作 */
     handleForceLogout(row) {
-      this.$modal.confirm('是否确认强退名称为"' + row.userName + '"的用户?').then(function() {
+      this.$modal.confirm(this.$t('monitor.online.forceLogoutConfirm', { userName: row.userName })).then(function() {
         return forceLogout(row.tokenId);
       }).then(() => {
         this.getList();
-        this.$modal.msgSuccess("强退成功");
+        this.$modal.msgSuccess(this.$t('monitor.online.forceLogoutSuccess'));
       }).catch(() => {});
     }
   }

+ 45 - 45
src/views/monitor/operlog/index.vue

@@ -1,28 +1,28 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="系统模块" prop="title">
+      <el-form-item :label="$t('monitor.operlog.systemModule')" prop="title">
         <el-input
           v-model="queryParams.title"
-          placeholder="请输入系统模块"
+          :placeholder="$t('monitor.operlog.systemModulePlaceholder')"
           clearable
           style="width: 240px;"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="操作人员" prop="operName">
+      <el-form-item :label="$t('monitor.operlog.operName')" prop="operName">
         <el-input
           v-model="queryParams.operName"
-          placeholder="请输入操作人员"
+          :placeholder="$t('monitor.operlog.operNamePlaceholder')"
           clearable
           style="width: 240px;"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="类型" prop="businessType">
+      <el-form-item :label="$t('monitor.operlog.type')" prop="businessType">
         <el-select
           v-model="queryParams.businessType"
-          placeholder="操作类型"
+          :placeholder="$t('monitor.operlog.operTypePlaceholder')"
           clearable
           style="width: 240px"
         >
@@ -34,10 +34,10 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="状态" prop="status">
+      <el-form-item :label="$t('common.status')" prop="status">
         <el-select
           v-model="queryParams.status"
-          placeholder="操作状态"
+          :placeholder="$t('monitor.operlog.operStatusPlaceholder')"
           clearable
           style="width: 240px"
         >
@@ -49,20 +49,20 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="操作时间">
+      <el-form-item :label="$t('monitor.operlog.operTime')">
         <el-date-picker
           v-model="dateRange"
           style="width: 240px"
           value-format="yyyy-MM-dd"
           type="daterange"
           range-separator="-"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
+          :start-placeholder="$t('common.startDate')"
+          :end-placeholder="$t('common.endDate')"
         ></el-date-picker>
       </el-form-item>
       <el-form-item>
-        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('common.search') }}</el-button>
+        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('common.reset') }}</el-button>
       </el-form-item>
     </el-form>
 
@@ -76,7 +76,7 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['monitor:operlog:remove']"
-        >删除</el-button>
+        >{{ $t('common.delete') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -86,7 +86,7 @@
           size="mini"
           @click="handleClean"
           v-hasPermi="['monitor:operlog:remove']"
-        >清空</el-button>
+        >{{ $t('monitor.operlog.clean') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -96,35 +96,35 @@
           size="mini"
           @click="handleExport"
           v-hasPermi="['monitor:operlog:export']"
-        >导出</el-button>
+        >{{ $t('common.export') }}</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table ref="tables" v-loading="loading" :data="list" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="handleSortChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="日志编号" align="center" prop="operId" />
-      <el-table-column label="系统模块" align="center" prop="title" />
-      <el-table-column label="操作类型" align="center" prop="businessType">
+      <el-table-column :label="$t('monitor.operlog.operId')" align="center" prop="operId" />
+      <el-table-column :label="$t('monitor.operlog.systemModule')" align="center" prop="title" />
+      <el-table-column :label="$t('monitor.operlog.operType')" align="center" prop="businessType">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_oper_type" :value="scope.row.businessType"/>
         </template>
       </el-table-column>
-      <el-table-column label="请求方式" align="center" prop="requestMethod" />
-      <el-table-column label="操作人员" align="center" prop="operName" width="100" :show-overflow-tooltip="true" sortable="custom" :sort-orders="['descending', 'ascending']" />
-      <el-table-column label="操作地址" align="center" prop="operIp" width="130" :show-overflow-tooltip="true" />
-      <el-table-column label="操作地点" align="center" prop="operLocation" :show-overflow-tooltip="true" />
-      <el-table-column label="操作状态" align="center" prop="status">
+      <el-table-column :label="$t('monitor.operlog.requestMethod')" align="center" prop="requestMethod" />
+      <el-table-column :label="$t('monitor.operlog.operName')" align="center" prop="operName" width="100" :show-overflow-tooltip="true" sortable="custom" :sort-orders="['descending', 'ascending']" />
+      <el-table-column :label="$t('monitor.operlog.operIp')" align="center" prop="operIp" width="130" :show-overflow-tooltip="true" />
+      <el-table-column :label="$t('monitor.operlog.operLocation')" align="center" prop="operLocation" :show-overflow-tooltip="true" />
+      <el-table-column :label="$t('monitor.operlog.operStatus')" align="center" prop="status">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_common_status" :value="scope.row.status"/>
         </template>
       </el-table-column>
-      <el-table-column label="操作日期" align="center" prop="operTime" sortable="custom" :sort-orders="['descending', 'ascending']" width="180">
+      <el-table-column :label="$t('monitor.operlog.operDate')" align="center" prop="operTime" sortable="custom" :sort-orders="['descending', 'ascending']" width="180">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.operTime) }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column :label="$t('common.operation')" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button v-no-more-click
             size="mini"
@@ -132,7 +132,7 @@
             icon="el-icon-view"
             @click="handleView(scope.row,scope.index)"
             v-hasPermi="['monitor:operlog:query']"
-          >详细</el-button>
+          >{{ $t('monitor.operlog.detail') }}</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -146,44 +146,44 @@
     />
 
     <!-- 操作日志详细 -->
-    <el-dialog title="操作日志详细" :visible.sync="open" width="700px" append-to-body>
+    <el-dialog :title="$t('monitor.operlog.detailTitle')" :visible.sync="open" width="700px" append-to-body>
       <el-form ref="form" :model="form" label-width="100px" size="mini">
         <el-row>
           <el-col :span="12">
-            <el-form-item label="操作模块:">{{ form.title }} / {{ typeFormat(form) }}</el-form-item>
+            <el-form-item :label="$t('monitor.operlog.operModule') + ':'">{{ form.title }} / {{ typeFormat(form) }}</el-form-item>
             <el-form-item
-              label="登录信息:"
+              :label="$t('monitor.operlog.loginInfo') + ':'"
             >{{ form.operName }} / {{ form.operIp }} / {{ form.operLocation }}</el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="请求地址:">{{ form.operUrl }}</el-form-item>
-            <el-form-item label="请求方式:">{{ form.requestMethod }}</el-form-item>
+            <el-form-item :label="$t('monitor.operlog.operUrl') + ':'">{{ form.operUrl }}</el-form-item>
+            <el-form-item :label="$t('monitor.operlog.requestMethod') + ':'">{{ form.requestMethod }}</el-form-item>
           </el-col>
           <el-col :span="24">
-            <el-form-item label="操作方法:">{{ form.method }}</el-form-item>
+            <el-form-item :label="$t('monitor.operlog.method') + ':'">{{ form.method }}</el-form-item>
           </el-col>
           <el-col :span="24">
-            <el-form-item label="请求参数:">{{ form.operParam }}</el-form-item>
+            <el-form-item :label="$t('monitor.operlog.operParam') + ':'">{{ form.operParam }}</el-form-item>
           </el-col>
           <el-col :span="24">
-            <el-form-item label="返回参数:">{{ form.jsonResult }}</el-form-item>
+            <el-form-item :label="$t('monitor.operlog.jsonResult') + ':'">{{ form.jsonResult }}</el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="操作状态:">
-              <div v-if="form.status === 0">正常</div>
-              <div v-else-if="form.status === 1">失败</div>
+            <el-form-item :label="$t('monitor.operlog.operStatus') + ':'">
+              <div v-if="form.status === 0">{{ $t('monitor.operlog.normal') }}</div>
+              <div v-else-if="form.status === 1">{{ $t('monitor.operlog.failed') }}</div>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="操作时间:">{{ parseTime(form.operTime) }}</el-form-item>
+            <el-form-item :label="$t('monitor.operlog.operTime') + ':'">{{ parseTime(form.operTime) }}</el-form-item>
           </el-col>
           <el-col :span="24">
-            <el-form-item label="异常信息:" v-if="form.status === 1">{{ form.errorMsg }}</el-form-item>
+            <el-form-item :label="$t('monitor.operlog.errorMsg') + ':'" v-if="form.status === 1">{{ form.errorMsg }}</el-form-item>
           </el-col>
         </el-row>
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <el-button v-no-more-click @click="open = false">关 闭</el-button>
+        <el-button v-no-more-click @click="open = false">{{ $t('common.close') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -277,20 +277,20 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const operIds = row.operId || this.ids;
-      this.$modal.confirm('是否确认删除日志编号为"' + operIds + '"的数据项?').then(function() {
+      this.$modal.confirm(this.$t('monitor.operlog.deleteConfirm', { operIds: operIds })).then(function() {
         return delOperlog(operIds);
       }).then(() => {
         this.getList();
-        this.$modal.msgSuccess("删除成功");
+        this.$modal.msgSuccess(this.$t('monitor.operlog.deleteSuccess'));
       }).catch(() => {});
     },
     /** 清空按钮操作 */
     handleClean() {
-      this.$modal.confirm('是否确认清空所有操作日志数据项?').then(function() {
+      this.$modal.confirm(this.$t('monitor.operlog.cleanConfirm')).then(function() {
         return cleanOperlog();
       }).then(() => {
         this.getList();
-        this.$modal.msgSuccess("清空成功");
+        this.$modal.msgSuccess(this.$t('monitor.operlog.cleanSuccess'));
       }).catch(() => {});
     },
     /** 导出按钮操作 */

+ 16 - 16
src/views/register.vue

@@ -1,9 +1,9 @@
 <template>
   <div class="register">
     <el-form ref="registerForm" :model="registerForm" :rules="registerRules" class="register-form">
-      <h3 class="title">国软MES</h3>
+      <h3 class="title">{{ $t('register.systemName') }}</h3>
       <el-form-item prop="username">
-        <el-input v-model="registerForm.username" type="text" auto-complete="off" placeholder="账号">
+        <el-input v-model="registerForm.username" type="text" auto-complete="off" :placeholder="$t('register.username')">
           <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
         </el-input>
       </el-form-item>
@@ -12,7 +12,7 @@
           v-model="registerForm.password"
           type="password"
           auto-complete="off"
-          placeholder="密码"
+          :placeholder="$t('register.password')"
           @keyup.enter.native="handleRegister"
         >
           <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
@@ -23,7 +23,7 @@
           v-model="registerForm.confirmPassword"
           type="password"
           auto-complete="off"
-          placeholder="确认密码"
+          :placeholder="$t('register.confirmPassword')"
           @keyup.enter.native="handleRegister"
         >
           <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
@@ -33,7 +33,7 @@
         <el-input
           v-model="registerForm.code"
           auto-complete="off"
-          placeholder="验证码"
+          :placeholder="$t('register.code')"
           style="width: 63%"
           @keyup.enter.native="handleRegister"
         >
@@ -51,11 +51,11 @@
           style="width:100%;"
           @click.native.prevent="handleRegister"
         >
-          <span v-if="!loading">注 册</span>
-          <span v-else>注 册 中...</span>
+          <span v-if="!loading">{{ $t('register.register') }}</span>
+          <span v-else>{{ $t('register.registering') }}</span>
         </el-button>
         <div style="float: right;">
-          <router-link class="link-type" :to="'/login'">使用已有账户登录</router-link>
+          <router-link class="link-type" :to="'/login'">{{ $t('register.loginWithExisting') }}</router-link>
         </div>
       </el-form-item>
     </el-form>
@@ -74,7 +74,7 @@ export default {
   data() {
     const equalToPassword = (rule, value, callback) => {
       if (this.registerForm.password !== value) {
-        callback(new Error("两次输入的密码不一致"));
+        callback(new Error(this.$t('register.passwordMismatch')));
       } else {
         callback();
       }
@@ -90,18 +90,18 @@ export default {
       },
       registerRules: {
         username: [
-          { required: true, trigger: "blur", message: "请输入您的账号" },
-          { min: 2, max: 20, message: '用户账号长度必须介于 2 和 20 之间', trigger: 'blur' }
+          { required: true, trigger: "blur", message: this.$t('register.usernameRequired') },
+          { min: 2, max: 20, message: this.$t('register.usernameLength'), trigger: 'blur' }
         ],
         password: [
-          { required: true, trigger: "blur", message: "请输入您的密码" },
-          { min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur' }
+          { required: true, trigger: "blur", message: this.$t('register.passwordRequired') },
+          { min: 5, max: 20, message: this.$t('register.passwordLength'), trigger: 'blur' }
         ],
         confirmPassword: [
-          { required: true, trigger: "blur", message: "请再次输入您的密码" },
+          { required: true, trigger: "blur", message: this.$t('register.confirmPasswordRequired') },
           { required: true, validator: equalToPassword, trigger: "blur" }
         ],
-        code: [{ required: true, trigger: "change", message: "请输入验证码" }]
+        code: [{ required: true, trigger: "change", message: this.$t('register.codeRequired') }]
       },
       loading: false,
       captchaOnOff: true
@@ -126,7 +126,7 @@ export default {
           this.loading = true;
           register(this.registerForm).then(res => {
             const username = this.registerForm.username;
-            this.$alert("<font color='red'>恭喜你,您的账号 " + username + " 注册成功!</font>", '系统提示', {
+            this.$alert("<font color='red'>" + this.$t('register.registerSuccess', { username }) + "</font>", this.$t('register.systemTip'), {
               dangerouslyUseHTMLString: true,
               type: 'success'
             }).then(() => {

+ 49 - 49
src/views/system/autocode/index.vue

@@ -1,28 +1,28 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="规则名称" prop="ruleName">
+      <el-form-item :label="$t('systemOther.autocode.ruleName')" prop="ruleName">
         <el-input
           v-model="queryParams.ruleName"
-          placeholder="请输入规则名称"
+          :placeholder="$t('systemOther.autocode.ruleNamePlaceholder')"
           clearable
           style="width: 240px"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="规则编码" prop="ruleCode">
+      <el-form-item :label="$t('systemOther.autocode.ruleCode')" prop="ruleCode">
         <el-input
           v-model="queryParams.ruleCode"
-          placeholder="请输入规则编码"
+          :placeholder="$t('systemOther.autocode.ruleCodePlaceholder')"
           clearable
           style="width: 240px"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="启用状态" prop="enableFlag">
+      <el-form-item :label="$t('systemOther.autocode.enableStatus')" prop="enableFlag">
         <el-select
           v-model="queryParams.enableFlag"
-          placeholder="启用状态"
+          :placeholder="$t('systemOther.autocode.enableStatus')"
           clearable
           style="width: 240px"
         >
@@ -35,8 +35,8 @@
         </el-select>
       </el-form-item>
       <el-form-item>
-        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('common.search') }}</el-button>
+        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('common.reset') }}</el-button>
       </el-form-item>
     </el-form>
 
@@ -49,7 +49,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['system:autocode:rule:add']"
-        >新增</el-button>
+        >{{ $t('common.add') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -60,7 +60,7 @@
           :disabled="single"
           @click="handleUpdate"
           v-hasPermi="['system:autocode:rule:edit']"
-        >修改</el-button>
+        >{{ $t('common.edit') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -71,35 +71,35 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['system:autocode:rule:remove']"
-        >删除</el-button>
+        >{{ $t('common.delete') }}</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="ruleList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="规则编号" align="center" width="210px" prop="ruleCode" >
+      <el-table-column :label="$t('systemOther.autocode.ruleNo')" align="center" width="210px" prop="ruleCode" >
           <template slot-scope="scope">
           <router-link :to="'/system/autocodePart/index/' + scope.row.ruleId" class="link-type">
             <span>{{ scope.row.ruleCode }}</span>
           </router-link>
         </template>
       </el-table-column>
-      <el-table-column label="规则名称" align="center" prop="ruleName" :show-overflow-tooltip="true" />
-      <el-table-column label="最大长度" align="center" prop="maxLength" />
-      <el-table-column label="是否补齐" align="center" prop="isPadded" />
-      <el-table-column label="是否可用" align="center" prop="enableFlag">
+      <el-table-column :label="$t('systemOther.autocode.ruleName')" align="center" prop="ruleName" :show-overflow-tooltip="true" />
+      <el-table-column :label="$t('systemOther.autocode.maxLength')" align="center" prop="maxLength" />
+      <el-table-column :label="$t('systemOther.autocode.isPadded')" align="center" prop="isPadded" />
+      <el-table-column :label="$t('systemOther.autocode.isEnabled')" align="center" prop="enableFlag">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.enableFlag"/>
         </template>
       </el-table-column>
-      <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" />
-      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+      <el-table-column :label="$t('common.remark')" align="center" prop="remark" :show-overflow-tooltip="true" />
+      <el-table-column :label="$t('common.createTime')" align="center" prop="createTime" width="180">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.createTime) }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column :label="$t('common.operation')" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button v-no-more-click
             size="mini"
@@ -107,14 +107,14 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['system:autocode:rule:edit']"
-          >修改</el-button>
+          >{{ $t('common.edit') }}</el-button>
           <el-button v-no-more-click
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['system:autocode:rule:remove']"
-          >删除</el-button>
+          >{{ $t('common.delete') }}</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -130,34 +130,34 @@
     <!-- 添加或修改参数配置对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="规则编码" prop="ruleCode">
-          <el-input v-model="form.ruleCode" placeholder="请输入规则编码" />
+        <el-form-item :label="$t('systemOther.autocode.ruleCode')" prop="ruleCode">
+          <el-input v-model="form.ruleCode" :placeholder="$t('systemOther.autocode.ruleCodePlaceholder')" />
         </el-form-item>
-        <el-form-item label="规则名称" prop="ruleName">
-          <el-input v-model="form.ruleName" placeholder="请输入规则名称" />
+        <el-form-item :label="$t('systemOther.autocode.ruleName')" prop="ruleName">
+          <el-input v-model="form.ruleName" :placeholder="$t('systemOther.autocode.ruleNamePlaceholder')" />
         </el-form-item>
-        <el-form-item label="描述" prop="ruleDesc">
-          <el-input v-model="form.ruleDesc" placeholder="请输入描述信息" />
+        <el-form-item :label="$t('systemOther.autocode.description')" prop="ruleDesc">
+          <el-input v-model="form.ruleDesc" :placeholder="$t('systemOther.autocode.descriptionPlaceholder')" />
         </el-form-item>
-        <el-form-item label="最大长度" prop="maxLength">
+        <el-form-item :label="$t('systemOther.autocode.maxLength')" prop="maxLength">
           <el-input-number v-model="form.maxLength" controls-position="right" :min="0" />
         </el-form-item>
-        <el-form-item label="是否补齐" prop="isPadded">
+        <el-form-item :label="$t('systemOther.autocode.isPadded')" prop="isPadded">
           <el-radio-group v-model="form.isPadded">
-                <el-radio label="Y"></el-radio>
-                <el-radio label="N"></el-radio>
+                <el-radio label="Y">{{ $t('common.yes') }}</el-radio>
+                <el-radio label="N">{{ $t('common.no') }}</el-radio>
           </el-radio-group>
         </el-form-item>
-        <el-form-item label="补齐字符" prop="paddedChar" v-if="form.isPadded == 'Y'">
-          <el-input v-model="form.paddedChar" placeholder="请输入补齐字符" />
+        <el-form-item :label="$t('systemOther.autocode.paddedChar')" prop="paddedChar" v-if="form.isPadded == 'Y'">
+          <el-input v-model="form.paddedChar" :placeholder="$t('systemOther.autocode.paddedCharPlaceholder')" />
         </el-form-item>
-        <el-form-item label="补齐方式" prop="paddedMethod" v-if="form.isPadded == 'Y'">
+        <el-form-item :label="$t('systemOther.autocode.paddedMethod')" prop="paddedMethod" v-if="form.isPadded == 'Y'">
           <el-radio-group v-model="form.paddedMethod">
-                <el-radio label="L">左补齐</el-radio>
-                <el-radio label="R">右补齐</el-radio>
+                <el-radio label="L">{{ $t('systemOther.autocode.leftPad') }}</el-radio>
+                <el-radio label="R">{{ $t('systemOther.autocode.rightPad') }}</el-radio>
           </el-radio-group>
         </el-form-item>
-        <el-form-item label="是否启用" prop="enableFlag">
+        <el-form-item :label="$t('systemOther.autocode.isEnabled')" prop="enableFlag">
           <el-radio-group v-model="form.enableFlag">
             <el-radio
               v-for="dict in dict.type.sys_yes_no"
@@ -166,13 +166,13 @@
             >{{dict.label}}</el-radio>
           </el-radio-group>
         </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input>
+        <el-form-item :label="$t('common.remark')" prop="remark">
+          <el-input v-model="form.remark" type="textarea" :placeholder="$t('system.user.remarkPlaceholder')"></el-input>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <el-button v-no-more-click type="primary" @click="submitForm">确 定</el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click type="primary" @click="submitForm">{{ $t('common.confirm') }}</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -219,10 +219,10 @@ export default {
       // 表单校验
       rules: {
         ruleCode: [
-          { required: true, message: "规则编码不能为空", trigger: "blur" }
+          { required: true, message: this.$t('systemOther.autocode.ruleCodeRequired'), trigger: "blur" }
         ],
         ruleName: [
-          { required: true, message: "规则名称不能为空", trigger: "blur" }
+          { required: true, message: this.$t('systemOther.autocode.ruleNameRequired'), trigger: "blur" }
         ]
       }
     };
@@ -275,7 +275,7 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "添加编码规则";
+      this.title = this.$t('systemOther.autocode.addRule');
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
@@ -290,7 +290,7 @@ export default {
       getRule(ruleId).then(response => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改编码规则";
+        this.title = this.$t('systemOther.autocode.editRule');
       });
     },
     /** 提交按钮 */
@@ -299,13 +299,13 @@ export default {
         if (valid) {
           if (this.form.ruleId != undefined) {
             updateRule(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('systemOther.autocode.editSuccess'));
               this.open = false;
               this.getList();
             });
           } else {
             addRule(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('systemOther.autocode.addSuccess'));
               this.open = false;
               this.getList();
             });
@@ -317,11 +317,11 @@ export default {
     handleDelete(row) {
         debugger;
       const ruleIds = row.ruleId || this.ids;
-      this.$modal.confirm('是否确认删除编码规则为"' + ruleIds + '"的数据项?').then(function() {
+      this.$modal.confirm(this.$t('systemOther.autocode.deleteConfirm', { ruleIds: ruleIds })).then(function() {
         return delRule(ruleIds);
       }).then(() => {
         this.getList();
-        this.$modal.msgSuccess("删除成功");
+        this.$modal.msgSuccess(this.$t('systemOther.autocode.deleteSuccess'));
       }).catch(() => {});
     },
     /** 刷新缓存按钮操作 */

+ 56 - 56
src/views/system/autocode/part.vue

@@ -1,25 +1,25 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="组成编码" prop="partCode">
+      <el-form-item :label="$t('systemOther.autocode.part.partCode')" prop="partCode">
         <el-input
           v-model="queryParams.partCode"
-          placeholder="请输入组成编码"
+          :placeholder="$t('systemOther.autocode.part.partCodePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="组成名称" prop="partName">
+      <el-form-item :label="$t('systemOther.autocode.part.partName')" prop="partName">
         <el-input
           v-model="queryParams.partName"
-          placeholder="请输入组成名称"
+          :placeholder="$t('systemOther.autocode.part.partNamePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>      
       <el-form-item>
-        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('common.search') }}</el-button>
+        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('common.reset') }}</el-button>
       </el-form-item>
     </el-form>
 
@@ -32,7 +32,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['system:autocode:part:add']"
-        >新增</el-button>
+        >{{ $t('common.add') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -43,7 +43,7 @@
           :disabled="single"
           @click="handleUpdate"
           v-hasPermi="['system:autocode:part:edit']"
-        >修改</el-button>
+        >{{ $t('common.edit') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -54,7 +54,7 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['system:autocode:part:remove']"
-        >删除</el-button>
+        >{{ $t('common.delete') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -63,29 +63,29 @@
           icon="el-icon-close"
           size="mini"
           @click="handleClose"
-        >关闭</el-button>
+        >{{ $t('common.close') }}</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="partList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="组成编码" align="center" prop="partCode" />
-      <el-table-column label="组成名称" align="center" prop="partName"/>
-      <el-table-column label="分段序号" align="center" prop="partIndex" />
-      <el-table-column label="分段类型" align="center" prop="partType" >
+      <el-table-column :label="$t('systemOther.autocode.part.partCode')" align="center" prop="partCode" />
+      <el-table-column :label="$t('systemOther.autocode.part.partName')" align="center" prop="partName"/>
+      <el-table-column :label="$t('systemOther.autocode.part.partIndex')" align="center" prop="partIndex" />
+      <el-table-column :label="$t('systemOther.autocode.part.partType')" align="center" prop="partType" >
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_autocode_parttype" :value="scope.row.partType"/>
         </template>
       </el-table-column>
-      <el-table-column label="分段长度" align="center" prop="partLength" />
-      <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" />
-      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+      <el-table-column :label="$t('systemOther.autocode.part.partLength')" align="center" prop="partLength" />
+      <el-table-column :label="$t('common.remark')" align="center" prop="remark" :show-overflow-tooltip="true" />
+      <el-table-column :label="$t('common.createTime')" align="center" prop="createTime" width="180">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.createTime) }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column :label="$t('common.operation')" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button v-no-more-click
             size="mini"
@@ -93,14 +93,14 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['system:autocode:part:edit']"
-          >修改</el-button>
+          >{{ $t('common.edit') }}</el-button>
           <el-button v-no-more-click
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['system:autocode:part:remove']"
-          >删除</el-button>
+          >{{ $t('common.delete') }}</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -118,31 +118,31 @@
       <el-form ref="form" :model="form" :inline="true" :rules="rules" label-width="100px">
         <el-row>
           <el-col :span="12">
-            <el-form-item label="分段编码" prop="partCode">
-              <el-input v-model="form.partCode" placeholder="请输入分段编码" />
+            <el-form-item :label="$t('systemOther.autocode.part.partCode')" prop="partCode">
+              <el-input v-model="form.partCode" :placeholder="$t('systemOther.autocode.part.partCodePlaceholder')" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="分段名称" prop="partName">
-              <el-input v-model="form.partName" placeholder="请输入分段名称" />
+            <el-form-item :label="$t('systemOther.autocode.part.partName')" prop="partName">
+              <el-input v-model="form.partName" :placeholder="$t('systemOther.autocode.part.partNamePlaceholder')" />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="分段序号" prop="partIndex">
-              <el-input-number v-model="form.partIndex" placeholder="请输入分段序号" />
+            <el-form-item :label="$t('systemOther.autocode.part.partIndex')" prop="partIndex">
+              <el-input-number v-model="form.partIndex" :placeholder="$t('systemOther.autocode.part.partIndexPlaceholder')" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="分段长度" prop="partLength">
-              <el-input-number v-model="form.partLength" placeholder="请输入分段长度" />
+            <el-form-item :label="$t('systemOther.autocode.part.partLength')" prop="partLength">
+              <el-input-number v-model="form.partLength" :placeholder="$t('systemOther.autocode.part.partLengthPlaceholder')" />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="分段类型" prop="partType">
+            <el-form-item :label="$t('systemOther.autocode.part.partType')" prop="partType">
               <el-select v-model="form.partType">
                 <el-option
                   v-for="item in dict.type.sys_autocode_parttype"
@@ -154,41 +154,41 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="日期时间格式" prop="dateFormat" v-if="form.partType=='NOWDATE'">
-              <el-input v-model="form.dateFormat" placeholder="请输入日期时间格式" />
+            <el-form-item :label="$t('systemOther.autocode.part.dateFormat')" prop="dateFormat" v-if="form.partType=='NOWDATE'">
+              <el-input v-model="form.dateFormat" :placeholder="$t('systemOther.autocode.part.dateFormatPlaceholder')" />
             </el-form-item>
 
-            <el-form-item label="输入字符" prop="inputCharacter" v-if="form.partType=='INPUTCHAR'">
-              <el-input v-model="form.inputCharacter" placeholder="请填写输入字符" />
+            <el-form-item :label="$t('systemOther.autocode.part.inputCharacter')" prop="inputCharacter" v-if="form.partType=='INPUTCHAR'">
+              <el-input v-model="form.inputCharacter" :placeholder="$t('systemOther.autocode.part.inputCharacterPlaceholder')" />
             </el-form-item>
 
-            <el-form-item label="固定字符" prop="fixCharacter" v-if="form.partType=='FIXCHAR'">
-              <el-input v-model="form.fixCharacter" placeholder="请填写固定字符" />
+            <el-form-item :label="$t('systemOther.autocode.part.fixCharacter')" prop="fixCharacter" v-if="form.partType=='FIXCHAR'">
+              <el-input v-model="form.fixCharacter" :placeholder="$t('systemOther.autocode.part.fixCharacterPlaceholder')" />
             </el-form-item>
 
-            <el-form-item label="起始流水号" prop="seriaStartNo" v-if="form.partType=='SERIALNO'">
-              <el-input-number v-model="form.seriaStartNo" placeholder="请填写起始流水号" />
+            <el-form-item :label="$t('systemOther.autocode.part.seriaStartNo')" prop="seriaStartNo" v-if="form.partType=='SERIALNO'">
+              <el-input-number v-model="form.seriaStartNo" :placeholder="$t('systemOther.autocode.part.seriaStartNoPlaceholder')" />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="流水号步长" prop="seriaStep" v-if="form.partType=='SERIALNO'">
-              <el-input-number v-model="form.seriaStep" placeholder="请填写流水号步长" />
+            <el-form-item :label="$t('systemOther.autocode.part.seriaStep')" prop="seriaStep" v-if="form.partType=='SERIALNO'">
+              <el-input-number v-model="form.seriaStep" :placeholder="$t('systemOther.autocode.part.seriaStepPlaceholder')" />
             </el-form-item>
           </el-col>
           <el-col :span= "12">
-            <el-form-item label="是否循环" prop="cycleFlag" v-if="form.partType=='SERIALNO'">
+            <el-form-item :label="$t('systemOther.autocode.part.cycleFlag')" prop="cycleFlag" v-if="form.partType=='SERIALNO'">
               <el-radio-group v-model="form.cycleFlag">
-                    <el-radio label="Y"></el-radio>
-                    <el-radio label="N"></el-radio>
+                    <el-radio label="Y">{{ $t('common.yes') }}</el-radio>
+                    <el-radio label="N">{{ $t('common.no') }}</el-radio>
               </el-radio-group>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span= "12">
-            <el-form-item label="循环方式" prop="cycleMethod" v-if="form.partType =='SERIALNO' && form.cycleFlag =='Y'">
+            <el-form-item :label="$t('systemOther.autocode.part.cycleMethod')" prop="cycleMethod" v-if="form.partType =='SERIALNO' && form.cycleFlag =='Y'">
               <el-select v-model="form.cycleMethod">
                 <el-option
                   v-for="item in dict.type.sys_autocode_cyclemethod"
@@ -202,15 +202,15 @@
         </el-row>
         <el-row>
           <el-col>
-            <el-form-item label="备注" prop="remark">
-              <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input>
+            <el-form-item :label="$t('common.remark')" prop="remark">
+              <el-input v-model="form.remark" type="textarea" :placeholder="$t('system.user.remarkPlaceholder')"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <el-button v-no-more-click type="primary" @click="submitForm">确 定</el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click type="primary" @click="submitForm">{{ $t('common.confirm') }}</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -257,13 +257,13 @@ export default {
       // 表单校验
       rules: {
         partCode: [
-          { required: true, message: "组成编码不能为空", trigger: "blur" }
+          { required: true, message: this.$t('systemOther.autocode.part.partCodeRequired'), trigger: "blur" }
         ],
         partName: [
-          { required: true, message: "组成名称不能为空", trigger: "blur" }
+          { required: true, message: this.$t('systemOther.autocode.part.partNameRequired'), trigger: "blur" }
         ],
         partIndex: [
-          { required: true, message: "组成序号不能为空", trigger: "blur" }
+          { required: true, message: this.$t('systemOther.autocode.part.partIndexRequired'), trigger: "blur" }
         ]
       }
     };
@@ -322,7 +322,7 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "添加规则组成";
+      this.title = this.$t('systemOther.autocode.part.addPart');
       this.form.ruleId = this.recentRuleId;
     },
     // 多选框选中数据
@@ -338,7 +338,7 @@ export default {
       getPart(partId).then(response => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改规则组成";
+        this.title = this.$t('systemOther.autocode.part.editPart');
       });
     },
     /** 提交按钮 */
@@ -347,13 +347,13 @@ export default {
         if (valid) {
           if (this.form.partId != undefined) {
             updatePart(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('systemOther.autocode.editSuccess'));
               this.open = false;
               this.getList();
             });
           } else {
             addPart(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('systemOther.autocode.addSuccess'));
               this.open = false;
               this.getList();
             });
@@ -364,11 +364,11 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const partIds = row.partId || this.ids;
-      this.$modal.confirm('是否确认删除规则组成ID为"' + partIds + '"的数据项?').then(function() {
+      this.$modal.confirm(this.$t('systemOther.autocode.part.deleteConfirm', { partIds: partIds })).then(function() {
         return delPart(partIds);
       }).then(() => {
         this.getList();
-        this.$modal.msgSuccess("删除成功");
+        this.$modal.msgSuccess(this.$t('systemOther.autocode.deleteSuccess'));
       }).catch(() => {});
     }
   }

+ 47 - 47
src/views/system/config/index.vue

@@ -1,26 +1,26 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="参数名称" prop="configName">
+      <el-form-item :label="$t('systemOther.config.configName')" prop="configName">
         <el-input
           v-model="queryParams.configName"
-          placeholder="请输入参数名称"
+          :placeholder="$t('systemOther.config.configNamePlaceholder')"
           clearable
           style="width: 240px"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="参数键名" prop="configKey">
+      <el-form-item :label="$t('systemOther.config.configKey')" prop="configKey">
         <el-input
           v-model="queryParams.configKey"
-          placeholder="请输入参数键名"
+          :placeholder="$t('systemOther.config.configKeyPlaceholder')"
           clearable
           style="width: 240px"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="系统内置" prop="configType">
-        <el-select v-model="queryParams.configType" placeholder="系统内置" clearable>
+      <el-form-item :label="$t('systemOther.config.systemBuiltIn')" prop="configType">
+        <el-select v-model="queryParams.configType" :placeholder="$t('systemOther.config.systemBuiltIn')" clearable>
           <el-option
             v-for="dict in dict.type.sys_yes_no"
             :key="dict.value"
@@ -29,20 +29,20 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="创建时间">
+      <el-form-item :label="$t('common.createTime')">
         <el-date-picker
           v-model="dateRange"
           style="width: 240px"
           value-format="yyyy-MM-dd"
           type="daterange"
           range-separator="-"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
+          :start-placeholder="$t('common.startDate')"
+          :end-placeholder="$t('common.endDate')"
         ></el-date-picker>
       </el-form-item>
       <el-form-item>
-        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('common.search') }}</el-button>
+        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('common.reset') }}</el-button>
       </el-form-item>
     </el-form>
 
@@ -55,7 +55,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['system:config:add']"
-        >新增</el-button>
+        >{{ $t('common.add') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -66,7 +66,7 @@
           :disabled="single"
           @click="handleUpdate"
           v-hasPermi="['system:config:edit']"
-        >修改</el-button>
+        >{{ $t('common.edit') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -77,7 +77,7 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['system:config:remove']"
-        >删除</el-button>
+        >{{ $t('common.delete') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -87,7 +87,7 @@
           size="mini"
           @click="handleExport"
           v-hasPermi="['system:config:export']"
-        >导出</el-button>
+        >{{ $t('common.export') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -97,29 +97,29 @@
           size="mini"
           @click="handleRefreshCache"
           v-hasPermi="['system:config:remove']"
-        >刷新缓存</el-button>
+        >{{ $t('systemOther.config.refreshCache') }}</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="configList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="参数主键" align="center" prop="configId" />
-      <el-table-column label="参数名称" align="center" prop="configName" :show-overflow-tooltip="true" />
-      <el-table-column label="参数键名" align="center" prop="configKey" :show-overflow-tooltip="true" />
-      <el-table-column label="参数键值" align="center" prop="configValue" />
-      <el-table-column label="系统内置" align="center" prop="configType">
+      <el-table-column :label="$t('systemOther.config.configId')" align="center" prop="configId" />
+      <el-table-column :label="$t('systemOther.config.configName')" align="center" prop="configName" :show-overflow-tooltip="true" />
+      <el-table-column :label="$t('systemOther.config.configKey')" align="center" prop="configKey" :show-overflow-tooltip="true" />
+      <el-table-column :label="$t('systemOther.config.configValue')" align="center" prop="configValue" />
+      <el-table-column :label="$t('systemOther.config.systemBuiltIn')" align="center" prop="configType">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.configType"/>
         </template>
       </el-table-column>
-      <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" />
-      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+      <el-table-column :label="$t('common.remark')" align="center" prop="remark" :show-overflow-tooltip="true" />
+      <el-table-column :label="$t('common.createTime')" align="center" prop="createTime" width="180">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.createTime) }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column :label="$t('common.operation')" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button v-no-more-click
             size="mini"
@@ -127,14 +127,14 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['system:config:edit']"
-          >修改</el-button>
+          >{{ $t('common.edit') }}</el-button>
           <el-button v-no-more-click
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['system:config:remove']"
-          >删除</el-button>
+          >{{ $t('common.delete') }}</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -150,16 +150,16 @@
     <!-- 添加或修改参数配置对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="参数名称" prop="configName">
-          <el-input v-model="form.configName" placeholder="请输入参数名称" />
+        <el-form-item :label="$t('systemOther.config.configName')" prop="configName">
+          <el-input v-model="form.configName" :placeholder="$t('systemOther.config.configNamePlaceholder')" />
         </el-form-item>
-        <el-form-item label="参数键名" prop="configKey">
-          <el-input v-model="form.configKey" placeholder="请输入参数键名" />
+        <el-form-item :label="$t('systemOther.config.configKey')" prop="configKey">
+          <el-input v-model="form.configKey" :placeholder="$t('systemOther.config.configKeyPlaceholder')" />
         </el-form-item>
-        <el-form-item label="参数键值" prop="configValue">
-          <el-input v-model="form.configValue" placeholder="请输入参数键值" />
+        <el-form-item :label="$t('systemOther.config.configValue')" prop="configValue">
+          <el-input v-model="form.configValue" :placeholder="$t('systemOther.config.configValuePlaceholder')" />
         </el-form-item>
-        <el-form-item label="系统内置" prop="configType">
+        <el-form-item :label="$t('systemOther.config.systemBuiltIn')" prop="configType">
           <el-radio-group v-model="form.configType">
             <el-radio
               v-for="dict in dict.type.sys_yes_no"
@@ -168,13 +168,13 @@
             >{{dict.label}}</el-radio>
           </el-radio-group>
         </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+        <el-form-item :label="$t('common.remark')" prop="remark">
+          <el-input v-model="form.remark" type="textarea" :placeholder="$t('system.user.remarkPlaceholder')" />
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <el-button v-no-more-click type="primary" @click="submitForm">确 定</el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click type="primary" @click="submitForm">{{ $t('common.confirm') }}</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -221,13 +221,13 @@ export default {
       // 表单校验
       rules: {
         configName: [
-          { required: true, message: "参数名称不能为空", trigger: "blur" }
+          { required: true, message: this.$t('systemOther.config.configNameRequired'), trigger: "blur" }
         ],
         configKey: [
-          { required: true, message: "参数键名不能为空", trigger: "blur" }
+          { required: true, message: this.$t('systemOther.config.configKeyRequired'), trigger: "blur" }
         ],
         configValue: [
-          { required: true, message: "参数键值不能为空", trigger: "blur" }
+          { required: true, message: this.$t('systemOther.config.configValueRequired'), trigger: "blur" }
         ]
       }
     };
@@ -278,7 +278,7 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "添加参数";
+      this.title = this.$t('systemOther.config.addConfig');
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
@@ -293,7 +293,7 @@ export default {
       getConfig(configId).then(response => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改参数";
+        this.title = this.$t('systemOther.config.editConfig');
       });
     },
     /** 提交按钮 */
@@ -302,13 +302,13 @@ export default {
         if (valid) {
           if (this.form.configId != undefined) {
             updateConfig(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('systemOther.config.editSuccess'));
               this.open = false;
               this.getList();
             });
           } else {
             addConfig(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('systemOther.config.addSuccess'));
               this.open = false;
               this.getList();
             });
@@ -319,11 +319,11 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const configIds = row.configId || this.ids;
-      this.$modal.confirm('是否确认删除参数编号为"' + configIds + '"的数据项?').then(function() {
+      this.$modal.confirm(this.$t('systemOther.config.deleteConfirm', { configIds: configIds })).then(function() {
           return delConfig(configIds);
         }).then(() => {
           this.getList();
-          this.$modal.msgSuccess("删除成功");
+          this.$modal.msgSuccess(this.$t('systemOther.config.deleteSuccess'));
         }).catch(() => {});
     },
     /** 导出按钮操作 */
@@ -335,7 +335,7 @@ export default {
     /** 刷新缓存按钮操作 */
     handleRefreshCache() {
       refreshCache().then(() => {
-        this.$modal.msgSuccess("刷新成功");
+        this.$modal.msgSuccess(this.$t('systemOther.config.refreshSuccess'));
       });
     }
   }

+ 45 - 45
src/views/system/configuration/index.vue

@@ -1,37 +1,37 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="参数名称" prop="sysAttrName">
+      <el-form-item :label="$t('systemOther.configuration.paramName')" prop="sysAttrName">
         <el-input
           v-model="queryParams.sysAttrName"
-          placeholder="请输入参数名称"
+          :placeholder="$t('systemOther.configuration.paramNamePlaceholder')"
           clearable
           style="width: 240px"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="参数键名" prop="sysAttrKey">
+      <el-form-item :label="$t('systemOther.configuration.paramKey')" prop="sysAttrKey">
         <el-input
           v-model="queryParams.sysAttrKey"
-          placeholder="请输入参数键名"
+          :placeholder="$t('systemOther.configuration.paramKeyPlaceholder')"
           clearable
           style="width: 240px"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="参数键值" prop="sysAttrValue">
+      <el-form-item :label="$t('systemOther.configuration.paramValue')" prop="sysAttrValue">
         <el-input
           v-model="queryParams.sysAttrValue"
-          placeholder="请输入参数键值"
+          :placeholder="$t('systemOther.configuration.paramValuePlaceholder')"
           clearable
           style="width: 240px"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
       <el-form-item>
-        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索
+        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('common.search') }}
         </el-button>
-        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('common.reset') }}</el-button>
       </el-form-item>
     </el-form>
 
@@ -44,7 +44,7 @@
                    size="mini"
                    @click="handleAdd"
                    v-hasPermi="['iscs:attribute:add']"
-        >新增
+        >{{ $t('common.add') }}
         </el-button>
       </el-col>
       <el-col :span="1.5">
@@ -56,7 +56,7 @@
                    :disabled="multiple"
                    @click="handleDelete"
                    v-hasPermi="['iscs:attribute:remove']"
-        >删除
+        >{{ $t('common.delete') }}
         </el-button>
       </el-col>
       <el-col :span="1.5">
@@ -67,20 +67,20 @@
                    size="mini"
                    @click="handleRefreshCache"
                    v-hasPermi="['iscs:attribute:remove']"
-        >刷新缓存</el-button>
+        >{{ $t('systemOther.configuration.refreshCache') }}</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="List" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center"/>
-      <el-table-column label="参数名称"  width="210px" prop="sysAttrName">
+      <el-table-column :label="$t('systemOther.configuration.paramName')"  width="210px" prop="sysAttrName">
         <template slot-scope="scope">
           <span>{{ scope.row.sysAttrName }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="参数键名"  prop="sysAttrKey" :show-overflow-tooltip="true"/>
-      <el-table-column  label="参数类型" width="90"  prop="sysAttrType" :show-overflow-tooltip="true">
+      <el-table-column :label="$t('systemOther.configuration.paramKey')"  prop="sysAttrKey" :show-overflow-tooltip="true"/>
+      <el-table-column  :label="$t('systemOther.configuration.paramType')" width="90"  prop="sysAttrType" :show-overflow-tooltip="true">
         <template slot-scope="scope">
           <dict-tag
             :options="dict.type.sys_type"
@@ -88,7 +88,7 @@
           />
         </template>
       </el-table-column>
-      <el-table-column label="参数键值"  prop="sysAttrValue" :show-overflow-tooltip="true">
+      <el-table-column :label="$t('systemOther.configuration.paramValue')"  prop="sysAttrValue" :show-overflow-tooltip="true">
         <template slot-scope="scope">
           <!-- 判断是否为图片 URL -->
             <div class="img-box" v-if="isImageUrl(scope.row.sysAttrValue)">
@@ -112,17 +112,17 @@
           </div>
         </template>
       </el-table-column>
-      <el-table-column label="备注"  prop="remark" width="300">
+      <el-table-column :label="$t('common.remark')"  prop="remark" width="300">
         <template slot-scope="scope">
           <span>{{ scope.row.remark }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="创建时间"  prop="createTime" width="180">
+      <el-table-column :label="$t('common.createTime')"  prop="createTime" width="180">
         <template slot-scope="scope">
           <span>{{ scope.row.createTime }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column :label="$t('common.operation')" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button v-no-more-click
                      size="mini"
@@ -130,7 +130,7 @@
                      icon="el-icon-edit"
                      @click="handleUpdate(scope.row)"
                      v-hasPermi="['iscs:attribute:edit']"
-          >修改
+          >{{ $t('common.edit') }}
           </el-button>
           <el-button v-no-more-click
                      size="mini"
@@ -138,7 +138,7 @@
                      icon="el-icon-delete"
                      @click="handleDelete(scope.row)"
                      v-hasPermi="['iscs:attribute:remove']"
-          >删除
+          >{{ $t('common.delete') }}
           </el-button>
         </template>
       </el-table-column>
@@ -155,16 +155,16 @@
     <!-- 添加或修改基础数据配置对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="参数名称" prop="sysAttrName">
-          <el-input v-model="form.sysAttrName" placeholder="请输入参数名称"/>
+        <el-form-item :label="$t('systemOther.configuration.paramName')" prop="sysAttrName">
+          <el-input v-model="form.sysAttrName" :placeholder="$t('systemOther.configuration.paramNamePlaceholder')"/>
         </el-form-item>
-        <el-form-item label="参数键名" prop="sysAttrKey">
-          <el-input v-model="form.sysAttrKey" placeholder="请输入参数键名"/>
+        <el-form-item :label="$t('systemOther.configuration.paramKey')" prop="sysAttrKey">
+          <el-input v-model="form.sysAttrKey" :placeholder="$t('systemOther.configuration.paramKeyPlaceholder')"/>
         </el-form-item>
-        <el-form-item label="参数类型" prop="sysAttrType">
+        <el-form-item :label="$t('systemOther.configuration.paramType')" prop="sysAttrType">
           <el-select
             v-model="form.sysAttrType"
-            placeholder="请选择参数类型"
+            :placeholder="$t('systemOther.configuration.paramTypePlaceholder')"
             clearable
           >
             <el-option
@@ -175,26 +175,26 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="键值类型" prop="sysAttrType">
+        <el-form-item :label="$t('systemOther.configuration.valueType')" prop="sysAttrType">
           <el-radio-group v-model="inputType" @change="handleInputTypeChange">
-            <el-radio label="text">文字</el-radio>
-            <el-radio label="image">图片</el-radio>
+            <el-radio label="text">{{ $t('systemOther.configuration.text') }}</el-radio>
+            <el-radio label="image">{{ $t('systemOther.configuration.image') }}</el-radio>
           </el-radio-group>
         </el-form-item>
 
-        <el-form-item label="参数键值" prop="sysAttrValue">
+        <el-form-item :label="$t('systemOther.configuration.paramValue')" prop="sysAttrValue">
           <ImageUpload v-if="inputType === 'image'" :limit="1" :value="form.sysAttrValue" :fileSize="5" @onUploaded="handleImgUplaoded"
                        @onRemoved="handleImgRemoved"
           ></ImageUpload>
-          <el-input type="textarea" :rows="4" v-else v-model="form.sysAttrValue" placeholder="请输入参数键值"/>
+          <el-input type="textarea" :rows="4" v-else v-model="form.sysAttrValue" :placeholder="$t('systemOther.configuration.paramValuePlaceholder')"/>
         </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" placeholder="请输入备注"/>
+        <el-form-item :label="$t('common.remark')" prop="remark">
+          <el-input v-model="form.remark" :placeholder="$t('systemOther.configuration.remarkPlaceholder')"/>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <el-button v-no-more-click type="primary" @click="submitForm">确 定</el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click type="primary" @click="submitForm">{{ $t('common.confirm') }}</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -247,13 +247,13 @@ export default {
       // 表单校验
       rules: {
         sysAttrName: [
-          { required: true, message: '参数名称', trigger: 'blur' }
+          { required: true, message: this.$t('systemOther.configuration.paramNameRequired'), trigger: 'blur' }
         ],
         sysAttrKey: [
-          { required: true, message: '参数键名', trigger: 'blur' }
+          { required: true, message: this.$t('systemOther.configuration.paramKeyRequired'), trigger: 'blur' }
         ],
         sysAttrValue: [
-          { required: true, message: '参数键值', trigger: 'blur' }
+          { required: true, message: this.$t('systemOther.configuration.paramValueRequired'), trigger: 'blur' }
         ]
       }
     }
@@ -265,7 +265,7 @@ export default {
     /** 刷新缓存按钮操作 */
     handleRefreshCache() {
       refreshAttrCache().then(() => {
-        this.$modal.msgSuccess("刷新成功");
+        this.$modal.msgSuccess(this.$t('systemOther.configuration.refreshSuccess'));
       });
     },
     /** 查询字典类型列表 */
@@ -328,7 +328,7 @@ export default {
     handleAdd() {
       this.reset()
       this.open = true
-      this.title = '添加基础数据'
+      this.title = this.$t('systemOther.configuration.addConfig')
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
@@ -349,7 +349,7 @@ export default {
           this.inputType = 'text'
         }
         this.open = true
-        this.title = '修改基础数据'
+        this.title = this.$t('systemOther.configuration.editConfig')
       })
     },
     /** 提交按钮 */
@@ -358,13 +358,13 @@ export default {
         if (valid) {
           if (this.form.sysAttrId != undefined) {
             updateIsSystemAttribute(this.form).then(response => {
-              this.$modal.msgSuccess('修改成功')
+              this.$modal.msgSuccess(this.$t('systemOther.configuration.editSuccess'))
               this.open = false
               this.getList()
             })
           } else {
             insertIsSystemAttribute(this.form).then(response => {
-              this.$modal.msgSuccess('新增成功')
+              this.$modal.msgSuccess(this.$t('systemOther.configuration.addSuccess'))
               this.open = false
               this.getList()
             })
@@ -377,11 +377,11 @@ export default {
       console.log(row, '删除')
       debugger;
       const ruleIds = row.sysAttrId || this.ids
-      this.$modal.confirm('是否确认删除所选数据项?').then(function() {
+      this.$modal.confirm(this.$t('common.deleteConfirm')).then(function() {
         return deleteIsSystemAttributeByIds(ruleIds)
       }).then(() => {
         this.getList()
-        this.$modal.msgSuccess('删除成功')
+        this.$modal.msgSuccess(this.$t('systemOther.configuration.deleteSuccess'))
       }).catch(() => {
       })
     }

+ 39 - 39
src/views/system/dept/index.vue

@@ -1,16 +1,16 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
-      <el-form-item label="部门名称" prop="deptName">
+      <el-form-item :label="$t('system.dept.deptName')" prop="deptName">
         <el-input
           v-model="queryParams.deptName"
-          placeholder="请输入部门名称"
+          :placeholder="$t('system.dept.deptNamePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="状态" prop="status">
-        <el-select v-model="queryParams.status" placeholder="部门状态" clearable>
+      <el-form-item :label="$t('common.status')" prop="status">
+        <el-select v-model="queryParams.status" :placeholder="$t('system.dept.deptStatus')" clearable>
           <el-option
             v-for="dict in dict.type.sys_normal_disable"
             :key="dict.value"
@@ -20,8 +20,8 @@
         </el-select>
       </el-form-item>
       <el-form-item>
-        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('common.search') }}</el-button>
+        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('common.reset') }}</el-button>
       </el-form-item>
     </el-form>
     <el-row :gutter="10" class="mb8">
@@ -33,7 +33,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['system:dept:add']"
-        >新增</el-button>
+        >{{ $t('common.add') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -42,7 +42,7 @@
           icon="el-icon-sort"
           size="mini"
           @click="toggleExpandAll"
-        >展开/折叠</el-button>
+        >{{ $t('system.dept.expandCollapse') }}</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
@@ -55,19 +55,19 @@
       :default-expand-all="isExpandAll"
       :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
     >
-      <el-table-column prop="deptName" label="部门名称" width="260"></el-table-column>
-      <el-table-column prop="orderNum" label="排序" width="200"></el-table-column>
-      <el-table-column prop="status" label="状态" width="100">
+      <el-table-column prop="deptName" :label="$t('system.dept.deptName')" width="260"></el-table-column>
+      <el-table-column prop="orderNum" :label="$t('system.dept.sort')" width="200"></el-table-column>
+      <el-table-column prop="status" :label="$t('common.status')" width="100">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/>
         </template>
       </el-table-column>
-      <el-table-column label="创建时间" align="center" prop="createTime" width="200">
+      <el-table-column :label="$t('common.createTime')" align="center" prop="createTime" width="200">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.createTime) }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column :label="$t('common.operation')" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button v-no-more-click
             size="mini"
@@ -75,14 +75,14 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['system:dept:edit']"
-          >修改</el-button>
+          >{{ $t('common.edit') }}</el-button>
           <el-button v-no-more-click
             size="mini"
             type="text"
             icon="el-icon-plus"
             @click="handleAdd(scope.row)"
             v-hasPermi="['system:dept:add']"
-          >新增</el-button>
+          >{{ $t('common.add') }}</el-button>
           <el-button v-no-more-click
             v-if="scope.row.parentId != 0"
             size="mini"
@@ -90,7 +90,7 @@
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['system:dept:remove']"
-          >删除</el-button>
+          >{{ $t('common.delete') }}</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -100,43 +100,43 @@
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-row>
           <el-col :span="24" v-if="form.parentId !== 0">
-            <el-form-item label="上级部门" prop="parentId">
-              <treeselect v-model="form.parentId" :options="deptOptions" :normalizer="normalizer" placeholder="选择上级部门" />
+            <el-form-item :label="$t('system.dept.parentDept')" prop="parentId">
+              <treeselect v-model="form.parentId" :options="deptOptions" :normalizer="normalizer" :placeholder="$t('system.dept.parentDeptPlaceholder')" />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="部门名称" prop="deptName">
-              <el-input v-model="form.deptName" placeholder="请输入部门名称" />
+            <el-form-item :label="$t('system.dept.deptName')" prop="deptName">
+              <el-input v-model="form.deptName" :placeholder="$t('system.dept.deptNamePlaceholder')" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="显示排序" prop="orderNum">
+            <el-form-item :label="$t('system.dept.displaySort')" prop="orderNum">
               <el-input-number v-model="form.orderNum" controls-position="right" :min="0" />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="负责人" prop="leader">
-              <el-input v-model="form.leader" placeholder="请输入负责人" maxlength="20" />
+            <el-form-item :label="$t('system.dept.leader')" prop="leader">
+              <el-input v-model="form.leader" :placeholder="$t('system.dept.leaderPlaceholder')" maxlength="20" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="联系电话" prop="phone">
-              <el-input v-model="form.phone" placeholder="请输入联系电话" maxlength="11" />
+            <el-form-item :label="$t('system.dept.phone')" prop="phone">
+              <el-input v-model="form.phone" :placeholder="$t('system.dept.phonePlaceholder')" maxlength="11" />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="邮箱" prop="email">
-              <el-input v-model="form.email" placeholder="请输入邮箱" maxlength="50" />
+            <el-form-item :label="$t('system.dept.email')" prop="email">
+              <el-input v-model="form.email" :placeholder="$t('system.dept.emailPlaceholder')" maxlength="50" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="部门状态">
+            <el-form-item :label="$t('system.dept.deptStatus')">
               <el-radio-group v-model="form.status">
                 <el-radio
                   v-for="dict in dict.type.sys_normal_disable"
@@ -193,25 +193,25 @@ export default {
       // 表单校验
       rules: {
         parentId: [
-          { required: true, message: "上级部门不能为空", trigger: "blur" }
+          { required: true, message: this.$t('system.dept.parentDeptRequired'), trigger: "blur" }
         ],
         deptName: [
-          { required: true, message: "部门名称不能为空", trigger: "blur" }
+          { required: true, message: this.$t('system.dept.deptNameRequired'), trigger: "blur" }
         ],
         orderNum: [
-          { required: true, message: "显示排序不能为空", trigger: "blur" }
+          { required: true, message: this.$t('system.dept.displaySortRequired'), trigger: "blur" }
         ],
         email: [
           {
             type: "email",
-            message: "请输入正确的邮箱地址",
+            message: this.$t('system.dept.emailFormat'),
             trigger: ["blur", "change"]
           }
         ],
         phone: [
           {
             pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
-            message: "请输入正确的手机号码",
+            message: this.$t('system.dept.phoneFormat'),
             trigger: "blur"
           }
         ]
@@ -278,7 +278,7 @@ export default {
         this.form.parentId = row.deptId;
       }
       this.open = true;
-      this.title = "添加部门";
+      this.title = this.$t('system.dept.addDept');
       listDept().then(response => {
         this.deptOptions = this.handleTree(response.data, "deptId");
       });
@@ -297,7 +297,7 @@ export default {
       getDept(row.deptId).then(response => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改部门";
+        this.title = this.$t('system.dept.editDept');
       });
       listDeptExcludeChild(row.deptId).then(response => {
         this.deptOptions = this.handleTree(response.data, "deptId");
@@ -309,14 +309,14 @@ export default {
         if (valid) {
           if (this.form.deptId != undefined) {
             updateDept(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('system.dept.editSuccess'));
               this.open = false;
               this.getList();
             });
           } else {
 
             addDept(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('system.dept.addSuccess'));
               this.open = false;
               this.getList();
             });
@@ -326,11 +326,11 @@ export default {
     },
     /** 删除按钮操作 */
     handleDelete(row) {
-      this.$modal.confirm('是否确认删除名称为"' + row.deptName + '"的数据项?').then(function() {
+      this.$modal.confirm(this.$t('system.dept.deleteConfirm')).then(function() {
         return delDept(row.deptId);
       }).then(() => {
         this.getList();
-        this.$modal.msgSuccess("删除成功");
+        this.$modal.msgSuccess(this.$t('system.dept.deleteSuccess'));
       }).catch(() => {});
     }
   }

+ 51 - 51
src/views/system/dict/data.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="字典名称" prop="dictType">
+      <el-form-item :label="$t('systemOther.dict.dictName')" prop="dictType">
         <el-select v-model="queryParams.dictType">
           <el-option
             v-for="item in typeOptions"
@@ -11,16 +11,16 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="字典标签" prop="dictLabel">
+      <el-form-item :label="$t('systemOther.dict.data.dictLabel')" prop="dictLabel">
         <el-input
           v-model="queryParams.dictLabel"
-          placeholder="请输入字典标签"
+          :placeholder="$t('systemOther.dict.data.dictLabelPlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="状态" prop="status">
-        <el-select v-model="queryParams.status" placeholder="数据状态" clearable>
+      <el-form-item :label="$t('common.status')" prop="status">
+        <el-select v-model="queryParams.status" :placeholder="$t('systemOther.dict.data.dataStatus')" clearable>
           <el-option
             v-for="dict in dict.type.sys_normal_disable"
             :key="dict.value"
@@ -30,8 +30,8 @@
         </el-select>
       </el-form-item>
       <el-form-item>
-        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('common.search') }}</el-button>
+        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('common.reset') }}</el-button>
       </el-form-item>
     </el-form>
 
@@ -44,7 +44,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['system:dict:add']"
-        >新增</el-button>
+        >{{ $t('common.add') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -55,7 +55,7 @@
           :disabled="single"
           @click="handleUpdate"
           v-hasPermi="['system:dict:edit']"
-        >修改</el-button>
+        >{{ $t('common.edit') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -66,7 +66,7 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['system:dict:remove']"
-        >删除</el-button>
+        >{{ $t('common.delete') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -76,7 +76,7 @@
           size="mini"
           @click="handleExport"
           v-hasPermi="['system:dict:export']"
-        >导出</el-button>
+        >{{ $t('common.export') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -85,34 +85,34 @@
           icon="el-icon-close"
           size="mini"
           @click="handleClose"
-        >关闭</el-button>
+        >{{ $t('common.close') }}</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="dataList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="字典编码" align="center" prop="dictCode" />
-      <el-table-column label="字典标签" align="center" prop="dictLabel">
+      <el-table-column :label="$t('systemOther.dict.data.dictCode')" align="center" prop="dictCode" />
+      <el-table-column :label="$t('systemOther.dict.data.dictLabel')" align="center" prop="dictLabel">
         <template slot-scope="scope">
           <span v-if="scope.row.listClass == '' || scope.row.listClass == 'default'">{{scope.row.dictLabel}}</span>
           <el-tag v-else :type="scope.row.listClass == 'primary' ? '' : scope.row.listClass">{{scope.row.dictLabel}}</el-tag>
         </template>
       </el-table-column>
-      <el-table-column label="字典键值" align="center" prop="dictValue" />
-      <el-table-column label="字典排序" align="center" prop="dictSort" />
-      <el-table-column label="状态" align="center" prop="status">
+      <el-table-column :label="$t('systemOther.dict.data.dictValue')" align="center" prop="dictValue" />
+      <el-table-column :label="$t('systemOther.dict.data.dictSort')" align="center" prop="dictSort" />
+      <el-table-column :label="$t('common.status')" align="center" prop="status">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/>
         </template>
       </el-table-column>
-      <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" />
-      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+      <el-table-column :label="$t('common.remark')" align="center" prop="remark" :show-overflow-tooltip="true" />
+      <el-table-column :label="$t('common.createTime')" align="center" prop="createTime" width="180">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.createTime) }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column :label="$t('common.operation')" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button v-no-more-click
             size="mini"
@@ -120,14 +120,14 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['system:dict:edit']"
-          >修改</el-button>
+          >{{ $t('common.edit') }}</el-button>
           <el-button v-no-more-click
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['system:dict:remove']"
-          >删除</el-button>
+          >{{ $t('common.delete') }}</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -143,22 +143,22 @@
     <!-- 添加或修改参数配置对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="字典类型">
+        <el-form-item :label="$t('systemOther.dict.dictType')">
           <el-input v-model="form.dictType" :disabled="true" />
         </el-form-item>
-        <el-form-item label="数据标签" prop="dictLabel">
-          <el-input v-model="form.dictLabel" placeholder="请输入数据标签" />
+        <el-form-item :label="$t('systemOther.dict.data.dataLabel')" prop="dictLabel">
+          <el-input v-model="form.dictLabel" :placeholder="$t('systemOther.dict.data.dataLabelPlaceholder')" />
         </el-form-item>
-        <el-form-item label="数据键值" prop="dictValue">
-          <el-input v-model="form.dictValue" placeholder="请输入数据键值" />
+        <el-form-item :label="$t('systemOther.dict.data.dataValue')" prop="dictValue">
+          <el-input v-model="form.dictValue" :placeholder="$t('systemOther.dict.data.dataValuePlaceholder')" />
         </el-form-item>
-        <el-form-item label="样式属性" prop="cssClass">
-          <el-input v-model="form.cssClass" placeholder="请输入样式属性" />
+        <el-form-item :label="$t('systemOther.dict.data.cssClass')" prop="cssClass">
+          <el-input v-model="form.cssClass" :placeholder="$t('systemOther.dict.data.cssClassPlaceholder')" />
         </el-form-item>
-        <el-form-item label="显示排序" prop="dictSort">
+        <el-form-item :label="$t('systemOther.dict.data.displaySort')" prop="dictSort">
           <el-input-number v-model="form.dictSort" controls-position="right" :min="0" />
         </el-form-item>
-        <el-form-item label="回显样式" prop="listClass">
+        <el-form-item :label="$t('systemOther.dict.data.listClass')" prop="listClass">
           <el-select v-model="form.listClass">
             <el-option
               v-for="item in listClassOptions"
@@ -168,7 +168,7 @@
             ></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="状态" prop="status">
+        <el-form-item :label="$t('common.status')" prop="status">
           <el-radio-group v-model="form.status">
             <el-radio
               v-for="dict in dict.type.sys_normal_disable"
@@ -177,13 +177,13 @@
             >{{dict.label}}</el-radio>
           </el-radio-group>
         </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input>
+        <el-form-item :label="$t('common.remark')" prop="remark">
+          <el-input v-model="form.remark" type="textarea" :placeholder="$t('system.user.remarkPlaceholder')"></el-input>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <el-button v-no-more-click type="primary" @click="submitForm">确 定</el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click type="primary" @click="submitForm">{{ $t('common.confirm') }}</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -222,27 +222,27 @@ export default {
       listClassOptions: [
         {
           value: "default",
-          label: "默认"
+          label: this.$t('systemOther.dict.data.default')
         },
         {
           value: "primary",
-          label: "主要"
+          label: this.$t('systemOther.dict.data.primary')
         },
         {
           value: "success",
-          label: "成功"
+          label: this.$t('systemOther.dict.data.success')
         },
         {
           value: "info",
-          label: "信息"
+          label: this.$t('systemOther.dict.data.info')
         },
         {
           value: "warning",
-          label: "警告"
+          label: this.$t('systemOther.dict.data.warning')
         },
         {
           value: "danger",
-          label: "危险"
+          label: this.$t('systemOther.dict.data.danger')
         }
       ],
       // 类型数据字典
@@ -260,13 +260,13 @@ export default {
       // 表单校验
       rules: {
         dictLabel: [
-          { required: true, message: "数据标签不能为空", trigger: "blur" }
+          { required: true, message: this.$t('systemOther.dict.data.dataLabelRequired'), trigger: "blur" }
         ],
         dictValue: [
-          { required: true, message: "数据键值不能为空", trigger: "blur" }
+          { required: true, message: this.$t('systemOther.dict.data.dataValueRequired'), trigger: "blur" }
         ],
         dictSort: [
-          { required: true, message: "数据顺序不能为空", trigger: "blur" }
+          { required: true, message: this.$t('systemOther.dict.data.dataSortRequired'), trigger: "blur" }
         ]
       }
     };
@@ -339,7 +339,7 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "添加字典数据";
+      this.title = this.$t('systemOther.dict.data.addDictData');
       this.form.dictType = this.queryParams.dictType;
     },
     // 多选框选中数据
@@ -355,7 +355,7 @@ export default {
       getData(dictCode).then(response => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改字典数据";
+        this.title = this.$t('systemOther.dict.data.editDictData');
       });
     },
     /** 提交按钮 */
@@ -364,13 +364,13 @@ export default {
         if (valid) {
           if (this.form.dictCode != undefined) {
             updateData(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('systemOther.dict.data.editSuccess'));
               this.open = false;
               this.getList();
             });
           } else {
             addData(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('systemOther.dict.data.addSuccess'));
               this.open = false;
               this.getList();
             });
@@ -381,11 +381,11 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const dictCodes = row.dictCode || this.ids;
-      this.$modal.confirm('是否确认删除字典编码为"' + dictCodes + '"的数据项?').then(function() {
+      this.$modal.confirm(this.$t('systemOther.dict.data.deleteConfirm', { dictCodes: dictCodes })).then(function() {
         return delData(dictCodes);
       }).then(() => {
         this.getList();
-        this.$modal.msgSuccess("删除成功");
+        this.$modal.msgSuccess(this.$t('systemOther.dict.data.deleteSuccess'));
       }).catch(() => {});
     },
     /** 导出按钮操作 */

+ 43 - 43
src/views/system/dict/index.vue

@@ -1,28 +1,28 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="字典名称" prop="dictName">
+      <el-form-item :label="$t('systemOther.dict.dictName')" prop="dictName">
         <el-input
           v-model="queryParams.dictName"
-          placeholder="请输入字典名称"
+          :placeholder="$t('systemOther.dict.dictNamePlaceholder')"
           clearable
           style="width: 240px"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="字典类型" prop="dictType">
+      <el-form-item :label="$t('systemOther.dict.dictType')" prop="dictType">
         <el-input
           v-model="queryParams.dictType"
-          placeholder="请输入字典类型"
+          :placeholder="$t('systemOther.dict.dictTypePlaceholder')"
           clearable
           style="width: 240px"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="状态" prop="status">
+      <el-form-item :label="$t('common.status')" prop="status">
         <el-select
           v-model="queryParams.status"
-          placeholder="字典状态"
+          :placeholder="$t('systemOther.dict.statusPlaceholder')"
           clearable
           style="width: 240px"
         >
@@ -34,20 +34,20 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="创建时间">
+      <el-form-item :label="$t('common.createTime')">
         <el-date-picker
           v-model="dateRange"
           style="width: 240px"
           value-format="yyyy-MM-dd"
           type="daterange"
           range-separator="-"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
+          :start-placeholder="$t('common.startDate')"
+          :end-placeholder="$t('common.endDate')"
         ></el-date-picker>
       </el-form-item>
       <el-form-item>
-        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('common.search') }}</el-button>
+        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('common.reset') }}</el-button>
       </el-form-item>
     </el-form>
 
@@ -60,7 +60,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['system:dict:add']"
-        >新增</el-button>
+        >{{ $t('common.add') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -71,7 +71,7 @@
           :disabled="single"
           @click="handleUpdate"
           v-hasPermi="['system:dict:edit']"
-        >修改</el-button>
+        >{{ $t('common.edit') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -82,7 +82,7 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['system:dict:remove']"
-        >删除</el-button>
+        >{{ $t('common.delete') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -92,7 +92,7 @@
           size="mini"
           @click="handleExport"
           v-hasPermi="['system:dict:export']"
-        >导出</el-button>
+        >{{ $t('common.export') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -102,34 +102,34 @@
           size="mini"
           @click="handleRefreshCache"
           v-hasPermi="['system:dict:remove']"
-        >刷新缓存</el-button>
+        >{{ $t('systemOther.dict.refreshCache') }}</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="typeList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="字典编号" align="center" prop="dictId" />
-      <el-table-column label="字典名称" align="center" prop="dictName" :show-overflow-tooltip="true" />
-      <el-table-column label="字典类型" align="center" :show-overflow-tooltip="true">
+      <el-table-column :label="$t('systemOther.dict.dictNo')" align="center" prop="dictId" />
+      <el-table-column :label="$t('systemOther.dict.dictName')" align="center" prop="dictName" :show-overflow-tooltip="true" />
+      <el-table-column :label="$t('systemOther.dict.dictType')" align="center" :show-overflow-tooltip="true">
         <template slot-scope="scope">
           <router-link :to="'/system/dict-data/index/' + scope.row.dictId" class="link-type">
             <span>{{ scope.row.dictType }}</span>
           </router-link>
         </template>
       </el-table-column>
-      <el-table-column label="状态" align="center" prop="status">
+      <el-table-column :label="$t('common.status')" align="center" prop="status">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/>
         </template>
       </el-table-column>
-      <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" />
-      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+      <el-table-column :label="$t('common.remark')" align="center" prop="remark" :show-overflow-tooltip="true" />
+      <el-table-column :label="$t('common.createTime')" align="center" prop="createTime" width="180">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.createTime) }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column :label="$t('common.operation')" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button v-no-more-click
             size="mini"
@@ -137,14 +137,14 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['system:dict:edit']"
-          >修改</el-button>
+          >{{ $t('common.edit') }}</el-button>
           <el-button v-no-more-click
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['system:dict:remove']"
-          >删除</el-button>
+          >{{ $t('common.delete') }}</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -160,13 +160,13 @@
     <!-- 添加或修改参数配置对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="字典名称" prop="dictName">
-          <el-input v-model="form.dictName" placeholder="请输入字典名称" />
+        <el-form-item :label="$t('systemOther.dict.dictName')" prop="dictName">
+          <el-input v-model="form.dictName" :placeholder="$t('systemOther.dict.dictNamePlaceholder')" />
         </el-form-item>
-        <el-form-item label="字典类型" prop="dictType">
-          <el-input v-model="form.dictType" placeholder="请输入字典类型" />
+        <el-form-item :label="$t('systemOther.dict.dictType')" prop="dictType">
+          <el-input v-model="form.dictType" :placeholder="$t('systemOther.dict.dictTypePlaceholder')" />
         </el-form-item>
-        <el-form-item label="状态" prop="status">
+        <el-form-item :label="$t('common.status')" prop="status">
           <el-radio-group v-model="form.status">
             <el-radio
               v-for="dict in dict.type.sys_normal_disable"
@@ -175,13 +175,13 @@
             >{{dict.label}}</el-radio>
           </el-radio-group>
         </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input>
+        <el-form-item :label="$t('common.remark')" prop="remark">
+          <el-input v-model="form.remark" type="textarea" :placeholder="$t('system.user.remarkPlaceholder')"></el-input>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <el-button v-no-more-click type="primary" @click="submitForm">确 定</el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click type="primary" @click="submitForm">{{ $t('common.confirm') }}</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -228,10 +228,10 @@ export default {
       // 表单校验
       rules: {
         dictName: [
-          { required: true, message: "字典名称不能为空", trigger: "blur" }
+          { required: true, message: this.$t('systemOther.dict.dictNameRequired'), trigger: "blur" }
         ],
         dictType: [
-          { required: true, message: "字典类型不能为空", trigger: "blur" }
+          { required: true, message: this.$t('systemOther.dict.dictTypeRequired'), trigger: "blur" }
         ]
       }
     };
@@ -281,7 +281,7 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "添加字典类型";
+      this.title = this.$t('systemOther.dict.addDictType');
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
@@ -296,7 +296,7 @@ export default {
       getType(dictId).then(response => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改字典类型";
+        this.title = this.$t('systemOther.dict.editDictType');
       });
     },
     /** 提交按钮 */
@@ -305,13 +305,13 @@ export default {
         if (valid) {
           if (this.form.dictId != undefined) {
             updateType(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('systemOther.dict.editSuccess'));
               this.open = false;
               this.getList();
             });
           } else {
             addType(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('systemOther.dict.addSuccess'));
               this.open = false;
               this.getList();
             });
@@ -322,11 +322,11 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const dictIds = row.dictId || this.ids;
-      this.$modal.confirm('是否确认删除字典编号为"' + dictIds + '"的数据项?').then(function() {
+      this.$modal.confirm(this.$t('systemOther.dict.deleteConfirm', { dictIds: dictIds })).then(function() {
         return delType(dictIds);
       }).then(() => {
         this.getList();
-        this.$modal.msgSuccess("删除成功");
+        this.$modal.msgSuccess(this.$t('systemOther.dict.deleteSuccess'));
       }).catch(() => {});
     },
     /** 导出按钮操作 */
@@ -338,7 +338,7 @@ export default {
     /** 刷新缓存按钮操作 */
     handleRefreshCache() {
       refreshCache().then(() => {
-        this.$modal.msgSuccess("刷新成功");
+        this.$modal.msgSuccess(this.$t('systemOther.dict.refreshSuccess'));
       });
     }
   }

+ 43 - 43
src/views/system/mapconfig/index.vue

@@ -1,18 +1,18 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px" @submit.native.prevent>
-      <el-form-item label="地图名称" prop="name">
+      <el-form-item :label="$t('systemOther.mapConfig.mapName')" prop="name">
         <el-input
           v-model="queryParams.name"
-          placeholder="请输入地图名称"
+          :placeholder="$t('systemOther.mapConfig.mapNamePlaceholder')"
           clearable
           style="width: 240px"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
       <el-form-item>
-        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('common.search') }}</el-button>
+        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('common.reset') }}</el-button>
       </el-form-item>
     </el-form>
 
@@ -25,7 +25,7 @@
                    size="mini"
                    @click="handleAdd"
                    v-hasPermi="['iscs:map:add']"
-        >新增</el-button>
+        >{{ $t('common.add') }}</el-button>
       </el-col>
       <el-button
         v-no-more-click
@@ -35,7 +35,7 @@
         size="mini"
         @click="handleOpenImport"
         v-show="sysAttrValue=='true'"
-      >指纹人脸导入</el-button
+      >{{ $t('systemOther.mapConfig.fingerprintFaceImport') }}</el-button
       >
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -46,25 +46,25 @@
                    :disabled="multiple"
                    @click="handleDelete"
                    v-hasPermi="['iscs:map:remove']"
-        >删除</el-button>
+        >{{ $t('common.delete') }}</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="List" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="50" align="center"/>
-      <el-table-column label="地图编号" align="center"  prop="id" ></el-table-column>
-      <el-table-column label="地图名称" align="center"  prop="name">
+      <el-table-column :label="$t('systemOther.mapConfig.mapNo')" align="center"  prop="id" ></el-table-column>
+      <el-table-column :label="$t('systemOther.mapConfig.mapName')" align="center"  prop="name">
         <template slot-scope="scope">
           <span>{{ scope.row.name }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="地图简称" align="center"  prop="shortName" >
+      <el-table-column :label="$t('systemOther.mapConfig.mapShortName')" align="center"  prop="shortName" >
         <template slot-scope="scope">
           <span>{{ scope.row.shortName }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="地图图片" align="left" prop="imageUrl" :show-overflow-tooltip="true" >
+      <el-table-column :label="$t('systemOther.mapConfig.mapImage')" align="left" prop="imageUrl" :show-overflow-tooltip="true" >
         <template slot-scope="scope">
           <div class="img-box" v-if="scope.row.imageUrl">
             <el-image
@@ -84,24 +84,24 @@
           <span v-else>-</span>
         </template>
       </el-table-column>
-      <el-table-column label="地图宽度" align="center" prop="width" >
+      <el-table-column :label="$t('systemOther.mapConfig.mapWidth')" align="center" prop="width" >
 
       </el-table-column>
-      <el-table-column label="地图高度" align="center" prop="height" >
+      <el-table-column :label="$t('systemOther.mapConfig.mapHeight')" align="center" prop="height" >
 
       </el-table-column>
-      <el-table-column label="横坐标" align="center" prop="x" >
+      <el-table-column :label="$t('systemOther.mapConfig.xCoordinate')" align="center" prop="x" >
 
       </el-table-column>
-      <el-table-column label="纵坐标" align="center" prop="y" >
+      <el-table-column :label="$t('systemOther.mapConfig.yCoordinate')" align="center" prop="y" >
 
       </el-table-column>
-      <el-table-column label="创建时间" align="center" prop="createTime" >
+      <el-table-column :label="$t('common.createTime')" align="center" prop="createTime" >
         <template slot-scope="scope">
           <span>{{ scope.row.createTime }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column :label="$t('common.operation')" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button v-no-more-click
                      size="mini"
@@ -109,7 +109,7 @@
                      icon="el-icon-edit"
                      @click="handleUpdate(scope.row)"
                      v-hasPermi="['iscs:map:edit']"
-          >修改</el-button>
+          >{{ $t('common.edit') }}</el-button>
 <!--          <el-button v-no-more-click-->
 <!--                     size="mini"-->
 <!--                     type="text"-->
@@ -123,7 +123,7 @@
                      icon="el-icon-delete"
                      @click="handleDelete(scope.row)"
                      v-hasPermi="['iscs:map:remove']"
-          >删除</el-button>
+          >{{ $t('common.delete') }}</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -139,13 +139,13 @@
     <!-- 添加或修改参数配置对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="地图名称" prop="name">
-          <el-input v-model="form.name" placeholder="请输入地图名称" />
+        <el-form-item :label="$t('systemOther.mapConfig.mapName')" prop="name">
+          <el-input v-model="form.name" :placeholder="$t('systemOther.mapConfig.mapNamePlaceholder')" />
         </el-form-item>
-        <el-form-item label="地图简称" prop="shortName">
-          <el-input v-model="form.shortName" placeholder="请输入地图名称" />
+        <el-form-item :label="$t('systemOther.mapConfig.mapShortName')" prop="shortName">
+          <el-input v-model="form.shortName" :placeholder="$t('systemOther.mapConfig.mapShortNamePlaceholder')" />
         </el-form-item>
-        <el-form-item label="地图图片" prop="imageUrl">
+        <el-form-item :label="$t('systemOther.mapConfig.mapImage')" prop="imageUrl">
           <ImageUploadSingle
             :limit="1"
             :value="form.imageUrl"
@@ -154,22 +154,22 @@
             @onRemoved="handleIconRemoved"
           ></ImageUploadSingle>
         </el-form-item>
-        <el-form-item label="图片宽度" prop="width">
-          <el-input v-model="form.width" placeholder="请输入图片宽度" />
+        <el-form-item :label="$t('systemOther.mapConfig.imageWidth')" prop="width">
+          <el-input v-model="form.width" :placeholder="$t('systemOther.mapConfig.imageWidthPlaceholder')" />
         </el-form-item>
-        <el-form-item label="图片高度" prop="height">
-          <el-input v-model="form.height" placeholder="请输入图片高度" />
+        <el-form-item :label="$t('systemOther.mapConfig.imageHeight')" prop="height">
+          <el-input v-model="form.height" :placeholder="$t('systemOther.mapConfig.imageHeightPlaceholder')" />
         </el-form-item>
-        <el-form-item label="横坐标" prop="x">
-          <el-input v-model="form.x" placeholder="请输入横坐标" />
+        <el-form-item :label="$t('systemOther.mapConfig.xCoordinate')" prop="x">
+          <el-input v-model="form.x" :placeholder="$t('systemOther.mapConfig.xCoordinatePlaceholder')" />
         </el-form-item>
-        <el-form-item label="纵坐标" prop="y">
-          <el-input v-model="form.y" placeholder="请输入纵坐标" />
+        <el-form-item :label="$t('systemOther.mapConfig.yCoordinate')" prop="y">
+          <el-input v-model="form.y" :placeholder="$t('systemOther.mapConfig.yCoordinatePlaceholder')" />
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <el-button v-no-more-click type="primary" @click="submitForm">确 定</el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click type="primary" @click="submitForm">{{ $t('common.confirm') }}</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
 <!--    车总测试-->
@@ -184,7 +184,7 @@
           icon="el-icon-upload2"
           size="mini"
           @click="handleImport('fingerprint')"
-        >指纹导入</el-button>
+        >{{ $t('systemOther.mapConfig.fingerprintImport') }}</el-button>
 
         <el-button
           type="info"
@@ -192,7 +192,7 @@
           icon="el-icon-upload2"
           size="mini"
           @click="handleImport('face')"
-        >人脸导入</el-button>
+        >{{ $t('systemOther.mapConfig.faceImport') }}</el-button>
 
         <el-button
           type="success"
@@ -305,10 +305,10 @@ export default {
       // 表单校验
       rules: {
         name: [
-          { required: true, message: "地图名称", trigger: "blur" }
+          { required: true, message: this.$t('systemOther.mapConfig.mapNameRequired'), trigger: "blur" }
         ],
         imageUrl: [
-          { required: true, message: "地图图片", trigger: "blur" }
+          { required: true, message: this.$t('systemOther.mapConfig.mapImageRequired'), trigger: "blur" }
         ]
       }
     };
@@ -319,7 +319,7 @@ export default {
   methods: {
     // 车总测试用的
     handleImport(type) {
-      this.upload.title = "导入";
+      this.upload.title = this.$t('common.import');
       this.upload.open = true;
       this.upload.userName=this.ImportForm.userName;
       this.upload.needUserName = type === "fingerprint" || type === "face";
@@ -350,7 +350,7 @@ export default {
         "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
         response.msg +
         "</div>",
-        "导入结果",
+        this.$t('common.importResult'),
         { dangerouslyUseHTMLString: true }
       );
       this.getList();
@@ -423,7 +423,7 @@ export default {
       selectIsMapById(ruleId).then(response => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改地图数据";
+        this.title = this.$t('systemOther.mapConfig.editMap');
       });
     },
     /** 提交按钮 */
@@ -432,13 +432,13 @@ export default {
         if (valid) {
           if (this.form.id != undefined) {
             updateIsMap(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('systemOther.mapConfig.editSuccess'));
               this.open = false;
               this.getList();
             });
           } else {
             insertIsMap(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('systemOther.mapConfig.addSuccess'));
               this.open = false;
               this.getList();
             });

+ 43 - 43
src/views/system/mappoint/index.vue

@@ -1,16 +1,16 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="地图名称" prop="mapId">
-        <el-select v-model="queryParams.mapId" placeholder="地图名称">
+      <el-form-item :label="$t('systemOther.mapPoint.mapName')" prop="mapId">
+        <el-select v-model="queryParams.mapId" :placeholder="$t('systemOther.mapPoint.mapName')">
           <el-option v-for="item in this.MapOptions" :key="item.id" :label="item.name" :value="item.id">
           </el-option>
         </el-select>
       </el-form-item>
       <el-form-item>
-        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索
+        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('common.search') }}
         </el-button>
-        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('common.reset') }}</el-button>
       </el-form-item>
     </el-form>
 
@@ -23,7 +23,7 @@
                    size="mini"
                    @click="handleAdd"
                    v-hasPermi="['iscs:map-point:add']"
-        >新增
+        >{{ $t('common.add') }}
         </el-button>
       </el-col>
       <el-col :span="1.5">
@@ -35,7 +35,7 @@
                    :disabled="multiple"
                    @click="handleDelete"
                    v-hasPermi="['iscs:map-point:remove']"
-        >删除
+        >{{ $t('common.delete') }}
         </el-button>
       </el-col>
 <!--      <el-button v-no-more-click-->
@@ -51,17 +51,17 @@
 
     <el-table v-loading="loading" :data="List" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center"/>
-      <el-table-column label="地图点位编号" align="center" width="210px" prop="id">
+      <el-table-column :label="$t('systemOther.mapPoint.mapPointNo')" align="center" width="210px" prop="id">
         <template slot-scope="scope">
           <span>{{ scope.row.id }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="地图名称" align="center" width="210px" prop="mapName">
+      <el-table-column :label="$t('systemOther.mapPoint.mapName')" align="center" width="210px" prop="mapName">
         <template slot-scope="scope">
           <span>{{ scope.row.mapName }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="地图类型" align="center" prop="mapType" :show-overflow-tooltip="true">
+      <el-table-column :label="$t('systemOther.mapPoint.mapType')" align="center" prop="mapType" :show-overflow-tooltip="true">
         <template slot-scope="scope">
           <dict-tag
             :options="dict.type.map_type"
@@ -70,21 +70,21 @@
         </template>
       </el-table-column>
 
-      <el-table-column label="实体名称" align="center" width="210px" prop="entityName">
+      <el-table-column :label="$t('systemOther.mapPoint.entityName')" align="center" width="210px" prop="entityName">
         <template slot-scope="scope">
           <span>{{ scope.row.entityName }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="横坐标" align="center" prop="x" width="180">
+      <el-table-column :label="$t('systemOther.mapPoint.xCoordinate')" align="center" prop="x" width="180">
       </el-table-column>
-      <el-table-column label="纵坐标" align="center" prop="y" width="180">
+      <el-table-column :label="$t('systemOther.mapPoint.yCoordinate')" align="center" prop="y" width="180">
       </el-table-column>
-      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+      <el-table-column :label="$t('common.createTime')" align="center" prop="createTime" width="180">
         <template slot-scope="scope">
           <span>{{ scope.row.createTime }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column :label="$t('common.operation')" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button v-no-more-click
                      size="mini"
@@ -92,7 +92,7 @@
                      icon="el-icon-edit"
                      @click="handleUpdate(scope.row)"
                      v-hasPermi="['iscs:map-point:edit']"
-          >修改
+          >{{ $t('common.edit') }}
           </el-button>
           <el-button v-no-more-click
                      size="mini"
@@ -100,7 +100,7 @@
                      icon="el-icon-delete"
                      @click="handleDelete(scope.row)"
                      v-hasPermi="['iscs:map-point:remove']"
-          >删除
+          >{{ $t('common.delete') }}
           </el-button>
         </template>
       </el-table-column>
@@ -117,14 +117,14 @@
     <!-- 添加或修改参数配置对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="400px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="地图名称" prop="mapId">
-          <el-select style="width: 280px" v-model="form.mapId" placeholder="地图名称">
+        <el-form-item :label="$t('systemOther.mapPoint.mapName')" prop="mapId">
+          <el-select style="width: 280px" v-model="form.mapId" :placeholder="$t('systemOther.mapPoint.mapName')">
             <el-option v-for="item in this.MapOptions" :key="item.id" :label="item.name" :value="item.id">
             </el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="地图类型" prop="mapType">
-          <el-select style="width: 280px" v-model="form.mapType" placeholder="地图类型">
+        <el-form-item :label="$t('systemOther.mapPoint.mapType')" prop="mapType">
+          <el-select style="width: 280px" v-model="form.mapType" :placeholder="$t('systemOther.mapPoint.mapType')">
             <el-option
               v-for="dict in dict.type.map_type"
               :key="dict.value"
@@ -133,44 +133,44 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item v-if="form.mapType=='1'" label="实体" prop="entityId">
+        <el-form-item v-if="form.mapType=='1'" :label="$t('systemOther.mapPoint.entity')" prop="entityId">
           <treeselect
             style="width: 280px"
             v-model="form.entityId"
             :options="deptOptions"
             :normalizer="Marsnormalizer"
-            placeholder="选择实体"
+            :placeholder="$t('systemOther.mapPoint.selectEntity')"
             @change="handleWorkstationChange"
           />
         </el-form-item>
-        <el-form-item v-if="form.mapType=='2'" label="实体" prop="entityId">
-          <el-select style="width: 280px" v-model="form.entityId" placeholder="实体">
+        <el-form-item v-if="form.mapType=='2'" :label="$t('systemOther.mapPoint.entity')" prop="entityId">
+          <el-select style="width: 280px" v-model="form.entityId" :placeholder="$t('systemOther.mapPoint.entity')">
             <el-option v-for="item in this.spmOptions" :key="item.pointId" :label="item.pointName" :value="item.pointId">
             </el-option>
           </el-select>
         </el-form-item>
-        <el-form-item v-if="form.mapType=='3'" label="实体" prop="entityId">
-          <el-select style="width: 280px" v-model="form.entityId" placeholder="实体">
+        <el-form-item v-if="form.mapType=='3'" :label="$t('systemOther.mapPoint.entity')" prop="entityId">
+          <el-select style="width: 280px" v-model="form.entityId" :placeholder="$t('systemOther.mapPoint.entity')">
             <el-option v-for="item in this.spmOptions" :key="item.pointId" :label="item.pointName" :value="item.pointId">
             </el-option>
           </el-select>
         </el-form-item>
-        <el-form-item v-if="form.mapType=='4'" label="实体" prop="entityId">
-          <el-select style="width: 280px" v-model="form.entityId" placeholder="实体">
+        <el-form-item v-if="form.mapType=='4'" :label="$t('systemOther.mapPoint.entity')" prop="entityId">
+          <el-select style="width: 280px" v-model="form.entityId" :placeholder="$t('systemOther.mapPoint.entity')">
             <el-option v-for="item in this.motorOptions" :key="item.motorId" :label="item.motorName" :value="item.motorId">
             </el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="横坐标" prop="x">
-          <el-input v-model="form.x" placeholder="请输入横坐标"/>
+        <el-form-item :label="$t('systemOther.mapPoint.xCoordinate')" prop="x">
+          <el-input v-model="form.x" :placeholder="$t('systemOther.mapPoint.xCoordinatePlaceholder')"/>
         </el-form-item>
-        <el-form-item label="纵坐标" prop="y">
-          <el-input v-model="form.y" placeholder="请输入纵坐标"/>
+        <el-form-item :label="$t('systemOther.mapPoint.yCoordinate')" prop="y">
+          <el-input v-model="form.y" :placeholder="$t('systemOther.mapPoint.yCoordinatePlaceholder')"/>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <el-button v-no-more-click type="primary" @click="submitForm">确 定</el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click type="primary" @click="submitForm">{{ $t('common.confirm') }}</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
 <!--    测试-->
@@ -285,10 +285,10 @@ export default {
       // 表单校验
       rules: {
         mapId: [
-          { required: true, message: '地图名称', trigger: 'blur' }
+          { required: true, message: this.$t('systemOther.mapPoint.mapNameRequired'), trigger: 'blur' }
         ],
         mapType: [
-          { required: true, message: '地图类型', trigger: 'blur' }
+          { required: true, message: this.$t('systemOther.mapPoint.mapTypeRequired'), trigger: 'blur' }
         ]
       }
     }
@@ -300,7 +300,7 @@ export default {
   methods: {
     /** 导入按钮操作 */
     handleImport() {
-      this.upload.title = "导入";
+      this.upload.title = this.$t('common.import');
       this.upload.open = true;
     },
     // 文件上传中处理
@@ -316,7 +316,7 @@ export default {
         "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
         response.msg +
         "</div>",
-        "导入结果",
+        this.$t('common.importResult'),
         { dangerouslyUseHTMLString: true }
       );
       this.getList();
@@ -415,7 +415,7 @@ export default {
       selectIsMapPointById(ruleId).then(response => {
         this.form = response.data
         this.open = true
-        this.title = '修改地图点位数据'
+        this.title = this.$t('systemOther.mapPoint.editMapPoint')
       })
     },
     /** 提交按钮 */
@@ -424,13 +424,13 @@ export default {
         if (valid) {
           if (this.form.id != undefined) {
             updateIsMapPoint(this.form).then(response => {
-              this.$modal.msgSuccess('修改成功')
+              this.$modal.msgSuccess(this.$t('systemOther.mapPoint.editSuccess'))
               this.open = false
               this.getList()
             })
           } else {
             insertIsMapPoint(this.form).then(response => {
-              this.$modal.msgSuccess('新增成功')
+              this.$modal.msgSuccess(this.$t('systemOther.mapPoint.addSuccess'))
               this.open = false
               this.getList()
             })
@@ -443,11 +443,11 @@ export default {
     handleDelete(row) {
       debugger;
       const ruleIds = row.id || this.ids
-      this.$modal.confirm('是否确认删除所选数据项?').then(function() {
+      this.$modal.confirm(this.$t('common.deleteConfirm')).then(function() {
         return deleteIsMapPointByIds(ruleIds)
       }).then(() => {
         this.getList()
-        this.$modal.msgSuccess('删除成功')
+        this.$modal.msgSuccess(this.$t('systemOther.mapPoint.deleteSuccess'))
       }).catch(() => {
       })
     }

+ 35 - 35
src/views/system/mars/index.vue

@@ -16,18 +16,18 @@
       <!--        />-->
 
       <!--      </el-form-item>-->
-      <el-form-item label="岗位名称" prop="workstationName">
+      <el-form-item :label="$t('system.post.postName')" prop="workstationName">
         <el-input
           v-model="queryParams.workstationName"
-          placeholder="请输入部门名称"
+          :placeholder="$t('system.post.postNamePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="状态" prop="status">
+      <el-form-item :label="$t('common.status')" prop="status">
         <el-select
           v-model="queryParams.status"
-          placeholder="状态"
+          :placeholder="$t('system.post.postStatus')"
           clearable
           style="width: 240px"
         >
@@ -46,14 +46,14 @@
           icon="el-icon-search"
           size="mini"
           @click="handleQuery"
-          >搜索
+          >{{ $t('common.search') }}
         </el-button>
         <el-button
           v-no-more-click
           icon="el-icon-refresh"
           size="mini"
           @click="resetQuery"
-          >重置</el-button
+          >{{ $t('common.reset') }}</el-button
         >
       </el-form-item>
     </el-form>
@@ -67,7 +67,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['iscs:workstation:add']"
-          >新增
+          >{{ $t('common.add') }}
         </el-button>
       </el-col>
       <!--      <el-col :span="1.5">-->
@@ -97,15 +97,15 @@
       <!--      <el-table-column prop="workstationCode" label="岗位编码" width="260"></el-table-column>-->
       <el-table-column
         prop="workstationName"
-        label="岗位名称"
+        :label="$t('system.post.postName')"
         width="300"
       ></el-table-column>
       <el-table-column
         prop="orderNum"
-        label="排序"
+        :label="$t('system.post.postSort')"
         width="260"
       ></el-table-column>
-      <el-table-column prop="status" label="状态" width="260">
+      <el-table-column prop="status" :label="$t('common.status')" width="260">
         <template slot-scope="scope">
           <el-switch
             v-model="scope.row.status"
@@ -115,10 +115,10 @@
           ></el-switch>
         </template>
       </el-table-column>
-      <el-table-column prop="workstationType" label="岗位人员" width="100">
+      <el-table-column prop="workstationType" :label="$t('system.post.postPersonnel')" width="100">
         <template slot-scope="scope">
           <el-button type="text" @click="HandleLookWorkStation(scope.row)"
-            >查看</el-button
+            >{{ $t('system.post.view') }}</el-button
           >
         </template>
       </el-table-column>
@@ -128,7 +128,7 @@
       <!--        </template>-->
       <!--      </el-table-column>-->
       <el-table-column
-        label="操作"
+        :label="$t('common.operation')"
         align="center"
         class-name="small-padding fixed-width"
       >
@@ -140,7 +140,7 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['iscs:workstation:edit']"
-            >修改
+            >{{ $t('common.edit') }}
           </el-button>
           <el-button
             v-no-more-click
@@ -149,7 +149,7 @@
             icon="el-icon-plus"
             @click="handleAdd(scope.row)"
             v-hasPermi="['iscs:workstation:add']"
-            >新增
+            >{{ $t('common.add') }}
           </el-button>
           <!--          v-if="scope.row.parentId != 0"-->
           <el-button
@@ -159,7 +159,7 @@
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['iscs:workstation:remove']"
-            >删除
+            >{{ $t('common.delete') }}
           </el-button>
         </template>
       </el-table-column>
@@ -174,19 +174,19 @@
     <!-- 添加或修改部门对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="480px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="上级" prop="parentId" v-if="form.parentId !== 0">
+        <el-form-item :label="$t('system.post.parentPost')" prop="parentId" v-if="form.parentId !== 0">
           <treeselect
             v-model="form.parentId"
             :options="deptOptions"
             :normalizer="normalizer"
-            placeholder="选择上级"
+            :placeholder="$t('system.post.parentPostPlaceholder')"
           />
         </el-form-item>
 
-        <el-form-item label="岗位名称" prop="workstationName">
+        <el-form-item :label="$t('system.post.postName')" prop="workstationName">
           <el-input
             v-model="form.workstationName"
-            placeholder="请输入岗位名称"
+            :placeholder="$t('system.post.postNamePlaceholder')"
           />
         </el-form-item>
         <!--        <el-row>-->
@@ -210,11 +210,11 @@
         <!--            </el-form-item>-->
         <!--          </el-col>-->
         <!--        </el-row>-->
-        <el-form-item label="排序" prop="orderNum">
+        <el-form-item :label="$t('system.post.postSort')" prop="orderNum">
           <el-input-number type="number" v-model="form.orderNum" />
         </el-form-item>
 
-        <el-form-item label="状态" prop="status">
+        <el-form-item :label="$t('common.status')" prop="status">
           <el-radio-group v-model="form.status">
             <el-radio
               v-for="dict in dict.type.sys_normal_disable"
@@ -230,9 +230,9 @@
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button v-no-more-click type="primary" @click="submitForm"
-          >确 定</el-button
+          >{{ $t('common.confirm') }}</el-button
         >
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -291,10 +291,10 @@ export default {
       // 表单校验
       rules: {
         parentId: [
-          { required: true, message: "上级部门不能为空", trigger: "blur" },
+          { required: true, message: this.$t('system.post.parentPostRequired'), trigger: "blur" },
         ],
         workstationName: [
-          { required: true, message: "部门名称不能为空", trigger: "blur" },
+          { required: true, message: this.$t('system.post.postNameRequired'), trigger: "blur" },
         ],
       },
     };
@@ -316,9 +316,9 @@ export default {
   methods: {
     // 用户状态修改
     handleStatusChange(row) {
-      let text = row.status === "0" ? "启用" : "停用";
+      let text = row.status === "0" ? this.$t('common.enable') : this.$t('common.disable');
       this.$modal
-        .confirm('确认要"' + text + '""' + row.workstationName + '"岗位吗?')
+        .confirm(this.$t('system.post.confirmPost', { text: text, postName: row.workstationName }))
         .then(function () {
           const data = {
             workstationId: row.workstationId,
@@ -327,7 +327,7 @@ export default {
           return updateMarsDeptStatus(data);
         })
         .then(() => {
-          this.$modal.msgSuccess(text + "成功");
+          this.$modal.msgSuccess(text + this.$t('common.success'));
         })
         .catch(function () {
           row.status = row.status === "0" ? "1" : "0";
@@ -418,7 +418,7 @@ export default {
         this.form.parentId = 0;
       }
       this.open = true;
-      this.title = "新增岗位";
+      this.title = this.$t('system.post.addPost');
       listMarsDept(this.queryParams).then((response) => {
         this.deptOptions = this.handleTree(
           response.data.records,
@@ -448,7 +448,7 @@ export default {
       getMarsDept(row.workstationId).then((response) => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改岗位";
+        this.title = this.$t('system.post.editPost');
       });
     },
     /** 提交按钮 */
@@ -457,13 +457,13 @@ export default {
         if (valid) {
           if (this.form.workstationId != undefined) {
             updateMarsDept(this.form).then((response) => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('system.post.editSuccess'));
               this.open = false;
               this.getList();
             });
           } else {
             addMarsDept(this.form).then((response) => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('system.post.addSuccess'));
               this.open = false;
               this.getList();
             });
@@ -475,13 +475,13 @@ export default {
     //  .confirm('是否确认删除名称为"' + row.workstationName + '"的数据项?')
     handleDelete(row) {
       this.$modal
-        .confirm("是否确认删除所选数据项?")
+        .confirm(this.$t('common.deleteConfirm'))
         .then(function () {
           return delMarsDept(row.workstationId);
         })
         .then(() => {
           this.getList();
-          this.$modal.msgSuccess("删除成功");
+          this.$modal.msgSuccess(this.$t('system.post.deleteSuccess'));
         })
         .catch(() => {});
     },

+ 53 - 53
src/views/system/menu/index.vue

@@ -1,16 +1,16 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
-      <el-form-item label="菜单名称" prop="menuName">
+      <el-form-item :label="$t('systemOther.menu.menuName')" prop="menuName">
         <el-input
           v-model="queryParams.menuName"
-          placeholder="请输入菜单名称"
+          :placeholder="$t('systemOther.menu.menuNamePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="状态" prop="status">
-        <el-select v-model="queryParams.status" placeholder="菜单状态" clearable>
+      <el-form-item :label="$t('common.status')" prop="status">
+        <el-select v-model="queryParams.status" :placeholder="$t('systemOther.menu.statusPlaceholder')" clearable>
           <el-option
             v-for="dict in dict.type.sys_normal_disable"
             :key="dict.value"
@@ -20,8 +20,8 @@
         </el-select>
       </el-form-item>
       <el-form-item>
-        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('common.search') }}</el-button>
+        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('common.reset') }}</el-button>
       </el-form-item>
     </el-form>
 
@@ -34,7 +34,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['system:menu:add']"
-        >新增</el-button>
+        >{{ $t('common.add') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -43,7 +43,7 @@
           icon="el-icon-sort"
           size="mini"
           @click="toggleExpandAll"
-        >展开/折叠</el-button>
+        >{{ $t('system.dept.expandCollapse') }}</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
@@ -56,26 +56,26 @@
       :default-expand-all="isExpandAll"
       :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
     >
-      <el-table-column prop="menuName" label="菜单名称" :show-overflow-tooltip="true" width="160"></el-table-column>
-      <el-table-column prop="icon" label="图标" align="center" width="100">
+      <el-table-column prop="menuName" :label="$t('systemOther.menu.menuName')" :show-overflow-tooltip="true" width="160"></el-table-column>
+      <el-table-column prop="icon" :label="$t('systemOther.menu.icon')" align="center" width="100">
         <template slot-scope="scope">
           <svg-icon :icon-class="scope.row.icon" />
         </template>
       </el-table-column>
-      <el-table-column prop="orderNum" label="排序" width="60"></el-table-column>
-      <el-table-column prop="perms" label="权限标识" :show-overflow-tooltip="true"></el-table-column>
-      <el-table-column prop="component" label="组件路径" :show-overflow-tooltip="true"></el-table-column>
-      <el-table-column prop="status" label="状态" width="80">
+      <el-table-column prop="orderNum" :label="$t('systemOther.menu.sort')" width="60"></el-table-column>
+      <el-table-column prop="perms" :label="$t('systemOther.menu.permissionKey')" :show-overflow-tooltip="true"></el-table-column>
+      <el-table-column prop="component" :label="$t('systemOther.menu.componentPath')" :show-overflow-tooltip="true"></el-table-column>
+      <el-table-column prop="status" :label="$t('common.status')" width="80">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/>
         </template>
       </el-table-column>
-      <el-table-column label="创建时间" align="center" prop="createTime">
+      <el-table-column :label="$t('common.createTime')" align="center" prop="createTime">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.createTime) }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column :label="$t('common.operation')" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button v-no-more-click 
             size="mini"
@@ -83,21 +83,21 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['system:menu:edit']"
-          >修改</el-button>
+          >{{ $t('common.edit') }}</el-button>
           <el-button v-no-more-click
             size="mini"
             type="text"
             icon="el-icon-plus"
             @click="handleAdd(scope.row)"
             v-hasPermi="['system:menu:add']"
-          >新增</el-button>
+          >{{ $t('common.add') }}</el-button>
           <el-button v-no-more-click
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['system:menu:remove']"
-          >删除</el-button>
+          >{{ $t('common.delete') }}</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -107,27 +107,27 @@
       <el-form ref="form" :model="form" :rules="rules" label-width="100px">
         <el-row>
           <el-col :span="24">
-            <el-form-item label="上级菜单">
+            <el-form-item :label="$t('systemOther.menu.parentMenu')">
               <treeselect
                 v-model="form.parentId"
                 :options="menuOptions"
                 :normalizer="normalizer"
                 :show-count="true"
-                placeholder="选择上级菜单"
+                :placeholder="$t('systemOther.menu.parentMenuPlaceholder')"
               />
             </el-form-item>
           </el-col>
           <el-col :span="24">
-            <el-form-item label="菜单类型" prop="menuType">
+            <el-form-item :label="$t('systemOther.menu.menuType')" prop="menuType">
               <el-radio-group v-model="form.menuType">
-                <el-radio label="M">目录</el-radio>
-                <el-radio label="C">菜单</el-radio>
-                <el-radio label="F">按钮</el-radio>
+                <el-radio label="M">{{ $t('systemOther.menu.directory') }}</el-radio>
+                <el-radio label="C">{{ $t('systemOther.menu.menu') }}</el-radio>
+                <el-radio label="F">{{ $t('systemOther.menu.button') }}</el-radio>
               </el-radio-group>
             </el-form-item>
           </el-col>
           <el-col :span="24" v-if="form.menuType != 'F'">
-            <el-form-item label="菜单图标" prop="icon">
+            <el-form-item :label="$t('systemOther.menu.menuIcon')" prop="icon">
               <el-popover
                 placement="bottom-start"
                 width="460"
@@ -135,7 +135,7 @@
                 @show="$refs['iconSelect'].reset()"
               >
                 <IconSelect ref="iconSelect" @selected="selected" />
-                <el-input slot="reference" v-model="form.icon" placeholder="点击选择图标" readonly>
+                <el-input slot="reference" v-model="form.icon" :placeholder="$t('systemOther.menu.selectIcon')" readonly>
                   <svg-icon
                     v-if="form.icon"
                     slot="prefix"
@@ -149,12 +149,12 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="菜单名称" prop="menuName">
-              <el-input v-model="form.menuName" placeholder="请输入菜单名称" />
+            <el-form-item :label="$t('systemOther.menu.menuName')" prop="menuName">
+              <el-input v-model="form.menuName" :placeholder="$t('systemOther.menu.menuNamePlaceholder')" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="显示排序" prop="orderNum">
+            <el-form-item :label="$t('systemOther.menu.displayOrder')" prop="orderNum">
               <el-input-number v-model="form.orderNum" controls-position="right" :min="0" />
             </el-form-item>
           </el-col>
@@ -164,11 +164,11 @@
                 <el-tooltip content="选择是外链则路由地址需要以`http(s)://`开头" placement="top">
                 <i class="el-icon-question"></i>
                 </el-tooltip>
-                是否外链
+                {{ $t('systemOther.menu.isExternalLink') }}
               </span>
               <el-radio-group v-model="form.isFrame">
-                <el-radio label="0"></el-radio>
-                <el-radio label="1"></el-radio>
+                <el-radio label="0">{{ $t('common.yes') }}</el-radio>
+                <el-radio label="1">{{ $t('common.no') }}</el-radio>
               </el-radio-group>
             </el-form-item>
           </el-col>
@@ -178,9 +178,9 @@
                 <el-tooltip content="访问的路由地址,如:`user`,如外网地址需内链访问则以`http(s)://`开头" placement="top">
                 <i class="el-icon-question"></i>
                 </el-tooltip>
-                路由地址
+                {{ $t('systemOther.menu.routeAddress') }}
               </span>
-              <el-input v-model="form.path" placeholder="请输入路由地址" />
+              <el-input v-model="form.path" :placeholder="$t('systemOther.menu.routeAddressPlaceholder')" />
             </el-form-item>
           </el-col>
           <el-col :span="12" v-if="form.menuType == 'C'">
@@ -189,30 +189,30 @@
                 <el-tooltip content="访问的组件路径,如:`system/user/index`,默认在`views`目录下" placement="top">
                 <i class="el-icon-question"></i>
                 </el-tooltip>
-                组件路径
+                {{ $t('systemOther.menu.componentPath') }}
               </span>
-              <el-input v-model="form.component" placeholder="请输入组件路径" />
+              <el-input v-model="form.component" :placeholder="$t('systemOther.menu.componentPathPlaceholder')" />
             </el-form-item>
           </el-col>
           <el-col :span="12" v-if="form.menuType != 'M'">
             <el-form-item>
-              <el-input v-model="form.perms" placeholder="请输入权限标识" maxlength="100" />
+              <el-input v-model="form.perms" :placeholder="$t('systemOther.menu.permissionKeyPlaceholder')" maxlength="100" />
               <span slot="label">
                 <el-tooltip content="控制器中定义的权限字符,如:@PreAuthorize(`@ss.hasPermi('system:user:list')`)" placement="top">
                 <i class="el-icon-question"></i>
                 </el-tooltip>
-                权限字符
+                {{ $t('systemOther.menu.permissionKey') }}
               </span>
             </el-form-item>
           </el-col>
           <el-col :span="12" v-if="form.menuType == 'C'">
             <el-form-item>
-              <el-input v-model="form.query" placeholder="请输入路由参数" maxlength="255" />
+              <el-input v-model="form.query" :placeholder="$t('systemOther.menu.routeParamPlaceholder')" maxlength="255" />
               <span slot="label">
                 <el-tooltip content='访问路由的默认传递参数,如:`{"id": 1, "name": "ry"}`' placement="top">
                 <i class="el-icon-question"></i>
                 </el-tooltip>
-                路由参数
+                {{ $t('systemOther.menu.routeParam') }}
               </span>
             </el-form-item>
           </el-col>
@@ -222,11 +222,11 @@
                 <el-tooltip content="选择是则会被`keep-alive`缓存,需要匹配组件的`name`和地址保持一致" placement="top">
                 <i class="el-icon-question"></i>
                 </el-tooltip>
-                是否缓存
+                {{ $t('systemOther.menu.isCache') }}
               </span>
               <el-radio-group v-model="form.isCache">
-                <el-radio label="0">缓存</el-radio>
-                <el-radio label="1">不缓存</el-radio>
+                <el-radio label="0">{{ $t('systemOther.menu.cache') }}</el-radio>
+                <el-radio label="1">{{ $t('systemOther.menu.noCache') }}</el-radio>
               </el-radio-group>
             </el-form-item>
           </el-col>
@@ -236,7 +236,7 @@
                 <el-tooltip content="选择隐藏则路由将不会出现在侧边栏,但仍然可以访问" placement="top">
                 <i class="el-icon-question"></i>
                 </el-tooltip>
-                显示状态
+                {{ $t('systemOther.menu.displayStatus') }}
               </span>
               <el-radio-group v-model="form.visible">
                 <el-radio
@@ -267,8 +267,8 @@
         </el-row>
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <el-button v-no-more-click type="primary" @click="submitForm">确 定</el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click type="primary" @click="submitForm">{{ $t('common.confirm') }}</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -399,7 +399,7 @@ export default {
         this.form.parentId = 0;
       }
       this.open = true;
-      this.title = "添加菜单";
+      this.title = this.$t('systemOther.menu.addMenu');
     },
     /** 展开/折叠操作 */
     toggleExpandAll() {
@@ -416,7 +416,7 @@ export default {
       getMenu(row.menuId).then(response => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改菜单";
+        this.title = this.$t('systemOther.menu.editMenu');
       });
     },
     /** 提交按钮 */
@@ -425,13 +425,13 @@ export default {
         if (valid) {
           if (this.form.menuId != undefined) {
             updateMenu(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('systemOther.menu.editSuccess'));
               this.open = false;
               this.getList();
             });
           } else {
             addMenu(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('systemOther.menu.addSuccess'));
               this.open = false;
               this.getList();
             });
@@ -441,11 +441,11 @@ export default {
     },
     /** 删除按钮操作 */
     handleDelete(row) {
-      this.$modal.confirm('是否确认删除名称为"' + row.menuName + '"的数据项?').then(function() {
+      this.$modal.confirm(this.$t('systemOther.menu.deleteConfirm', { menuName: row.menuName })).then(function() {
         return delMenu(row.menuId);
       }).then(() => {
         this.getList();
-        this.$modal.msgSuccess("删除成功");
+        this.$modal.msgSuccess(this.$t('systemOther.menu.deleteSuccess'));
       }).catch(() => {});
     }
   }

+ 51 - 51
src/views/system/message/index.vue

@@ -1,8 +1,8 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
-      <el-form-item label="消息类型" prop="messageType">
-        <el-select v-model="queryParams.messageType" placeholder="请选择消息类型" clearable>
+      <el-form-item :label="$t('systemOther.message.messageType')" prop="messageType">
+        <el-select v-model="queryParams.messageType" :placeholder="$t('systemOther.message.messageTypePlaceholder')" clearable>
           <el-option
             v-for="dict in dict.type.sys_message_type"
             :key="dict.value"
@@ -11,8 +11,8 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="消息级别" prop="messageLevel">
-        <el-select v-model="queryParams.messageLevel" placeholder="请选择消息级别" clearable>
+      <el-form-item :label="$t('systemOther.message.messageLevel')" prop="messageLevel">
+        <el-select v-model="queryParams.messageLevel" :placeholder="$t('systemOther.message.messageLevelPlaceholder')" clearable>
           <el-option
             v-for="dict in dict.type.sys_message_level"
             :key="dict.value"
@@ -22,27 +22,27 @@
         </el-select>
       </el-form-item>
 
-      <el-form-item label="发送人" prop="senderNick">
+      <el-form-item :label="$t('systemOther.message.sender')" prop="senderNick">
         <el-input
           v-model="queryParams.senderNick"
-          placeholder="请输入发送人"
+          :placeholder="$t('systemOther.message.senderPlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
 
-      <el-form-item label="接收人" prop="recipientNick">
+      <el-form-item :label="$t('systemOther.message.recipient')" prop="recipientNick">
         <el-input
           v-model="queryParams.recipientNick"
-          placeholder="请输入接收人"
+          :placeholder="$t('systemOther.message.recipientPlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
 
 
-      <el-form-item label="状态" prop="status">
-        <el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
+      <el-form-item :label="$t('common.status')" prop="status">
+        <el-select v-model="queryParams.status" :placeholder="$t('common.pleaseSelect')" clearable>
           <el-option
             v-for="dict in dict.type.sys_message_status"
             :key="dict.value"
@@ -53,8 +53,8 @@
       </el-form-item>
 
       <el-form-item>
-        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('common.search') }}</el-button>
+        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('common.reset') }}</el-button>
       </el-form-item>
     </el-form>
 
@@ -67,7 +67,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['system:message:add']"
-        >测试</el-button>
+        >{{ $t('systemOther.message.test') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -78,7 +78,7 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['system:message:remove']"
-        >删除</el-button>
+        >{{ $t('common.delete') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -88,39 +88,39 @@
           size="mini"
           @click="handleExport"
           v-hasPermi="['system:message:export']"
-        >导出</el-button>
+        >{{ $t('common.export') }}</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="messageList" @selection-change="handleSelectionChange">      
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="消息类型" align="center" prop="messageType">
+      <el-table-column :label="$t('systemOther.message.messageType')" align="center" prop="messageType">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_message_type" :value="scope.row.messageType"/>
         </template>
       </el-table-column>
-      <el-table-column label="消息级别" align="center" prop="messageLevel">
+      <el-table-column :label="$t('systemOther.message.messageLevel')" align="center" prop="messageLevel">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_message_level" :value="scope.row.messageLevel"/>
         </template>
       </el-table-column>
-      <el-table-column label="标题" align="center" prop="messageTitle" />
-      <el-table-column label="内容" align="center" prop="messageContent" />
-      <el-table-column label="发送人" align="center" prop="senderNick" />
-      <el-table-column label="接收人" align="center" prop="recipientNick" />
-      <el-table-column label="处理时间" align="center" prop="processTime" width="180">
+      <el-table-column :label="$t('systemOther.message.title')" align="center" prop="messageTitle" />
+      <el-table-column :label="$t('systemOther.message.content')" align="center" prop="messageContent" />
+      <el-table-column :label="$t('systemOther.message.sender')" align="center" prop="senderNick" />
+      <el-table-column :label="$t('systemOther.message.recipient')" align="center" prop="recipientNick" />
+      <el-table-column :label="$t('systemOther.message.processTime')" align="center" prop="processTime" width="180">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.processTime, '{y}-{m}-{d}') }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="回调地址" align="center" prop="callBack" />
-      <el-table-column label="状态" align="center" prop="status">
+      <el-table-column :label="$t('systemOther.message.callback')" align="center" prop="callBack" />
+      <el-table-column :label="$t('common.status')" align="center" prop="status">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_message_status" :value="scope.row.status"/>
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column :label="$t('common.operation')" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button v-no-more-click
             size="mini"
@@ -128,14 +128,14 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['system:message:edit']"
-          >修改</el-button>
+          >{{ $t('common.edit') }}</el-button>
           <el-button v-no-more-click
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['system:message:remove']"
-          >删除</el-button>
+          >{{ $t('common.delete') }}</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -153,8 +153,8 @@
       <el-form ref="form" :model="form" :rules="rules" label-width="100px">
         <el-row>
           <el-col :span="8">
-            <el-form-item label="消息类型" prop="messageType">
-              <el-select v-model="form.messageType" placeholder="请选择消息类型">
+            <el-form-item :label="$t('systemOther.message.messageType')" prop="messageType">
+              <el-select v-model="form.messageType" :placeholder="$t('systemOther.message.messageTypePlaceholder')">
                 <el-option
                   v-for="dict in dict.type.sys_message_type"
                   :key="dict.value"
@@ -165,8 +165,8 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="消息级别" prop="messageLevel">
-              <el-select v-model="form.messageLevel" placeholder="请选择消息级别">
+            <el-form-item :label="$t('systemOther.message.messageLevel')" prop="messageLevel">
+              <el-select v-model="form.messageLevel" :placeholder="$t('systemOther.message.messageLevelPlaceholder')">
                 <el-option
                   v-for="dict in dict.type.sys_message_level"
                   :key="dict.value"
@@ -177,8 +177,8 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="接收人" prop="recipientNick">
-              <el-input v-model="form.recipientNick" readonly="readonly" placeholder="请选择接收人" >
+            <el-form-item :label="$t('systemOther.message.recipient')" prop="recipientNick">
+              <el-input v-model="form.recipientNick" readonly="readonly" :placeholder="$t('systemOther.message.recipientSelectPlaceholder')" >
                 <el-button v-no-more-click slot="append" @click="handleUserSelect" icon="el-icon-search"></el-button>
               </el-input>
             </el-form-item>
@@ -187,29 +187,29 @@
         </el-row>
         <el-row>
           <el-col :span="24">
-            <el-form-item label="标题" prop="messageTitle">
-              <el-input v-model="form.messageTitle" placeholder="请输入标题" />
+            <el-form-item :label="$t('systemOther.message.title')" prop="messageTitle">
+              <el-input v-model="form.messageTitle" :placeholder="$t('systemOther.message.titlePlaceholder')" />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="24">
-            <el-form-item label="内容">
+            <el-form-item :label="$t('systemOther.message.content')">
               <editor v-model="form.messageContent" :min-height="192"/>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="24">
-            <el-form-item label="回调地址" prop="callBack">
-              <el-input v-model="form.callBack" placeholder="请输入回调地址" />
+            <el-form-item :label="$t('systemOther.message.callback')" prop="callBack">
+              <el-input v-model="form.callBack" :placeholder="$t('systemOther.message.callbackPlaceholder')" />
             </el-form-item>
           </el-col>
         </el-row>
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <el-button v-no-more-click type="primary" @click="submitForm">确 定</el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click type="primary" @click="submitForm">{{ $t('common.confirm') }}</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -252,19 +252,19 @@ export default {
       // 表单校验
       rules: {
         messageType: [
-          { required: true, message: "消息类型不能为空", trigger: "change" }
+          { required: true, message: this.$t('systemOther.message.messageTypeRequired'), trigger: "change" }
         ],        
         messageLevel: [
-          { required: true, message: "消息级别不能为空", trigger: "blur" }
+          { required: true, message: this.$t('systemOther.message.messageLevelRequired'), trigger: "blur" }
         ],      
         messageTitle: [
-          { required: true, message: "消息标题不能为空", trigger: "blur" }
+          { required: true, message: this.$t('systemOther.message.messageTitleRequired'), trigger: "blur" }
         ],
         messageContent: [
-          { required: true, message: "消息内容不能为空", trigger: "blur" }
+          { required: true, message: this.$t('systemOther.message.messageContentRequired'), trigger: "blur" }
         ],  
         recipientName: [
-          { required: true, message: "接收人不能为空", trigger: "blur" }
+          { required: true, message: this.$t('systemOther.message.recipientRequired'), trigger: "blur" }
         ]     
       }
     };
@@ -313,7 +313,7 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "添加消息";
+      this.title = this.$t('systemOther.message.addMessage');
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -322,7 +322,7 @@ export default {
       getMessage(messageId).then(response => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改消息";
+        this.title = this.$t('systemOther.message.editMessage');
       });
     },
     /** 提交按钮 */
@@ -331,13 +331,13 @@ export default {
         if (valid) {
           if (this.form.messageId != null) {
             updateMessage(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('systemOther.message.editSuccess'));
               this.open = false;
               this.getList();
             });
           } else {
             addMessage(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('systemOther.message.addSuccess'));
               this.open = false;
               this.getList();
             });
@@ -348,11 +348,11 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const messageIds = row.messageId || this.ids;
-      this.$modal.confirm('是否确认删除消息编号为"' + messageIds + '"的数据项?').then(function() {
+      this.$modal.confirm(this.$t('systemOther.message.deleteConfirm', { messageIds: messageIds })).then(function() {
         return delMessage(messageIds);
       }).then(() => {
         this.getList();
-        this.$modal.msgSuccess("删除成功");
+        this.$modal.msgSuccess(this.$t('systemOther.message.deleteSuccess'));
       }).catch(() => {});
     },
     /** 导出按钮操作 */

+ 36 - 36
src/views/system/notice/index.vue

@@ -1,24 +1,24 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="公告标题" prop="noticeTitle">
+      <el-form-item :label="$t('systemOther.notice.noticeTitle')" prop="noticeTitle">
         <el-input
           v-model="queryParams.noticeTitle"
-          placeholder="请输入公告标题"
+          :placeholder="$t('systemOther.notice.noticeTitlePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="操作人员" prop="createBy">
+      <el-form-item :label="$t('systemOther.notice.operator')" prop="createBy">
         <el-input
           v-model="queryParams.createBy"
-          placeholder="请输入操作人员"
+          :placeholder="$t('systemOther.notice.operatorPlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="类型" prop="noticeType">
-        <el-select v-model="queryParams.noticeType" placeholder="公告类型" clearable>
+      <el-form-item :label="$t('systemOther.notice.type')" prop="noticeType">
+        <el-select v-model="queryParams.noticeType" :placeholder="$t('systemOther.notice.noticeTypePlaceholder')" clearable>
           <el-option
             v-for="dict in dict.type.sys_notice_type"
             :key="dict.value"
@@ -28,8 +28,8 @@
         </el-select>
       </el-form-item>
       <el-form-item>
-        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('common.search') }}</el-button>
+        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('common.reset') }}</el-button>
       </el-form-item>
     </el-form>
 
@@ -42,7 +42,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['system:notice:add']"
-        >新增</el-button>
+        >{{ $t('common.add') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -53,7 +53,7 @@
           :disabled="single"
           @click="handleUpdate"
           v-hasPermi="['system:notice:edit']"
-        >修改</el-button>
+        >{{ $t('common.edit') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -64,37 +64,37 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['system:notice:remove']"
-        >删除</el-button>
+        >{{ $t('common.delete') }}</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="noticeList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="序号" align="center" prop="noticeId" width="100" />
+      <el-table-column :label="$t('systemOther.notice.serialNo')" align="center" prop="noticeId" width="100" />
       <el-table-column
-        label="公告标题"
+        :label="$t('systemOther.notice.noticeTitle')"
         align="center"
         prop="noticeTitle"
         :show-overflow-tooltip="true"
       />
-      <el-table-column label="公告类型" align="center" prop="noticeType" width="100">
+      <el-table-column :label="$t('systemOther.notice.noticeType')" align="center" prop="noticeType" width="100">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_notice_type" :value="scope.row.noticeType"/>
         </template>
       </el-table-column>
-      <el-table-column label="状态" align="center" prop="status" width="100">
+      <el-table-column :label="$t('common.status')" align="center" prop="status" width="100">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_notice_status" :value="scope.row.status"/>
         </template>
       </el-table-column>
-      <el-table-column label="创建者" align="center" prop="createBy" width="100" />
-      <el-table-column label="创建时间" align="center" prop="createTime" width="100">
+      <el-table-column :label="$t('systemOther.notice.creator')" align="center" prop="createBy" width="100" />
+      <el-table-column :label="$t('common.createTime')" align="center" prop="createTime" width="100">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column :label="$t('common.operation')" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button v-no-more-click
             size="mini"
@@ -102,14 +102,14 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['system:notice:edit']"
-          >修改</el-button>
+          >{{ $t('common.edit') }}</el-button>
           <el-button v-no-more-click
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['system:notice:remove']"
-          >删除</el-button>
+          >{{ $t('common.delete') }}</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -127,13 +127,13 @@
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-row>
           <el-col :span="12">
-            <el-form-item label="公告标题" prop="noticeTitle">
-              <el-input v-model="form.noticeTitle" placeholder="请输入公告标题" />
+            <el-form-item :label="$t('systemOther.notice.noticeTitle')" prop="noticeTitle">
+              <el-input v-model="form.noticeTitle" :placeholder="$t('systemOther.notice.noticeTitlePlaceholder')" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="公告类型" prop="noticeType">
-              <el-select v-model="form.noticeType" placeholder="请选择公告类型">
+            <el-form-item :label="$t('systemOther.notice.noticeType')" prop="noticeType">
+              <el-select v-model="form.noticeType" :placeholder="$t('systemOther.notice.noticeTypePlaceholder')">
                 <el-option
                   v-for="dict in dict.type.sys_notice_type"
                   :key="dict.value"
@@ -144,7 +144,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="24">
-            <el-form-item label="状态">
+            <el-form-item :label="$t('common.status')">
               <el-radio-group v-model="form.status">
                 <el-radio
                   v-for="dict in dict.type.sys_notice_status"
@@ -155,15 +155,15 @@
             </el-form-item>
           </el-col>
           <el-col :span="24">
-            <el-form-item label="内容">
+            <el-form-item :label="$t('systemOther.notice.content')">
               <editor v-model="form.noticeContent" :min-height="192"/>
             </el-form-item>
           </el-col>
         </el-row>
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <el-button v-no-more-click type="primary" @click="submitForm">确 定</el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click type="primary" @click="submitForm">{{ $t('common.confirm') }}</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -208,10 +208,10 @@ export default {
       // 表单校验
       rules: {
         noticeTitle: [
-          { required: true, message: "公告标题不能为空", trigger: "blur" }
+          { required: true, message: this.$t('systemOther.notice.noticeTitleRequired'), trigger: "blur" }
         ],
         noticeType: [
-          { required: true, message: "公告类型不能为空", trigger: "change" }
+          { required: true, message: this.$t('systemOther.notice.noticeTypeRequired'), trigger: "change" }
         ]
       }
     };
@@ -265,7 +265,7 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "添加公告";
+      this.title = this.$t('systemOther.notice.addNotice');
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -274,7 +274,7 @@ export default {
       getNotice(noticeId).then(response => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改公告";
+        this.title = this.$t('systemOther.notice.editNotice');
       });
     },
     /** 提交按钮 */
@@ -283,13 +283,13 @@ export default {
         if (valid) {
           if (this.form.noticeId != undefined) {
             updateNotice(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('systemOther.notice.editSuccess'));
               this.open = false;
               this.getList();
             });
           } else {
             addNotice(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('systemOther.notice.addSuccess'));
               this.open = false;
               this.getList();
             });
@@ -300,11 +300,11 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const noticeIds = row.noticeId || this.ids
-      this.$modal.confirm('是否确认删除公告编号为"' + noticeIds + '"的数据项?').then(function() {
+      this.$modal.confirm(this.$t('systemOther.notice.deleteConfirm', { noticeIds: noticeIds })).then(function() {
         return delNotice(noticeIds);
       }).then(() => {
         this.getList();
-        this.$modal.msgSuccess("删除成功");
+        this.$modal.msgSuccess(this.$t('systemOther.notice.deleteSuccess'));
       }).catch(() => {});
     }
   }

+ 38 - 38
src/views/system/post/index.vue

@@ -1,24 +1,24 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="岗位编码" prop="postCode">
+      <el-form-item :label="$t('system.post.postCode')" prop="postCode">
         <el-input
           v-model="queryParams.postCode"
-          placeholder="请输入岗位编码"
+          :placeholder="$t('system.post.postCodePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="岗位名称" prop="postName">
+      <el-form-item :label="$t('system.post.postName')" prop="postName">
         <el-input
           v-model="queryParams.postName"
-          placeholder="请输入岗位名称"
+          :placeholder="$t('system.post.postNamePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="状态" prop="status">
-        <el-select v-model="queryParams.status" placeholder="岗位状态" clearable>
+      <el-form-item :label="$t('common.status')" prop="status">
+        <el-select v-model="queryParams.status" :placeholder="$t('system.post.postStatus')" clearable>
           <el-option
             v-for="dict in dict.type.sys_normal_disable"
             :key="dict.value"
@@ -28,8 +28,8 @@
         </el-select>
       </el-form-item>
       <el-form-item>
-        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('common.search') }}</el-button>
+        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('common.reset') }}</el-button>
       </el-form-item>
     </el-form>
 
@@ -42,7 +42,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['system:post:add']"
-        >新增</el-button>
+        >{{ $t('common.add') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -53,7 +53,7 @@
           :disabled="single"
           @click="handleUpdate"
           v-hasPermi="['system:post:edit']"
-        >修改</el-button>
+        >{{ $t('common.edit') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -64,7 +64,7 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['system:post:remove']"
-        >删除</el-button>
+        >{{ $t('common.delete') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -74,28 +74,28 @@
           size="mini"
           @click="handleExport"
           v-hasPermi="['system:post:export']"
-        >导出</el-button>
+        >{{ $t('common.export') }}</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="postList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="岗位编号" align="center" prop="postId" />
-      <el-table-column label="岗位编码" align="center" prop="postCode" />
-      <el-table-column label="岗位名称" align="center" prop="postName" />
-      <el-table-column label="岗位排序" align="center" prop="postSort" />
-      <el-table-column label="状态" align="center" prop="status">
+      <el-table-column :label="$t('system.post.postNo')" align="center" prop="postId" />
+      <el-table-column :label="$t('system.post.postCode')" align="center" prop="postCode" />
+      <el-table-column :label="$t('system.post.postName')" align="center" prop="postName" />
+      <el-table-column :label="$t('system.post.postSort')" align="center" prop="postSort" />
+      <el-table-column :label="$t('common.status')" align="center" prop="status">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/>
         </template>
       </el-table-column>
-      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+      <el-table-column :label="$t('common.createTime')" align="center" prop="createTime" width="180">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.createTime) }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column :label="$t('common.operation')" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button v-no-more-click
             size="mini"
@@ -126,16 +126,16 @@
     <!-- 添加或修改岗位对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="岗位名称" prop="postName">
-          <el-input v-model="form.postName" placeholder="请输入岗位名称" />
+        <el-form-item :label="$t('system.post.postName')" prop="postName">
+          <el-input v-model="form.postName" :placeholder="$t('system.post.postNamePlaceholder')" />
         </el-form-item>
-        <el-form-item label="岗位编码" prop="postCode">
-          <el-input v-model="form.postCode" placeholder="请输入编码名称" />
+        <el-form-item :label="$t('system.post.postCode')" prop="postCode">
+          <el-input v-model="form.postCode" :placeholder="$t('system.post.codeNamePlaceholder')" />
         </el-form-item>
-        <el-form-item label="岗位顺序" prop="postSort">
+        <el-form-item :label="$t('system.post.postOrder')" prop="postSort">
           <el-input-number v-model="form.postSort" controls-position="right" :min="0" />
         </el-form-item>
-        <el-form-item label="岗位状态" prop="status">
+        <el-form-item :label="$t('system.post.postStatus')" prop="status">
           <el-radio-group v-model="form.status">
             <el-radio
               v-for="dict in dict.type.sys_normal_disable"
@@ -144,13 +144,13 @@
             >{{dict.label}}</el-radio>
           </el-radio-group>
         </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+        <el-form-item :label="$t('common.remark')" prop="remark">
+          <el-input v-model="form.remark" type="textarea" :placeholder="$t('system.post.remarkPlaceholder')" />
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <el-button v-no-more-click type="primary" @click="submitForm">确 定</el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click type="primary" @click="submitForm">{{ $t('common.confirm') }}</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -195,13 +195,13 @@ export default {
       // 表单校验
       rules: {
         postName: [
-          { required: true, message: "岗位名称不能为空", trigger: "blur" }
+          { required: true, message: this.$t('system.post.postNameRequired'), trigger: "blur" }
         ],
         postCode: [
-          { required: true, message: "岗位编码不能为空", trigger: "blur" }
+          { required: true, message: this.$t('system.post.postCodeRequired'), trigger: "blur" }
         ],
         postSort: [
-          { required: true, message: "岗位顺序不能为空", trigger: "blur" }
+          { required: true, message: this.$t('system.post.postOrderRequired'), trigger: "blur" }
         ]
       }
     };
@@ -256,7 +256,7 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "添加岗位";
+      this.title = this.$t('system.post.addPost');
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -265,7 +265,7 @@ export default {
       getPost(postId).then(response => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改岗位";
+        this.title = this.$t('system.post.editPost');
       });
     },
     /** 提交按钮 */
@@ -274,13 +274,13 @@ export default {
         if (valid) {
           if (this.form.postId != undefined) {
             updatePost(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('system.post.editSuccess'));
               this.open = false;
               this.getList();
             });
           } else {
             addPost(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('system.post.addSuccess'));
               this.open = false;
               this.getList();
             });
@@ -291,11 +291,11 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const postIds = row.postId || this.ids;
-      this.$modal.confirm('是否确认删除岗位编号为"' + postIds + '"的数据项?').then(function() {
+      this.$modal.confirm(this.$t('system.post.deleteConfirm')).then(function() {
         return delPost(postIds);
       }).then(() => {
         this.getList();
-        this.$modal.msgSuccess("删除成功");
+        this.$modal.msgSuccess(this.$t('system.post.deleteSuccess'));
       }).catch(() => {});
     },
     /** 导出按钮操作 */

+ 21 - 21
src/views/system/role/AuthUser.vue

@@ -1,27 +1,27 @@
 <template>
   <div class="app-container">
      <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
-      <el-form-item label="用户名称" prop="userName">
+      <el-form-item :label="$t('system.user.userName')" prop="userName">
         <el-input
           v-model="queryParams.userName"
-          placeholder="请输入用户名称"
+          :placeholder="$t('system.user.userNamePlaceholder')"
           clearable
           style="width: 240px"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="手机号码" prop="phonenumber">
+      <el-form-item :label="$t('system.user.phone')" prop="phonenumber">
         <el-input
           v-model="queryParams.phonenumber"
-          placeholder="请输入手机号码"
+          :placeholder="$t('system.user.phonePlaceholder')"
           clearable
           style="width: 240px"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
       <el-form-item>
-        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('common.search') }}</el-button>
+        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('common.reset') }}</el-button>
       </el-form-item>
     </el-form>
 
@@ -34,7 +34,7 @@
           size="mini"
           @click="openSelectUser"
           v-hasPermi="['system:role:add']"
-        >添加用户</el-button>
+        >{{ $t('system.role.authUser.addUser') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -45,7 +45,7 @@
           :disabled="multiple"
           @click="cancelAuthUserAll"
           v-hasPermi="['system:role:remove']"
-        >批量取消授权</el-button>
+        >{{ $t('system.role.authUser.batchCancelAuth') }}</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button v-no-more-click
@@ -54,28 +54,28 @@
           icon="el-icon-close"
           size="mini"
           @click="handleClose"
-        >关闭</el-button>
+        >{{ $t('common.close') }}</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" />
-      <el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" />
-      <el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" />
-      <el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" />
-      <el-table-column label="状态" align="center" prop="status">
+      <el-table-column :label="$t('system.user.userName')" prop="userName" :show-overflow-tooltip="true" />
+      <el-table-column :label="$t('system.user.nickName')" prop="nickName" :show-overflow-tooltip="true" />
+      <el-table-column :label="$t('system.user.email')" prop="email" :show-overflow-tooltip="true" />
+      <el-table-column :label="$t('system.user.phone')" prop="phonenumber" :show-overflow-tooltip="true" />
+      <el-table-column :label="$t('common.status')" align="center" prop="status">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/>
         </template>
       </el-table-column>
-      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+      <el-table-column :label="$t('common.createTime')" align="center" prop="createTime" width="180">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.createTime) }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column :label="$t('common.operation')" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button v-no-more-click
             size="mini"
@@ -83,7 +83,7 @@
             icon="el-icon-circle-close"
             @click="cancelAuthUser(scope.row)"
             v-hasPermi="['system:role:remove']"
-          >取消授权</el-button>
+          >{{ $t('system.role.authUser.cancelAuth') }}</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -176,22 +176,22 @@ export default {
     /** 取消授权按钮操作 */
     cancelAuthUser(row) {
       const roleId = this.queryParams.roleId;
-      this.$modal.confirm('确认要取消该用户"' + row.userName + '"角色吗?').then(function() {
+      this.$modal.confirm(this.$t('system.role.authUser.cancelAuthConfirm', { userName: row.userName })).then(function() {
         return authUserCancel({ userId: row.userId, roleId: roleId });
       }).then(() => {
         this.getList();
-        this.$modal.msgSuccess("取消授权成功");
+        this.$modal.msgSuccess(this.$t('system.role.authUser.cancelAuthSuccess'));
       }).catch(() => {});
     },
     /** 批量取消授权按钮操作 */
     cancelAuthUserAll(row) {
       const roleId = this.queryParams.roleId;
       const userIds = this.userIds.join(",");
-      this.$modal.confirm('是否取消选中用户授权数据项?').then(function() {
+      this.$modal.confirm(this.$t('system.role.authUser.batchCancelAuthConfirm')).then(function() {
         return authUserCancelAll({ roleId: roleId, userIds: userIds });
       }).then(() => {
         this.getList();
-        this.$modal.msgSuccess("取消授权成功");
+        this.$modal.msgSuccess(this.$t('system.role.authUser.cancelAuthSuccess'));
       }).catch(() => {});
     }
   }

+ 16 - 16
src/views/system/role/SelectUser.vue

@@ -1,41 +1,41 @@
 <template>
   <!-- 授权用户 -->
-  <el-dialog title="选择用户" :visible.sync="visible" width="800px" top="5vh" append-to-body>
+  <el-dialog :title="$t('system.role.selectUser.title')" :visible.sync="visible" width="800px" top="5vh" append-to-body>
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
-      <el-form-item label="用户名称" prop="userName">
+      <el-form-item :label="$t('system.user.userName')" prop="userName">
         <el-input
           v-model="queryParams.userName"
-          placeholder="请输入用户名称"
+          :placeholder="$t('system.user.userNamePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="手机号码" prop="phonenumber">
+      <el-form-item :label="$t('system.user.phone')" prop="phonenumber">
         <el-input
           v-model="queryParams.phonenumber"
-          placeholder="请输入手机号码"
+          :placeholder="$t('system.user.phonePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
       <el-form-item>
-        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button v-no-more-click type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('common.search') }}</el-button>
+        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('common.reset') }}</el-button>
       </el-form-item>
     </el-form>
     <el-row>
       <el-table @row-click="clickRow" ref="table" :data="userList" @selection-change="handleSelectionChange" height="260px">
         <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" />
-        <el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" />
-        <el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" />
-        <el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" />
-        <el-table-column label="状态" align="center" prop="status">
+        <el-table-column :label="$t('system.user.userName')" prop="userName" :show-overflow-tooltip="true" />
+        <el-table-column :label="$t('system.user.nickName')" prop="nickName" :show-overflow-tooltip="true" />
+        <el-table-column :label="$t('system.user.email')" prop="email" :show-overflow-tooltip="true" />
+        <el-table-column :label="$t('system.user.phone')" prop="phonenumber" :show-overflow-tooltip="true" />
+        <el-table-column :label="$t('common.status')" align="center" prop="status">
           <template slot-scope="scope">
             <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/>
           </template>
         </el-table-column>
-        <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+        <el-table-column :label="$t('common.createTime')" align="center" prop="createTime" width="180">
           <template slot-scope="scope">
             <span>{{ parseTime(scope.row.createTime) }}</span>
           </template>
@@ -50,8 +50,8 @@
       />
     </el-row>
     <div slot="footer" class="dialog-footer">
-      <el-button v-no-more-click type="primary" @click="handleSelectUser">确 定</el-button>
-      <el-button v-no-more-click @click="visible = false">取 消</el-button>
+      <el-button v-no-more-click type="primary" @click="handleSelectUser">{{ $t('common.confirm') }}</el-button>
+      <el-button v-no-more-click @click="visible = false">{{ $t('common.cancel') }}</el-button>
     </div>
   </el-dialog>
 </template>
@@ -122,7 +122,7 @@ export default {
       const roleId = this.queryParams.roleId;
       const userIds = this.userIds.join(",");
       if (userIds == "") {
-        this.$modal.msgError("请选择要分配的用户");
+        this.$modal.msgError(this.$t('system.role.selectUser.selectUserRequired'));
         return;
       }
       authUserSelectAll({ roleId: roleId, userIds: userIds }).then(res => {

+ 64 - 64
src/views/system/role/index.vue

@@ -7,28 +7,28 @@
       :inline="true"
       v-show="showSearch"
     >
-      <el-form-item label="角色名称" prop="roleName">
+      <el-form-item :label="$t('system.role.roleName')" prop="roleName">
         <el-input
           v-model="queryParams.roleName"
-          placeholder="请输入角色名称"
+          :placeholder="$t('system.role.roleNamePlaceholder')"
           clearable
           style="width: 240px"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="权限字符" prop="roleKey">
+      <el-form-item :label="$t('system.role.roleKey')" prop="roleKey">
         <el-input
           v-model="queryParams.roleKey"
-          placeholder="请输入权限字符"
+          :placeholder="$t('system.role.roleKeyPlaceholder')"
           clearable
           style="width: 240px"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="状态" prop="status">
+      <el-form-item :label="$t('common.status')" prop="status">
         <el-select
           v-model="queryParams.status"
-          placeholder="角色状态"
+          :placeholder="$t('system.role.roleStatus')"
           clearable
           style="width: 240px"
         >
@@ -58,14 +58,14 @@
           icon="el-icon-search"
           size="mini"
           @click="handleQuery"
-          >搜索</el-button
+          >{{ $t('common.search') }}</el-button
         >
         <el-button
           v-no-more-click
           icon="el-icon-refresh"
           size="mini"
           @click="resetQuery"
-          >重置</el-button
+          >{{ $t('common.reset') }}</el-button
         >
       </el-form-item>
     </el-form>
@@ -80,7 +80,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['system:role:add']"
-          >新增</el-button
+          >{{ $t('common.add') }}</el-button
         >
       </el-col>
       <el-col :span="1.5">
@@ -93,7 +93,7 @@
           :disabled="single"
           @click="handleUpdate"
           v-hasPermi="['system:role:edit']"
-          >修改</el-button
+          >{{ $t('common.edit') }}</el-button
         >
       </el-col>
       <el-col :span="1.5">
@@ -106,7 +106,7 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['system:role:remove']"
-          >删除</el-button
+          >{{ $t('common.delete') }}</el-button
         >
       </el-col>
       <el-col :span="1.5">
@@ -118,7 +118,7 @@
           size="mini"
           @click="handleExport"
           v-hasPermi="['system:role:export']"
-          >导出</el-button
+          >{{ $t('common.export') }}</el-button
         >
       </el-col>
       <right-toolbar
@@ -133,21 +133,21 @@
       @selection-change="handleSelectionChange"
     >
       <el-table-column type="selection" width="110" align="center" />
-      <el-table-column label="角色编号" prop="roleId" width="160" />
+      <el-table-column :label="$t('system.role.roleNo')" prop="roleId" width="160" />
       <el-table-column
-        label="角色名称"
+        :label="$t('system.role.roleName')"
         prop="roleName"
         :show-overflow-tooltip="true"
         width="260"
       />
       <el-table-column
-        label="权限字符"
+        :label="$t('system.role.roleKey')"
         prop="roleKey"
         :show-overflow-tooltip="true"
         width="260"
       />
-      <el-table-column label="显示顺序" prop="roleSort" width="160" />
-      <el-table-column label="状态" align="center" width="160">
+      <el-table-column :label="$t('system.role.displayOrder')" prop="roleSort" width="160" />
+      <el-table-column :label="$t('common.status')" align="center" width="160">
         <template slot-scope="scope">
           <el-switch
             v-model="scope.row.status"
@@ -163,7 +163,7 @@
       <!--        </template>-->
       <!--      </el-table-column>-->
       <el-table-column
-        label="操作"
+        :label="$t('common.operation')"
         align="center"
         class-name="small-padding fixed-width"
       >
@@ -175,7 +175,7 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['system:role:edit']"
-            >修改</el-button
+            >{{ $t('common.edit') }}</el-button
           >
           <el-button
             v-no-more-click
@@ -184,7 +184,7 @@
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['system:role:remove']"
-            >删除</el-button
+            >{{ $t('common.delete') }}</el-button
           >
           <el-dropdown
             size="mini"
@@ -192,20 +192,20 @@
             v-hasPermi="['system:role:edit']"
           >
             <span class="el-dropdown-link">
-              <i class="el-icon-d-arrow-right el-icon--right"></i>更多
+              <i class="el-icon-d-arrow-right el-icon--right"></i>{{ $t('system.role.more') }}
             </span>
             <el-dropdown-menu slot="dropdown">
               <el-dropdown-item
                 command="handleDataScope"
                 icon="el-icon-circle-check"
                 v-hasPermi="['system:role:edit']"
-                >数据权限</el-dropdown-item
+                >{{ $t('system.role.dataPermission') }}</el-dropdown-item
               >
               <el-dropdown-item
                 command="handleAuthUser"
                 icon="el-icon-user"
                 v-hasPermi="['system:role:edit']"
-                >分配用户</el-dropdown-item
+                >{{ $t('system.role.assignUser') }}</el-dropdown-item
               >
             </el-dropdown-menu>
           </el-dropdown>
@@ -224,8 +224,8 @@
     <!-- 添加或修改角色配置对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="100px">
-        <el-form-item label="角色名称" prop="roleName">
-          <el-input v-model="form.roleName" placeholder="请输入角色名称" />
+        <el-form-item :label="$t('system.role.roleName')" prop="roleName">
+          <el-input v-model="form.roleName" :placeholder="$t('system.role.roleNamePlaceholder')" />
         </el-form-item>
         <el-form-item prop="roleKey">
           <span slot="label">
@@ -235,18 +235,18 @@
             >
               <i class="el-icon-question"></i>
             </el-tooltip>
-            权限字符
+            {{ $t('system.role.roleKey') }}
           </span>
-          <el-input v-model="form.roleKey" placeholder="请输入权限字符" />
+          <el-input v-model="form.roleKey" :placeholder="$t('system.role.roleKeyPlaceholder')" />
         </el-form-item>
-        <el-form-item label="显示顺序" prop="roleSort">
+        <el-form-item :label="$t('system.role.displayOrder')" prop="roleSort">
           <el-input-number
             v-model="form.roleSort"
             controls-position="right"
             :min="0"
           />
         </el-form-item>
-        <el-form-item label="状态">
+        <el-form-item :label="$t('common.status')">
           <el-radio-group v-model="form.status">
             <el-radio
               v-for="dict in dict.type.sys_normal_disable"
@@ -256,21 +256,21 @@
             >
           </el-radio-group>
         </el-form-item>
-        <el-form-item label="菜单权限">
+        <el-form-item :label="$t('system.role.menuPermission')">
           <el-checkbox
             v-model="menuExpand"
             @change="handleCheckedTreeExpand($event, 'menu')"
-            >展开/折叠</el-checkbox
+            >{{ $t('system.role.expandCollapse') }}</el-checkbox
           >
           <el-checkbox
             v-model="menuNodeAll"
             @change="handleCheckedTreeNodeAll($event, 'menu')"
-            >全选/全不选</el-checkbox
+            >{{ $t('system.role.selectAll') }}</el-checkbox
           >
           <el-checkbox
             v-model="form.menuCheckStrictly"
             @change="handleCheckedTreeConnect($event, 'menu')"
-            >父子联动</el-checkbox
+            >{{ $t('system.role.parentChildLink') }}</el-checkbox
           >
           <el-tree
             class="tree-border"
@@ -279,23 +279,23 @@
             ref="menu"
             node-key="id"
             :check-strictly="!form.menuCheckStrictly"
-            empty-text="加载中,请稍候"
+            :empty-text="$t('system.role.loading')"
             :props="defaultProps"
           ></el-tree>
         </el-form-item>
-        <el-form-item label="备注">
+        <el-form-item :label="$t('common.remark')">
           <el-input
             v-model="form.remark"
             type="textarea"
-            placeholder="请输入内容"
+            :placeholder="$t('system.user.remarkPlaceholder')"
           ></el-input>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button v-no-more-click type="primary" @click="submitForm"
-          >确 定</el-button
+          >{{ $t('common.confirm') }}</el-button
         >
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
 
@@ -307,10 +307,10 @@
       append-to-body
     >
       <el-form :model="form" label-width="80px">
-        <el-form-item label="角色名称">
+        <el-form-item :label="$t('system.role.roleName')">
           <el-input v-model="form.roleName" :disabled="true" />
         </el-form-item>
-        <el-form-item label="权限字符">
+        <el-form-item :label="$t('system.role.roleKey')">
           <el-input v-model="form.roleKey" :disabled="true" />
         </el-form-item>
         <!--        <el-form-item label="权限范围">-->
@@ -323,7 +323,7 @@
         <!--            ></el-option>-->
         <!--          </el-select>-->
         <!--        </el-form-item>-->
-        <el-form-item label="岗位权限">
+        <el-form-item :label="$t('system.role.postPermission')">
           <el-select
             v-model="form.marsDataScope"
             @change="dataScopeSelectChange"
@@ -352,21 +352,21 @@
         <!--            :props="defaultProps"-->
         <!--          ></el-tree>-->
         <!--        </el-form-item>-->
-        <el-form-item label="数据权限" v-show="form.marsDataScope == 2">
+        <el-form-item :label="$t('system.role.dataPermission')" v-show="form.marsDataScope == 2">
           <el-checkbox
             v-model="deptExpand"
             @change="handleCheckedTreeExpand($event, 'dept')"
-            >展开/折叠</el-checkbox
+            >{{ $t('system.role.expandCollapse') }}</el-checkbox
           >
           <el-checkbox
             v-model="deptNodeAll"
             @change="handleCheckedTreeNodeAll($event, 'dept')"
-            >全选/全不选</el-checkbox
+            >{{ $t('system.role.selectAll') }}</el-checkbox
           >
           <el-checkbox
             v-model="form.deptCheckStrictly"
             @change="handleCheckedTreeConnect($event, 'dept')"
-            >父子联动</el-checkbox
+            >{{ $t('system.role.parentChildLink') }}</el-checkbox
           >
           <el-tree
             class="tree-border"
@@ -376,16 +376,16 @@
             ref="dept"
             node-key="id"
             :check-strictly="!form.deptCheckStrictly"
-            empty-text="加载中,请稍候"
+            :empty-text="$t('system.role.loading')"
             :props="defaultProps"
           ></el-tree>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button v-no-more-click type="primary" @click="submitDataScope"
-          >确 定</el-button
+          >{{ $t('common.confirm') }}</el-button
         >
-        <el-button v-no-more-click @click="cancelDataScope">取 消</el-button>
+        <el-button v-no-more-click @click="cancelDataScope">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
   </div>
@@ -446,23 +446,23 @@ export default {
       dataScopeOptions: [
         {
           value: "1",
-          label: "全部数据权限",
+          label: this.$t('system.role.allDataPermission'),
         },
         {
           value: "2",
-          label: "自定数据权限",
+          label: this.$t('system.role.customDataPermission'),
         },
         {
           value: "3",
-          label: "本部门数据权限",
+          label: this.$t('system.role.deptDataPermission'),
         },
         {
           value: "4",
-          label: "本部门及以下数据权限",
+          label: this.$t('system.role.deptAndBelowDataPermission'),
         },
         {
           value: "5",
-          label: "仅本人数据权限",
+          label: this.$t('system.role.onlySelfDataPermission'),
         },
       ],
       // 菜单列表
@@ -488,13 +488,13 @@ export default {
       // 表单校验
       rules: {
         roleName: [
-          { required: true, message: "角色名称不能为空", trigger: "blur" },
+          { required: true, message: this.$t('system.role.roleNameRequired'), trigger: "blur" },
         ],
         roleKey: [
-          { required: true, message: "权限字符不能为空", trigger: "blur" },
+          { required: true, message: this.$t('system.role.roleKeyRequired'), trigger: "blur" },
         ],
         roleSort: [
-          { required: true, message: "角色顺序不能为空", trigger: "blur" },
+          { required: true, message: this.$t('system.role.roleOrderRequired'), trigger: "blur" },
         ],
       },
     };
@@ -712,7 +712,7 @@ export default {
       this.reset();
       this.getMenuTreeselect();
       this.open = true;
-      this.title = "新增角色";
+      this.title = this.$t('system.role.addRole');
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -732,7 +732,7 @@ export default {
             });
           });
         });
-        this.title = "修改角色";
+        this.title = this.$t('system.role.editRole');
       });
     },
     /** 选择角色权限范围触发 */
@@ -761,7 +761,7 @@ export default {
           //
           // });
         });
-        this.title = "分配数据权限";
+        this.title = this.$t('system.role.dataPermissionDialog');
       });
     },
     /** 分配用户操作 */
@@ -776,14 +776,14 @@ export default {
           if (this.form.roleId != undefined) {
             this.form.menuIds = this.getMenuAllCheckedKeys();
             updateRole(this.form).then((response) => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('system.role.editSuccess'));
               this.open = false;
               this.getList();
             });
           } else {
             this.form.menuIds = this.getMenuAllCheckedKeys();
             addRole(this.form).then((response) => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('system.role.addSuccess'));
               this.open = false;
               this.getList();
             });
@@ -797,7 +797,7 @@ export default {
         // this.form.deptIds = this.getDeptAllCheckedKeys();
         this.form.workstationIds = this.getDeptAllCheckedKeys();
         dataScope(this.form).then((response) => {
-          this.$modal.msgSuccess("修改成功");
+          this.$modal.msgSuccess(this.$t('system.role.editSuccess'));
           this.openDataScope = false;
           this.getList();
         });
@@ -808,13 +808,13 @@ export default {
     handleDelete(row) {
       const roleIds = row.roleId || this.ids;
       this.$modal
-        .confirm("是否确认删除所选数据项?")
+        .confirm(this.$t('common.deleteConfirm'))
         .then(function () {
           return delRole(roleIds);
         })
         .then(() => {
           this.getList();
-          this.$modal.msgSuccess("删除成功");
+          this.$modal.msgSuccess(this.$t('system.role.deleteSuccess'));
         })
         .catch(() => {});
     },

+ 34 - 34
src/views/system/unit/index.vue

@@ -7,27 +7,27 @@
       :inline="true"
       v-show="showSearch"
     >
-      <el-form-item label="单位编号" prop="unitId">
+      <el-form-item :label="$t('system.unit.unitNo')" prop="unitId">
         <el-input
           v-model="queryParams.unitId"
-          placeholder="请输入单位编号"
+          :placeholder="$t('system.unit.unitNoPlaceholder')"
           clearable
           oninput="value=value.replace(/[^\d.]/g,'')"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="单位名称" prop="unitName">
+      <el-form-item :label="$t('system.unit.unitName')" prop="unitName">
         <el-input
           v-model="queryParams.unitName"
-          placeholder="请输入单位名称"
+          :placeholder="$t('system.unit.unitNamePlaceholder')"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="状态" prop="status">
+      <el-form-item :label="$t('common.status')" prop="status">
         <el-select
           v-model="queryParams.status"
-          placeholder="状态"
+          :placeholder="$t('common.status')"
           clearable
           style="width: 240px"
         >
@@ -46,14 +46,14 @@
           icon="el-icon-search"
           size="mini"
           @click="handleQuery"
-          >搜索
+          >{{ $t('common.search') }}
         </el-button>
         <el-button
           v-no-more-click
           icon="el-icon-refresh"
           size="mini"
           @click="resetQuery"
-          >重置</el-button
+          >{{ $t('common.reset') }}</el-button
         >
       </el-form-item>
     </el-form>
@@ -96,26 +96,26 @@
     >
       <el-table-column
         prop="unitId"
-        label="单位编号"
+        :label="$t('system.unit.unitNo')"
         width="130"
       ></el-table-column>
       <el-table-column
         prop="unitName"
-        label="单位名称"
+        :label="$t('system.unit.unitName')"
         width="260"
       ></el-table-column>
       <el-table-column
         prop="unitType"
-        label="单位类型"
+        :label="$t('system.unit.unitType')"
         width="260"
       ></el-table-column>
       <el-table-column
         prop="orderNum"
-        label="排序"
+        :label="$t('system.unit.sort')"
         width="200"
       ></el-table-column>
-      <el-table-column prop="remark" label="备注" width="260"></el-table-column>
-      <el-table-column prop="status" label="状态" width="150">
+      <el-table-column prop="remark" :label="$t('common.remark')" width="260"></el-table-column>
+      <el-table-column prop="status" :label="$t('common.status')" width="150">
         <template slot-scope="scope">
           <el-switch
             v-model="scope.row.status"
@@ -131,7 +131,7 @@
       <!--        </template>-->
       <!--      </el-table-column>-->
       <el-table-column
-        label="操作"
+        :label="$t('common.operation')"
         align="center"
         class-name="small-padding fixed-width"
       >
@@ -179,23 +179,23 @@
         <!--        <el-form-item label="上级" prop="parentId" v-if="form.parentId !== 0">-->
         <!--          <treeselect v-model="form.parentId" :options="deptOptions" :normalizer="normalizer" placeholder="选择上级"/>-->
         <!--        </el-form-item>-->
-        <el-form-item label="单位名称" prop="unitName">
-          <el-input v-model="form.unitName" placeholder="请输入单位名称" />
+        <el-form-item :label="$t('system.unit.unitName')" prop="unitName">
+          <el-input v-model="form.unitName" :placeholder="$t('system.unit.unitNamePlaceholder')" />
         </el-form-item>
-        <el-form-item label="单位类型" prop="unitType">
+        <el-form-item :label="$t('system.unit.unitType')" prop="unitType">
           <el-radio-group v-model="form.unitType">
-            <el-radio label="内部">内部</el-radio>
-            <el-radio label="外部">外部</el-radio>
+            <el-radio label="内部">{{ $t('system.unit.internal') }}</el-radio>
+            <el-radio label="外部">{{ $t('system.unit.external') }}</el-radio>
           </el-radio-group>
         </el-form-item>
-        <el-form-item label="排序" prop="orderNum">
+        <el-form-item :label="$t('system.unit.sort')" prop="orderNum">
           <el-input-number type="number" v-model="form.orderNum" />
         </el-form-item>
 
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" placeholder="请输入备注" />
+        <el-form-item :label="$t('common.remark')" prop="remark">
+          <el-input v-model="form.remark" :placeholder="$t('system.unit.remarkPlaceholder')" />
         </el-form-item>
-        <el-form-item label="状态" prop="status">
+        <el-form-item :label="$t('common.status')" prop="status">
           <el-radio-group v-model="form.status">
             <el-radio
               v-for="dict in dict.type.sys_normal_disable"
@@ -271,7 +271,7 @@ export default {
         //   { required: true, message: '上级不能为空', trigger: 'blur' }
         // ],
         unitName: [
-          { required: true, message: "单位名称不能为空", trigger: "blur" },
+          { required: true, message: this.$t('system.unit.unitNameRequired'), trigger: "blur" },
         ],
       },
     };
@@ -283,9 +283,9 @@ export default {
   methods: {
     // 用户状态修改
     handleStatusChange(row) {
-      let text = row.status === "0" ? "启用" : "停用";
+      let text = row.status === "0" ? this.$t('system.unit.enable') : this.$t('system.unit.disable');
       this.$modal
-        .confirm('确认要"' + text + '""' + row.unitName + '"岗位吗?')
+        .confirm(this.$t('system.unit.confirmPost'))
         .then(function () {
           const data = {
             unitId: row.unitId,
@@ -297,7 +297,7 @@ export default {
           return updateUnit(data);
         })
         .then(() => {
-          this.$modal.msgSuccess(text + "成功");
+          this.$modal.msgSuccess(text + this.$t('system.unit.success'));
         })
         .catch(function () {
           row.status = row.status === "0" ? "1" : "0";
@@ -363,7 +363,7 @@ export default {
         this.form.parentId = 0;
       }
       this.open = true;
-      this.title = "新增单位";
+      this.title = this.$t('system.unit.addUnit');
       listUnit(this.queryParams).then((response) => {
         this.deptOptions = this.handleTree(
           response.data.records,
@@ -389,7 +389,7 @@ export default {
           this.form.parentId = undefined;
         }
         this.open = true;
-        this.title = "修改单位";
+        this.title = this.$t('system.unit.editUnit');
       });
     },
     /** 提交按钮 */
@@ -398,13 +398,13 @@ export default {
         if (valid) {
           if (this.form.unitId != undefined) {
             updateUnit(this.form).then((response) => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('system.unit.editSuccess'));
               this.open = false;
               this.getList();
             });
           } else {
             addUnit(this.form).then((response) => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('system.unit.addSuccess'));
               this.open = false;
               this.getList();
             });
@@ -416,13 +416,13 @@ export default {
     // .confirm('是否确认删除名称为"' + row.unitName + '"的数据项?')
     handleDelete(row) {
       this.$modal
-        .confirm("是否确认删除所选数据项?")
+        .confirm(this.$t('system.unit.deleteConfirm'))
         .then(function () {
           return delUnit(row.unitId);
         })
         .then(() => {
           this.getList();
-          this.$modal.msgSuccess("删除成功");
+          this.$modal.msgSuccess(this.$t('system.unit.deleteSuccess'));
         })
         .catch(() => {});
     },

+ 12 - 12
src/views/system/user/AuthRole.vue

@@ -1,33 +1,33 @@
 <template>
   <div class="app-container">
-    <h4 class="form-header h4">基本信息</h4>
+    <h4 class="form-header h4">{{ $t('system.user.authRole.basicInfo') }}</h4>
     <el-form ref="form" :model="form" label-width="80px">
       <el-row>
         <el-col :span="8" :offset="2">
-          <el-form-item label="用户昵称" prop="nickName">
+          <el-form-item :label="$t('system.user.nickName')" prop="nickName">
             <el-input v-model="form.nickName" disabled />
           </el-form-item>
         </el-col>
         <el-col :span="8" :offset="2">
-          <el-form-item label="登录账号" prop="userName">
+          <el-form-item :label="$t('system.user.userName')" prop="userName">
             <el-input  v-model="form.userName" disabled />
           </el-form-item>
         </el-col>
       </el-row>
     </el-form>
 
-    <h4 class="form-header h4">角色信息</h4>
+    <h4 class="form-header h4">{{ $t('system.user.authRole.roleInfo') }}</h4>
     <el-table v-loading="loading" :row-key="getRowKey" @row-click="clickRow" ref="table" @selection-change="handleSelectionChange" :data="roles.slice((pageNum-1)*pageSize,pageNum*pageSize)">
-      <el-table-column label="序号" type="index" align="center">
+      <el-table-column :label="$t('common.serialNo')" type="index" align="center">
         <template slot-scope="scope">
           <span>{{(pageNum - 1) * pageSize + scope.$index + 1}}</span>
         </template>
       </el-table-column>
       <el-table-column type="selection" :reserve-selection="true" width="55"></el-table-column>
-      <el-table-column label="角色编号" align="center" prop="roleId" />
-      <el-table-column label="角色名称" align="center" prop="roleName" />
-      <el-table-column label="权限字符" align="center" prop="roleKey" />
-      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+      <el-table-column :label="$t('system.role.roleId')" align="center" prop="roleId" />
+      <el-table-column :label="$t('system.role.roleName')" align="center" prop="roleName" />
+      <el-table-column :label="$t('system.role.roleKey')" align="center" prop="roleKey" />
+      <el-table-column :label="$t('common.createTime')" align="center" prop="createTime" width="180">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.createTime) }}</span>
         </template>
@@ -38,8 +38,8 @@
 
     <el-form label-width="100px">
       <el-form-item style="text-align: center;margin-left:-120px;margin-top:30px;">
-        <el-button v-no-more-click type="primary" @click="submitForm()">提交</el-button>
-        <el-button v-no-more-click @click="close()">返回</el-button>
+        <el-button v-no-more-click type="primary" @click="submitForm()">{{ $t('common.submit') }}</el-button>
+        <el-button v-no-more-click @click="close()">{{ $t('common.back') }}</el-button>
       </el-form-item>
     </el-form>
   </div>
@@ -103,7 +103,7 @@ export default {
       const userId = this.form.userId;
       const roleIds = this.roleIds.join(",");
       updateAuthRole({ userId: userId, roleIds: roleIds }).then((response) => {
-        this.$modal.msgSuccess("授权成功");
+        this.$modal.msgSuccess(this.$t('system.user.authRole.authSuccess'));
         this.close();
       });
     },

+ 96 - 96
src/views/system/user/index.vue

@@ -35,50 +35,50 @@
           v-show="showSearch"
           label-width="68px"
         >
-          <el-form-item label="人员编号" prop="userId">
+          <el-form-item :label="$t('system.user.userNo')" prop="userId">
             <el-input
               v-model="queryParams.userId"
-              placeholder="请输入人员编号"
+              :placeholder="$t('system.user.userNoPlaceholder')"
               clearable
               style="width: 240px"
               oninput="value=value.replace(/[^\d.]/g,'')"
               @keyup.enter.native="handleQuery"
             />
           </el-form-item>
-          <el-form-item label="姓名" prop="nickName">
+          <el-form-item :label="$t('system.user.name')" prop="nickName">
             <el-input
               v-model="queryParams.nickName"
-              placeholder="请输入姓名"
+              :placeholder="$t('system.user.namePlaceholder')"
               clearable
               style="width: 240px"
               @keyup.enter.native="handleQuery"
             />
           </el-form-item>
-          <el-form-item label="手机号码" prop="phonenumber" label-width="100px">
+          <el-form-item :label="$t('system.user.phone')" prop="phonenumber" label-width="100px">
             <el-input
               v-model="queryParams.phonenumber"
-              placeholder="请输入手机号码"
+              :placeholder="$t('system.user.phonePlaceholder')"
               clearable
               style="width: 240px"
               @keyup.enter.native="handleQuery"
             />
           </el-form-item>
-          <el-form-item label="单位" prop="unitId">
+          <el-form-item :label="$t('system.user.unit')" prop="unitId">
             <treeselect
               style="width: 240px"
               v-model="queryParams.unitId"
               :options="UnitOptions"
               :normalizer="Unitnormalizer"
               :show-count="true"
-              placeholder="请选择单位"
+              :placeholder="$t('system.user.unitPlaceholder')"
             />
           </el-form-item>
-          <el-form-item label="角色" prop="roleId">
+          <el-form-item :label="$t('system.user.role')" prop="roleId">
             <el-select
               style="width: 240px"
               v-model="queryParams.roleId"
               clearable
-              placeholder="请选择角色"
+              :placeholder="$t('system.user.rolePlaceholder')"
             >
               <el-option
                 v-for="item in roleOptions"
@@ -89,20 +89,20 @@
             </el-select>
           </el-form-item>
           <!--          这里查询的是玛氏岗位-->
-          <el-form-item label="岗位" prop="workstationId">
+          <el-form-item :label="$t('system.user.post')" prop="workstationId">
             <treeselect
               style="width: 240px"
               v-model="queryParams.workstationId"
               :options="marsOptions"
               :normalizer="Marsnormalizer"
-              placeholder="选择岗位"
+              :placeholder="$t('system.user.postPlaceholder')"
               @change="handleWorkstationChange"
             />
           </el-form-item>
-          <el-form-item label="状态" prop="status">
+          <el-form-item :label="$t('common.status')" prop="status">
             <el-select
               v-model="queryParams.status"
-              placeholder="用户状态"
+              :placeholder="$t('system.user.userStatus')"
               clearable
               style="width: 240px"
             >
@@ -132,14 +132,14 @@
               icon="el-icon-search"
               size="mini"
               @click="handleQuery"
-              >搜索</el-button
+              >{{ $t('common.search') }}</el-button
             >
             <el-button
               v-no-more-click
               icon="el-icon-refresh"
               size="mini"
               @click="resetQuery"
-              >重置</el-button
+              >{{ $t('common.reset') }}</el-button
             >
           </el-form-item>
         </el-form>
@@ -154,7 +154,7 @@
               size="mini"
               @click="handleAdd"
               v-hasPermi="['system:user:add']"
-              >新增</el-button
+              >{{ $t('common.add') }}</el-button
             >
           </el-col>
           <el-col :span="1.5">
@@ -167,7 +167,7 @@
               :disabled="single"
               @click="handleUpdate"
               v-hasPermi="['system:user:edit']"
-              >修改</el-button
+              >{{ $t('common.edit') }}</el-button
             >
           </el-col>
           <el-col :span="1.5">
@@ -180,7 +180,7 @@
               :disabled="multiple"
               @click="handleDelete"
               v-hasPermi="['system:user:remove']"
-              >删除</el-button
+              >{{ $t('common.delete') }}</el-button
             >
           </el-col>
           <el-col :span="1.5">
@@ -192,7 +192,7 @@
               size="mini"
               @click="handleImport"
               v-hasPermi="['system:user:import']"
-              >导入</el-button
+              >{{ $t('common.import') }}</el-button
             >
           </el-col>
           <el-col :span="1.5">
@@ -204,7 +204,7 @@
               size="mini"
               @click="handleExport"
               v-hasPermi="['system:user:export']"
-              >导出</el-button
+              >{{ $t('common.export') }}</el-button
             >
           </el-col>
           <right-toolbar
@@ -221,14 +221,14 @@
         >
           <el-table-column type="selection" width="50" align="center" />
           <el-table-column
-            label="人员编号"
+            :label="$t('system.user.userNo')"
             align="center"
             key="userId"
             prop="userId"
             v-if="columns[0].visible"
           />
           <el-table-column
-            label="姓名"
+            :label="$t('system.user.name')"
             align="center"
             key="nickName"
             prop="nickName"
@@ -236,7 +236,7 @@
             :show-overflow-tooltip="true"
           />
           <el-table-column
-            label="手机号码"
+            :label="$t('system.user.phone')"
             align="center"
             key="phonenumber"
             prop="phonenumber"
@@ -244,7 +244,7 @@
             width="120"
           />
           <el-table-column
-            label="工号"
+            :label="$t('system.user.employeeNo')"
             align="center"
             key="userName"
             prop="userName"
@@ -252,7 +252,7 @@
             :show-overflow-tooltip="true"
           />
           <el-table-column
-            label="单位"
+            :label="$t('system.user.unit')"
             align="center"
             key="unitName"
             prop="unitName"
@@ -260,7 +260,7 @@
             :show-overflow-tooltip="true"
           />
           <el-table-column
-            label="角色"
+            :label="$t('system.user.role')"
             align="center"
             key="roleName"
             prop="roleName"
@@ -268,7 +268,7 @@
             :show-overflow-tooltip="true"
           />
           <el-table-column
-            label="邮件"
+            :label="$t('system.user.email')"
             align="center"
             key="email"
             prop="email"
@@ -276,7 +276,7 @@
             width="180"
           />
           <el-table-column
-            label="岗位"
+            :label="$t('system.user.post')"
             align="center"
             key="workstationName"
             prop="workstationName"
@@ -285,12 +285,12 @@
           >
             <template slot-scope="scope">
               <el-button type="text" @click="HandleLookWorkStation(scope.row)"
-                >查看</el-button
+                >{{ $t('system.user.view') }}</el-button
               >
             </template>
           </el-table-column>
           <el-table-column
-            label="指纹"
+            :label="$t('system.user.fingerprint')"
             align="center"
             prop=""
             v-if="columns[2].visible"
@@ -298,12 +298,12 @@
           >
             <template slot-scope="scope">
               <el-button type="text" @click="HandleLookFaceOrFinger(scope.row,1)"
-              >查看</el-button
+              >{{ $t('system.user.view') }}</el-button
               >
             </template>
           </el-table-column>
           <el-table-column
-            label="人脸"
+            :label="$t('system.user.face')"
             align="center"
             prop=""
             v-if="columns[2].visible"
@@ -311,13 +311,13 @@
           >
             <template slot-scope="scope">
               <el-button type="text" @click="HandleLookFaceOrFinger(scope.row,2)"
-              >查看</el-button
+              >{{ $t('system.user.view') }}</el-button
               >
             </template>
           </el-table-column>
           <!--  <el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" />-->
           <el-table-column
-            label="状态"
+            :label="$t('common.status')"
             align="center"
             key="status"
             v-if="columns[5].visible"
@@ -337,7 +337,7 @@
           <!--            </template>-->
           <!--          </el-table-column>-->
           <el-table-column
-            label="操作"
+            :label="$t('common.operation')"
             align="center"
             width="160"
             class-name="small-padding fixed-width"
@@ -350,7 +350,7 @@
                 icon="el-icon-edit"
                 @click="handleUpdate(scope.row)"
                 v-hasPermi="['system:user:edit']"
-                >修改</el-button
+                >{{ $t('common.edit') }}</el-button
               >
               <el-button
                 v-no-more-click
@@ -359,7 +359,7 @@
                 icon="el-icon-delete"
                 @click="handleDelete(scope.row)"
                 v-hasPermi="['system:user:remove']"
-                >删除</el-button
+                >{{ $t('common.delete') }}</el-button
               >
               <el-dropdown
                 size="mini"
@@ -367,26 +367,26 @@
                 v-hasPermi="['system:user:resetPwd','system:user:resetPwd', 'system:user:edit']"
               >
                 <span class="el-dropdown-link">
-                  <i class="el-icon-d-arrow-right el-icon--right"></i>更多
+                  <i class="el-icon-d-arrow-right el-icon--right"></i>{{ $t('system.user.more') }}
                 </span>
                 <el-dropdown-menu slot="dropdown">
                   <el-dropdown-item
                     command="handleResetPwd"
                     icon="el-icon-key"
                     v-hasPermi="['system:user:resetPwd']"
-                    >重置密码</el-dropdown-item
+                    >{{ $t('system.user.resetPassword') }}</el-dropdown-item
                   >
                   <el-dropdown-item
                     command="handleResetKey"
                     icon="el-icon-key"
                     v-hasPermi="['system:user:resetPwd']"
-                  >重置钥匙</el-dropdown-item
+                  >{{ $t('system.user.resetKey') }}</el-dropdown-item
                   >
                   <el-dropdown-item
                     command="handleAuthRole"
                     icon="el-icon-circle-check"
                     v-hasPermi="['system:user:edit']"
-                    >分配角色</el-dropdown-item
+                    >{{ $t('system.user.assignRole') }}</el-dropdown-item
                   >
                 </el-dropdown-menu>
               </el-dropdown>
@@ -409,19 +409,19 @@
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-row>
           <el-col :span="12">
-            <el-form-item label="姓名" prop="nickName">
+            <el-form-item :label="$t('system.user.name')" prop="nickName">
               <el-input
                 v-model="form.nickName"
-                placeholder="请输入姓名"
+                :placeholder="$t('system.user.namePlaceholder2')"
                 maxlength="30"
               />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="手机号码" prop="phonenumber">
+            <el-form-item :label="$t('system.user.phone')" prop="phonenumber">
               <el-input
                 v-model="form.phonenumber"
-                placeholder="请输入手机号码"
+                :placeholder="$t('system.user.phonePlaceholder2')"
                 maxlength="11"
               />
             </el-form-item>
@@ -429,35 +429,35 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="工号" prop="userName">
+            <el-form-item :label="$t('system.user.employeeNo')" prop="userName">
               <el-input
                 :disabled="form.userId !== undefined"
                 v-model="form.userName"
-                placeholder="请输入工号"
+                :placeholder="$t('system.user.employeeNoPlaceholder')"
                 maxlength="30"
               />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="单位" prop="unitIds">
+            <el-form-item :label="$t('system.user.unit')" prop="unitIds">
               <treeselect
                  class="treeselect"
                 v-model="form.unitIds"
                 :options="UnitOptions"
                 :normalizer="Unitnormalizer"
                 :show-count="true"
-                placeholder="请选择单位"
+                :placeholder="$t('system.user.unitPlaceholder2')"
               />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="角色" prop="roleIds">
+            <el-form-item :label="$t('system.user.role')" prop="roleIds">
               <el-select
                 v-model="form.roleIds"
                 multiple
-                placeholder="请选择角色"
+                :placeholder="$t('system.user.rolePlaceholder2')"
               >
                 <el-option
                   v-for="item in roleOptions"
@@ -470,10 +470,10 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="邮件" prop="email">
+            <el-form-item :label="$t('system.user.email')" prop="email">
               <el-input
                 v-model="form.email"
-                placeholder="请输入邮件"
+                :placeholder="$t('system.user.emailPlaceholder')"
                 maxlength="50"
               />
             </el-form-item>
@@ -482,7 +482,7 @@
         <el-row>
           <el-col :span="12">
             <!--            玛氏岗位-->
-            <el-form-item label="岗位" prop="workstationIds">
+            <el-form-item :label="$t('system.user.marsPost')" prop="workstationIds">
               <!--              <el-select v-model="form.workstationIds" clearable multiple placeholder="请选择岗位">-->
               <!--                <el-option-->
               <!--                  v-for="item in MarsWordStationOptions"-->
@@ -494,7 +494,7 @@
               <el-select
                 size="small"
                 v-model="form.workstationIds"
-                placeholder="请选择岗位"
+                :placeholder="$t('system.user.postPlaceholder2')"
                 :popper-append-to-body="false"
                 multiple
                 clearable
@@ -505,7 +505,7 @@
                   <el-input
                     class="setinput"
                     size="mini"
-                    placeholder="输入关键字进行过滤"
+                    :placeholder="$t('system.user.filterKeyword')"
                     clearable
                     v-model="filterText"
                   ></el-input>
@@ -525,7 +525,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="状态">
+            <el-form-item :label="$t('common.status')">
               <el-radio-group v-model="form.status">
                 <el-radio
                   v-for="dict in dict.type.sys_normal_disable"
@@ -539,8 +539,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="用户性别">
-              <el-select v-model="form.sex" placeholder="请选择性别">
+            <el-form-item :label="$t('system.user.gender')">
+              <el-select v-model="form.sex" :placeholder="$t('system.user.genderPlaceholder')">
                 <el-option
                   v-for="dict in dict.type.sys_user_sex"
                   :key="dict.value"
@@ -553,12 +553,12 @@
           <el-col :span="12">
             <el-form-item
               v-if="form.userId == undefined"
-              label="用户密码"
+              :label="$t('system.user.userPassword')"
               prop="password"
             >
               <el-input
                 v-model="form.password"
-                placeholder="请输入用户密码"
+                :placeholder="$t('system.user.userPasswordPlaceholder')"
                 type="password"
                 maxlength="20"
                 show-password
@@ -580,12 +580,12 @@
           <el-col :span="12">
             <el-form-item
               v-if="form.userId == undefined"
-              label="钥匙密码"
+              :label="$t('system.user.keyPassword')"
               prop="keyCode"
             >
               <el-input
                 v-model="form.keyCode"
-                placeholder="请输入钥匙密码"
+                :placeholder="$t('system.user.keyPasswordPlaceholder')"
                 type="password"
                 maxlength="6"
                 oninput="value=value.replace(/[^\d.]/g,'')"
@@ -596,11 +596,11 @@
         </el-row>
         <el-row>
           <el-col :span="24">
-            <el-form-item label="备注">
+            <el-form-item :label="$t('common.remark')">
               <el-input
                 v-model="form.remark"
                 type="textarea"
-                placeholder="请输入内容"
+                :placeholder="$t('system.user.remarkPlaceholder')"
               ></el-input>
             </el-form-item>
           </el-col>
@@ -608,9 +608,9 @@
       </el-form>
       <div slot="footer" class="dialog-footer footerDialog">
         <el-button class="addpersonBtn" v-no-more-click type="primary" @click="submitForm"
-          >确 定</el-button
+          >{{ $t('common.confirm') }}</el-button
         >
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
+        <el-button v-no-more-click @click="cancel">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
 
@@ -634,27 +634,27 @@
         drag
       >
         <i class="el-icon-upload"></i>
-        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <div class="el-upload__text">{{ $t('system.user.uploadTip') }}</div>
         <div class="el-upload__tip text-center" slot="tip">
           <!--          <div class="el-upload__tip" slot="tip">-->
           <!--            <el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的用户数据-->
           <!--          </div>-->
-          <span>仅允许导入xls、xlsx格式文件。</span>
+          <span>{{ $t('system.user.fileFormat') }}</span>
           <el-link
             type="primary"
             :underline="false"
             style="font-size: 12px; vertical-align: baseline"
             @click="importTemplate"
-            >下载模板</el-link
+            >{{ $t('system.user.downloadTemplate') }}</el-link
           >
         </div>
       </el-upload>
       <div slot="footer" class="dialog-footer">
         <el-button v-no-more-click type="primary" @click="submitFileForm"
-          >确 定</el-button
+          >{{ $t('common.confirm') }}</el-button
         >
         <el-button v-no-more-click @click="upload.open = false"
-          >取 消</el-button
+          >{{ $t('common.cancel') }}</el-button
         >
       </div>
     </el-dialog>
@@ -669,13 +669,13 @@
         :disabled="multiple"
         @click="handleDeleteFaceOrFinger"
         v-hasPermi="['system:user:remove']"
-      >删除</el-button
+      >{{ $t('common.delete') }}</el-button
       >
       <el-table :data="FaceOrFingerTableData" height="600" @selection-change="handleSelectionChange2">
         <el-table-column type="selection" width="50" align="center"></el-table-column>
-        <el-table-column label="序号"  width="100" type="index" :index='(index)=>{return (index+1) + (this.current-1)*this.size}'> </el-table-column>
-        <el-table-column label="分组"  width="100"  prop="groupCode"></el-table-column>
-        <el-table-column :label="this.title2=='人员指纹数据'?'指纹':'人脸'" align="center"  prop="imageUrl">
+        <el-table-column :label="$t('system.user.serialNo')"  width="100" type="index" :index='(index)=>{return (index+1) + (this.current-1)*this.size}'> </el-table-column>
+        <el-table-column :label="$t('system.user.group')"  width="100"  prop="groupCode"></el-table-column>
+        <el-table-column :label="this.title2==this.$t('system.user.fingerprintData')?this.$t('system.user.fingerprint'):this.$t('system.user.face')" align="center"  prop="imageUrl">
           <template slot-scope="scope">
             <div  class="img-box" >
               <el-image
@@ -694,7 +694,7 @@
           </template>
         </el-table-column>
         <el-table-column
-          label="操作"
+          :label="$t('common.operation')"
           align="center"
           width="160"
           class-name="small-padding fixed-width"
@@ -706,7 +706,7 @@
               type="text"
               icon="el-icon-delete"
               @click="handleDeleteFaceOrFinger(scope.row)"
-            >删除</el-button
+            >{{ $t('common.delete') }}</el-button
             >
           </template>
         </el-table-column>
@@ -961,9 +961,9 @@ export default {
     HandleLookFaceOrFinger(row,type){
       this.open2 = true;
       if(type=='1'){
-        this.title2='人员指纹数据'
+        this.title2=this.$t('system.user.fingerprintData')
       }else if(type=='2'){
-        this.title2='人员面部数据'
+        this.title2=this.$t('system.user.faceData')
       }
       this.userId=row.userId;
       this.type=type;
@@ -1267,30 +1267,30 @@ export default {
     /** 重置密码按钮操作 */
     handleResetPwd(row) {
       this.$prompt('请输入"' + row.userName + '"的新密码', "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
+        confirmButtonText: this.$t('common.confirm'),
+        cancelButtonText: this.$t('common.cancel'),
         closeOnClickModal: false,
         inputPattern: /^.{5,20}$/,
-        inputErrorMessage: "用户密码长度必须介于 5 和 20 之间",
+        inputErrorMessage: this.$t('register.passwordLength'),
       })
         .then(({ value }) => {
           resetUserPwd(row.userId, value).then((response) => {
-            this.$modal.msgSuccess("修改成功,新密码是:" + value);
+            this.$modal.msgSuccess(this.$t('system.user.editSuccess') + ",新密码是:" + value);
           });
         })
         .catch(() => {});
     },
     handleResetKey(row) {
-      this.$prompt('请输入"' + row.userName + '"的新钥匙密码', "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
+      this.$prompt('请输入"' + row.userName + '"的新钥匙密码', this.$t('navbar.tip'), {
+        confirmButtonText: this.$t('common.confirm'),
+        cancelButtonText: this.$t('common.cancel'),
         closeOnClickModal: false,
         inputPattern: /^.{0,6}$/,
-        inputErrorMessage: "钥匙密码长度必须等于6位",
+        inputErrorMessage: this.$t('system.user.keyPasswordLength'),
       })
         .then(({ value }) => {
           resetUserKey(row.userId, value).then((response) => {
-            this.$modal.msgSuccess("修改成功,新密码是:" + value);
+            this.$modal.msgSuccess(this.$t('system.user.editSuccess') + ",新密码是:" + value);
           });
         })
         .catch(() => {});
@@ -1332,7 +1332,7 @@ export default {
               workstationIds: this.selectTreeArrIds,
             };
             updateUser(data).then((response) => {
-              this.$modal.msgSuccess("修改成功");
+              this.$modal.msgSuccess(this.$t('system.user.editSuccess'));
               this.open = false;
               this.getList();
             });
@@ -1346,7 +1346,7 @@ export default {
               workstationIds: this.selectTreeArrIds,
             };
             addUser(data).then((response) => {
-              this.$modal.msgSuccess("新增成功");
+              this.$modal.msgSuccess(this.$t('system.user.addSuccess'));
               this.open = false;
               this.getList();
             });
@@ -1359,13 +1359,13 @@ export default {
     handleDelete(row) {
       const userIds = row.userId || this.ids;
       this.$modal
-        .confirm("是否确认删除所选数据项?")
+        .confirm(this.$t('common.deleteConfirm'))
         .then(function () {
           return delUser(userIds);
         })
         .then(() => {
           this.getList();
-          this.$modal.msgSuccess("删除成功");
+          this.$modal.msgSuccess(this.$t('system.user.deleteSuccess'));
         })
         .catch(() => {});
     },
@@ -1373,13 +1373,13 @@ export default {
     handleDeleteFaceOrFinger(row) {
       const userIds = row.recordId || this.ids;
       this.$modal
-        .confirm("是否确认删除所选数据项?")
+        .confirm(this.$t('common.deleteConfirm'))
         .then(function () {
           return deleteSysUserCharacteristicByRecordIds(userIds);
         })
         .then(() => {
           this.getFaceOrFingerList();
-          this.$modal.msgSuccess("删除成功");
+          this.$modal.msgSuccess(this.$t('system.user.deleteSuccess'));
         })
         .catch(() => {});
     },

+ 14 - 14
src/views/system/user/profile/ResetPwd.vue

@@ -1,17 +1,17 @@
 <template>
   <el-form ref="form" :model="user" :rules="rules" label-width="80px">
-    <el-form-item label="旧密码" prop="oldPassword">
-      <el-input v-model="user.oldPassword" placeholder="请输入旧密码" type="password" show-password/>
+    <el-form-item :label="$t('system.user.oldPassword')" prop="oldPassword">
+      <el-input v-model="user.oldPassword" :placeholder="$t('system.user.oldPasswordPlaceholder')" type="password" show-password/>
     </el-form-item>
-    <el-form-item label="新密码" prop="newPassword">
-      <el-input v-model="user.newPassword" placeholder="请输入新密码" type="password" show-password/>
+    <el-form-item :label="$t('system.user.newPassword')" prop="newPassword">
+      <el-input v-model="user.newPassword" :placeholder="$t('system.user.newPasswordPlaceholder')" type="password" show-password/>
     </el-form-item>
-    <el-form-item label="确认密码" prop="confirmPassword">
-      <el-input v-model="user.confirmPassword" placeholder="请确认密码" type="password" show-password/>
+    <el-form-item :label="$t('system.user.confirmPassword')" prop="confirmPassword">
+      <el-input v-model="user.confirmPassword" :placeholder="$t('system.user.confirmPasswordPlaceholder')" type="password" show-password/>
     </el-form-item>
     <el-form-item>
-      <el-button v-no-more-click type="primary" size="mini" @click="submit">保存</el-button>
-      <el-button v-no-more-click type="danger" size="mini" @click="close">关闭</el-button>
+      <el-button v-no-more-click type="primary" size="mini" @click="submit">{{ $t('common.save') }}</el-button>
+      <el-button v-no-more-click type="danger" size="mini" @click="close">{{ $t('common.close') }}</el-button>
     </el-form-item>
   </el-form>
 </template>
@@ -23,7 +23,7 @@ export default {
   data() {
     const equalToPassword = (rule, value, callback) => {
       if (this.user.newPassword !== value) {
-        callback(new Error("两次输入的密码不一致"));
+        callback(new Error(this.$t('system.user.passwordMismatch')));
       } else {
         callback();
       }
@@ -37,14 +37,14 @@ export default {
       // 表单校验
       rules: {
         oldPassword: [
-          { required: true, message: "旧密码不能为空", trigger: "blur" }
+          { required: true, message: this.$t('system.user.oldPasswordRequired'), trigger: "blur" }
         ],
         newPassword: [
-          { required: true, message: "新密码不能为空", trigger: "blur" },
-          { min: 6, max: 20, message: "长度在 6 到 20 个字符", trigger: "blur" }
+          { required: true, message: this.$t('system.user.newPasswordRequired'), trigger: "blur" },
+          { min: 6, max: 20, message: this.$t('system.user.passwordLength'), trigger: "blur" }
         ],
         confirmPassword: [
-          { required: true, message: "确认密码不能为空", trigger: "blur" },
+          { required: true, message: this.$t('system.user.confirmPasswordRequired'), trigger: "blur" },
           { required: true, validator: equalToPassword, trigger: "blur" }
         ]
       }
@@ -55,7 +55,7 @@ export default {
       this.$refs["form"].validate(valid => {
         if (valid) {
           updateUserPwd(this.user.oldPassword, this.user.newPassword).then(response => {
-            this.$modal.msgSuccess("修改成功");
+            this.$modal.msgSuccess(this.$t('system.user.resetPasswordSuccess'));
           });
         }
       });

+ 7 - 7
src/views/system/user/profile/UserAvatar.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
-    <div class="user-info-head" @click="editCropper()"><img v-bind:src="options.img" title="点击上传头像" class="img-circle img-lg" /></div>
-    <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body @opened="modalOpened"  @close="closeDialog">
+    <div class="user-info-head" @click="editCropper()"><img v-bind:src="options.img" :title="$t('system.user.profile.clickToUploadAvatar')" class="img-circle img-lg" /></div>
+    <el-dialog :title="$t('system.user.profile.editAvatar')" :visible.sync="open" width="800px" append-to-body @opened="modalOpened"  @close="closeDialog">
       <el-row>
         <el-col :xs="24" :md="12" :style="{height: '350px'}">
           <vue-cropper
@@ -27,7 +27,7 @@
         <el-col :lg="2" :md="2">
           <el-upload action="#" :http-request="requestUpload" :show-file-list="false" :before-upload="beforeUpload">
             <el-button v-no-more-click size="small">
-              选择
+              {{ $t('common.select') }}
               <i class="el-icon-upload el-icon--right"></i>
             </el-button>
           </el-upload>
@@ -45,7 +45,7 @@
           <el-button v-no-more-click icon="el-icon-refresh-right" size="small" @click="rotateRight()"></el-button>
         </el-col>
         <el-col :lg="{span: 2, offset: 6}" :md="2">
-          <el-button v-no-more-click type="primary" size="small" @click="uploadImg()">提 交</el-button>
+          <el-button v-no-more-click type="primary" size="small" @click="uploadImg()">{{ $t('common.submit') }}</el-button>
         </el-col>
       </el-row>
     </el-dialog>
@@ -71,7 +71,7 @@ export default {
       // 是否显示cropper
       visible: false,
       // 弹出层标题
-      title: "修改头像",
+      title: "",
       options: {
         img: store.getters.avatar, //裁剪图片的地址
         autoCrop: true, // 是否默认生成截图框
@@ -110,7 +110,7 @@ export default {
     // 上传预处理
     beforeUpload(file) {
       if (file.type.indexOf("image/") == -1) {
-        this.$modal.msgError("文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。");
+        this.$modal.msgError(this.$t('system.user.profile.fileFormatError'));
       } else {
         const reader = new FileReader();
         reader.readAsDataURL(file);
@@ -128,7 +128,7 @@ export default {
           this.open = false;
           this.options.img = process.env.VUE_APP_BASE_API + response.imgUrl;
           store.commit('SET_AVATAR', this.options.img);
-          this.$modal.msgSuccess("修改成功");
+          this.$modal.msgSuccess(this.$t('system.user.editSuccess'));
           this.visible = false;
         });
       });

+ 14 - 14
src/views/system/user/profile/UserInfo.vue

@@ -1,23 +1,23 @@
 <template>
   <el-form ref="form" :model="user" :rules="rules" label-width="80px">
-    <el-form-item label="用户昵称" prop="nickName">
+    <el-form-item :label="$t('system.user.nickName')" prop="nickName">
       <el-input v-model="user.nickName" maxlength="30" />
     </el-form-item> 
-    <el-form-item label="手机号码" prop="phonenumber">
+    <el-form-item :label="$t('system.user.phone')" prop="phonenumber">
       <el-input v-model="user.phonenumber" maxlength="11" />
     </el-form-item>
-    <el-form-item label="邮箱" prop="email">
+    <el-form-item :label="$t('system.user.email')" prop="email">
       <el-input v-model="user.email" maxlength="50" />
     </el-form-item>
-    <el-form-item label="性别">
+    <el-form-item :label="$t('system.user.gender')">
       <el-radio-group v-model="user.sex">
-        <el-radio label="0"></el-radio>
-        <el-radio label="1"></el-radio>
+        <el-radio label="0">{{ $t('system.user.male') }}</el-radio>
+        <el-radio label="1">{{ $t('system.user.female') }}</el-radio>
       </el-radio-group>
     </el-form-item>
     <el-form-item>
-      <el-button v-no-more-click type="primary" size="mini" @click="submit">保存</el-button>
-      <el-button v-no-more-click type="danger" size="mini" @click="close">关闭</el-button>
+      <el-button v-no-more-click type="primary" size="mini" @click="submit">{{ $t('common.save') }}</el-button>
+      <el-button v-no-more-click type="danger" size="mini" @click="close">{{ $t('common.close') }}</el-button>
     </el-form-item>
   </el-form>
 </template>
@@ -36,21 +36,21 @@ export default {
       // 表单校验
       rules: {
         nickName: [
-          { required: true, message: "用户昵称不能为空", trigger: "blur" }
+          { required: true, message: this.$t('system.user.nickNameRequired'), trigger: "blur" }
         ],
         email: [
-          { required: true, message: "邮箱地址不能为空", trigger: "blur" },
+          { required: true, message: this.$t('system.user.emailRequired'), trigger: "blur" },
           {
             type: "email",
-            message: "请输入正确的邮箱地址",
+            message: this.$t('system.user.emailFormat'),
             trigger: ["blur", "change"]
           }
         ],
         phonenumber: [
-          { required: true, message: "手机号码不能为空", trigger: "blur" },
+          { required: true, message: this.$t('system.user.phoneRequired'), trigger: "blur" },
           {
             pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
-            message: "请输入正确的手机号码",
+            message: this.$t('system.user.phoneFormat'),
             trigger: "blur"
           }
         ]
@@ -62,7 +62,7 @@ export default {
       this.$refs["form"].validate(valid => {
         if (valid) {
           updateUserProfile(this.user).then(response => {
-            this.$modal.msgSuccess("修改成功");
+            this.$modal.msgSuccess(this.$t('system.user.editSuccess'));
           });
         }
       });

+ 10 - 10
src/views/system/user/profile/index.vue

@@ -4,7 +4,7 @@
       <el-col :span="6" :xs="24">
         <el-card class="box-card">
           <div slot="header" class="clearfix">
-            <span>个人信息</span>
+            <span>{{ $t('system.user.profile.personalInfo') }}</span>
           </div>
           <div>
             <div class="text-center">
@@ -12,27 +12,27 @@
             </div>
             <ul class="list-group list-group-striped">
               <li class="list-group-item">
-                <svg-icon icon-class="user" />用户名称
+                <svg-icon icon-class="user" />{{ $t('system.user.userName') }}
                 <div class="pull-right">{{ user.userName }}</div>
               </li>
               <li class="list-group-item">
-                <svg-icon icon-class="phone" />手机号码
+                <svg-icon icon-class="phone" />{{ $t('system.user.phone') }}
                 <div class="pull-right">{{ user.phonenumber }}</div>
               </li>
               <li class="list-group-item">
-                <svg-icon icon-class="email" />用户邮箱
+                <svg-icon icon-class="email" />{{ $t('system.user.email') }}
                 <div class="pull-right">{{ user.email }}</div>
               </li>
               <li class="list-group-item">
-                <svg-icon icon-class="tree" />所属部门
+                <svg-icon icon-class="tree" />{{ $t('system.user.profile.dept') }}
                 <div class="pull-right" v-if="user.dept">{{ user.dept.deptName }} / {{ postGroup }}</div>
               </li>
               <li class="list-group-item">
-                <svg-icon icon-class="peoples" />所属角色
+                <svg-icon icon-class="peoples" />{{ $t('system.user.profile.role') }}
                 <div class="pull-right">{{ roleGroup }}</div>
               </li>
               <li class="list-group-item">
-                <svg-icon icon-class="date" />创建日期
+                <svg-icon icon-class="date" />{{ $t('common.createTime') }}
                 <div class="pull-right">{{ user.createTime }}</div>
               </li>
             </ul>
@@ -42,13 +42,13 @@
       <el-col :span="18" :xs="24">
         <el-card>
           <div slot="header" class="clearfix">
-            <span>基本资料</span>
+            <span>{{ $t('system.user.profile.basicInfo') }}</span>
           </div>
           <el-tabs v-model="activeTab">
-            <el-tab-pane label="基本资料" name="userinfo">
+            <el-tab-pane :label="$t('system.user.profile.basicInfo')" name="userinfo">
               <userInfo :user="user" />
             </el-tab-pane>
-            <el-tab-pane label="修改密码" name="resetPwd">
+            <el-tab-pane :label="$t('system.user.profile.resetPassword')" name="resetPwd">
               <resetPwd :user="user" />
             </el-tab-pane>
           </el-tabs>

+ 1 - 1
vue.config.js

@@ -36,7 +36,7 @@ module.exports = {
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
         // http://36.133.174.236:9090  http://192.168.0.10:9190 http://192.168.31.110:9090(动感光波) 192.168.28.97:9090(车总GRKJ) 120.27.232.27:9190(东上阿里云)
-        target: `http://192.168.0.10:9190`,
+        target: `http://120.27.232.27:9190`,
         changeOrigin: true,
         pathRewrite: {
           ['^' + process.env.VUE_APP_BASE_API]: ''