Quellcode durchsuchen

Merge branch 'test_i18n' of shuzhihua/pms-iot-vue into demo

yanghao vor 2 Tagen
Ursprung
Commit
9e14ca6241
100 geänderte Dateien mit 18541 neuen und 2960 gelöschten Zeilen
  1. 3 5
      src/components/DiyEditor/components/mobile/FloatingActionButton/index.vue
  2. 9491 927
      src/locales/en.ts
  3. 1 1
      src/locales/ru.ts
  4. 7003 20
      src/locales/zh-CN.ts
  5. 13 24
      src/views/erp/product/category/index.vue
  6. 12 22
      src/views/infra/demo/demo02/index.vue
  7. 30 54
      src/views/oli-connection/monitoring/index.vue
  8. 6 6
      src/views/pms/app/IotAppForm.vue
  9. 11 12
      src/views/pms/app/index.vue
  10. 17 17
      src/views/pms/bom/BomForm.vue
  11. 6 4
      src/views/pms/bom/DeviceCategoryTree.vue
  12. 1 1
      src/views/pms/bom/MaterialList.vue
  13. 7 9
      src/views/pms/bom/MaterialListDrawer.vue
  14. 44 31
      src/views/pms/bom/index.vue
  15. 8 5
      src/views/pms/constructionDailyReport/components/ConstructionDailyReportDrawer.vue
  16. 3 1
      src/views/pms/constructionDailyReport/components/ConstructionDailyReportFormSection.vue
  17. 16 3
      src/views/pms/constructionDailyReport/components/ConstructionDailyReportTable.vue
  18. 24 17
      src/views/pms/constructionDailyReport/index.vue
  19. 16 14
      src/views/pms/device/BrandList.vue
  20. 33 38
      src/views/pms/device/CheckCertificate.vue
  21. 18 18
      src/views/pms/device/CustomerList.vue
  22. 6 4
      src/views/pms/device/DeptTree2.vue
  23. 10 8
      src/views/pms/device/DeviceAllotRecord.vue
  24. 15 17
      src/views/pms/device/DeviceAssociationRecord.vue
  25. 7 5
      src/views/pms/device/DeviceBasicInfo.vue
  26. 41 34
      src/views/pms/device/DeviceBomLibrary.vue
  27. 39 41
      src/views/pms/device/DeviceFailureRecord.vue
  28. 17 23
      src/views/pms/device/DeviceFileLibrary.vue
  29. 6 6
      src/views/pms/device/DeviceInfo1.vue
  30. 24 28
      src/views/pms/device/DeviceInspectRecord.vue
  31. 42 44
      src/views/pms/device/DeviceMaintainRecord.vue
  32. 23 27
      src/views/pms/device/DeviceMaintenanceRecord.vue
  33. 15 19
      src/views/pms/device/DeviceOperationRecord.vue
  34. 10 8
      src/views/pms/device/DevicePersonRecord.vue
  35. 10 8
      src/views/pms/device/DeviceStatusRecord.vue
  36. 12 12
      src/views/pms/device/FileTree.vue
  37. 59 71
      src/views/pms/device/IotDeviceForm.vue
  38. 34 46
      src/views/pms/device/IotDeviceForm1.vue
  39. 34 38
      src/views/pms/device/IotDeviceFormAdd.vue
  40. 2 2
      src/views/pms/device/MaterialListDrawerDevice.vue
  41. 12 10
      src/views/pms/device/ModelList.vue
  42. 4 6
      src/views/pms/device/allotlog/ConfigDeviceAllot.vue
  43. 8 12
      src/views/pms/device/allotlog/DeviceAllot.vue
  44. 1 1
      src/views/pms/device/allotlog/DeviceAllotLogDrawer.vue
  45. 10 10
      src/views/pms/device/bom/BomInfo.vue
  46. 42 52
      src/views/pms/device/bom/BomList.vue
  47. 12 12
      src/views/pms/device/bom/BomTree.vue
  48. 34 32
      src/views/pms/device/completeKanban/index.vue
  49. 8 8
      src/views/pms/device/completeSet/AssociationDevices.vue
  50. 46 31
      src/views/pms/device/completeSet/DeviceCompleteSet.vue
  51. 1 1
      src/views/pms/device/components/dashboard/DeviceClassifyTopCard.vue
  52. 4 2
      src/views/pms/device/components/dashboard/DeviceStatusCard.vue
  53. 6 6
      src/views/pms/device/components/dashboard/DeviceTotalCard.vue
  54. 18 22
      src/views/pms/device/components/select-list/brand-list.vue
  55. 16 20
      src/views/pms/device/components/select-list/customer-list.vue
  56. 16 20
      src/views/pms/device/components/select-list/model-list.vue
  57. 120 120
      src/views/pms/device/index.vue
  58. 50 54
      src/views/pms/device/maintenance/MaintenanceDetail.vue
  59. 47 32
      src/views/pms/device/monitor/IotAlarmSettingForm.vue
  60. 190 128
      src/views/pms/device/monitor/RangeSet.vue
  61. 261 272
      src/views/pms/device/monitor/RangeSetting.vue
  62. 21 30
      src/views/pms/device/monitor/TdDeviceInfo copy.vue
  63. 22 13
      src/views/pms/device/monitor/TdDeviceInfo.vue
  64. 16 14
      src/views/pms/device/monitor/index.vue
  65. 6 6
      src/views/pms/device/personlog/DevicePerson.vue
  66. 1 1
      src/views/pms/device/personlog/DevicePersonLogDrawer.vue
  67. 6 10
      src/views/pms/device/statuslog/DeviceStatus.vue
  68. 1 1
      src/views/pms/device/statuslog/DeviceStatusLogDrawer.vue
  69. 6 4
      src/views/pms/devicetemplate/DeviceCategoryTree.vue
  70. 34 24
      src/views/pms/devicetemplate/TemplateForm.vue
  71. 4 2
      src/views/pms/devicetemplate/detail/TemplateDetailsHeader.vue
  72. 8 8
      src/views/pms/devicetemplate/detail/attrsModel/AttrTemplateModelForm.vue
  73. 28 25
      src/views/pms/devicetemplate/detail/attrsModel/AttrTemplateModelProperty.vue
  74. 9 15
      src/views/pms/devicetemplate/detail/attrsModel/index.vue
  75. 5 3
      src/views/pms/devicetemplate/detail/dataSpecs/DeviceAttrModelArrayDataSpecs.vue
  76. 5 3
      src/views/pms/devicetemplate/detail/dataSpecs/DeviceAttrModelEnumDataSpecs.vue
  77. 4 2
      src/views/pms/devicetemplate/detail/dataSpecs/DeviceAttrModelNumberDataSpecs.vue
  78. 11 9
      src/views/pms/devicetemplate/detail/dataSpecs/DeviceAttrModelStructDataSpecs.vue
  79. 3 1
      src/views/pms/devicetemplate/detail/index.vue
  80. 73 64
      src/views/pms/devicetemplate/index.vue
  81. 3 3
      src/views/pms/failure/FailureInfo.vue
  82. 9 9
      src/views/pms/failure/IotFailureReportForm.vue
  83. 10 10
      src/views/pms/failure/index.vue
  84. 8 8
      src/views/pms/fiveDailyReportSummary/index.vue
  85. 11 11
      src/views/pms/info/InfoClassifyForm.vue
  86. 28 33
      src/views/pms/info/index.vue
  87. 4 4
      src/views/pms/information/IotInformationDbForm.vue
  88. 5 3
      src/views/pms/information/index.vue
  89. 4 4
      src/views/pms/inspect/item/IotInspectItemForm.vue
  90. 3 3
      src/views/pms/inspect/item/index.vue
  91. 5 7
      src/views/pms/inspect/order/InspectOrderDetail.vue
  92. 14 14
      src/views/pms/inspect/order/IotInspectOrderForm.vue
  93. 7 5
      src/views/pms/inspect/order/OrderComponent.vue
  94. 6 8
      src/views/pms/inspect/order/WriteOrder.vue
  95. 8 8
      src/views/pms/inspect/order/WriteOrdertest.vue
  96. 17 17
      src/views/pms/inspect/order/detail/IotInspectOrderDetailForm.vue
  97. 3 3
      src/views/pms/inspect/order/detail/IotInspectOrderItemStat.vue
  98. 35 41
      src/views/pms/inspect/order/detail/index.vue
  99. 17 9
      src/views/pms/inspect/order/index.vue
  100. 6 4
      src/views/pms/inspect/plan/InspectRouteList.vue

+ 3 - 5
src/components/DiyEditor/components/mobile/FloatingActionButton/index.vue

@@ -6,15 +6,13 @@
         'flex-row': property.direction === 'horizontal',
         'flex-col': property.direction === 'vertical'
       }
-    ]"
-  >
+    ]">
     <template v-if="expanded">
       <div
         v-for="(item, index) in property.list"
         :key="index"
         class="flex flex-col items-center"
-        @click="handleActive(index)"
-      >
+        @click="handleActive(index)">
         <el-image :src="item.imgUrl" fit="contain" class="h-27px w-27px">
           <template #error>
             <div class="h-full w-full flex items-center justify-center">
@@ -45,7 +43,7 @@ defineProps<{ property: FloatingActionButtonProperty }>()
 
 // 是否展开
 const expanded = ref(false)
-// 处理展开/折叠
+// 处理{{t('common.toggle')}}
 const handleToggleFab = () => {
   expanded.value = !expanded.value
 }

+ 9491 - 927
src/locales/en.ts

@@ -1,234 +1,515 @@
 export default {
   stat: {
-    deviceCount: 'DeviceCount',
-    maintenanceOrder: 'MaintenanceOrder',
-    operationNotFilled: 'OperationNotFilled',
-    operationFilled: 'OperationFilled',
-    notMaintained: 'NotMaintained',
-    maintained: 'Maintained',
-    notInspected: 'NotInspected',
-    inspected: 'Inspected',
-    mttr: 'MTTR',
-    materialsUnderInventory: 'MaterialsUnderInventory',
-    deviceStatus: 'DeviceStatus',
-    deviceClassifyTop5: 'DeviceClassifyTop5',
-    lastWeekActivity: 'Activity Of Last Week',
-    orderCount: 'OrderCount',
-    repairOrder: 'RepairOrder',
-    maintenanceWorkOrder: 'MaintenanceWorkOrder',
-    inspectOrder: 'Inspect Order',
-    operationRecord: 'Operation Record',
+    deviceCount: 'Number of Devices',
+    maintenanceOrder: 'Maintenance order',
+    operationNotFilled: 'Run not filled in',
+    operationFilled: 'Run has been filled in',
+    notMaintained: 'Not serviced',
+    maintained: 'Serviced',
+    notInspected: 'Not inspected',
+    inspected: 'Patrolled',
+    zj: 'Drilling total infeed gauge (m)',
+    xj: 'Total number of wells completed for workover',
+    mttr: 'MTTR (Mean Time to Resolve)',
+    materialsUnderInventory: 'Inventory Warning Material Quantity',
+    deviceStatus: 'Device Status Statistics',
+    deviceClassifyTop5: 'Device category top',
+    lastWeekActivity: 'User activity in the last week',
+    orderCount: 'Ticket Count',
+    repairOrder: 'Maintenance order',
+    maintenanceWorkOrder: 'Maintenance Work Order',
+    inspectOrder: 'Patrol Work Order',
+    operationRecord: 'Run Record',
     sparePartsReplacement: 'Spare Parts Replacement',
-    spareCount: 'spareCount',
-    spareAmount: 'spareAmount',
-    maintenanceStatus: 'MaintenanceStatus',
-    inspectStatus: 'InspectStatus',
-    totalOrder: 'totalOrder',
-    finishedOrder: 'finishedOrder',
-    pendingOrder: 'pendingOrder',
-    operationCost: 'O&M costs',
-    materialConsumption: 'MaterialConsumption Top5',
-    deviceRate: 'utilizationRate',
-    teamDetail: 'Team Utilization Rate',
-    gasWater: 'Cumulative Gas Injection Volume',
-    dailyGasWater: 'Daily Gas Injection Volume',
-    projectDevice: 'Project Department Device',
-    safeProduction: 'SafeProduction Days',
-    daysToDate: 'consecutive safe production days to date',
-    drillingCompletion: 'Drilling completion status',
-    drillingWork: 'Drilling workload status',
-    wellWorkoverWorkload: 'Well workover workload status'
+    spareCount: 'Quantity of materials consumed',
+    spareAmount: 'Material Consumption Expenses',
+    maintenanceStatus: 'Maintenance',
+    inspectStatus: 'Patrol Inspection Status',
+    totalOrder: 'Total Work Orders',
+    finishedOrder: 'Number of tickets executed',
+    pendingOrder: 'Number of pending tickets',
+    operationCost: 'Operation and maintenance costs',
+    materialConsumption: 'Top 5 Material Consumption',
+    deviceRate: 'Device Utilization Rate',
+    teamDetail: 'Team Equipment Utilization',
+    gasWater: 'Cumulative Injection Statistics',
+    dailyGasWater: 'Gas injection statistics for the day',
+    projectDevice: 'Number of equipment in the project department',
+    safeProduction: 'Days of safe production',
+    daysToDate: 'Number of consecutive safe production days up to the current',
+    drillingCompletion: 'Drilling Completion',
+    drillingWork: 'Drilling workload',
+    wellWorkoverWorkload: 'Workload for workover',
+    'rhkbavue616875-0': 'Start Date',
+    'rhkbavue616875-1': 'End Date',
+    'rhkbavue616875-2': 'Project Dept',
+    'rhkbavue616875-3': 'Number of Teams',
+    'rhkbavue616875-4': 'Cumulative days',
+    'rhkbavue616875-5': 'Days of construction',
+    'rhkbavue616875-6': 'Gas injection volume (Wanfang)',
+    'rhkbavue616875-7': 'Device Utilization Rate',
+    'rhkbavue616875-8': 'Team Name',
+    'rykbavue662076-0': 'Start Date',
+    'rykbavue662076-1': 'End Date',
+    'rykbavue662076-2': 'Project Dept',
+    'rykbavue662076-3': 'Number of Teams',
+    'rykbavue662076-4': 'Cumulative days',
+    'rykbavue662076-5': 'Days of construction',
+    'rykbavue662076-6': 'Device Utilization Rate',
+    'rykbavue662076-7': 'day',
+    'rykbavue662076-8': 'Team Name',
+    'inspectvue702065-0': 'Patrol Statistics',
+    'inspectvue702065-1': 'Related department',
+    'inspectvue702065-2': 'Please select department',
+    'inspectvue702065-3': 'Created Time',
+    'inspectvue702065-4': 'Start Date',
+    'inspectvue702065-5': 'End Date',
+    'inspectvue702065-6': 'Search',
+    'inspectvue702065-7': 'Reset',
+    'inspectvue702065-8': 'Number of tickets yesterday',
+    'inspectvue702065-9': 'Amount',
+    'inspectvue702065-10': 'Incomplete',
+    'inspectvue702065-11': 'Number of tickets in the last week',
+    'inspectvue702065-12': 'Number of tickets in the last month',
+    'inspectvue702065-13': 'Total number of tickets',
+    'inspectvue702065-14': 'Ticket status statistics',
+    'inspectvue702065-15': 'Executed',
+    'inspectvue702065-16': 'Closed Pending',
+    'inspectvue702065-17': 'Neglect',
+    'inspectvue702065-18': 'Device Status Statistics',
+    'inspectvue702065-19': 'Filled',
+    'inspectvue702065-20': 'Not filled',
+    'inspectvue702065-21': 'Patrol item status statistics',
+    'inspectvue702065-22': 'Quantity statistics for the past year',
+    'maintainvu872830-0': 'Repair Statistics',
+    'maintainvu872830-1': 'Average resolution time:',
+    'maintainvu872830-2': 'Number of tickets in the last week',
+    'maintainvu872830-3': 'Fault escalation',
+    'maintainvu872830-4': 'Maintenance order',
+    'maintainvu872830-5': 'Number of tickets in the last month',
+    'maintainvu872830-6': 'Total number of tickets',
+    'maintainvu872830-7': 'Fault escalation status statistics',
+    'maintainvu872830-8': 'Escalating',
+    'maintainvu872830-9': 'Processing Complete',
+    'maintainvu872830-10': 'Transfer to Work Order',
+    'maintainvu872830-11': 'Work Order Processing Complete',
+    'maintainvu872830-12': 'Repair Work Order Status Statistics',
+    'maintainvu872830-13': 'to be filled',
+    'maintainvu872830-14': 'Completed',
+    'maintainvu872830-15': 'Quantity statistics for the past year',
+    'maintenanc557040-0': 'Maintenance Statistics',
+    'maintenanc557040-1': 'Number of tickets yesterday',
+    'maintenanc557040-2': 'Amount',
+    'maintenanc557040-3': 'Incomplete',
+    'maintenanc557040-4': 'Number of tickets in the last week',
+    'maintenanc557040-5': 'Number of tickets in the last month',
+    'maintenanc557040-6': 'Total number of tickets',
+    'maintenanc557040-7': 'Maintenance Work Order Status Statistics',
+    'maintenanc557040-8': 'Closed Pending',
+    'maintenanc557040-9': 'Executed',
+    'maintenanc557040-10': 'Ticket Type Statistics',
+    'maintenanc557040-11': "Today's Work Order Status Stats",
+    'maintenanc557040-12': 'Quantity statistics for the past year',
+    'availabili107902-0': 'Mint rate',
+    'availabili107902-1': 'Pcs',
+    'constructi611004-0': 'Construction Briefing',
+    'constructi611004-1': 'Project Dept',
+    'constructi611004-2': 'Team',
+    'constructi611004-3': 'Status',
+    'constructi611004-4': 'Well No.',
+    'constructi611004-5': 'technology',
+    'constructi611004-6': 'Working with Devices',
+    'constructi611004-7': 'Construction Floor of the Day',
+    'constructi611004-8': 'Same-day construction wells',
+    'constructi611004-9': 'Brief construction on the day',
+    'constructi611004-10': 'Previous Day Status',
+    'constructi611004-11': 'Last Day Construction Floor',
+    'constructi611004-12': 'Previous Day Construction Well',
+    'constructi611004-13': 'Brief construction on the previous day',
+    'exceptionv686588-0': 'Exception Statistics Kanban',
+    'exceptionv686588-1': 'Production Abnormality',
+    'exceptionv686588-2': 'Patrol abnormality',
+    'rdcostvue544117-0': 'Operation and maintenance costs',
+    'rddeviceca201693-0': 'Device Category',
+    'rddevicest200401-0': 'Device Status',
+    'rdexceptio920906-0': 'Anomaly Alert',
+    'rdexceptio920906-1': 'Production Abnormality',
+    'rdexceptio920906-2': 'Pcs',
+    'rdexceptio920906-3': 'No production abnormality data',
+    'rdexceptio920906-4': 'Device abnormality',
+    'rdexceptio920906-5': 'Number of abnormalities:',
+    'rdmaintena418068-0': 'Number of Maintenance',
+    'rdratevue522056-0': 'Device Utilization Rate',
+    'rdsafedayv252164-0': 'Days of safe production',
+    'rdsafedayv252164-1': 'Continuous safe production',
+    'rdsafedayv252164-2': 'day',
+    'rdusestatu895840-0': 'Device Usage Status',
+    'rdvaluevue936121-0': 'Attributes',
+    'rdproducti350919-0': 'Production Daily',
+    'rdproducti350919-1': 'Select date',
+    'rdproducti350919-2': 'Project',
+    'rdproducti350919-3': 'Team',
+    'rdproducti350919-4': 'Status',
+    'rdproducti350919-5': 'Well No.',
+    'rdproducti350919-6': 'technology',
+    'rdproducti350919-7': 'Working with Devices',
+    'rdproducti350919-8': 'Number of fracturing layers',
+    'rdproducti350919-9': 'Number of connected wells',
+    'rdproducti350919-10': 'Brief construction',
+    'rdsummaryv637921-0': 'Operation overview',
+    'utilizatio568079-0': 'Device Utilization Rate',
+    'workloadvu435610-0': 'Workload Summary',
+    'rdkb1vue290085-0': 'Monthly Workload Sheet',
+    'rdkb1vue290085-1': 'Month',
+    'rdkb1vue290085-2': 'Ramadan 2025',
+    'rdkb1vue290085-3': 'Number of fracturing wells',
+    'rdkb1vue290085-4': 'Number of fracturing layers',
+    'rdkb1vue290085-5': 'Pump unit times',
+    'rdkb1vue290085-6': 'Number of connected wells',
+    'rdkb1vue290085-7': 'Year 2024',
+    'rdkb1vue290085-8': 'Year-over-year growth',
+    'rdkb1vue290085-9': 'Team Name',
+    'rdkb1vue290085-10': 'Cumulative days',
+    'rdkb1vue290085-11': 'Days of construction',
+    'rdkb1vue290085-12': 'Device Utilization Rate',
+    'rdkb1vue290085-13': 'No.',
+    'rdkb1vue290085-14': 'Project Dept',
+    'rdkb1vue290085-15': 'Number of devices',
+    'rdkb1vue290085-16': 'Original value (ten thousand yuan)',
+    'rdkb1vue290085-17': 'Net value (ten thousand yuan)',
+    'rdkb1vue290085-18': 'Percentage of original value',
+    'rdkb1vue290085-19': 'Distribution and value of equipment in Iraq (USD)',
+    'rdkb1vue290085-20': 'Distribution and value of equipment in Libya (Dinars)',
+    'rdkb1vue290085-21': 'Home',
+    'rdkb1vue290085-22': 'DPR',
+    'rdkb1vue290085-23': 'Fracturing layers',
+    'rdkb1vue290085-24': 'Total wells',
+    'rdkb1vue290085-25': 'Devices',
+    'rdkb1vue290085-26': 'Repair Work Orders',
+    'rdkb1vue290085-27': 'Not filled in',
+    'rdkb1vue290085-28': 'To be inspected‌',
+    'rdkb1vue290085-29': 'Pending for maintenance',
+    'rdkb1vue290085-30': 'RUI DU',
+    'rdkb1vue290085-31': 'Device status',
+    'rdkb1vue290085-32': 'Usage status',
+    'rdkb1vue290085-33': 'Normal',
+    'rdkb1vue290085-34': 'Operate with defects',
+    'rdkb1vue290085-35': 'Fault',
+    'rdkb1vue290085-36': 'pcs',
+
+    'rdkb1vue290085-37': 'Public area',
+    'rdkb1vue290085-38': 'Xinjiang',
+    'rdkb1vue290085-39': 'Qinghai',
+    'rdkb1vue290085-40': 'East',
+    'rdkb1vue290085-41': 'Southwest CT',
+    'rdkb1vue290085-42': 'Southwest fracturing',
+    'rdkb1vue290085-43': 'Iraq',
+    'rdkb1vue290085-44': 'Libya',
+    'rdkb1vue290085-45': 'Original',
+    'rdkb1vue290085-46': 'Net worth',
+    'rdkb1vue290085-47': 'Value(10K yuan)',
+
+    'assetvalue502656-0': 'ASSET VALUE',
+    'devicelist400115-0': 'Project Department Statistics',
+    'devicelist400115-1': 'Select date',
+    'devicelist400115-2': 'Export',
+    'devicelist400115-3': 'Project Dept',
+    'devicelist400115-4': 'Total Teams',
+    'devicelist400115-5': 'Stand by',
+    'devicelist400115-6': 'Construction preparation',
+    'devicelist400115-7': 'Construction Team',
+    'devicelist400115-8': 'Injection volume (10,000 square meters)',
+    'devicelist400115-9': 'Running Time Limit',
+    'devicelist400115-10': 'Overview of production dynamics',
+    'devicelist400115-11': "`${currentProjectDeptName || 'Project Dept'}Team Details`",
+    'devicelist400115-12': 'Team Name',
+    'devicelist400115-13': 'Cumulative days',
+    'devicelist400115-14': 'Days of construction',
+    'devicelist400115-15': 'Device Utilization Rate',
+    'devicelist400115-16': 'Daily steam:',
+    'devicelist400115-17': 'Total steam:',
+    'devicelist400115-18': 'Daily water:',
+    'devicelist400115-19': 'Total water:',
+    'devicelist400115-20': 'Daily:',
+    'devicelist400115-21': 'Average:',
+    'devicestat409031-0': 'Device Status Statistics',
+    'devicetype397647-0': 'Device Category',
+    'equipmentr305758-0': 'Device Utilization Rate',
+    'exceptionp726724-0': 'Anomaly Alert',
+    'exceptionp726724-1': 'Production Abnormality',
+    'exceptionp726724-2': 'Pcs',
+    'exceptionp726724-3': 'No production abnormality data',
+    'exceptionp726724-4': 'Device abnormality',
+    'exceptionp726724-5': 'Number of abnormalities:',
+    'historygas829380-0': 'Cumulative Injection Statistics',
+    'inventorys900385-0': 'Select date',
+    'inventorys900385-1': 'Inventories and changes',
+    'inventorys900385-2': 'Inventory at the beginning of the year',
+    'inventorys900385-3': 'Backlog at the beginning of the year',
+    'inventorys900385-4': 'Closing inventory',
+    'inventorys900385-5': 'Backlog at the end of the period',
+    'inventorys900385-6': 'Aged Partner Balance',
+    'inventorys900385-7': '< 1 year',
+    'inventorys900385-8': '1-2 years',
+    'inventorys900385-9': '2-3 years',
+    'inventorys900385-10': 'Over 3 Years',
+    'inventorys900385-11': 'Backlog Ratio',
+    'operationv635736-0': 'Operation and maintenance costs',
+    'ordertrend865934-0': 'Ticket Count',
+    'rhsafedayv089834-0': 'Days of safe production',
+    'rhsafedayv089834-1': 'Continuous safe production',
+    'rhsafedayv089834-2': 'day',
+    'rhsummaryv272993-0': 'Operation overview',
+    'todaygasvu057079-0': 'Gas injection statistics for the day',
+    'exceptionp321232-0': 'Anomaly Alert',
+    'exceptionp321232-1': 'Production Abnormality',
+    'exceptionp321232-2': 'Pcs',
+    'exceptionp321232-3': 'No production abnormality data',
+    'exceptionp321232-4': 'Device abnormality',
+    'exceptionp321232-5': 'Number of abnormalities:',
+    'exceptionp321232-6': 'Select Business Type',
+    'exceptionp321232-7': 'Cancel',
+    'exceptionp321232-8': 'View Drilling',
+    'exceptionp321232-9': 'View workover',
+    'rydeviceli064265-0': 'Device Utilization Rate',
+    'rydeviceli064265-1': 'Start Date',
+    'rydeviceli064265-2': 'End Date',
+    'rydeviceli064265-3': 'Project Dept',
+    'rydeviceli064265-4': 'Number of Teams',
+    'rydeviceli064265-5': 'Cumulative days',
+    'rydeviceli064265-6': 'Days of construction',
+    'rydeviceli064265-7': "`${currentProjectDeptName || 'Project Dept'}Team Details`",
+    'rydeviceli064265-8': 'Team Name',
+    'rydevicest270813-0': 'Device Status Statistics',
+    'ryordertre530084-0': 'Ticket Count',
+    'ryproducti168743-0': 'Production Briefing',
+    'ryproducti168743-1': 'Select date',
+    'ryproducti168743-2': 'Companies',
+    'ryproducti168743-3': 'Project',
+    'ryproducti168743-4': 'Team',
+    'ryproducti168743-5': 'Production Tasks',
+    'ryproducti168743-6': 'Operating Status',
+    'ryproducti168743-7': 'Next Tasks',
+    'ryproducti168743-8': 'Same-day production profile',
+    'ryproducti168743-9': 'Same-day incoming footage (m)/Same-day well times',
+    'ryproducti168743-10': 'Power consumption for the day (kwh)',
+    'ryproducti168743-11': 'Fuel consumption for the day (litres)',
+    'ryproducti168743-12': 'Same day non-production time',
+    'rysummaryv140289-0': 'Operation overview',
+    'safedayvue601265-0': 'Days of safe production',
+    'safedayvue601265-1': 'Continuous safe production',
+    'safedayvue601265-2': 'day',
+    'xjworkvue367665-0': 'Workload for workover',
+    'zjfinishvu943921-0': 'Drilling Completion',
+    'zjworkvue340655-0': 'Drilling workload',
+    'testvue814981-0': 'Number of Devices',
+    'testvue814981-1': 'Maintenance order',
+    'testvue814981-2': 'Run not filled in',
+    'testvue814981-3': 'Run has been filled in',
+    'testvue814981-4': 'Maintenance not performed',
+    'testvue814981-5': 'Maintenance performed',
+    'testvue814981-6': 'Patrol to be filled in',
+    'testvue814981-7': 'Patrol completed',
+    'testvue814981-8': 'Device Status Statistics',
+    'testvue814981-9': 'Ticket Quantity Status',
+    'testvue814981-10': 'Well Repair Completion',
+    'testvue814981-11': 'Drilling Completion',
+    'testvue814981-12': 'Drilling workload (footage (m))',
+    'testvue814981-13': 'Workload for workover (footage (m))'
   },
   common: {
-    sort: 'sort',
-    inputText: 'Please input',
+    sort: 'Sort',
+    inputText: 'Input',
     selectText: 'Please select',
-    startTimeText: 'Start time',
-    endTimeText: 'End time',
+    startTimeText: 'Start Time',
+    endTimeText: 'End Time',
     login: 'Login',
-    required: 'This is required',
-    loginOut: 'Login out',
-    document: 'Document',
-    profile: 'User Center',
+    required: 'This field is required',
+    loginOut: 'Log out system',
+    document: 'Property Documents',
+    profile: 'Account & Settings',
     reminder: 'Reminder',
-    loginOutMessage: 'Exit the system?',
+    loginOutMessage: 'Log out of the system?',
     back: 'Back',
-    ok: 'OK',
+    ok: 'Confirm',
     save: 'Save',
     cancel: 'Cancel',
     close: 'Close',
-    reload: 'Reload current',
-    success: 'Success',
-    closeTab: 'Close current',
-    closeTheLeftTab: 'Close left',
-    closeTheRightTab: 'Close right',
-    closeOther: 'Close other',
-    closeAll: 'Close all',
-    prevLabel: 'Prev',
+    reload: 'Reload',
+    success: 'Berhasil',
+    closeTab: 'Close Tab',
+    closeTheLeftTab: 'Close left tab',
+    closeTheRightTab: 'Close right tab',
+    closeOther: 'Close other tabs',
+    closeAll: 'Close all tabs',
+    prevLabel: 'Sebelumnya',
     nextLabel: 'Next',
-    skipLabel: 'Jump',
-    doneLabel: 'End',
-    menu: 'Menu',
-    menuDes: 'Menu bar rendered in routed structure',
-    collapse: 'Collapse',
-    collapseDes: 'Expand and zoom the menu bar',
-    tagsView: 'Tags view',
-    tagsViewDes: 'Used to record routing history',
-    tool: 'Tool',
-    toolDes: 'Used to set up custom systems',
+    skipLabel: 'Skip',
+    doneLabel: 'END',
+    menu: 'Ohio Menu',
+    menuDes: 'Menu bar rendered in a routed structure',
+    collapse: 'Expand Shrink',
+    collapseDes: 'Expand and zoom menu bar',
+    tagsView: 'Tags Page',
+    tagsViewDes: 'Used to log routing history',
+    tool: 'Tools',
+    toolDes: 'Used to set up a customized system',
     query: 'Query',
     reset: 'Reset',
-    shrink: 'Put away',
+    shrink: 'Collapse',
     expand: 'Expand',
-    confirmTitle: 'System Hint',
-    exportMessage: 'Whether to confirm export data item?',
-    importMessage: 'Whether to confirm import data item?',
-    createSuccess: 'Create Success',
-    updateSuccess: 'Update Success',
+    confirmTitle: 'Tips Sistem',
+    exportMessage: 'Are you sure you want to export the data item?',
+    importMessage: 'Are you sure you want to import the data item?',
+    createSuccess: 'Added successfully',
+    updateSuccess: 'Modified successfully',
     delMessage: 'Delete the selected data?',
-    delDataMessage: 'Delete the data?',
-    delNoData: 'Please select the data to delete',
+    delDataMessage: 'Delete data?',
+    delNoData: 'Please select the data you want to delete',
     delSuccess: 'Deleted successfully',
-    index: 'Index',
+    index: 'No.',
     status: 'Status',
-    createTime: 'Create Time',
-    updateTime: 'Update Time',
+    createTime: 'Created Time',
+    updateTime: 'Updated time',
     copy: 'Copy',
-    copySuccess: 'Copy Success',
-    copyError: 'Copy Error',
-    leftNode: 'Please select the left node',
-    deptChoose: 'Please select device or catalog'
+    copySuccess: 'Copied.',
+    copyError: 'Copy failed',
+    leftNode: 'Please select a node on the left',
+    deptChoose: 'Please select a device and directory',
+    toggle: 'Unfold/Fold'
   },
   lock: {
     lockScreen: 'Lock screen',
     lock: 'Lock',
     lockPassword: 'Lock screen password',
-    unlock: 'Click to unlock',
-    backToLogin: 'Back to login',
-    entrySystem: 'Entry the system',
-    placeholder: 'Please enter the lock screen password',
-    message: 'Lock screen password error'
+    unlock: 'Click Unlock',
+    backToLogin: 'Quit Game',
+    entrySystem: 'Access the system',
+    placeholder: 'Please enter a lockscreen password',
+    message: 'Incorrect lock screen password'
   },
   error: {
-    noPermission: `Sorry, you don't have permission to access this page.`,
-    pageError: 'Sorry, the page you visited does not exist.',
+    noPermission: 'Sorry you do not have access to this page.',
+    pageError: 'Oops, This Page Could Not Be Found!',
     networkError: 'Sorry, the server reported an error.',
-    returnToHome: 'Return to home'
+    returnToHome: 'Go back to home'
   },
   permission: {
-    hasPermission: `Please set the operation permission label value`,
-    hasRole: `Please set the role permission tag value`
+    hasPermission: 'Please set the action permission label value',
+    hasRole: 'Please set role permission label value'
   },
   setting: {
-    projectSetting: 'Project setting',
-    theme: 'Theme',
+    projectSetting: 'Study Settings',
+    theme: 'WordPress.org themes',
     layout: 'Layout',
     systemTheme: 'System theme',
     menuTheme: 'Menu theme',
     interfaceDisplay: 'Interface display',
-    breadcrumb: 'Breadcrumb',
-    breadcrumbIcon: 'Breadcrumb icon',
-    collapseMenu: 'Collapse menu',
-    hamburgerIcon: 'Hamburger icon',
-    screenfullIcon: 'Screenfull icon',
-    sizeIcon: 'Size icon',
-    localeIcon: 'Locale icon',
-    messageIcon: 'Message icon',
-    tagsView: 'Tags view',
-    logo: 'Logo',
-    greyMode: 'Grey mode',
-    fixedHeader: 'Fixed header',
-    headerTheme: 'Header theme',
-    cutMenu: 'Cut Menu',
-    copy: 'Copy',
+    breadcrumb: 'In Breadcrumb',
+    breadcrumbIcon: 'Breadcrumb Icons',
+    collapseMenu: 'Toggle Menu',
+    hamburgerIcon: 'Collapse Icon',
+    screenfullIcon: 'FullScreen Icon',
+    sizeIcon: 'Dimension Icon',
+    localeIcon: 'Multi-language Icon',
+    messageIcon: 'Messages Icon',
+    tagsView: 'Tags Page',
+    tagsViewImmerse: 'Tab Immersion',
+    logo: 'Flags',
+    greyMode: 'Gray Mode',
+    fixedHeader: 'Fixed Header Type',
+    headerTheme: 'Header Theme',
+    cutMenu: 'Cut menu',
+    copy: 'Copies:',
     clearAndReset: 'Clear cache and reset',
-    copySuccess: 'Copy success',
-    copyFailed: 'Copy failed',
-    footer: 'Footer',
-    uniqueOpened: 'Unique opened',
-    tagsViewIcon: 'Tags view icon',
-    reExperienced: 'Please exit the login experience again',
-    fixedMenu: 'Fixed menu'
+    copySuccess: 'Copied successfully',
+    copyFailed: 'Copying failed.',
+    footer: 'Pre Footer',
+    uniqueOpened: 'Menu Accordion',
+    tagsViewIcon: 'Tab Icon',
+    reExperienced: 'Please log out again',
+    fixedMenu: 'Sticky Menu'
   },
   size: {
     default: 'Default',
-    large: 'Large',
+    large: '&Large',
     small: 'Small'
   },
   login: {
     welcome: 'Welcome to the system',
-    message: 'Backstage management system',
-    tenantname: 'TenantName',
+    message: '',
+    tenantname: 'Tenant name',
     username: 'Username',
     password: 'Password',
-    code: 'verification code',
-    login: 'Sign in',
-    relogin: 'Sign in again',
-    otherLogin: 'Sign in with',
+    code: 'Code',
+    login: 'Login',
+    relogin: 'Log in again',
+    otherLogin: 'Other login methods:',
     register: 'Register',
-    checkPassword: 'Confirm password',
-    remember: 'Remember me',
-    hasUser: 'Existing account? Go to login',
-    forgetPassword: 'Forget password?',
-    tenantNamePlaceholder: 'Please Enter Tenant Name',
-    usernamePlaceholder: 'Please Enter Username',
-    passwordPlaceholder: 'Please Enter Password',
-    codePlaceholder: 'Please Enter Verification Code',
-    mobileTitle: 'Mobile sign in',
-    mobileNumber: 'Mobile Number',
-    mobileNumberPlaceholder: 'Plaease Enter Mobile Number',
-    backLogin: 'back',
-    getSmsCode: 'Get SMS Code',
-    btnMobile: 'Mobile sign in',
-    btnQRCode: 'QR code sign in',
-    qrcode: 'Scan the QR code to log in',
-    btnRegister: 'Sign up',
-    SmsSendMsg: 'code has been sent',
+    checkPassword: 'Confirm Password',
+    remember: 'Remember Me',
+    hasUser: 'Already have an account? Log in',
+    forgetPassword: 'Forget?',
+    tenantNamePlaceholder: 'Please enter tenant name',
+    usernamePlaceholder: 'Please, enter Username',
+    passwordPlaceholder: 'Password',
+    codePlaceholder: 'Veuillez saisir le code de vérification',
+    mobileTitle: 'Login by Phone',
+    mobileNumber: 'Phone No.:',
+    mobileNumberPlaceholder: 'Please enter your Mob number',
+    backLogin: 'Back',
+    getSmsCode: 'Get Verification code',
+    btnMobile: 'Login by Phone',
+    btnQRCode: 'Pin Scan Login',
+    qrcode: 'Scan QR code to login',
+    btnRegister: 'Register',
+    SmsSendMsg: 'Verification code',
     resetPassword: 'Reset Password',
-    resetPasswordSuccess: 'Reset Password Success',
-    invalidTenantName: 'Invalid Tenant Name'
+    resetPasswordSuccess: 'Password reset successfully',
+    invalidTenantName: 'Invalid tenant name'
   },
   captcha: {
     verification: 'Please complete security verification',
     slide: 'Swipe right to complete verification',
-    point: 'Please click',
+    point: 'Please click on',
     success: 'Verification succeeded',
-    fail: 'verification failed'
+    fail: 'Verifikasi gagal'
   },
   router: {
     login: 'Login',
+    socialLogin: 'Social Login',
     home: 'Home',
-    analysis: 'Analysis',
-    workplace: 'Workplace'
+    analysis: 'Analysis Page',
+    workplace: 'Workbench'
   },
   analysis: {
-    newUser: 'New user',
-    unreadInformation: 'Unread information',
-    transactionAmount: 'Transaction amount',
-    totalShopping: 'Total Shopping',
-    monthlySales: 'Monthly sales',
+    newUser: 'User Addition',
+    unreadInformation: 'Unread',
+    transactionAmount: 'Amount Sold(KRW)',
+    totalShopping: 'Total Shopping Volume',
+    monthlySales: 'Monthly Sales',
     userAccessSource: 'User access source',
-    january: 'January',
-    february: 'February',
-    march: 'March',
-    april: 'April',
+    january: 'Jan',
+    february: 'february',
+    march: 'march',
+    april: 'Apr',
     may: 'May',
-    june: 'June',
-    july: 'July',
-    august: 'August',
-    september: 'September',
-    october: 'October',
-    november: 'November',
-    december: 'December',
-    estimate: 'Estimate',
-    actual: 'Actual',
-    directAccess: 'Airect access',
-    mailMarketing: 'Mail marketing',
-    allianceAdvertising: 'Alliance advertising',
-    videoAdvertising: 'Video advertising',
-    searchEngines: 'Search engines',
-    weeklyUserActivity: 'Weekly user activity',
-    activeQuantity: 'Active quantity',
+    june: 'june',
+    july: 'july',
+    august: 'august',
+    september: 'september',
+    october: 'october',
+    november: 'november',
+    december: 'Dec',
+    estimate: 'Estimated',
+    actual: 'actual',
+    directAccess: 'Direct Traffic',
+    mailMarketing: 'Opt-ins',
+    allianceAdvertising: 'Affiliate Ads',
+    videoAdvertising: 'Video ads',
+    searchEngines: 'Search Engine',
+    weeklyUserActivity: 'Weekly User Activity',
+    activeQuantity: 'Activity',
     monday: 'Monday',
     tuesday: 'Tuesday',
     wednesday: 'Wednesday',
@@ -238,1008 +519,9291 @@ export default {
     sunday: 'Sunday'
   },
   workplace: {
-    welcome: 'Hello',
-    happyDay: 'Wish you happy every day!',
-    toady: `It's sunny today`,
-    notice: 'Announcement',
-    project: 'Project',
-    access: 'Project access',
-    toDo: 'To do',
+    welcome: 'Hello.',
+    happyDay: 'Have fun every day!',
+    toady: 'Sunny today',
+    notice: 'Notice or public announcement',
+    project: '# Items',
+    access: 'items access',
+    toDo: 'To-do List',
     introduction: 'A serious introduction',
-    shortcutOperation: 'Quick entry',
-    operation: 'Operation',
-    index: 'Index',
+    shortcutOperation: 'Quick Access',
+    operation: 'Actions',
+    index: '<g id="Bold">Index </g>',
     personal: 'Personal',
-    team: 'Team',
-    quote: 'Quote',
+    team: 'TEAM',
+    quote: 'Cite',
     contribution: 'Contribution',
-    hot: 'Hot',
-    yield: 'Yield',
+    hot: 'Popular',
+    yield: 'cash crop',
     dynamic: 'Dynamic',
-    push: 'push',
+    push: 'Pushing',
     follow: 'Follow'
   },
   project: {
-    payment: 'Payment',
-    overseaFlag: 'Overseas Project',
-    overseaArea: 'Overseas Area',
-    workArea: 'Work Area',
+    payment: 'Settlement Method',
+    overseaFlag: 'Whether it is an overseas project',
+    overseaArea: 'Overseas project area',
+    workArea: 'Construction Area',
     wellType: 'Well Type',
     wellCategory: 'Well Category',
-    technology: 'Technology',
-    status: 'status',
-    taskAttrDetail: 'Attr Detail',
-    nptReason: 'NPT Reason',
-    currentOperation: 'Current Operation',
-    nextPlan: 'Next Plan',
-    transitTime: 'Transit Time',
-    dailyReport: 'Daily Report',
-    fillReport: 'Fill Report'
+    technology: 'Construction Process',
+    unit: 'Workload Unit',
+    status: 'Construction Status',
+    taskAttrDetail: 'Task Attribute Details',
+    nptReason: 'Non-Production Time Reason',
+    currentOperation: 'Current process',
+    nextPlan: 'Next Steps',
+    transitTime: 'Running Time Limit',
+    dailyReport: 'Daily Newspaper',
+    fillReport: 'Daily Report Entry'
   },
   form: {
-    input: 'Input',
-    inputNumber: 'InputNumber',
+    input: 'Input Box',
+    inputNumber: 'Number input box',
     default: 'Default',
-    icon: 'Icon',
-    mixed: 'Mixed',
-    textarea: 'Textarea',
-    slot: 'Slot',
+    icon: 'Icons',
+    mixed: 'Hybrid Type',
+    textarea: 'multiline text',
+    slot: 'slot',
     position: 'Position',
-    autocomplete: 'Autocomplete',
-    select: 'Select',
-    selectGroup: 'Select Group',
-    selectV2: 'SelectV2',
-    cascader: 'Cascader',
+    autocomplete: 'Auto Completion',
+    select: 'Selector',
+    selectGroup: 'Option grouping',
+    selectV2: 'Virtual list selector',
+    cascader: 'Cascading Selector',
     switch: 'Switch',
-    rate: 'Rate',
-    colorPicker: 'Color Picker',
-    transfer: 'Transfer',
-    render: 'Render',
+    rate: 'Skor',
+    colorPicker: 'Colour Picker',
+    transfer: 'Shuttle Frame',
+    render: 'RENDERER',
     radio: 'Radio',
-    button: 'Button',
-    checkbox: 'Checkbox',
-    slider: 'Slider',
-    datePicker: 'Date Picker',
-    shortcuts: 'Shortcuts',
+    button: 'Buttons',
+    checkbox: 'Multiple checkbox',
+    slider: 'Sliders',
+    datePicker: 'Datepicker',
+    shortcuts: 'Shortcut Options',
     today: 'Today',
-    yesterday: 'Yesterday',
-    aWeekAgo: 'A week ago',
+    yesterday: 'YESTERDAY',
+    aWeekAgo: 'week ago',
     week: 'Week',
-    year: 'Year',
+    year: '&Year',
     month: 'Month',
-    dates: 'Dates',
-    daterange: 'Date Range',
+    dates: 'Date',
+    daterange: 'Date range',
     monthrange: 'Month Range',
-    dateTimePicker: 'DateTimePicker',
-    dateTimerange: 'Datetime Range',
-    timePicker: 'Time Picker',
-    timeSelect: 'Time Select',
-    inputPassword: 'input Password',
-    passwordStrength: 'Password Strength',
-    operate: 'operate',
+    dateTimePicker: 'Date / Time Picker',
+    dateTimerange: 'DateTime range',
+    timePicker: 'Time selector',
+    timeSelect: 'Time',
+    inputPassword: 'Password input box',
+    passwordStrength: 'Password strength',
+    operate: 'Actions',
     change: 'Change',
-    restore: 'Restore',
-    disabled: 'Disabled',
-    disablement: 'Disablement',
+    restore: 'Revert',
+    disabled: 'Disable',
+    disablement: 'Unban',
     delete: 'Delete',
-    add: 'Add',
-    setValue: 'Set value',
-    resetValue: 'Reset value',
-    set: 'Set',
-    subitem: 'Subitem',
-    formValidation: 'Form validation',
-    verifyReset: 'Verify reset',
-    remark: 'Remark',
-    repeatDevice: 'This category already exists, please select again',
-    relatedModel: 'Template modification has been used, please do not delete',
-    relatedProject: 'The project information already has a task, please do not delete'
+    add: 'Tambah',
+    setValue: 'Set Value',
+    resetValue: 'Reset the Values',
+    set: 'settings.ini',
+    subitem: 'subkey',
+    formValidation: 'Form Validation',
+    verifyReset: 'Verify Reset',
+    remark: 'Remarks',
+    repeatDevice: 'The category already exists, please select again',
+    relatedModel: 'The change template is already in use, please do not delete it',
+    relatedProject: 'A task already exists for this project information, please do not delete it'
   },
   watermark: {
-    watermark: 'Watermark'
+    watermark: 'Water Mark'
   },
   table: {
     table: 'Table',
-    index: 'Index',
-    title: 'Title',
+    index: 'No.',
+    title: '<g id="2610">Captions</g>.',
     author: 'Author',
-    createTime: 'Create time',
-    action: 'Action',
-    pagination: 'pagination',
-    reserveIndex: 'Reserve index',
-    restoreIndex: 'Restore index',
-    showSelections: 'Show selections',
-    hiddenSelections: 'Restore selections',
+    createTime: 'Created Time',
+    action: 'Actions',
+    pagination: 'Pagination',
+    reserveIndex: 'Overlay Sequence Number',
+    restoreIndex: 'Restore Serial Number',
+    showSelections: 'Show multi-select',
+    hiddenSelections: 'Hide Multiple Choice',
     showExpandedRows: 'Show expanded rows',
-    hiddenExpandedRows: 'Hidden expanded rows',
-    header: 'Header'
+    hiddenExpandedRows: 'Hide expanded rows',
+    header: 'HEAD'
   },
   action: {
     search: 'Search',
-    create: 'Create',
+    create: 'Add',
     add: 'Add',
     del: 'Delete',
     delete: 'Delete',
     edit: 'Edit',
-    update: 'Update',
-    preview: 'Preview',
+    update: 'Edit',
+    preview: 'Sneak Peak',
     more: 'More',
-    sync: 'Sync',
+    sync: 'Sinc',
     save: 'Save',
-    detail: 'Detail',
+    detail: 'Details',
     export: 'Export',
     import: 'Import',
-    generate: 'Generate',
-    logout: 'Login Out',
+    generate: 'Buat',
+    logout: 'Force Quit',
     test: 'Test',
-    typeCreate: 'Dict Type Create',
-    typeUpdate: 'Dict Type Eidt',
-    dataCreate: 'Dict Data Create',
-    dataUpdate: 'Dict Data Eidt',
-    fileUpload: 'File Upload'
+    typeCreate: 'Dictionary type added',
+    typeUpdate: 'Dictionary type editing',
+    dataCreate: 'Dictionary data added',
+    dataUpdate: 'Dictionary data editing'
   },
   dialog: {
-    dialog: 'Dialog',
+    dialog: 'pop-up window',
     open: 'Open',
     close: 'Close'
   },
   sys: {
     api: {
-      operationFailed: 'Operation failed',
-      errorTip: 'Error Tip',
-      errorMessage: 'The operation failed, the system is abnormal!',
-      timeoutMessage: 'Login timed out, please log in again!',
-      apiTimeoutMessage: 'The interface request timed out, please refresh the page and try again!',
-      apiRequestFailed: 'The interface request failed, please try again later!',
-      networkException: 'network anomaly',
-      networkExceptionMsg:
-        'Please check if your network connection is normal! The network is abnormal',
-
-      errMsg401: 'The user does not have permission (token, user name, password error)!',
-      errMsg403: 'The user is authorized, but access is forbidden!',
+      operationFailed: 'Operation Failed',
+      errorTip: 'error message',
+      errorMessage: 'Operation failed, system error!',
+      timeoutMessage: 'Exceeded Max Age, Login Again',
+      apiTimeoutMessage: 'Interface request timed out, please refresh the page and try again!',
+      apiRequestFailed: 'There was an error with your request, please try again later',
+      networkException: 'Network exception',
+      networkExceptionMsg: 'The network is abnormal, please check your network connection!',
+      errMsg401: 'User does not have permission (token, username, wrong password)!',
+      errMsg403: 'The user is authorized, but access is forbidden.!',
       errMsg404: 'Network request error, the resource was not found!',
       errMsg405: 'Network request error, request method not allowed!',
       errMsg408: 'Network request timed out!',
       errMsg500: 'Server error, please contact the administrator!',
-      errMsg501: 'The network is not implemented!',
-      errMsg502: 'Network Error!',
-      errMsg503: 'The service is unavailable, the server is temporarily overloaded or maintained!',
-      errMsg504: 'Network timeout!',
-      errMsg505: 'The http version does not support the request!',
-      errMsg901: 'Demo mode, no write operations are possible!'
+      errMsg501: 'Network not implemented!',
+      errMsg502: 'Network Error',
+      errMsg503: 'Service unavailable, server temporarily overloaded or maintained!',
+      errMsg504: 'Network timeout',
+      errMsg505: 'http version does not support this request!',
+      errMsg901: 'Demo mode, write operation not possible!'
     },
     app: {
       logoutTip: 'Reminder',
-      logoutMessage: 'Confirm to exit the system?',
-      menuLoading: 'Menu loading...'
+      logoutMessage: 'Are you sure you want to exit the system?',
+      menuLoading: 'Loading menu...'
     },
     exception: {
-      backLogin: 'Back Login',
-      backHome: 'Back Home',
-      subTitle403: "Sorry, you don't have access to this page.",
-      subTitle404: 'Sorry, the page you visited does not exist.',
-      subTitle500: 'Sorry, the server is reporting an error.',
-      noDataTitle: 'No data on the current page.',
+      backLogin: 'Quit Game',
+      backHome: 'Go back to home',
+      subTitle403: 'Sorry you do not have access to this page.',
+      subTitle404: 'Oops, This Page Could Not Be Found!',
+      subTitle500: 'Sorry, the server reported an error.',
+      noDataTitle: 'No data on current page',
       networkErrorTitle: 'Network Error',
       networkErrorSubTitle:
-        'Sorry, Your network connection has been disconnected, please check your network!'
+        'Sorry, your network connection has been disconnected, please check your network!'
     },
     lock: {
-      unlock: 'Click to unlock',
-      alert: 'Lock screen password error',
-      backToLogin: 'Back to login',
-      entry: 'Enter the system',
+      unlock: 'Click Unlock',
+      alert: 'Incorrect lock screen password',
+      backToLogin: 'Quit Game',
+      entry: 'Access the system',
       placeholder: 'Please enter the lock screen password or user password'
     },
     login: {
-      backSignIn: 'Back sign in',
-      mobileSignInFormTitle: 'Mobile sign in',
-      qrSignInFormTitle: 'Qr code sign in',
-      signInFormTitle: 'Sign in',
-      signUpFormTitle: 'Sign up',
-      forgetFormTitle: 'Reset password',
-
-      signInTitle: 'Backstage management system',
-      signInDesc: 'Enter your personal details and get started!',
+      backSignIn: 'Back',
+      signInFormTitle: 'Login',
+      ssoFormTitle: 'Tripartite Authorization',
+      mobileSignInFormTitle: 'Login by Phone',
+      qrSignInFormTitle: 'Pin Scan Login',
+      signUpFormTitle: 'Register',
+      forgetFormTitle: 'Reset Password',
+      signInTitle: 'Out-of-the-box middle and back office management system',
+      signInDesc: 'Enter your personal details to get started!',
       policy: 'I agree to the xxx Privacy Policy',
-      scanSign: `scanning the code to complete the login`,
-
-      loginButton: 'Sign in',
-      registerButton: 'Sign up',
-      rememberMe: 'Remember me',
-      forgetPassword: 'Forget Password?',
-      otherSignIn: 'Sign in with',
-
-      // notify
-      loginSuccessTitle: 'Login successful',
-      loginSuccessDesc: 'Welcome back',
-
-      // placeholder
-      accountPlaceholder: 'Please input username',
-      passwordPlaceholder: 'Please input password',
-      smsPlaceholder: 'Please input sms code',
-      mobilePlaceholder: 'Please input mobile',
-      policyPlaceholder: 'Register after checking',
-      diffPwd: 'The two passwords are inconsistent',
-
-      userName: 'Username',
+      scanSign: 'Scan the code and click "Confirm" to finish logging in',
+      loginButton: 'Login',
+      registerButton: 'Register',
+      rememberMe: 'Remember Me',
+      forgetPassword: 'Forget?',
+      otherSignIn: 'Other login methods:',
+      loginSuccessTitle: 'Logged in successfully',
+      loginSuccessDesc: 'welcome',
+      accountPlaceholder: 'Please input your account',
+      passwordPlaceholder: 'Password',
+      smsPlaceholder: 'Veuillez saisir le code de vérification',
+      mobilePlaceholder: 'Please enter your Mob number',
+      policyPlaceholder: 'Tick to register',
+      diffPwd: 'Password and confirm password does not match',
+      userName: 'Akun',
       password: 'Password',
       confirmPassword: 'Confirm Password',
-      email: 'Email',
-      smsCode: 'SMS code',
-      mobile: 'Mobile'
+      email: 'Mailbox',
+      smsCode: 'OTP',
+      mobile: 'Phone No.:'
     }
   },
   profile: {
     user: {
-      title: 'Personal Information',
-      username: 'User Name',
-      nickname: 'Nick Name',
-      mobile: 'Phone Number',
-      email: 'User Mail',
-      dept: 'Department',
-      posts: 'Position',
-      roles: 'Own Role',
-      sex: 'Sex',
-      man: 'Man',
-      woman: 'Woman',
-      createTime: 'Created Date'
+      title: 'Profile',
+      username: 'User Account',
+      nickname: 'User Nice Name',
+      mobile: 'Phone No.:',
+      email: 'User Emails',
+      dept: 'Related department',
+      posts: 'Position:',
+      roles: 'the role belongs to',
+      sex: 'Gender',
+      man: 'men',
+      woman: 'Female',
+      createTime: 'Creation Date'
     },
     info: {
       title: 'Basic Information',
-      basicInfo: 'Basic Information',
-      resetPwd: 'Reset Password',
-      userSocial: 'Social Information'
+      basicInfo: 'General Information',
+      resetPwd: 'Change Password',
+      userSocial: 'Socials Info'
     },
     rules: {
-      nickname: 'Please Enter User Nickname',
-      mail: 'Please Input The Email Address',
-      truemail: 'Please Input The Correct Email Address',
-      phone: 'Please Enter The Phone Number',
-      truephone: 'Please Enter The Correct Phone Number'
+      username: 'Please enter a user account',
+      nickname: 'Please enter user nickname',
+      mail: 'Please enter a email address',
+      truemail: 'Please enter a correct email address',
+      phone: 'Please enter a valid phone number',
+      truephone: 'Please enter a valid phone number'
     },
     password: {
-      oldPassword: 'Old PassWord',
-      newPassword: 'New Password',
+      oldPassword: 'Old password',
+      newPassword: 'New',
       confirmPassword: 'Confirm Password',
-      oldPwdMsg: 'Please Enter Old Password',
-      newPwdMsg: 'Please Enter New Password',
-      cfPwdMsg: 'Please Enter Confirm Password',
-      diffPwd: 'The Passwords Entered Twice No Match'
+      oldPwdMsg: 'Please enter old password',
+      newPwdMsg: 'Please enter a new password',
+      cfPwdMsg: 'Please enter the confirm Password',
+      pwdRules: 'Between 6 and 20 characters long',
+      diffPwd: 'Password and confirm password does not match'
     }
   },
   cropper: {
-    selectImage: 'Select Image',
-    uploadSuccess: 'Uploaded success!',
-    modalTitle: 'Avatar upload',
+    selectImage: 'Image Chooser',
+    uploadSuccess: 'Uploaded',
+    modalTitle: 'Upload profile photo',
     okText: 'Confirm and upload',
     btn_reset: 'Reset',
-    btn_rotate_left: 'Counterclockwise rotation',
-    btn_rotate_right: 'Clockwise rotation',
-    btn_scale_x: 'Flip horizontal',
-    btn_scale_y: 'Flip vertical',
-    btn_zoom_in: 'Zoom in',
-    btn_zoom_out: 'Zoom out',
-    preview: 'Preivew'
+    btn_rotate_left: 'Rotate counterclockwise',
+    btn_rotate_right: 'Rotate clockwise',
+    btn_scale_x: 'Flip horizontally',
+    btn_scale_y: 'Flip vertically',
+    btn_zoom_in: 'In',
+    btn_zoom_out: 'ZOOM&#10;OUT',
+    preview: 'Sneak Peak'
   },
   dict: {
-    no: 'dictNo',
-    name: 'dictName',
-    type: 'dictType',
-    status: 'status',
-    remark: 'remark',
-    createTime: 'createTime',
-    fillTime: 'fillTime',
-    data: 'DictData',
-    label: 'dictLabel',
-    typePlace: 'please enter dictType',
-    labelPlace: 'please enter dictLabel',
-    statusPlace: 'please enter dictStatus',
-    value: 'dictValue',
-    color: 'colorType',
-    dataPlace: 'please enter dataLabel',
-    valuePlace: 'please enter value',
-    dataLabel: 'dataLabel',
-    dataValue: 'dataValue',
-    dataPlaceholder: 'please enter dataLabel'
+    no: 'Dictionary number',
+    name: 'Dictionary Name',
+    type: 'Dictionary type',
+    status: 'Status',
+    remark: 'Remarks',
+    createTime: 'Created Time',
+    fillTime: 'Filling Time',
+    data: 'Data',
+    label: 'Dictionary tags',
+    labelPlace: 'Please enter dictionary label',
+    statusPlace: 'Please enter a status',
+    value: 'Dictionary key value',
+    color: 'Color Type',
+    typePlace: 'Please enter dictionary type',
+    dataPlace: 'Please enter data label',
+    valuePlace: 'Please enter a data key value',
+    dataLabel: 'Data Label',
+    dataValue: 'Data key value',
+    dataPlaceholder: 'Please enter data label'
   },
   operationFill: {
-    name: 'QueryCriteria',
-    nameHolder: 'Please enter the query criteria',
-    status: 'OrderStatus',
-    createTime: 'CreateTime',
-    start: 'StartTime',
-    end: 'EndTime',
+    name: 'Search Criteria',
+    nameHolder: 'Please enter query criteria',
+    status: 'Status of work order',
+    createTime: 'Created Time',
+    start: 'Start Date',
+    end: 'End Date',
     search: 'Search',
     reset: 'Reset',
     add: 'Add',
     query: 'Query',
-    operation: 'Operation',
-    duty: 'RP',
+    operation: 'Actions',
+    duty: 'Responsible Person',
     view: 'View',
-    fill: 'Fill',
-    ignore: 'Ignore',
-    all: 'All',
-    clear: 'Clear',
-    orderDevice: 'OrderDevice',
-    deviceCount: 'DeviceCount',
-    fillCount: 'FillCount',
-    unFillCount: 'UnFillCount',
-    selectAll: 'SelectAll',
-    deselectAll: 'DeselectAll'
+    fill: 'Filling out',
+    ignore: 'Neglect',
+    all: 'Overall Minimum Value',
+    clear: 'Empty',
+    orderDevice: 'Work Order Device',
+    deviceCount: 'Number of devices to be filled in',
+    fillCount: 'Number of devices filled in',
+    unFillCount: 'Number of Unfilled Devices',
+    selectAll: 'Check All',
+    deselectAll: 'Batalkan Semua Pilihan'
   },
   operationFillForm: {
-    team: 'Team',
-    sumTime: 'CumulativeRunningTime(h)',
-    sumKil: 'COKM(Km)',
+    team: 'Your team',
+    sumTime: 'Cumulative run time (H)',
+    mainSumTime: 'Cumulative run time at maintenance (H)',
+    sumKil: 'Cumulative operating kilometers (KM)',
+    mainSumKil: 'Cumulative kilometers in service (KM)',
     confirm: 'Confirm',
     cancel: 'Cancel',
-    alert: 'The following values are from the PLC. Please correct any discrepancies.',
-    fill: 'Please fill all of items',
-    enterNumber: 'Please fill number',
-    enterContent: 'Please fill content',
-    exceedMax: 'The input value cannot exceed{max}',
-    mainSumTime: 'Running Time(H)',
-    mainSumKil: 'Running Kilometers(KM)'
+    alert: 'The following values are taken from the PLC, please modify if there is any discrepancy',
+    fill: 'Please fill all fields.',
+    enterNumber: 'Please enter numbers',
+    enterContent: 'Please enter content',
+    exceedMax: 'Input value cannot exceed {max}'
   },
   modelTemplate: {
-    name: 'TemplateName',
-    nameHolder: 'Please enter a template name',
+    name: 'Template Name',
+    nameHolder: 'Please enter template name',
     status: 'Status',
-    createTime: 'CreateTime',
-    ec: 'EC',
-    update: 'Update',
+    createTime: 'Created Time',
+    ec: 'Device Classification Name',
+    update: 'Edit',
     delete: 'Delete'
   },
   iotDevice: {
-    name: 'DeviceName',
-    nameHolder: 'Please enter DeviceName',
-    code: 'DeviceCode',
-    codeHolder: 'Please enter DeviceCode',
-    yfCode: 'Yf Code',
-    yfCodeHolder: 'Please enter DeviceCode',
-    yfClass: '编码分类',
-    yfClassHolder: '请输入油服编码',
+    name: 'Device Name',
+    nameHolder: 'Please enter device name',
+    code: 'Historical coding',
+    codeHolder: 'Please enter a history code',
+    yfCode: 'Oil service code',
+    yfCodeHolder: 'Please enter the oil suit code',
+    yfClass: 'Encoding classification',
+    yfClassHolder: 'Please enter the oil suit code',
     brand: 'Brand',
-    brandHolder: 'Please enter Brand',
-    moreSearch: 'MoreSearch',
-    closeSearch: 'CloseSearch',
-    status: 'Status',
-    statusHolder: 'Status',
-    assets: 'Assets',
-    assetsHolder: 'Assets',
-    assetClass: 'assetClass',
-    serial: 'Serial',
+    brandHolder: 'Please enter brand',
+    moreSearch: 'More queries',
+    closeSearch: 'Collapse query',
+    status: 'Device Status',
+    statusHolder: 'Device Status',
+    assets: 'Nature of Assets',
+    assetsHolder: 'Nature of Assets',
+    assetClass: 'Type of assets',
+    serial: 'No.',
     dept: 'Department',
-    company: 'Company',
-    update: 'Update',
+    company: 'Affiliated companies',
+    update: 'Edit',
     delete: 'Delete',
-    upload: 'Upload'
+    upload: 'Data Upload'
   },
   deviceForm: {
-    basic: 'BasicInfo',
-    make: 'MakeInfo',
-    finance: 'FinanceInfo',
-    other: 'OtherInfo',
-    category: 'Category',
-    categoryHolder: 'Please select device category',
+    basic: 'Basic Information',
+    make: 'Manufacturing Information',
+    finance: 'Financial Information',
+    other: 'Other Information',
+    category: 'Device Category',
+    categoryHolder: 'Please select a device category',
     brand: 'Brand',
-    model: 'Model',
-    modelHolder: 'Please enter Model',
-    picture: 'Picture',
-    remark: 'Remark',
-    remarkHolder: 'Please enter Remark',
+    model: 'Specification/Model',
+    modelHolder: 'Please enter specification/model',
+    picture: 'Image',
+    remark: 'Remarks',
+    remarkHolder: 'Please enter remarks',
     mfg: 'Manufacturer',
     mfgHolder: 'Please enter the manufacturer',
-    pd: 'ProductionDate',
-    pdHolder: 'Please select the production date',
+    pd: 'Date of manufacture',
+    pdHolder: 'Please select a production date',
     supplier: 'Supplier',
     suppHolder: 'Please enter supplier',
-    enable: 'EnableDate',
-    enableHolder: 'Please enter enable date',
-    warranty: 'Warranty',
+    warranty: 'Warranty Expiration',
     warrHolder: 'Please select warranty expiration',
-    ni: 'Nameplate',
+    enable: 'Enabled Dates',
+    enableHolder: 'Please select an activation date',
+    ni: 'Nameplate Information',
     niHolder: 'Please enter nameplate information',
-    pp: 'PurchasePrice',
-    pdate: 'PurchaseDate',
-    dp: 'DepreciationPeriod',
-    ds: 'DepreciationStartDate',
-    yd: 'NumberOfMonthsOfDepreciation',
-    yy: 'AmountOfDepreciation',
-    sy: 'RemainingAmount',
-    // 每月折旧金额
-    my: 'MonthlyDepreciation',
-    // 总折旧月份
-    mmy: 'TotalDepreciationMonths',
-    // 币种
-    currency: 'Currency',
+    pp: 'purchase price:',
+    pdate: 'Purchase Date',
+    dp: 'Depreciable life',
+    ds: 'Depreciation Start Date',
+    yd: 'Number of Depreciation Months Provided',
+    yy: 'Depreciated Amount Provided',
+    sy: 'Amount Remaining:',
     choose: 'Please select',
-    expand: 'Expand',
-    close: 'Close',
+    expand: 'One-click expansion',
+    close: 'One-click collapse',
     save: 'Save',
-    return: 'Return',
-    useProject: 'useProject',
-    assetOwner: 'assetOwnership',
-    deptHolder: 'please select depart'
+    return: 'Back',
+    useProject: 'Use the Item',
+    assetOwner: 'Asset Attribution',
+    deptHolder: 'Please select a department'
   },
   file: {
-    name: 'FileName',
-    nameHolder: 'Please enter File Name',
+    name: 'File Name',
+    nameHolder: 'Please enter a file name',
     search: 'Search',
     reset: 'Reset',
-    upload: 'Upload',
-    fileType: 'FileType',
-    fileTypeHolder: 'Please select File Type',
-    fileSize: 'FileSize',
-    preview: 'Preview',
-    operation: 'Operation',
+    upload: 'File Upload',
+    fileType: 'File Type',
+    fileTypeHolder: 'Please select Document type',
+    fileSize: 'File &Size',
+    preview: 'View Preview',
+    operation: 'Actions',
     dow: 'Download',
     delete: 'Delete',
-    check: 'Check',
-    device: 'Associated Device',
-    dept: 'Associated Department'
+    check: 'View',
+    device: 'Owned Devices',
+    dept: 'Department'
   },
   fileInfo: {
-    fileDirectory: 'FileDirectory',
-    appendix: 'Appendix',
-    fileType: 'FileType',
-    remark: 'Remark',
-    rHolder: 'Please enter remark'
+    fileDirectory: 'Document Directories',
+    appendix: 'Attachment',
+    fileType: 'File Type',
+    remark: 'Remarks',
+    rHolder: 'Please enter remarks'
   },
   monitor: {
-    deviceName: 'DeviceName',
-    nameHolder: 'Please enter DeviceName',
-    deviceCode: 'DeviceCode',
-    codeHolder: 'Please enter DeviceCode',
+    deviceName: 'Device Name',
+    nameHolder: 'Please enter device name',
+    deviceCode: 'Device Code',
+    codeHolder: 'Please enter device code',
     search: 'Search',
     reset: 'Reset',
-    serial: 'Serial',
-    category: 'Category',
-    status: 'Status',
-    online: 'Online',
-    latestDataTime: 'LatestDataTime',
-    operation: 'Operation',
-    check: 'Check',
+    serial: 'No.',
+    category: 'Device Category',
+    status: 'Device Status',
+    online: 'Online status',
+    latestDataTime: 'Latest online time',
+    operation: 'Actions',
+    check: 'View',
     details: 'Details',
-    ifInline: 'IfOnline',
-    ifiInlineHolder: 'Please select OnlineStatus'
+    ifInline: 'Online status',
+    ifInlineHolder: 'Please select status',
+    'indexvue448501-0': 'Package name',
+    'indexvue448501-1': 'Please enter the kit name',
+    'indexvue448501-2': 'More',
+    'kanbanvue914852-0': 'Back',
+    'kanbanvue914852-1': 'Department Name',
+    'kanbanvue914852-2': 'Well No.',
+    'kanbanvue914852-3': 'Air Handling Skid Parameters',
+    'kanbanvue914852-4': 'Medium pressure machine parameters',
+    'kanbanvue914852-5': 'Air compressor parameters',
+    'kanbanvue914852-6': 'Hydraulic drive compressor parameters',
+    'kanban2vue728702-0': 'Back',
+    'kanban2vue728702-1': 'Department Name',
+    'kanban2vue728702-2': 'Well No.',
+    'kanban2vue728702-3': 'Supercharger Parameters',
+    'kanban2vue728702-4': 'Accumulated functioning time',
+    'kanban2vue728702-5': 'Status Parameters',
+    'kanban2vue728702-6': 'Nitrogen Parameters',
+    'kanban2vue728702-7': 'Wellhead parameters',
+    'kanban2vue728702-8': 'Type',
+    'kanban2vue728702-9': 'Device Number',
+    'kanban2vue728702-10': 'Status',
+    'kanban2vue728702-11': 'Main Device'
   },
   deviceAllot: {
-    setUp: 'SetUp',
-    adjustmentRecords: 'AllotRecords'
+    setUp: 'Transfer equipment',
+    adjustmentRecords: 'Post Stock moves'
   },
   devicePerson: {
-    deviceName: 'DeviceName',
-    nameHolder: 'Please enter DeviceName',
-    nicknameHolder: 'Username or Nickname',
-    deviceCode: 'DeviceCode',
-    codeHolder: 'Please enter DeviceCode',
-    responsiblePerson: 'ResponsiblePerson',
+    deviceName: 'Device Name',
+    nameHolder: 'Please enter device name',
+    nicknameHolder: 'User nickname or account',
+    deviceCode: 'Device Code',
+    codeHolder: 'Please enter device code',
+    responsiblePerson: 'Set Responsible Person',
     choose: 'Please select',
-    status: 'Status',
-    statusHolder: 'Status',
-    assets: 'Assets',
-    assetsHolder: 'Assets',
+    status: 'Device Status',
+    statusHolder: 'Device Status',
+    assets: 'Nature of Assets',
+    assetsHolder: 'Nature of Assets',
     brand: 'Brand',
-    brandHolder: 'Please enter Brand',
-    moreSearch: 'MoreSearch',
-    closeSearch: 'CloseSearch',
+    brandHolder: 'Please enter brand',
+    moreSearch: 'More queries',
+    closeSearch: 'Collapse query',
     search: 'Search',
     reset: 'Reset',
-    setUp: 'SetUp',
-    serial: 'Serial',
+    setUp: 'Set Responsible Person',
+    serial: 'No.',
     dept: 'Department',
-    rp: 'ResponsiblePerson',
-    operation: 'Operation',
-    adjustmentRecords: 'AdjustmentRecords',
-    filterDevicePlaceholder: 'Filter DeviceCode or DeviceName',
-    filterUserPlaceholder: 'Filter Username'
+    rp: 'Responsible Person',
+    operation: 'Actions',
+    adjustmentRecords: 'Adjustment Entry',
+    filterDevicePlaceholder: 'Enter device code or name to filter',
+    filterUserPlaceholder: 'Enter Responsible Name Filter'
   },
   configPerson: {
-    deviceList: 'DeviceList',
-    deviceListHolder: 'Please select the Department',
-    rp: 'ResponsiblePerson',
-    rpHolder: 'Please select the Department',
-    reasonForAdjustment: 'ReasonForAdjustment',
-    rfaHolder: 'Please enter reason',
-    adjustmentRecords: 'AdjustmentRecords',
-    selectPersons: 'Please select Person'
+    deviceList: 'Devices list',
+    deviceListHolder: 'Please select the department the device belongs to',
+    rp: 'Responsible person association settings',
+    rpHolder: 'Select department',
+    reasonForAdjustment: 'Adjustment Reason',
+    rfaHolder: 'Please enter an adjustment reason',
+    adjustmentRecords: 'Adjustment Entry',
+    selectPersons: 'Please select responsible person'
   },
   deviceStatus: {
-    deviceName: 'DeviceName',
-    nameHolder: 'Please enter DeviceName',
-    deviceCode: 'DeviceCode',
-    codeHolder: 'Please enter DeviceCode',
-    statusAdjust: 'StatusAdjust',
-    transfer: 'WhetherToTransfer',
+    deviceName: 'Device Name',
+    nameHolder: 'Please enter device name',
+    deviceCode: 'Device Code',
+    codeHolder: 'Please enter device code',
+    statusAdjust: 'Adjust Status',
+    transfer: 'Transfered',
     search: 'Search',
     reset: 'Reset',
-    setUp: 'SetUp',
+    setUp: 'Adjustment Status',
     choose: 'Please select',
-    moreSearch: 'MoreSearch',
-    closeSearch: 'CloseSearch',
-    status: 'Status',
-    statusHolder: 'Status',
-    assets: 'Assets',
-    assetsHolder: 'Assets',
+    moreSearch: 'More queries',
+    closeSearch: 'Collapse query',
+    status: 'Device Status',
+    statusHolder: 'Device Status',
+    assets: 'Nature of Assets',
+    assetsHolder: 'Nature of Assets',
     brand: 'Brand',
-    brandHolder: 'Please enter Brand',
-    serial: 'Serial',
+    brandHolder: 'Please enter brand',
+    serial: 'No.',
     dept: 'Department',
-    operation: 'Operation',
-    adjustmentRecords: 'AdjustmentRecords',
-    beforePerson: 'BeforeAdjustment',
-    afterPerson: 'AfterAdjustment',
-    beforeStatus: 'BeforeAdjustment',
-    afterStatus: 'AfterAdjustment',
-    beforeDept: 'BeforeAdjustment',
-    afterDept: 'AfterAdjustment',
-    adjuster: 'Adjuster',
-    adjustTime: 'AdjustTime'
+    operation: 'Actions',
+    adjustmentRecords: 'Adjustment Entry',
+    beforePerson: 'Pre-Adjustment Responsible',
+    afterPerson: 'Adjusted Responsible',
+    beforeStatus: 'Status Before Adjustment',
+    afterStatus: 'Adjusted status',
+    beforeDept: 'Pre-Adjustment Department',
+    afterDept: 'Adjusted Department',
+    adjuster: 'Adjusted by',
+    adjustTime: 'Adjust time'
   },
   configDevice: {
-    deviceList: 'DeviceList',
-    deptList: 'DepartmentList',
-    deviceListHolder: 'Please select the Department',
-    rp: 'DeviceStatus',
-    rpHolder: 'Please select the Department',
-    reasonForAdjustment: 'ReasonForAdjustment',
-    rfaHolder: 'Please enter reason',
-    adjustmentRecords: 'AdjustmentRecords'
+    deviceList: 'Devices list',
+    deptList: 'Department List',
+    deviceListHolder: 'Please select the department the device belongs to',
+    rp: 'Device Status',
+    rpHolder: 'Select department',
+    reasonForAdjustment: 'Adjustment Reason',
+    rfaHolder: 'Please enter an adjustment reason',
+    adjustmentRecords: 'Adjustment Entry'
   },
   fault: {
-    faultTitle: 'FaultTitle',
-    titleHolder: 'Please enter fault title',
+    faultTitle: 'Title',
+    titleHolder: 'Please enter a fault title',
     status: 'Status',
-    shutDown: 'ShutDown',
-    failureTime: 'FailureTime',
-    dealTime: 'DealTime',
-    start: 'StartTime',
-    end: 'EndTime',
-    solve: 'Solve',
-    assist: 'Assist',
+    shutDown: 'Stopped',
+    failureTime: 'Fault Time',
+    dealTime: 'Resolved At',
+    start: 'Start Time',
+    end: 'End Time',
+    solve: 'Resolution',
+    assist: 'Assisted',
     search: 'Search',
     reset: 'Reset',
-    moreSearch: 'MoreSearch',
-    closeSearch: 'CloseSearch',
-    added: 'Added',
-    serial: 'Serial',
-    deviceName: 'DeviceName',
-    approvalStatus: 'ApprovalStatus',
-    solveTime: 'SolveTime',
-    operation: 'Operation',
+    moreSearch: 'More queries',
+    closeSearch: 'Collapse query',
+    added: 'Add',
+    serial: 'No.',
+    deviceName: 'Device Name',
+    approvalStatus: 'Approval Status',
+    solveTime: 'Resolve Time',
+    operation: 'Actions',
     view: 'View',
     edit: 'Edit',
     del: 'Delete'
   },
   faultForm: {
-    failureType: 'FailureType',
+    failureType: 'Fault type',
+    failureTypeHolder: 'Please select a fault type',
     device: 'Device',
-    solve: 'Solve',
-    assist: 'Assist',
-    faultySystem: 'FaultySystem',
-    faultySystemHolder: 'Please enter the fault system',
-    failureTime: 'FailureTime',
-    dealTime: 'DealTime',
-    failureTimeHolder: 'Please select failure time',
-    shutDown: 'ShutDown',
-    picture: 'Picture',
-    faultImpact: 'FaultImpact',
-    faultImpactHolder: 'Please enter the fault impact',
-    faultDescription: 'FaultDescription',
-    remark: 'Remark',
-    rHolder: 'Please enter a remark',
+    solve: 'Resolution',
+    assist: 'Whether to assist',
+    faultySystem: 'Fault System',
+    faultySystemHolder: 'Please enter the malfunctioning system',
+    failureTime: 'Fault Time',
+    dealTime: 'Resolved At',
+    failureTimeHolder: 'Please select a downtime',
+    shutDown: 'Stopped or Not',
+    picture: 'Image',
+    faultImpact: 'failure effects',
+    faultImpactHolder: 'Please enter the impact of the failure',
+    faultDescription: 'Failure Description',
+    remark: 'Remarks',
+    rHolder: 'Please enter remarks',
     choose: 'Please select',
     ok: 'Confirm',
-    cancel: 'cancel',
-    deptId: 'DeptID',
-    approvalId: 'approver',
-    approvalHolder: 'Please select approver'
+    cancel: 'Cancel',
+    deptId: 'DepartmentID',
+    approvalId: 'Approver',
+    approvalHolder: 'Please select an approver'
   },
   deviceList: {
-    selectDevice: 'SelectDevice',
-    deviceName: 'DeviceName',
+    selectDevice: 'Select device',
+    deviceName: 'Device Name',
     nameHolder: 'Please enter device name',
-    deviceCode: 'DeviceCode',
+    deviceCode: 'Device Code',
     codeHolder: 'Please enter device code',
     search: 'Search',
     reset: 'Reset',
     select: 'Select',
-    createTime: 'CreateTime'
+    createTime: 'Created Time'
   },
   maintain: {
-    faultCode: 'FaultCode',
-    codeHolder: 'Please enter fault code',
-    faultName: 'FaultName',
-    nameHolder: 'Please enter fault name',
+    faultCode: 'Fault coding',
+    codeHolder: 'Please enter the fault code',
+    faultName: 'Fault name',
+    nameHolder: 'Please enter a fault name',
     status: 'Status',
     search: 'Search',
     reset: 'Reset',
-    moreSearch: 'MoreSearch',
-    closeSearch: 'CloseSearch',
-    added: 'Added',
-    shutDown: 'ShutDown',
-    failureTime: 'FailureTime',
-    solve: 'Solve',
-    assist: 'Assist',
-    serial: 'Serial',
-    deviceName: 'DeviceName',
-    source: 'Source',
-    audit: 'Audit',
-    operation: 'Operation',
+    moreSearch: 'More queries',
+    closeSearch: 'Collapse query',
+    added: 'Add',
+    shutDown: 'Stopped or Not',
+    failureTime: 'Fault Time',
+    solve: 'Resolution',
+    assist: 'Whether to assist',
+    serial: 'No.',
+    deviceName: 'Device Name',
+    source: 'Ticket Source',
+    audit: 'Review Status',
+    operation: 'Actions',
     view: 'View',
-    fill: 'Fill',
-    dept: 'Dept',
-    maintainWay: 'MaintenanceMethod',
-    methodDescription: 'MethodDescription',
-    record: 'Record',
-    phRepair: 'assit repair personnel',
-    phRepairHolder: 'please select assist repair personnel '
+    fill: 'Filling out',
+    dept: 'Related department',
+    maintainWay: 'Repair method',
+    methodDescription: 'Instructions on how to repair',
+    record: 'maintenance records',
+    phRepair: 'Cooperate with maintenance personnel',
+    phRepairHolder: 'Please select a repair person',
+    'indexvue989094-0': 'Execute time',
+    'indexvue989094-1': 'Start Date',
+    'indexvue989094-2': 'End Date',
+    'indexvue989094-3': 'Created Time',
+    'indexvue989094-4': 'Export',
+    'indexvue989094-5': 'Repair method',
+    'indexvue989094-6': 'Please select a repair method',
+    'indexvue989094-7': 'Remarks',
+    'indexvue989094-8': 'Please enter a note description',
+    'indexvue989094-9': 'Cancel',
+    'indexvue989094-10': 'Confirm',
+    'iotmaintai791469-0': 'Please select',
+    'iotmaintai802510-0': 'Fill in equipment failure, maintenance, and material usage information',
+    'iotmaintai802510-1': 'Back',
+    'iotmaintai802510-2': 'Ticket Message',
+    'iotmaintai802510-3': 'Please select',
+    'iotmaintai802510-4': 'Repair Items',
+    'iotmaintai802510-5': 'mrp.bom.line',
+    'iotmaintai019102-0': 'Repair Ticket Details',
+    'iotmaintai019102-1':
+      'View Equipment Failures, Repair Handling, and Associated Material Information',
+    'iotmaintai019102-2': 'Back',
+    'iotmaintai019102-3': 'Basic Information',
+    'iotmaintai019102-4': 'Repair Handling',
+    'iotmaintai019102-5': 'Outsourcing Information',
+    'iotmaintai019102-6': 'Failure Description',
+    'iotmaintai019102-7': 'Associated Material',
+    'iotmaintai019102-8': 'Material Details',
+    'iotmaintai309905-0': 'Fault coding',
+    'iotmaintai309905-1': 'Please enter the fault code',
+    'iotmaintai309905-2': 'Fault name',
+    'iotmaintai309905-3': 'Please enter a fault name',
+    'iotmaintai309905-4': 'Status',
+    'iotmaintai309905-5': 'Stopped or Not',
+    'iotmaintai309905-6': 'Please select dictionary to generate',
+    'iotmaintai309905-7': 'Fault Time',
+    'iotmaintai309905-8': 'Select downtime',
+    'iotmaintai309905-9': 'failure effects',
+    'iotmaintai309905-10': 'Please enter the impact of the failure',
+    'iotmaintai309905-11': 'Fault System',
+    'iotmaintai309905-12': 'Please enter the malfunctioning system',
+    'iotmaintai309905-13': 'Failure Description',
+    'iotmaintai309905-14': 'Image',
+    'iotmaintai309905-15': 'Please enter an image',
+    'iotmaintai309905-16': 'Solution',
+    'iotmaintai309905-17': 'Please enter a resolution',
+    'iotmaintai309905-18': 'Repair start time',
+    'iotmaintai309905-19': 'Select repair start time',
+    'iotmaintai309905-20': 'Repair End Time',
+    'iotmaintai309905-21': 'Select repair end time',
+    'iotmaintai309905-22': 'Remarks',
+    'iotmaintai309905-23': 'Please enter remarks',
+    'iotmaintai309905-24': 'Device Name',
+    'iotmaintai309905-25': 'Please enter device name',
+    'iotmaintai309905-26': 'Process Instance ID',
+    'iotmaintai309905-27': 'Please enter process instance ID',
+    'iotmaintai309905-28': 'Review Status',
+    'iotmaintai309905-29': 'Department ID',
+    'iotmaintai309905-30': 'Please enter department ID',
+    'iotmaintai309905-31': 'Confirm',
+    'iotmaintai309905-32': 'Cancel',
+    'iotmaintai216542-0':
+      'Review equipment repair information and maintain records of the repair process',
+    'iotmaintai216542-1': 'Back',
+    'iotmaintai216542-2': 'Ticket overview',
+    'iotmaintai216542-3': 'Oil service code',
+    'iotmaintai216542-4': 'Device Name',
+    'iotmaintai216542-5': 'Repair Type',
+    'iotmaintai216542-6': 'Repair start time',
+    'iotmaintai216542-7': 'Repair End Date',
+    'iotmaintai216542-8': 'Fault Time',
+    'iotmaintai216542-9': 'Maintenance personnel',
+    'iotmaintai216542-10': 'Fault System',
+    'iotmaintai216542-11': 'maintenance records',
+    'iotmaintai216542-12': 'Add',
+    'iotmaintai216542-13': 'track',
+    'iotmaintai216542-14': 'Repair time',
+    'iotmaintai216542-15': 'Start Date',
+    'iotmaintai216542-16': 'End Date',
+    'iotmaintai216542-17': 'Search',
+    'iotmaintai216542-18': 'Reset',
+    'iotmaintai216542-19': 'Repair Items',
+    'iotmaintai216542-20': 'Repair details',
+    'iotmaintai216542-21': 'Solution',
+    'iotmaintai216542-22': 'Image',
+    'iotmaintai216542-23': 'Created By',
+    'iotmaintai216542-24': 'Cooperate with maintenance personnel',
+    'iotmaintai216542-25': 'Remarks',
+    'iotmaintai216542-26': 'Created Time',
+    'iotmaintai216542-27': 'Actions',
+    'iotmaintai216542-28': 'Edit',
+    'choosemate285050-0': 'Select material',
+    'choosemate285050-1': 'Material Code',
+    'choosemate285050-2': 'Please enter material code',
+    'choosemate285050-3': 'Material Name',
+    'choosemate285050-4': 'Please enter material name',
+    'choosemate285050-5': 'Search',
+    'choosemate285050-6': 'Reset',
+    'choosemate285050-7': 'Select',
+    'choosemate285050-8': 'Unit',
+    'choosemate285050-9': 'Total Stock Quantity',
+    'indexvue732422-0': 'Select material',
+    'indexvue732422-1': 'New materials',
+    'indexvue732422-2': 'Material Code',
+    'indexvue732422-3': 'Material Name',
+    'indexvue732422-4': 'Unit',
+    'indexvue732422-5': 'Unit Price',
+    'indexvue732422-6': 'Consumed Quantity',
+    'indexvue732422-7': 'Total Stock Quantity',
+    'indexvue732422-8': 'Remarks',
+    'indexvue732422-9': 'Material Source',
+    'indexvue732422-10': 'Actions',
+    'indexvue732422-11': 'remove',
+    'iotmaintai888632-0': 'Material Code',
+    'iotmaintai888632-1': 'Please enter material code',
+    'iotmaintai888632-2': 'Material Name',
+    'iotmaintai888632-3': 'Please enter material name',
+    'iotmaintai888632-4': 'Unit',
+    'iotmaintai888632-5': 'Please enter unit',
+    'iotmaintai888632-6': 'Unit Price',
+    'iotmaintai888632-7': 'Please enter unit price',
+    'iotmaintai888632-8': 'Material Source',
+    'iotmaintai888632-9': 'Please select a material source',
+    'iotmaintai888632-10': 'Please select dictionary to generate',
+    'iotmaintai888632-11': 'Remarks',
+    'iotmaintai888632-12': 'Please enter remarks',
+    'iotmaintai888632-13': 'Confirm',
+    'iotmaintai888632-14': 'Cancel',
+    'materialse565535-0': 'Select material',
+    'materialse565535-1': 'Material Name',
+    'materialse565535-2': 'Please enter material name',
+    'materialse565535-3': 'Material Code',
+    'materialse565535-4': 'Please enter material code',
+    'materialse565535-5': 'Search',
+    'materialse565535-6': 'Reset',
+    'materialse565535-7': 'Select',
+    'materialse565535-8': 'Specification/Model',
+    'materialse565535-9': 'Unit',
+    'materialse565535-10': 'Status',
+    'materialse565535-11': 'Created Time',
+    'indexvue857264-0': 'Device ID',
+    'indexvue857264-1': 'Please enter device ID',
+    'indexvue857264-2': 'Repair Date Time',
+    'indexvue857264-3': 'Start Date',
+    'indexvue857264-4': 'End Date',
+    'indexvue857264-5': 'Image',
+    'indexvue857264-6': 'Please enter an image',
+    'indexvue857264-7': 'Solution',
+    'indexvue857264-8': 'Please enter a resolution',
+    'indexvue857264-9': 'Remarks',
+    'indexvue857264-10': 'Please enter remarks',
+    'indexvue857264-11': 'Created Time',
+    'indexvue857264-12': 'Device Name',
+    'indexvue857264-13': 'Please enter device name',
+    'indexvue857264-14': 'Search',
+    'indexvue857264-15': 'Reset',
+    'indexvue857264-16': 'Add',
+    'indexvue857264-17': 'Export',
+    'indexvue857264-18': 'Primary Key ID',
+    'indexvue857264-19': 'Repair details',
+    'indexvue857264-20': 'Actions',
+    'indexvue857264-21': 'Edit',
+    'indexvue857264-22': 'Delete',
+    'iotjdrecor921659-0': 'Repair time',
+    'iotjdrecor921659-1': 'Select repair time',
+    'iotjdrecor921659-2': 'Repair Items',
+    'iotjdrecor921659-3': 'Image',
+    'iotjdrecor921659-4': 'Repair details',
+    'iotjdrecor921659-5': 'Solution',
+    'iotjdrecor921659-6': 'Please enter a resolution',
+    'iotjdrecor921659-7': 'Remarks',
+    'iotjdrecor921659-8': 'Please enter remarks',
+    'iotjdrecor921659-9': 'Confirm',
+    'iotjdrecor921659-10': 'Cancel'
   },
   iotMaintain: {
-    showAllMaterials: 'Show all',
-    deviceHolder: 'Please select device',
-    shutDownHolder: 'ShutDown',
-    ifNeed: 'Are materials required',
-    startTimeHolder: 'StartTime',
-    endTimeHolder: 'EndTime',
-    failureTimeHolder: 'FailureTime',
-    failureImpactHolder: 'Please enter failure impact',
-    faultySystemHolder: 'Please enter faulty system',
-    remarkHolder: 'Please enter remark',
-    PersonInCharge: 'PersonInCharge',
+    device: 'Device',
+    ifNeed: 'Do you need materials?',
+    deviceHolder: 'Please select the equipment',
+    shutDownHolder: 'Stopped or Not',
+    startTimeHolder: 'Select repair start time',
+    endTimeHolder: 'Select repair end time',
+    failureTimeHolder: 'Select downtime',
+    failureImpactHolder: 'Please enter the impact of the failure',
+    faultySystemHolder: 'Please enter the malfunctioning system',
+    remarkHolder: 'Please enter remarks',
+    repairTypeHolder: 'Please select a repair type',
+    PersonInCharge: 'Responsible Person',
     supplier: 'Supplier',
     suppHolder: 'Please enter supplier',
-    attachment: 'Attachment',
-    addMaterials: 'Add Materials',
-    device: 'Device',
-    repairType: 'RepairType',
-    shutDown: 'ShutDown',
-    startTime: 'StartTime',
-    endTime: 'EndTime',
-    failureTime: 'FailureTime',
-    failureImpact: 'FailureImpact',
-    faultySystem: 'FaultySystem',
-    picture: 'Picture',
-    repairCosts: 'RepairCosts',
-    costHolder: 'Please enter repair costs',
-
-    faultDescription: 'FaultDescription',
-    repairDescription: 'RepairDescription',
+    attachment: 'Outsourcing Related Attachments',
+    showAllMaterials: 'Show all items',
+    repairType: 'Repair Type',
+    shutDown: 'Stopped or Not',
+    startTime: 'Repair start time',
+    endTime: 'Repair End Time',
+    failureTime: 'Fault Time',
+    failureImpact: 'failure effects',
+    faultySystem: 'Fault System',
+    picture: 'Image',
+    repairCosts: 'Repair costs',
+    costHolder: 'Please enter a repair cost',
+    faultDescription: 'Failure Description',
+    repairDescription: 'Repair description',
     solution: 'Solution',
-    soHolder: 'Please enter solution',
-    remark: 'Remark',
-    selectMaintenanceItem: 'SelectMaintenanceItem',
-    addMaintenanceItems: 'AddMaintenanceItems',
-
-    deviceName: 'DeviceName',
-    deviceCode: 'DeviceCode',
-    repairItems: 'RepairItems',
-    repairItemsHolder: 'Please enter repair items',
-    numberOfMaterials: 'NumberOfMaterials',
-    operation: 'Operation',
-    remove: 'Remove',
-    selectMaterials: 'SelectMaterials',
-    viewMaterials: 'ViewMaterials',
+    soHolder: 'Please enter a resolution',
+    remark: 'Remarks',
+    selectMaintenanceItem: 'Select Repair Items',
+    addMaintenanceItems: 'Add New Repair Item',
+    deviceName: 'Device Name',
+    deviceCode: 'Device Code',
+    repairItems: 'Repair Items',
+    repairItemsHolder: 'Please enter a repair item',
+    numberOfMaterials: 'Quantity of materials',
+    operation: 'Actions',
+    remove: 'remove',
+    selectMaterials: 'Select material',
+    addMaterials: 'Add Material',
+    viewMaterials: 'View Material',
     save: 'Save',
     cancel: 'Cancel',
-    BOMNodeID: 'BOMNodeID',
+    BOMNodeID: 'BOM Node ID',
     ok: 'Confirm',
-    address: 'RepairAddress',
-    maintainClassify: 'RepairClassify',
-    maintainClassifyHolder: 'Please select repairClassify',
-    applyPerson: 'applyPerson',
-    applyDept: 'applyDept',
-    applyPersonHolder: 'Please select applyDept',
-    projectManager: 'ProjectManager',
-    projectManagerHolder: 'Please select projectManager',
-    maintainItem: 'Please enter maintainItem',
-    kmHour: 'operating km/hour',
-    kmHourHolder: 'please enter operating km/hour',
-    oaFlowNo: 'oaFlowNo',
+    address: 'Repair location',
+    maintainClassify: 'Maintenance Type',
+    maintainClassifyHolder: 'Please select a repair category',
+    applyPerson: 'Applicant',
+    applyDept: 'Department',
+    applyPersonHolder: 'Please select an applicant',
+    projectManager: 'Project Manager',
+    projectManagerHolder: 'Please select a project manager',
+    maintainItem: 'Repair Items',
+    kmHour: 'Operating km/h',
+    kmHourHolder: 'Please enter the running kilometers/hour',
+    oaFlowNo: 'oa process number',
     quantityHolder: 'Please enter quantity'
   },
   workOrderMaterial: {
-    materialCode: 'MaterialCode',
+    materialCode: 'Material Code',
     codeHolder: 'Please enter material code',
-    materialName: 'MaterialName',
+    materialName: 'Material Name',
     nameHolder: 'Please enter material name',
     search: 'Search',
     reset: 'Reset',
     confirm: 'Confirm',
-    added: 'Added',
+    added: 'New materials',
     select: 'Select',
     factory: 'Factory',
-    costCenter: 'CostCenter',
-    storageLocation: 'StorageLocation',
+    costCenter: 'Cost Centre',
+    storageLocation: 'Inventory Location',
     unit: 'Unit',
     unitHolder: 'Please enter unit',
-    unitPrice: 'UnitPrice',
-    unitPriceHolder: 'Please enter unitPrice',
-    total: 'Total',
-    source: 'Source',
-    ConsumptionQuantity: 'ConsumptionQuantity',
-    materialGroup: 'MaterialGroup',
-    groupHolder: 'Please select material group',
+    unitPrice: 'Unit Price',
+    unitPriceHolder: 'Please enter unit price',
+    total: 'Total Stock Quantity',
+    source: 'Get from',
+    ConsumptionQuantity: 'Consumed Quantity',
+    materialGroup: 'REF family',
+    groupHolder: 'Please select the item group to which you belong',
     delayReason: 'Delay Reason',
-    inputDelayReason: 'Please input reason',
-    back: 'back'
+    inputDelayReason: 'Please enter the reason for the delay',
+    back: 'Return'
   },
   chooseMaintain: {
-    selectRepairItem: 'SelectRepairItem',
-    materialCode: 'MaterialCode',
+    selectRepairItem: 'Select Repair Items',
+    materialCode: 'Material Code',
     codeHolder: 'Please enter material code',
-    materialName: 'MaterialName',
+    materialName: 'Material Name',
     nameHolder: 'Please enter material name',
     search: 'Search',
     reset: 'Reset',
     confirm: 'Confirm',
-    selectAll: 'SelectAll',
-    cancelAllSelection: 'CancelAllSelection',
-    deviceName: 'DeviceName',
-    deviceCode: 'DeviceCode',
-    repairItems: 'RepairItems',
-    createTime: 'CreateTime'
+    selectAll: 'Select all',
+    cancelAllSelection: 'Batalkan Semua Pilihan',
+    deviceName: 'Device Name',
+    deviceCode: 'Asset Code',
+    repairItems: 'Repair Items',
+    createTime: 'Created Time'
   },
   info: {
-    deviceClass: 'DeviceClass',
-    classHolder: 'Please select device class',
-    faultySystem: 'FaultySystem',
-    faultySystemHolder: 'Please enter faulty system',
-    createTime: 'CreateTime',
-    start: 'StartDate',
-    end: 'EndDate',
+    deviceClass: 'Device Category',
+    classHolder: 'Please select a device category',
+    faultySystem: 'Fault System',
+    faultySystemHolder: 'Please enter the malfunctioning system',
+    createTime: 'Created Time',
+    start: 'Start Date',
+    end: 'End Date',
     search: 'Search',
     reset: 'Reset',
     add: 'Add',
     description: 'Description',
     delete: 'Delete',
     edit: 'Edit',
-    classHolder1: 'Device class cannot be empty',
-    faultyImpact: 'Faulty impact cannot be empty',
-    solution: 'Solution cannot be empty'
+    classHolder1: 'Device classification cannot be empty',
+    faultyImpact: 'Fault impact cannot be empty',
+    solution: 'Resolution cannot be empty',
+    'indexvue917001-0': 'Profile Classification Name',
+    'indexvue917001-1': 'Please enter a profile category name',
+    'indexvue917001-2': 'Profile Classification Status',
+    'indexvue917001-3': 'Please select a profile classification status',
+    'indexvue917001-4': 'Search',
+    'indexvue917001-5': 'Reset',
+    'indexvue917001-6': 'Add',
+    'indexvue917001-7': 'Sort',
+    'indexvue917001-8': 'Status',
+    'indexvue917001-9': 'Remarks',
+    'indexvue917001-10': 'Created Time',
+    'indexvue917001-11': 'Actions',
+    'indexvue917001-12': 'Edit',
+    'indexvue917001-13': 'Delete',
+    'infoclassi396975-0': 'Parent Profile Classification',
+    'infoclassi396975-1': 'Please select a parent profile category',
+    'infoclassi396975-2': 'Profile Classification Name',
+    'infoclassi396975-3': 'Please enter a profile category name',
+    'infoclassi396975-4': 'Display Order',
+    'infoclassi396975-5': 'Status',
+    'infoclassi396975-6': 'Please select status',
+    'infoclassi396975-7': 'Remarks',
+    'infoclassi396975-8': 'Please enter remarks',
+    'infoclassi396975-9': 'Confirm',
+    'infoclassi396975-10': 'Cancel'
   },
   calender: {
-    loading: 'loading',
+    loading: 'Loading',
     today: 'Today',
-    month: 'MonthView',
-    week: 'WeekView',
-    maintenance: 'MaintenanceOrder',
-    repair: 'RepairOrder'
+    month: 'Month View',
+    week: 'Weekly',
+    maintenance: 'Maintenance Work Order',
+    repair: 'Maintenance order'
   },
   deviceInfo: {
-    basicInformation: 'BasicInformation',
+    basicInformation: 'Basic Information',
     mfg: 'Manufacturer:',
-    pd: 'ProductionDate:',
+    pd: 'Production date:',
     supplier: 'Supplier:',
-    ni: 'Nameplate:',
-    warranty: 'Warranty:',
-    pp: 'PurchasePrice:',
-    pdate: 'PurchaseDate:',
-    dp: 'DepreciationPeriod:',
-    ds: 'DepreciationStartDate:',
-    yd: 'NumberOfMonthsOfDepreciation:',
-    yy: 'AmountOfDepreciation:',
-    sy: 'RemainingAmount:',
-
-    fileLibrary: 'FileLibrary',
-    deviceBOM: 'DeviceBOM',
-    operationRecords: 'OperationRecords',
-    faultRecords: 'FaultRecords',
-    repairRecords: 'RepairRecords',
-    maintenanceRecords: 'MaintenanceRecords',
-    inspectionRecords: 'InspectionRecords',
-    transferRecords: 'TransferRecords',
-    statusChangeRecords: 'StatusChangeRecords',
-    RPAdjustmentRecords: 'RPAdjustmentRecords',
-    associationDevices: 'AssociationDevices',
-    checkCert: 'InspectionCertificate'
+    ni: 'Nameplate Information:',
+    warranty: 'Warranty Expiration:',
+    pp: 'purchase price:',
+    pdate: 'Purchase Date',
+    dp: 'Depreciable life',
+    ds: 'Depreciation Start Date:',
+    yd: 'Number of Depreciation Months Provided:',
+    yy: 'Depreciated Amount Provided:',
+    sy: 'Amount Remaining:',
+    my: 'Monthly Depreciation Amount:',
+    mmy: 'Total Depreciation Month:',
+    currency: 'Currency Type:',
+    fileLibrary: 'Library',
+    deviceBOM: 'Device BOM',
+    operationRecords: 'Run Record',
+    faultRecords: 'Fault recording',
+    repairRecords: 'maintenance records',
+    maintenanceRecords: 'Maintenance record',
+    inspectionRecords: 'Inspection Record',
+    transferRecords: 'Post Stock moves',
+    statusChangeRecords: 'Status Change Record',
+    RPAdjustmentRecords: 'Responsible person adjustment record',
+    associationDevice: 'Link Device',
+    checkCert: 'Test certificate'
   },
   bomList: {
-    bomNodeName: 'BOMNodeName',
-    nameHolder: 'Please enter BOM Node Name',
-    bomNode: 'BOMNode',
+    bomNodeName: 'BOM Node Name',
+    nameHolder: 'Please enter a BOM node name',
+    bomNode: 'BOM Node',
     nodeHolder: 'Please select node',
     search: 'Search',
     reset: 'Reset',
     add: 'Add',
-    unfold: 'Unfold/Fold',
-    superiorBOM: 'SuperiorBOM',
-    bomHolder: 'Please select superior BOM',
-    BOMNodeAttributes: 'BOM node attributes',
+    unfold: 'Expand/Collapse',
+    superiorBOM: 'Superior BOM',
+    bomHolder: 'Please select parent BOM',
+    BOMNodeAttributes: 'BOM Node Properties',
     sort: 'Sort',
     status: 'Status',
-    materialDetail: 'MaterialDetail',
-    name: 'Name',
-    nHolder: 'Please enter name',
-    serviceDue: 'ServiceDue',
-    code: 'Code',
-    codeHolder: 'Please enter code',
-    type: 'Type'
+    materialDetail: 'Material Details',
+    name: 'Work Order Name',
+    nHolder: 'Please enter %s name',
+    serviceDue: 'Distance Maintenance',
+    code: 'Ticket code',
+    codeHolder: 'Please enter the ticket code',
+    type: '&Genre'
   },
   main: {
-    planCode: 'PlanCode',
-    codeHolder: 'Please enter plan code',
-    planName: 'PlanName',
-    nameHolder: 'Please enter plan name',
-    mileage: 'Mileage',
-    runTime: 'RunTime',
-    date: 'Date',
-    currentDate: 'Current Date',
+    planCode: 'Plan Number',
+    codeHolder: 'Please enter the plan number',
+    planName: 'The name of the plan',
+    nameHolder: 'Please enter a plan name',
+    mileage: 'Running mileage',
+    runTime: 'Run time',
+    date: 'Natural Date',
+    currentDate: 'Cart update',
     maintenanceMileage: 'Maintenance Mileage',
-    maintenanceRuntime: 'Maintenance Runtime',
+    maintenanceRuntime: 'Maintenance Duration',
     maintenanceDate: 'Maintenance Date'
   },
   mainPlan: {
-    basicMaintenanceRecords: 'BasicMaintenanceRecords',
-    lastMaintenanceMileage: 'LastMaintenanceMileage(KM)',
-    lastMaintenanceOperationTime: 'LastMOTime(H)',
-    lastMaintenanceNaturalDate: 'LastMaintenanceNaturalDate',
-    lastMaintenanceDate: 'LastMaintenanceTime',
-    operatingMileageRuleConfiguration: 'OperatingMileageRuleConfig',
-    operatingMileageCycle: 'OperatingMileageCycle(KM)',
-    OperatingMileageCycle_lead: 'OMC_Lead(KM)',
-    RunTimeRuleConfiguration: 'RunTimeRuleConfig',
-    RunTimeCycle: 'RunTimeCycle(H)',
-    RunTimeCycle_Lead: 'RunTimeCycle_Lead(H)',
-    NaturalDayRuleConfig: 'NaturalDayRuleConfig',
-    NaturalDailyCycle: 'NaturalDailyCycle(D)',
-    NaturalDailyCycle_Lead: 'NaturalDailyCycle_Lead(D)',
-    duty: 'DutyList',
-    deviceId: 'DeviceID',
-    MaintenanceMethod: 'MaintMethod',
-    MaintenanceResult: 'MaintResult',
-    MaintenanceCost: 'MaintCost(元)',
-    otherCost: 'OtherCost(元)',
-    DelayKil: 'DelayKil(KM)',
-    DelayDuration: 'DelayDuration',
-    DelayDate: 'DelayDate(D)',
-    MaintItemsGroup: 'MaintItemsGroup',
-    MaintItems: 'MaintItems',
-    haveMaintItems: 'have Items',
-    noMaintItems: 'no Items',
-    deviceBomMaterials: 'DeviceBomMaterials',
-    nextMaintTime: 'NextMaintTime(H)',
-    nextMaintKil: 'NextMaintKil(KM)',
-    nextMaintDate: 'NextMaintDate',
-    nextMaintenanceKm: 'NextMaintKil(KM)',
-    nextMaintenanceH: 'NextMaintTime(H)',
-    remainKm: 'Remaining Mileage(KM)',
-    remainH: 'Remaining Duration(H)',
-    remainDay: 'Remaining Day',
-    completed: 'Completed',
-    delayed: 'Delayed',
-    maintaining: 'Maintaining',
-    accumulatedParams: 'COP',
-    accumulatedRunTime: 'COT',
-    accumulatedMileage: 'COK',
-    runningTimeCycleError: 'MCT must be greater than 0',
-    maintenanceQuery: 'Maintenance Query',
-    notGenerated: 'Not Generated',
-    generatedNotExecuted: 'Not Executed',
+    basicMaintenanceRecords: 'Basic Maintenance Record',
+    lastMaintenanceMileage: 'Last Maintenance Mileage (KM)',
+    lastMaintenanceOperationTime: '& Last maintenance duration',
+    lastMaintenanceNaturalDate: 'Last Service Date:',
+    lastMaintenanceDate: 'Last Maintenance Time',
+    operatingMileageRuleConfiguration: 'Run Mileage Rule Configuration',
+    operatingMileageCycle: 'Running Mileage Cycle (KM)',
+    OperatingMileageCycle_lead: 'Running Mileage Cycle - Lead Amount (KM)',
+    RunTimeRuleConfiguration: 'Runtime Rule Configuration',
+    RunTimeCycle: 'Runtime period (H)',
+    RunTimeCycle_Lead: 'Runtime Period - Lead Time (H)',
+    NaturalDayRuleConfig: 'Natural Day Rule Configuration',
+    NaturalDailyCycle: '& Natural daily cycle',
+    NaturalDailyCycle_Lead: 'Natural Daily Cycle - Advance (D)',
+    duty: 'List of owners associated with the selected device',
+    deviceId: 'Device ID',
+    MaintenanceMethod: 'Maintenance method',
+    MaintenanceResult: 'Maintenance results',
+    MaintenanceCost: 'Maintenance cost (yuan)',
+    otherCost: 'Other expenses (yuan)',
+    DelayKil: 'Deferred kilometers (KM)',
+    DelayDuration: 'Delay duration',
+    DelayDate: '& Defer Natural Date',
+    MaintItemsGroup: 'Maintenance item group',
+    MaintItems: 'Maintenance Items',
+    haveMaintItems: 'Has Maintenance Items',
+    noMaintItems: 'No maintenance items',
+    deviceBomMaterials: 'Maintenance Item Material',
+    nextMaintTime: '& Time to next maintenance run',
+    nextMaintKil: 'Kilometers to next service (KM)',
+    nextMaintDate: 'Date of the next preventive maintenance',
+    nextMaintenanceKm: 'Kilometers serviced next time (KM)',
+    nextMaintenanceH: 'Next Service & Hours',
+    remainKm: 'Remaining kilometers (KM)',
+    remainH: 'Remaining & Hours',
+    remainDay: 'Days Remaining',
+    completed: 'Complete',
+    delayed: 'Time Delay',
+    maintaining: 'Under Maintenance',
+    accumulatedParams: 'Cumulative Operating Parameters',
+    accumulatedRunTime: 'Cumulative run time',
+    accumulatedMileage: 'Cumulative operating kilometers',
+    runningTimeCycleError: 'Run time period must be greater than 0',
+    maintenanceQuery: 'Maintenance Inquiry',
+    notGenerated: 'No ticket generated',
+    generatedNotExecuted: 'Generated Work Order Not Executed',
     consumeMaterials: 'Consumables',
-    mainStatus: 'Upkeep Status',
-    mainRuntimeError: 'Main Runtime Error',
-    mainMileageError: 'Main Mileage Error'
+    mainStatus: 'Maintenance Status',
+    mainRuntimeError: 'Cumulative run time error during maintenance!',
+    mainMileageError: 'Errors in accumulated running kilometers during maintenance!'
   },
   inspect: {
-    InspectionItems: 'InspectionItems',
-    itemHolder: 'Please enter inspection items',
-    sortHolder: 'Please enter sort holder',
-    InspectionStandards: 'IS',
-    stanHolder: 'Please enter inspections standards',
-    isException: 'InspectResult',
-    exceptionDes: 'ExceptionDes',
-    inspectTime: 'InspectionTime',
-    createName: 'creator',
-    itemNormal: 'NormalItem',
-    itemException: 'ExceptionItem',
-    itemNeed: 'FillInItem',
-    deviceCount: 'DeviceCount',
-    exceptionCount: 'ExceptionDevice',
-    needDevice: 'FillInDevice',
-    routeDesc: 'routeDescription',
-    routeDescHolder: 'please enter route description',
-    generateTime: 'GenerateTime',
-    executeTime: 'ExecuteTime',
-    ignore: 'ignore',
-    reason: 'ignoreReason'
+    InspectionItems: 'Patrol inspection items',
+    itemHolder: 'Please enter a patrol item',
+    sortHolder: 'Please enter sort order',
+    InspectionStandards: 'Inspection standards',
+    stanHolder: 'Please enter inspection criteria',
+    isException: 'Patrol results',
+    exceptionDes: 'Abnormal description',
+    inspectTime: 'Inspection time',
+    createName: 'Created By',
+    itemNormal: 'Normal patrol items',
+    itemException: 'Abnormal inspection items',
+    itemNeed: 'Patrol items to be filled in',
+    deviceCount: 'Number of devices to be inspected',
+    exceptionCount: 'Number of abnormal devices',
+    needDevice: 'Number of missed devices',
+    routeDesc: 'Route description',
+    routeDescHolder: 'Please enter a route description',
+    generateTime: 'Created at',
+    executeTime: 'Execute time',
+    ignore: 'Neglect',
+    reason: 'Ignore Reason',
+    'indexvue505289-0': 'Export',
+    'iotinspect481654-0':
+      'Maintenance inspection equipment, inspection items and implementation standards',
+    'iotinspect481654-1': 'Basic Information',
+    'iotinspect481654-2': 'Inspection contents',
+    'indexvue220200-0': 'Work order ID',
+    'indexvue220200-1': 'Please enter the ticket id',
+    'indexvue220200-2': 'Device ID',
+    'indexvue220200-3': 'Please enter device ID',
+    'indexvue220200-4': 'Inspection item ID',
+    'indexvue220200-5': 'Please enter the inspection item ID',
+    'indexvue220200-6': 'Normal or not',
+    'indexvue220200-7': 'Please select if it is normal',
+    'indexvue220200-8': 'Please select dictionary to generate',
+    'indexvue220200-9': 'Image',
+    'indexvue220200-10': 'Please enter an image',
+    'indexvue220200-11': 'Remarks',
+    'indexvue220200-12': 'Please enter remarks',
+    'indexvue220200-13': 'Created Time',
+    'indexvue220200-14': 'Start Date',
+    'indexvue220200-15': 'End Date',
+    'indexvue220200-16': 'Department ID',
+    'indexvue220200-17': 'Please enter department ID',
+    'indexvue220200-18': 'Search',
+    'indexvue220200-19': 'Reset',
+    'indexvue220200-20': 'Add',
+    'indexvue220200-21': 'Export',
+    'indexvue220200-22': 'Primary Key ID',
+    'indexvue220200-23': 'Abnormal description',
+    'indexvue220200-24': 'Actions',
+    'indexvue220200-25': 'Edit',
+    'indexvue220200-26': 'Delete',
+    'iotinspect796627-0': 'Work order ID',
+    'iotinspect796627-1': 'Please enter the ticket id',
+    'iotinspect796627-2': 'Device ID',
+    'iotinspect796627-3': 'Please enter device ID',
+    'iotinspect796627-4': 'Inspection item ID',
+    'iotinspect796627-5': 'Please enter the inspection item ID',
+    'iotinspect796627-6': 'Normal or not',
+    'iotinspect796627-7': 'Please select dictionary to generate',
+    'iotinspect796627-8': 'Abnormal description',
+    'iotinspect796627-9': 'Image',
+    'iotinspect796627-10': 'Please enter an image',
+    'iotinspect796627-11': 'Remarks',
+    'iotinspect796627-12': 'Please enter remarks',
+    'iotinspect796627-13': 'Department ID',
+    'iotinspect796627-14': 'Please enter department ID',
+    'iotinspect796627-15': 'Confirm',
+    'iotinspect796627-16': 'Cancel',
+    'iotinspect089765-0': '&Normal',
+    'iotinspect089765-1': 'to be filled',
+    'iotinspect089765-2': 'Abnormal',
+    'indexvue317870-0': 'Export',
+    'indexvue317870-1': 'Ignore Reason',
+    'indexvue317870-2': 'Reason',
+    'indexvue317870-3': 'Please enter a reason for ignoring',
+    'indexvue317870-4': 'Cancel',
+    'indexvue317870-5': 'Confirm',
+    'inspectord373631-0':
+      'View basic work order information and equipment inspection results statistics',
+    'inspectord373631-1': 'Back',
+    'inspectord373631-2': 'Ticket Message',
+    'inspectord373631-3': 'Equipment inspection',
+    'iotinspect143656-0': 'Patrol Worklist Name',
+    'iotinspect143656-1': 'Please enter the name of the inspection work order',
+    'iotinspect143656-2': 'Patrol Work Order Code',
+    'iotinspect143656-3': 'Please enter the patrol work order code',
+    'iotinspect143656-4': 'Patrol Work Order Status',
+    'iotinspect143656-5': 'Please select dictionary to generate',
+    'iotinspect143656-6': 'Remarks',
+    'iotinspect143656-7': 'Please enter remarks',
+    'iotinspect143656-8': 'Department ID',
+    'iotinspect143656-9': 'Please enter department ID',
+    'iotinspect143656-10': 'Device ID',
+    'iotinspect143656-11': 'Please enter device ID',
+    'iotinspect143656-12': 'Confirm',
+    'iotinspect143656-13': 'Cancel',
+    'ordercompo248259-0': '`Step ${index + 1}`',
+    'ordercompo248259-1': 'Name',
+    'ordercompo248259-2': 'Mailbox',
+    'ordercompo248259-3': 'Code',
+    'ordercompo248259-4': 'Sebelumnya',
+    'writeorder085539-0': 'Fill in the Patrol Work Order',
+    'writeorder085539-1':
+      'Fill in the inspection results and abnormal information according to the order of equipment and inspection items',
+    'writeorder085539-2': 'Back',
+    'writeorder085539-3': 'Equipment inspection',
+    'writeorder085539-4': 'Device ID',
+    'writeorder085539-5': 'Sebelumnya',
+    'writeorder099381-0': 'Whether it is abnormal',
+    'writeorder099381-1': 'Please select if it is abnormal',
+    'writeorder099381-2': 'Abnormal description',
+    'writeorder099381-3': 'Please fill in the exception description',
+    'writeorder099381-4': 'Image',
+    'writeorder099381-5': 'Sebelumnya',
+    'indexvue536735-0': 'Export',
+    'inspectrou344758-0':
+      'Screen and select the routes of inspection equipment that need to be added to the plan',
+    'inspectrou344758-1': 'Please select department',
+    'inspectrou344758-2': 'Cancel',
+    'iotinspect197586-0':
+      'Configure inspection cycle, first execution time and equipment route sequence',
+    'iotinspect197586-1': 'Back',
+    'iotinspect197586-2': 'Plan Information',
+    'iotinspect197586-3': 'Please select the first execution time',
+    'iotinspect197586-4': 'Please enter remarks',
+    'iotinspect197586-5': 'Inspection Equipment Route',
+    'iotinspect470326-0': 'Patrol Plan Title',
+    'iotinspect470326-1': 'Please enter a title for the inspection plan',
+    'iotinspect470326-2': 'Inspection plan number',
+    'iotinspect470326-3': 'Please enter the inspection plan number',
+    'iotinspect470326-4': 'Period',
+    'iotinspect470326-5': 'Please enter a period',
+    'iotinspect470326-6': 'Unit',
+    'iotinspect470326-7': 'Please enter unit',
+    'iotinspect470326-8': 'Responsible Person',
+    'iotinspect470326-9': 'Please enter the person in charge',
+    'iotinspect470326-10': 'Device',
+    'iotinspect470326-11': 'Please enter a device',
+    'iotinspect470326-12': 'Remarks',
+    'iotinspect470326-13': 'Please enter remarks',
+    'iotinspect470326-14': 'Department ID',
+    'iotinspect470326-15': 'Please enter department ID',
+    'iotinspect470326-16': 'Confirm',
+    'iotinspect470326-17': 'Cancel',
+    'indexvue602729-0': 'Export',
+    'inspectite276348-0': 'Filter and select patrol items that need to be added to the route',
+    'inspectite276348-1': 'Cancel',
+    'iotinspect599866-0':
+      'Configure the inspection equipment, route description and inspection item execution order',
+    'iotinspect599866-1': 'Back',
+    'iotinspect599866-2': 'Route Information',
+    'iotinspect599866-3': 'Patrol Item Sequence',
+    'iotinspect952030-0': 'Route name',
+    'iotinspect952030-1': 'Please enter a route name',
+    'iotinspect952030-2': 'Device Category',
+    'iotinspect952030-3': 'Please enter a device classification',
+    'iotinspect952030-4': 'Device ID',
+    'iotinspect952030-5': 'Please enter device ID',
+    'iotinspect952030-6': 'Device Classification Name',
+    'iotinspect952030-7': 'Please enter a device classification name',
+    'iotinspect952030-8': 'Device Name',
+    'iotinspect952030-9': 'Please enter device name',
+    'iotinspect952030-10': 'Patrol inspection items',
+    'iotinspect952030-11': 'Please enter a patrol item',
+    'iotinspect952030-12': 'Remarks',
+    'iotinspect952030-13': 'Please enter remarks',
+    'iotinspect952030-14': 'Department ID',
+    'iotinspect952030-15': 'Please enter department ID',
+    'iotinspect952030-16': 'Confirm',
+    'iotinspect952030-17': 'Cancel'
   },
   route: {
-    RouteName: 'RouteName',
-    nHolder: 'Please enter route name',
-    selectInspectionItems: 'SelectInspectionItems',
-    unitHolder: 'Please select unit',
-    cycle: 'Cycle',
-    beginCreateTime: 'firstExecuteTime',
-    SelectInspectionDevice: 'SelectInspectionDevice',
-    SelectOperationDevice: 'SelectOperationDevice',
-    InspectionRoute: 'InspectionRoute',
-    OperationDevice: 'OperationDevice',
-    planTitle: 'PlanTitle',
-    planNumber: 'PlanNumber',
-    orderType: 'OrderType',
-    IsItConfigured: 'IsItConfigured',
+    RouteName: 'Route name',
+    nHolder: 'Please enter a route name',
+    selectInspectionItems: 'Select Patrol Items',
+    unitHolder: 'Please select a unit',
+    cycle: 'Period',
+    beginCreateTime: 'First execution time',
+    SelectInspectionDevice: 'Select Patrol Equipment',
+    SelectOperationDevice: 'Select a running device',
+    InspectionRoute: 'Inspection Route',
+    OperationDevice: 'Operating equipment',
+    planTitle: 'Plan Title Placeholder',
+    planNumber: 'Plan Number',
+    orderType: 'Type of work order',
+    IsItConfigured: 'Configure or not',
     quantity: 'Quantity',
-    safetyStock: 'SafetyStock',
-    lastCreateTime: 'lastCreateTime'
+    safetyStock: 'Reordering Rules',
+    lastCreateTime: 'Last exeuction time:'
   },
   stock: {
-    selectStock: 'SelectStock',
-    storageTime: 'StorageTime',
-    selectMaterial: 'SelectMaterial',
-    quantity: 'quantity',
-    requQuantity: 'requisitionQuantity',
-    DelayMaintenance: 'DelayMaintenance',
-    DelayReason: 'DelayReason',
-    MaterialMaster: 'MaterialMaster',
-    totalQuantity: 'TotalQuantity',
-    totalAmount: 'TotalAmount(Yuan/CNY)'
+    selectStock: 'Choose Inventories',
+    storageTime: 'Storage Time:',
+    selectMaterial: 'Select material',
+    quantity: 'Stock qty:',
+    requQuantity: 'Claim Quantity',
+    DelayMaintenance: 'Deferred Maintenance',
+    DelayReason: 'Reason for postponement',
+    MaterialMaster: 'Material Master Data',
+    totalQuantity: 'Amount',
+    totalAmount: 'Total Amount (RMB/CNY)'
   },
   process: {
-    processName: 'ProcessName',
-    holder: 'Please enter process name',
-    classify: 'Please select process classify',
-    status: 'Please select process status',
-    advancedFilter: 'AdvancedFilter',
-    belongProcess: 'BelongProcess',
-    selProcess: 'Please select process ',
-    InitiationTime: 'InitiationTime'
+    processName: 'Process Name',
+    holder: 'Please enter a process name',
+    classify: 'Please select a process category',
+    status: 'Please select a process status',
+    advancedFilter: 'Advanced filters',
+    belongProcess: 'Affiliated Processes',
+    selProcess: 'Please select a process definition',
+    InitiationTime: 'Start Time'
   },
   map: {
-    amplify: 'Amplify',
-    reduce: 'Reduce',
-    SwitchMapType: 'SwitchMapType'
+    amplify: 'In',
+    reduce: 'ZOOM&#10;OUT',
+    SwitchMapType: 'Toggle map type',
+    'devicemoni427770-0': 'From Date Time',
+    'devicemoni427770-1': 'End date & time',
+    'mapvue383073-0': 'Historical coding',
+    'mapvue383073-1': 'Device Name',
+    'mapvue383073-2': 'Department',
+    'mapvue383073-3': 'Position',
+    'mapvue383073-4': 'Status',
+    'mapvue383073-5': 'Online status',
+    'mapvue383073-6': 'Last online time',
+    'mapvue383073-7': 'View Monitoring Details',
+    'mapvue383073-8': 'Device Smart Map',
+    'mapvue383073-9':
+      'Device location, online status and monitoring portal, support departmental screening, aggregation amplification and one-click tracking.',
+    'mapvue383073-10': 'Map',
+    'mapvue383073-11': 'Satellites',
+    'mapvue383073-12': 'over Total Devices per:',
+    'mapvue383073-13': 'Online Device',
+    'mapvue383073-14': 'Offline Devices',
+    'mapvue383073-15': 'Screening Results',
+    'mapvue383073-16': 'Keyword',
+    'mapvue383073-17': 'Device Name/Code/Location',
+    'mapvue383073-18': 'Department screening',
+    'mapvue383073-19': 'Device Status',
+    'mapvue383073-20': 'LEGEND',
+    'mapvue383073-21': 'Aggregation point',
+    'mapvue383073-22': 'Online',
+    'mapvue383073-23': 'Offline',
+    'mapvue383073-24': 'All',
+    'mapvue383073-25': 'Zoom'
   },
   rem: {
-    AttrTemplates: 'Attr Templates',
-    DeviceAttrTemplateModel: 'DeviceAttrTemplateModel',
-    AttributeInformationDetails: 'AttributeInformationDetails',
-    AddProjectInformation: 'AddProjectInformation',
-    TaskAllocation: 'TaskAllocation',
-    FillInInformation: 'FillInInformation',
-    detail: 'Detail',
-    AddEquipment: 'AddEquipment',
-    EquipmentEditing: 'EquipmentEditing',
-    EquipmentDetails: 'EquipmentDetails',
-    MonitoringDetails: 'MonitoringDetails',
-    UploadFile: 'UploadFile',
-    EquipmentBOM: 'EquipmentBOM',
-    EquipmentResponsiblePerson: 'EquipmentResponsiblePerson',
-    EquipmentStatusAdjustment: 'EquipmentStatusAdjustment',
-    EquipmentAllocation: 'EquipmentAllocation',
-    LocalStock: 'LocalStock',
-    ManualWarehousing: 'ManualWarehousing',
-    EditingWarehousing: 'EditingWarehousing',
-    SAPStock: 'SAPStock',
-    ConfigureSafetyStock: 'ConfigureSafetyStock',
-    MaintenancePlan: 'MaintenancePlan',
-    AddMaintenancePlan: 'AddMaintenancePlan',
-    EditMaintenancePlan: 'EditMaintenancePlan',
-    MaintenancePlanDetail: 'MaintenancePlanDetail',
-    MaintenanceOrder: 'MaintenanceOrder',
-    FillMaintenanceOrder: 'FillMaintenanceOrder',
-    AddMaintenanceOrder: 'AddMaintenanceOrder',
-    MaintenanceOrderDetail: 'MaintenanceOrderDetail',
-    MaterialRequisition: 'MaterialRequisition',
-    MaterialRequisitionAdd: 'MaterialRequisitionAdd',
-    CollectionFormDetails: 'CollectionFormDetails',
-    MaintainCalendar: 'MaintainCalendar',
-    RepairOrderAdd: 'RepairOrderAdd',
-    MaintainRecord: 'RepairRecord',
-    RepairOrderEdit: 'RepairOrderEdit',
-    RepairOrderDetail: 'RepairOrderDetail',
-    InspectionRouteAdd: 'InspectionRouteAdd',
-    InspectionRouteEdit: 'InspectionRouteEdit',
-    InspectOrderAdd: 'InspectOrderAdd',
-    InspectOrder: 'InspectOrder',
-    InspectPlanAdd: 'InspectPlanAdd',
-    OperationPlanAdd: 'OperationPlanAdd',
-    OperationPlanEdit: 'OperationPlanEdit',
-    InspectPlanEdit: 'InspectPlanEdit',
-    InspectOrderDetail: 'InspectOrderDetail',
-    FailureDetail: 'FailureDetail',
-    MaterialManagement: 'MaterialManagement',
-    modifyOrder: 'ModifyOrder'
+    AttrTemplates: 'List of Attribute Templates',
+    DeviceAttrTemplateModel: 'Device Attribute Details',
+    AttributeInformationDetails: 'Property Details',
+    AddProjectInformation: 'Add project information',
+    TaskAllocation: 'Task Assign',
+    FillInInformation: 'Fill information',
+    detail: 'Details',
+    AddEquipment: 'Device Add',
+    EquipmentEditing: 'Device Edit',
+    EquipmentDetails: 'Equipment Details',
+    MonitoringDetails: 'Monitoring Details',
+    UploadFile: 'Data Upload',
+    EquipmentBOM: 'Device BOM',
+    EquipmentResponsiblePerson: 'Person in charge of the equipment',
+    EquipmentStatusAdjustment: 'Device Status Adjustment',
+    EquipmentAllocation: 'Equipment transfer',
+    LocalStock: 'Local Stock',
+    ManualWarehousing: 'Manual warehousing',
+    EditingWarehousing: 'Modify Inbound',
+    SAPStock: 'SAP Inventory',
+    ConfigureSafetyStock: 'Configure Secure Inventory',
+    MaintenancePlan: 'Maintenance plan',
+    AddMaintenancePlan: 'Add maintenance plan',
+    EditMaintenancePlan: 'Modify Maintenance Plan',
+    MaintenancePlanDetail: 'Maintenance Plan Details',
+    MaintenanceOrder: 'Maintenance Work Order',
+    FillMaintenanceOrder: 'Fill in the Maintenance Work Order',
+    AddMaintenanceOrder: 'Add Maintenance Work Order',
+    MaintenanceOrderDetail: 'Maintenance Work Order Details',
+    MaterialRequisition: 'Material collection',
+    MaterialRequisitionAdd: 'Material collection',
+    CollectionFormDetails: 'Claim Sheet Details',
+    MaintainCalendar: 'Maintenance desk calendar',
+    RepairOrderAdd: 'Repair ticket added',
+    MaintainRecord: 'maintenance records',
+    RepairOrderEdit: 'Repair ticket editing',
+    RepairOrderDetail: 'Repair Ticket Details',
+    InspectionRouteAdd: 'Patrol Route Addition',
+    InspectionRouteEdit: 'Patrol Route Editor',
+    InspectOrderAdd: 'Fill in the inspection work order',
+    InspectPlanAdd: 'Patrol Plan Added',
+    OperationPlanAdd: 'Run Plan Add',
+    OperationPlanEdit: 'Run Plan Editor',
+    InspectPlanEdit: 'Patrol Plan Editor',
+    InspectOrderDetail: 'Patrol Work Order Details',
+    InspectOrder: 'Patrol Work Order',
+    FailureDetail: 'View fault details',
+    MaterialManagement: 'Material Management',
+    modifyOrder: 'Modify the ticket'
+  },
+  sip: {
+    'splitview998531-0': 'Loading',
+    'splitview998531-1': 'Split Screen',
+    'splitview998531-2': 'Single-view',
+    'splitview998531-3': 'Four screens',
+    'splitview998531-4': 'Nine screens',
+    'splitview998531-5': 'Screenshot',
+    'channel998532-0': 'Device ID',
+    'channel998532-1': 'Channel ID',
+    'channel998532-2': 'Snapshots',
+    'channel998532-3': 'Channel Name',
+    'channel998532-4': 'Model',
+    'channel998532-5': 'Status',
+    'channel998532-6': 'View Live Stream',
+    'channel998532-7': 'Modify monitoring device channel information',
+    'channel998532-8':
+      'Are you sure you want to delete the data item with monitoring device channel information number {0}?',
+    'channel998532-9': 'Push Status',
+    'channel998532-10': 'None',
+    'channel998532-11': 'Pushing',
+    'channel998532-12': 'Live Recording Status',
+    'channel998532-13': 'None',
+    'channel998532-14': 'recording...',
+    'channel998532-15': 'Recording Transfer Status',
+    'channel998532-16': 'None',
+    'channel998532-17': 'Transferring',
+    'channel998532-18': 'Deleted successfully',
+    'index998533-0': 'Device ID',
+    'index998533-1': 'Please enter the device number',
+    'index998533-2': 'Channel ID',
+    'index998533-3': 'Please enter Channel ID',
+    'index998533-4': 'Status',
+    'index998533-5': 'Please select status',
+    'index998533-6': 'Generate',
+    'index998533-7': 'Bulk Delete',
+    'index998533-8': 'product?',
+    'index998533-9': 'Device type',
+    'index998533-10': 'Administrative area',
+    'index998533-11': 'Registration Time',
+    'index998533-12': 'Device Bindings',
+    'index998533-13': 'Administrative division',
+    'index998533-14': 'Please select a device type',
+    'index998533-15': 'Piping Type',
+    'index998533-16': 'Please select a channel type',
+    'index998533-17': 'Please, select a product.',
+    'index998533-18': 'Select',
+    'index998533-19': 'Please enter the number of build channels',
+    'index998533-20': 'amount of channels',
+    'index998533-21': 'Generate',
+    'index998533-22': 'Link Device',
+    'index998533-23': 'Please select the equipment',
+    'index998533-24': 'Associated Scenarios',
+    'index998533-25': 'Please select a scenario',
+    'index998533-26': 'Default playback protocol cannot be empty',
+    'index998533-27': 'Server ip cannot be empty',
+    'index998533-28': 'Server domain name cannot be empty',
+    'index998533-29': 'Streaming key cannot be empty',
+    'index998533-30': 'http port cannot be empty',
+    'index998533-31': 'https port cannot be empty',
+    'index998533-32': 'rtmp port cannot be empty',
+    'index998533-33': 'rtsp port cannot be empty',
+    'index998533-34': 'rtp port range cannot be empty',
+    'index998533-35': 'Delete flag cannot be empty',
+    'index998533-36': 'Creator cannot be empty',
+    'index998533-37': 'Creation time cannot be empty',
+    'index998533-38': 'Generate Device Channel',
+    'index998533-39': 'Modify product category',
+    'index998533-40': 'Monitor device bindings',
+    'index998533-41': 'Bound Successfully',
+    'index998533-42': 'Number of channels at least one',
+    'index998533-43': 'Please select your product',
+    'index998533-44': 'Please select region, equipment type, channel type!!',
+    'index998533-45': 'Are you sure you want to delete ID as',
+    'index998533-46': 'Copying Succeeded',
+    'index998533-47': 'Copy failed!',
+    'mediaServerEdit998534-0': 'Streaming Server Node',
+    'mediaServerEdit998534-1': 'Server IP',
+    'mediaServerEdit998534-2': 'Media Service IP',
+    'mediaServerEdit998534-3': 'HTTP Port',
+    'mediaServerEdit998534-4': 'Media Service HTTP Port',
+    'mediaServerEdit998534-5': 'Service Key',
+    'mediaServerEdit998534-6': 'Media service secret',
+    'mediaServerEdit998534-7': 'Config name',
+    'mediaServerEdit998534-8': 'Server IP',
+    'mediaServerEdit998534-9': 'Playback Protocol',
+    'mediaServerEdit998534-10': 'HTTP Port',
+    'mediaServerEdit998534-11': 'HTTPS port',
+    'mediaServerEdit998534-12': 'Rtsp Port',
+    'mediaServerEdit998534-13': 'Streaming Key',
+    'mediaServerEdit998534-14': 'Server Domain',
+    'mediaServerEdit998534-15': 'Automatic Configuration',
+    'mediaServerEdit998534-16': 'Retract Mode',
+    'mediaServerEdit998534-17': 'Multiport',
+    'mediaServerEdit998534-18': 'Single Port',
+    'mediaServerEdit998534-19': 'Streaming port',
+    'mediaServerEdit998534-20': 'Start',
+    'mediaServerEdit998534-21': 'TERMINATION',
+    'mediaServerEdit998534-22': 'Rtmp Port',
+    'mediaServerEdit998534-23': 'Recording management port',
+    'mediaServerEdit998534-24': 'Please enter a valid IP address',
+    'mediaServerEdit998534-25': 'Please enter a valid port number.',
+    'mediaServerEdit998534-26': 'Configure address connected successfully',
+    'mediaServerEdit998534-27': 'Configuration address cannot be connected',
+    'mediaServerEdit998534-28': 'Port number should be between -65535',
+    'mediaServer998535-0': '[New Node]',
+    'mediaServer998535-1': 'Config name',
+    'mediaServer998535-2': 'Server IP',
+    'mediaServer998535-3': 'Playback Protocol',
+    'mediaServer998535-4': 'Created Time',
+    'mediaServer998535-5': 'Restarting',
+    'mediaServer998535-6': 'No data, please add a streaming server node',
+    'mediaServer998535-7':
+      'Are you sure you want to delete the data item with streaming server configuration number {0}?',
+    'product-list998536-0': 'Select Products',
+    'product-list998536-1': 'Tenant name',
+    'product-list998536-2': 'Network method',
+    'sipConfig998537-0': 'Default setting',
+    'sipConfig998537-1': 'Server address',
+    'sipConfig998537-2': 'Server Domain',
+    'sipConfig998537-3': 'Authentication password.',
+    'sipConfig998537-4': 'Please enter authentication password',
+    'sipConfig998537-5': 'Wiring-in mode',
+    'sipConfig998537-6': 'Server Port',
+    'sipConfig998537-7': 'Server ID',
+    'sipConfig998537-8': 'Server domain cannot be empty',
+    'sipConfig998537-9': 'Server sipid cannot be empty',
+    'sipConfig998537-10': 'the sip authentication password cannot be empty',
+    'sipidGen998538-0': 'Administrative division',
+    'sipidGen998538-1': 'Generate device number and channel',
+    'sipidGen998538-2': 'Device number and channel generated',
+    'sipidGen998538-3': 'Please select region, equipment type, channel type!!',
+    'user-list558539-0': 'Select Users',
+    'user-list558539-1': 'Phone No.:',
+    'user-list558539-2': 'Customer no.',
+    'user-list558539-3': 'Client Name',
+    'user-list558539-4': 'User Nice Name',
+    'user-list558539-5': 'Created Time',
+    'user-list558539-6': 'Nomor ponsel tidak boleh kosong',
+    'user-list558539-7': 'Phone number length is 11 digits',
+    'record239091-0': 'Server Identity',
+    'record239091-1': 'Please select',
+    'record239091-2': 'Application Name',
+    'record239091-3': 'Flow ID:',
+    'record239091-4': 'Time',
+    'record239091-5': 'Please select a server identity first',
+    'record239091-6': 'Please select date'
+  },
+  product: {
+    'index091251-0': 'Product Name',
+    'index091251-1': 'Please enter product name',
+    'index091251-2': 'Category Name',
+    'index091251-3': 'Please enter a product category name',
+    'index091251-4': 'Status',
+    'index091251-5': 'Please select status',
+    'index091251-6': 'Search',
+    'index091251-7': 'Reset',
+    'index091251-8': 'Show Parent Institutional Products',
+    'index091251-9': 'When selected, this level can see the products of the higher level',
+    'index091251-10': 'Add',
+    'index091251-11': 'Privately owned',
+    'index091251-12': 'Unpublish',
+    'index091251-13': 'Published',
+    'index091251-14': 'publish_now',
+    'index091251-15': 'Unpublished',
+    'index091251-16': 'Published in',
+    'index091251-17': 'Product type',
+    'index091251-18': 'Network method',
+    'index091251-19': 'Device authorization',
+    'index091251-20': 'Enabled',
+    'index091251-21': 'Not enabled',
+    'index091251-22': 'More',
+    'index091251-23': 'Delete',
+    'index091251-24': 'View devices',
+    'index091251-25': 'No data, please add a product',
+    'index091251-26':
+      'This feature is not implemented yet, refer to the SDK example of the tutorial and project',
+    'index091251-27': 'Device type',
+    'index091251-28': 'Download',
+    'index091251-29': 'Cancel',
+    'index091251-30': 'Really unpublish?',
+    'index091251-31': 'has no operation permission',
+    'index091251-32': 'After the product is released, the corresponding device can be created',
+    'index091251-33':
+      'Important: There are already {0} devices under the product. Unpublishing can modify the product information and model, and the corresponding device status will be reset after republishing!',
+    'index091251-34': 'Tip',
+    'index091251-35': 'Confirm',
+    'index091251-38': 'Generate SDK',
+    'index091251-39': 'Are you sure you want to delete the data item with product number {0}?',
+    'index091251-40': 'Configuration Design',
+    'product-app045891-0': 'Refresh',
+    'product-app045891-1':
+      'This feature is temporarily unavailable and will be released in a later version',
+    'product-app045891-2': 'Name',
+    'product-app045891-3': 'Identifier',
+    'product-app045891-4': 'Object Model Category',
+    'product-app045891-5': 'Data Type',
+    'product-app045891-6': 'Parts',
+    'product-app045891-7': 'System-Defined Components',
+    'product-app045891-8': 'PREMIUM FEATURES:',
+    'product-app045891-9': 'Customize Page',
+    'product-app045891-10': 'Please enter a custom page',
+    'product-app045891-11': 'Interface display',
+    'product-authorize314975-0': 'Device No.',
+    'product-authorize314975-1': 'Please enter the device number',
+    'product-authorize314975-2': 'Authorized Code',
+    'product-authorize314975-3': 'Please enter the authorization code',
+    'product-authorize314975-4': 'Status',
+    'product-authorize314975-5': 'Please select status',
+    'product-authorize314975-6': 'Search',
+    'product-authorize314975-7': 'Reset',
+    'product-authorize314975-8': 'Generate authorization code',
+    'product-authorize314975-9': 'Bulk Delete',
+    'product-authorize314975-10': 'Export',
+    'product-authorize314975-11': 'Tip: Double-click to copy the authorization code.',
+    'product-authorize314975-12': 'Authorization date',
+    'product-authorize314975-13': 'Remarks',
+    'product-authorize314975-14': 'Actions',
+    'product-authorize314975-15': 'Delete',
+    'product-authorize314975-17': 'Device Name',
+    'product-authorize314975-18': 'Please enter device name',
+    'product-authorize314975-19': 'Select',
+    'product-authorize314975-20': 'Device ID',
+    'product-authorize314975-21': 'Client Name',
+    'product-authorize314975-22': 'Device Status',
+    'product-authorize314975-23': 'Please enter content',
+    'product-authorize314975-24': 'Confirm',
+    'product-authorize314975-25': 'Cancel',
+    'product-authorize314975-26': 'Equipment Details',
+    'product-authorize314975-27': 'Tip: Unable to locate the device, it may have been deleted',
+    'product-authorize314975-28': 'Unactivated',
+    'product-authorize314975-29': 'Disable',
+    'product-authorize314975-30': 'Online',
+    'product-authorize314975-31': 'Offline',
+    'product-authorize314975-32': 'device shadow',
+    'product-authorize314975-33': 'Enable',
+    'product-authorize314975-35': 'Positioning Method',
+    'product-authorize314975-36': 'Autotargeting',
+    'product-authorize314975-37': 'Device positioning',
+    'product-authorize314975-38': 'Custom Location',
+    'product-authorize314975-39': 'Product Name',
+    'product-authorize314975-40': 'Tenant name',
+    'product-authorize314975-41': 'Firmware Version',
+    'product-authorize314975-42': 'Address',
+    'product-authorize314975-43': 'Device Longitude',
+    'product-authorize314975-44': 'Device Latitude',
+    'product-authorize314975-45': 'Connected IP',
+    'product-authorize314975-46': 'Device Signal',
+    'product-authorize314975-47': 'Created Time',
+    'product-authorize314975-48': 'Activation Time',
+    'product-authorize314975-49': 'Remark',
+    'product-authorize314975-50': 'View devices',
+    'product-authorize314975-51': 'Close',
+    'product-authorize314975-52': 'Enter the number of authorization codes',
+    'product-authorize314975-53': 'Confirm',
+    'product-authorize314975-54': 'Cancel',
+    'product-authorize314975-55': 'Quantity content is incorrect',
+    'product-authorize314975-56': 'Successfully added authorization code',
+    'product-authorize314975-57': 'Cancel adding',
+    'product-authorize314975-58': 'Select device',
+    'product-authorize314975-59': 'Device Authorization Successful',
+    'product-authorize314975-60': 'Please select a device to authorize',
+    'product-authorize314975-61': 'Comment succeeded',
+    'product-authorize314975-62':
+      'Are you sure you want to delete the data item with product authorization number {0}?',
+    'product-authorize314975-63': 'Deleted successfully',
+    'product-authorize314975-64': 'Berhasil',
+    'product-authorize314975-66': 'Copying Succeeded',
+    'product-authorize314975-67': 'Kalah',
+    'product-authorize314975-68': 'Copy failed!',
+    'product-edit473153-0': 'Basic Information',
+    'product-edit473153-1': 'Product Name',
+    'product-edit473153-2': 'Please enter product name',
+    'product-edit473153-3': 'Product Category',
+    'product-edit473153-4': 'select a category',
+    'product-edit473153-5': 'Communications protocol',
+    'product-edit473153-6':
+      'After the product is established, it is not allowed to modify the communication protocol. Modification will cause dirty data problems on the device under the product.',
+    'product-edit473153-7': 'Please select an agreement',
+    'product-edit473153-8':
+      'The current communication protocol is the modbus protocol, please select the acquisition point template, the default add device is the gateway device',
+    'product-edit473153-9': 'Acquisition Point Template',
+    'product-edit473153-10': 'Delete',
+    'product-edit473153-11': 'Choose Template',
+    'product-edit473153-13': 'Please select a device type',
+    'product-edit473153-14': 'transport agreement',
+    'product-edit473153-15': 'Please select a transport protocol',
+    'product-edit473153-16': 'Network method',
+    'product-edit473153-17': 'Please select a networking method',
+    'product-edit473153-18': 'Private product',
+    'product-edit473153-19': 'After setting as a private product, subordinates cannot view it',
+    'product-edit473153-20': 'Enable Authorization',
+    'product-edit473153-21': 'Authentication',
+    'product-edit473153-22': 'Please select an authentication method',
+    'product-edit473153-23': 'Positioning Method',
+    'product-edit473153-24': 'Please select device status',
+    'product-edit473153-25': 'Product No.',
+    'product-edit473153-26': 'Auto-Generated',
+    'product-edit473153-27': 'Mqtt Account',
+    'product-edit473153-28': 'Leave blank for auto-generation',
+    'product-edit473153-29': 'Mqtt Password',
+    'product-edit473153-30': 'Leave blank to auto-generate',
+    'product-edit473153-31': 'Product Key',
+    'product-edit473153-32': 'Remark',
+    'product-edit473153-33': 'Please enter content',
+    'product-edit473153-34': 'Picture',
+    'product-edit473153-35': 'Tip: Submit to save after upload',
+    'product-edit473153-36': 'Modify',
+    'product-edit473153-37': 'Add',
+    'product-edit473153-38': 'Product Model',
+    'product-edit473153-39': 'Image Manager',
+    'product-edit473153-40': 'Device authorization',
+    'product-edit473153-41': 'Sip Profiles',
+    'product-edit473153-42': 'Publish Product',
+    'product-edit473153-43': 'Unpublish',
+    'product-edit473153-44': 'Return to List',
+    'product-edit473153-45': 'Template Name',
+    'product-edit473153-46': 'Search',
+    'product-edit473153-47': 'Reset',
+    'product-edit473153-48': 'Select Acquisition Point Template',
+    'product-edit473153-49': 'Object Model List',
+    'product-edit473153-50': 'Slave quantity:',
+    'product-edit473153-51': 'Number of variables:',
+    'product-edit473153-52': 'Acquisition mode',
+    'product-edit473153-53': 'Object model name',
+    'product-edit473153-54': 'Registers',
+    'product-edit473153-55': 'Value Type',
+    'product-edit473153-56': 'Cancel',
+    'product-edit473153-57': 'Confirm',
+    'product-edit473153-58': 'Product name cannot be empty',
+    'product-edit473153-59': 'Product category ID cannot be empty',
+    'product-edit473153-60': 'Device agreement cannot be empty',
+    'product-edit473153-61': 'The transport protocol cannot be empty',
+    'product-edit473153-62': 'Modified successfully',
+    'product-edit473153-63': 'Please select a collection point template',
+    'product-edit473153-64':
+      'Added successfully. You can now define the thing model or configuration.',
+    'product-edit473153-65':
+      'The thing model has been synced from the data-point template to the product',
+    'product-edit473153-66': 'Really unpublish?',
+    'product-edit473153-67':
+      'After the product is released, the corresponding device can be created',
+    'product-edit473153-68':
+      'Important: There are already {0} devices under the product. Unpublishing can modify the product information and model, and the corresponding device status will be reset after republishing!',
+    'product-edit473153-69': 'Tip',
+    'product-edit473153-70': 'Confirm',
+    'product-edit473153-71': 'Cancel',
+    'product-edit473153-72': 'Enable',
+    'product-edit473153-74': 'Deactivate',
+    'product-edit473153-75': 'Confirm to {0} the authorization code?',
+    'product-edit473153-77': 'Authorization Code',
+    'product-edit473153-78': 'Device type',
+    'product-edit473153-79': 'Configuration Applications',
+    'product-edit473153-80': 'Modbus Config',
+    'product-edit473153-81': 'Communications protocol',
+    'product-edit473153-82': 'Please select an agreement',
+    'product-firmware420545-0': 'Add',
+    'product-firmware420545-1': 'Refresh',
+    'product-firmware420545-2': 'Branch name',
+    'product-firmware420545-3': 'Firmware Version',
+    'product-firmware420545-4': 'Status',
+    'product-firmware420545-5': 'Latest',
+    'product-firmware420545-6': 'Default',
+    'product-firmware420545-7': 'Created Time',
+    'product-firmware420545-8': 'Download url',
+    'product-firmware420545-9': 'Firmware description',
+    'product-firmware420545-10': 'Actions',
+    'product-firmware420545-11': 'View',
+    'product-firmware420545-12': 'Delete',
+    'product-firmware420545-13': 'Please enter firmware name',
+    'product-firmware420545-14': 'Please enter firmware version',
+    'product-firmware420545-15': 'Latest Firmware',
+    'product-firmware420545-16': 'Note: a product can only have one latest firmware',
+    'product-firmware420545-17': 'Firmware Upload',
+    'product-firmware420545-18': 'Please enter firmware information',
+    'product-firmware420545-19': 'Add',
+    'product-firmware420545-20': 'Modify',
+    'product-firmware420545-21': 'Cancel',
+    'product-firmware420545-24': 'Firmware name cannot be empty',
+    'product-firmware420545-25': 'Firmware version cannot be empty',
+    'product-firmware420545-26': 'File path cannot be empty',
+    'product-firmware420545-27': 'Add Product Firmware',
+    'product-firmware420545-28': 'Modify Product Firmware',
+    'product-firmware420545-29': 'Modified successfully',
+    'product-firmware420545-30': 'Added successfully',
+    'product-firmware420545-31': 'Confirm to delete the product firmware record with number {0}?',
+    'product-firmware420545-32': 'Deleted successfully',
+    'product-select-template318012-0': 'Name',
+    'product-select-template318012-1': 'Please enter the object model name',
+    'product-select-template318012-2': 'Category',
+    'product-select-template318012-3': 'Please select model category',
+    'product-select-template318012-4': 'Search',
+    'product-select-template318012-5': 'Reset',
+    'product-select-template318012-6': 'Identifier',
+    'product-select-template318012-7': 'Object Model Category',
+    'product-select-template318012-8': 'Chart Presentation',
+    'product-select-template318012-9': 'Real time monitoring',
+    'product-select-template318012-10': 'Read-Only',
+    'product-select-template318012-11': 'Historical Storage',
+    'product-select-template318012-12': 'Data Type',
+    'product-things-model142341-0': 'Add',
+    'product-things-model142341-1': 'Import Generic Thing Model',
+    'product-things-model142341-2': 'Refresh',
+    'product-things-model142341-3': 'View Thing Model',
+    'product-things-model142341-4': 'Note: identifiers must be unique',
+    'product-things-model142341-5': 'Please select the device slave:',
+    'product-things-model142341-6': 'Please select device slave',
+    'product-things-model142341-7': 'Gateway Object Model',
+    'product-things-model142341-8': 'Name',
+    'product-things-model142341-9': 'Identifier',
+    'product-things-model142341-10': 'Register address (decimal)',
+    'product-things-model142341-12': 'Chart Presentation',
+    'product-things-model142341-13': 'Real time monitoring',
+    'product-things-model142341-14': 'Read-Only',
+    'product-things-model142341-15': 'Historical Storage',
+    'product-things-model142341-16': 'Object Model Category',
+    'product-things-model142341-17': 'Data Type',
+    'product-things-model142341-18': 'Data Definition',
+    'product-things-model142341-19': 'Calculation Formula',
+    'product-things-model142341-20': 'Sort',
+    'product-things-model142341-21': 'Actions',
+    'product-things-model142341-22': 'View',
+    'product-things-model142341-23': 'Delete',
+    'product-things-model142341-24': 'Model Name',
+    'product-things-model142341-25': 'Please enter thing model name, e.g.: Temperature',
+    'product-things-model142341-26': 'Model Identifier',
+    'product-things-model142341-27': 'Please enter identifier, e.g.: temperature',
+    'product-things-model142341-28': 'Model Sort Order',
+    'product-things-model142341-29': 'Please enter sort order',
+    'product-things-model142341-30': 'Model Category',
+    'product-things-model142341-31': 'Attribute',
+    'product-things-model142341-32': 'Function',
+    'product-things-model142341-33': 'Event',
+    'product-things-model142341-34': 'Model Feature',
+    'product-things-model142341-35': 'Read-only Data',
+    'product-things-model142341-36': 'Share Permission',
+    'product-things-model142341-37': 'Please select a data type',
+    'product-things-model142341-38': 'Integer number',
+    'product-things-model142341-39': '(Decimal',
+    'product-things-model142341-40': 'Boolean',
+    'product-things-model142341-41': 'Enum',
+    'product-things-model142341-42': 'String',
+    'product-things-model142341-43': 'Array',
+    'product-things-model142341-44': 'Object',
+    'product-things-model142341-45': 'Value Range',
+    'product-things-model142341-46': 'Minimum',
+    'product-things-model142341-47': 'to',
+    'product-things-model142341-48': 'Maximum',
+    'product-things-model142341-49': 'Unit',
+    'product-things-model142341-50': 'Please enter unit, e.g.: ℃',
+    'product-things-model142341-51': 'step?',
+    'product-things-model142341-52': 'Please enter step, e.g.: 1',
+    'product-things-model142341-53':
+      'Device uplink data is displayed after calculation by the formula.',
+    'product-things-model142341-54': '%s in the formula is a placeholder and is a fixed field.',
+    'product-things-model142341-55': 'e.g.:',
+    'product-things-model142341-56': 'Add: %s+10',
+    'product-things-model142341-57': 'Subtract: %s-10',
+    'product-things-model142341-58': 'Multiply: %s*10',
+    'product-things-model142341-59': 'Divide: %s/10',
+    'product-things-model142341-60': 'Divide (keep decimals): %s%10.00',
+    'product-things-model142341-61': 'Keep Decimals',
+    'product-things-model142341-62': 'Control formula',
+    'product-things-model142341-63': 'Boolean',
+    'product-things-model142341-64': 'Ex: Close',
+    'product-things-model142341-65': '(Text for value 0)',
+    'product-things-model142341-66': 'Ex: Open',
+    'product-things-model142341-67': '(Text for value 1)',
+    'product-things-model142341-68': 'Presentation',
+    'product-things-model142341-69': 'Please select a display method',
+    'product-things-model142341-70': 'Drop Down',
+    'product-things-model142341-71': 'Buttons',
+    'product-things-model142341-72': 'Enumerate items',
+    'product-things-model142341-73': 'Parameter value, e.g.: 0',
+    'product-things-model142341-74': 'Parameter description, e.g.: Medium speed gear',
+    'product-things-model142341-75': 'Add Enum',
+    'product-things-model142341-76': 'Max Length',
+    'product-things-model142341-77': 'Ex: 1024',
+    'product-things-model142341-78': '(Maximum length of string)',
+    'product-things-model142341-79': 'Number of elements',
+    'product-things-model142341-80': 'e.g.: 5',
+    'product-things-model142341-81': 'Array Type',
+    'product-things-model142341-82': 'Object Parameters',
+    'product-things-model142341-83': 'Please select the equipment',
+    'product-things-model142341-84': 'Edit',
+    'product-things-model142341-85': 'Add Parameter',
+    'product-things-model142341-86': 'Delete',
+    'product-things-model142341-87': 'Object Parameters',
+    'product-things-model142341-88': 'Please select the equipment',
+    'product-things-model142341-89': 'Modify',
+    'product-things-model142341-90': 'Add',
+    'product-things-model142341-91': 'Cancel',
+    'product-things-model142341-92': 'Copy',
+    'product-things-model142341-94': 'Thing model name cannot be empty',
+    'product-things-model142341-95': 'Identifier (unique within product) cannot be empty',
+    'product-things-model142341-96': 'Model sort order cannot be empty',
+    'product-things-model142341-97': 'Model category cannot be empty',
+    'product-things-model142341-98': 'Data type cannot be empty',
+    'product-things-model142341-99': 'Add Thing Model',
+    'product-things-model142341-100': 'Modify Thing Model',
+    'product-things-model142341-101': 'Object Model',
+    'product-things-model142341-102': 'Object parameters cannot be empty',
+    'product-things-model142341-103':
+      'Object-type model identifier must not contain underscores. Please re-enter the model identifier!',
+    'product-things-model142341-104': 'Parameter ID',
+    'product-things-model142341-105': 'Duplicate',
+    'product-things-model142341-106': 'Please re-select the data type!',
+    'product-things-model142341-107': 'Modified successfully',
+    'product-things-model142341-108': 'Added successfully',
+    'product-things-model142341-109': 'Confirm to delete the thing model record with number {0}?',
+    'product-things-model142341-111': 'Deleted successfully',
+    'product-things-model142341-112':
+      'To delete a data point, modify it in the data-point template',
+    'product-things-model142341-113': 'Close',
+    'product-things-model142341-114': 'Open',
+    'product-things-model142341-115': 'Low',
+    'product-things-model142341-116': 'High',
+    'product-things-model142341-117': 'Max Value:',
+    'product-things-model142341-118': 'Min Value:',
+    'product-things-model142341-119': 'Step:',
+    'product-things-model142341-120': 'Unit:',
+    'product-things-model142341-121': 'Max Length:',
+    'product-things-model142341-122': 'Array Type:',
+    'product-things-model142341-123': 'Element Count:',
+    'product-things-model142341-124': 'Register Address',
+    'product-things-model142341-125': 'Delete',
+    'product-things-model142341-126': 'Import',
+    'product-things-model142341-127': 'App showcase',
+    'product-things-model142341-128': 'Please select whether to display in App',
+    'product-things-model142341-129': 'Thing Model Type',
+    'product-things-model142341-130': 'Please select thing model type',
+    'product-things-model142341-131': 'Historical Storage',
+    'product-things-model142341-132': 'Please select whether to enable historical storage',
+    'product-things-model142341-133': 'Search',
+    'product-things-model142341-134': 'Reset',
+    'product-things-model142341-135': 'Group',
+    'product-modbus562372-0': 'Gateway Sub-device Config',
+    'product-modbus562372-1':
+      'Default sub-device address for gateway sub-device config, polling mode',
+    'product-modbus562372-2': 'Edit Device Config',
+    'product-modbus562372-3': 'Save',
+    'product-modbus562372-4': 'Cancel',
+    'product-modbus562372-5': 'Device Status:',
+    'product-modbus562372-6':
+      'Configure whether device status comes from the gateway or from normal variable communication of the device;',
+    'product-modbus562372-7':
+      'If gateway is selected, the device online/offline status is taken from the gateway; if device data is selected, the device is judged offline when no variable communication occurs within the selected duration.',
+    'product-modbus562372-8':
+      'When device data is selected, the duration should exceed the minimum collection frequency in the template; otherwise the device will frequently go offline.',
+    'product-modbus562372-9': 'Select Duration:',
+    'product-modbus562372-10':
+      'For the device-data judgment method, confirm that data is reported within the polling time',
+    'product-modbus562372-11': 'Please select default duration',
+    'product-modbus562372-12': 'How long with no data before the device is judged offline',
+    'product-modbus562372-13': 'Collection Method:',
+    'product-modbus562372-14': 'Default Address:',
+    'product-modbus562372-15': 'Slave Address',
+    'product-modbus562372-16':
+      'Default sub-device address; if a sub-device address is set in sub-devices on the device details page, the default is overwritten',
+    'product-modbus562372-17': 'IO Register',
+    'product-modbus562372-18':
+      'IO registers include coils and discrete registers, and can be bound to boolean attributes',
+    'product-modbus562372-19': 'Edit Register',
+    'product-modbus562372-20': 'Batch import',
+    'product-modbus562372-21': 'Export',
+    'product-modbus562372-22': 'Save',
+    'product-modbus562372-23': 'Cancel',
+    'product-modbus562372-24': 'No.',
+    'product-modbus562372-25': 'Attribute',
+    'product-modbus562372-26': 'Associated Attribute',
+    'product-modbus562372-27': 'Object Model',
+    'product-modbus562372-28': 'Identifier',
+    'product-modbus562372-29': 'Slave Address',
+    'product-modbus562372-30': 'Register Address',
+    'product-modbus562372-31': 'Read-only',
+    'product-modbus562372-32': 'Read-Only',
+    'product-modbus562372-33': 'Read/Write',
+    'product-modbus562372-34': 'Actions',
+    'product-modbus562372-35': 'Delete',
+    'product-modbus562372-36': 'Add an IO Register',
+    'product-modbus562372-37': 'Add Multiple IO Registers',
+    'product-modbus562372-38': 'Data Register',
+    'product-modbus562372-39':
+      'Data registers include input registers and holding registers, and can be bound to numeric attributes',
+    'product-modbus562372-40': 'Batch import',
+    'product-modbus562372-41': 'Export',
+    'product-modbus562372-42': 'Data Type',
+    'product-modbus562372-43': 'Read Count',
+    'product-modbus562372-44': 'Add Single Data Register',
+    'product-modbus562372-45': 'Add Multiple Data Registers',
+    'product-modbus562372-46': 'Associated attribute cannot be empty',
+    'product-modbus562372-47': 'Register address cannot be empty',
+    'product-modbus562372-48': 'Read-only (0=No, 1=Yes) cannot be empty',
+    'product-modbus562372-49': 'Modbus data type cannot be empty',
+    'product-modbus562372-50': 'Read count cannot be empty',
+    'product-modbus562372-51': 'Register type 1=IO register 2=Data register cannot be empty',
+    'product-modbus562372-52': 'Saved',
+    'product-modbus562372-53': 'Modified successfully',
+    'product-modbus562372-311': 'Bit Offset',
+    'product-scada638785-0': 'No configuration yet',
+    'thimgs-mopdel-list738493-0': 'Select Thing Model',
+    'thimgs-mopdel-list738493-1': 'Name',
+    'thimgs-mopdel-list738493-2': 'Please enter the object model name',
+    'thimgs-mopdel-list738493-3': 'Search',
+    'thimgs-mopdel-list738493-4': 'Reset',
+    'thimgs-mopdel-list738493-5': 'Object Model',
+    'thimgs-mopdel-list738493-6': 'Identifier',
+    'thimgs-mopdel-list738493-7': 'Confirm',
+    'thimgs-mopdel-list738493-8': 'Close',
+    'componentsbatchImportModbus745343-0': 'IO Register Template',
+    'componentsbatchImportModbus745343-1': 'Data Register Template',
+    'category142342-0': 'Product Category Name',
+    'category142342-1': 'Display Sequence',
+    'category142342-2': 'Please enter display sequence',
+    'category142342-3': 'Please enter content',
+    'category142342-4': 'Product category name cannot be empty',
+    'category142342-5': 'System-common flag cannot be empty',
+    'category142342-6': 'Add Product Category',
+    'category142342-7': 'Modify product category',
+    'category142342-8': 'Confirm to delete the product category record with number {0}?',
+    'product-scada034908-0': 'Create Configuration'
+  },
+  device: {
+    tip: 'Please select a device or category from the left.',
+    'allot-import-dialog060657-0': 'Products',
+    'allot-import-dialog060657-1': 'Please, select a product.',
+    'allot-import-dialog060657-2': 'Target Organization',
+    'allot-import-dialog060657-3': 'Please select target organization',
+    'allot-import-dialog060657-7': '1. Only xls and xlsx files are allowed for import.',
+    'allot-import-dialog060657-8':
+      '2. Up to 1000 devices can be allocated at a time; a large number of devices requires longer validation and import time.',
+    'allot-import-dialog060657-9':
+      '3. After uploading and allocating, you can view details of failed devices in Device List - More Operations - Device Import Records.',
+    'allot-import-dialog060657-10': 'Device Allocation Template',
+    'allot-import-dialog060657-12': 'Confirm Allocation',
+    'allot-import-dialog060657-13': 'Import Assignments',
+    'allot-import-dialog060657-14': 'Product cannot be empty',
+    'allot-import-dialog060657-15': 'Target organization cannot be empty',
+    'allot-import-dialog060657-17': 'Import Result',
+    'allot-record155854-0': 'Device Allocation Record',
+    'allot-record155854-1': 'Owning Organization',
+    'allot-record155854-2': 'Product Name',
+    'allot-record155854-5': 'Owning organization before allocation',
+    'allot-record155854-7': 'Owning organization after allocation',
+    'allot-record155854-8': 'Total Allocated',
+    'allot-record155854-9': 'Allocated successfully',
+    'allot-record155854-10': 'Allocation failed',
+    'allot-record155854-11': 'Allocation Status',
+    'allot-record155854-12': 'Allocation Method',
+    'allot-record155854-13': 'Allocation Time',
+    'allot-record155854-15': 'Download Details',
+    'batch-import-dialog850870-5': 'Note: Only xls and xlsx files are allowed for import.',
+    'batch-import-dialog850870-6': 'Download Device Import Template',
+    'device-edit148398-0': '* Basic Information',
+    'device-edit148398-1': 'Device Name',
+    'device-edit148398-2': 'Please enter device name',
+    'device-edit148398-3': 'Summary',
+    'device-edit148398-4': 'product?',
+    'device-edit148398-5': 'Product Name',
+    'device-edit148398-6': 'Select',
+    'device-edit148398-7': 'Device No.',
+    'device-edit148398-8': 'Please enter the device number',
+    'device-edit148398-9': 'Buat',
+    'device-edit148398-10':
+      'TCP protocol currently selected; device code is generated in HEX format',
+    'device-edit148398-11':
+      'The selected product uses the Modbus protocol; sub-devices will be generated from the data-point template after the gateway device is created',
+    'device-edit148398-12': 'Firmware Version',
+    'device-edit148398-13': 'Please enter firmware version',
+    'device-edit148398-14': 'Simulated Device',
+    'device-edit148398-15': 'device shadow',
+    'device-edit148398-16': 'Disable Device',
+    'device-edit148398-17': 'Remark',
+    'device-edit148398-18': 'Please enter a note',
+    'device-edit148398-19': 'Positioning Method',
+    'device-edit148398-20': 'Please select device status',
+    'device-edit148398-21': 'Device Longitude',
+    'device-edit148398-22': 'Please enter device longitude',
+    'device-edit148398-23': 'Coordinate Pickup',
+    'device-edit148398-24': 'Device Latitude',
+    'device-edit148398-25': 'Please enter device latitude',
+    'device-edit148398-26': 'Address',
+    'device-edit148398-27': 'Please enter the address of the device',
+    'device-edit148398-28': 'Network access address',
+    'device-edit148398-29': 'Device access IP',
+    'device-edit148398-30': 'Activation Time',
+    'device-edit148398-31': 'Device activation time',
+    'device-edit148398-32': 'Device Signal',
+    'device-edit148398-33': 'Device Signal Strength',
+    'device-edit148398-34': 'Other Information',
+    'device-edit148398-35': 'Certification Informations',
+    'device-edit148398-36': 'QR code',
+    'device-edit148398-37': 'Map display area, displayed when added',
+    'device-edit148398-38': 'Repair',
+    'device-edit148398-39': 'Modify',
+    'device-edit148398-40': 'New',
+    'device-edit148398-41': 'Add',
+    'device-edit148398-42': 'Operating Status',
+    'device-edit148398-43': 'Sub device',
+    'device-edit148398-44': 'Device Channels',
+    'device-edit148398-45': 'Device livestream',
+    'device-edit148398-46': 'Livestream Recording',
+    'device-edit148398-47': 'Device timing',
+    'device-edit148398-48': 'Device sharing',
+    'device-edit148398-49': 'Events Log',
+    'device-edit148398-50': 'Instruction Log',
+    'device-edit148398-51': 'Real time monitoring',
+    'device-edit148398-52': 'Surveillance Statistics',
+    'device-edit148398-53': 'Return to List',
+    'device-edit148398-54': 'Summary (device uploaded read-only data)',
+    'device-edit148398-55': 'Copy',
+    'device-edit148398-56': 'Device QR Code',
+    'device-edit148398-57': 'Close',
+    'device-edit148398-58': 'Mqtt Connection Parameters',
+    'device-edit148398-59': 'One-click copy',
+    'device-edit148398-60': 'Device name cannot be empty',
+    'device-edit148398-61': 'Device name is between 2 and 32 characters long',
+    'device-edit148398-62': 'Firmware version cannot be empty',
+    'device-edit148398-63': 'Received [Device Status - Details] Subject:',
+    'device-edit148398-64': 'Received [Device Status - Details] content:',
+    'device-edit148398-65': 'Device number cannot be empty',
+    'device-edit148398-66': 'Device number can only be alphanumeric',
+    'device-edit148398-67': 'The belonging product cannot be empty',
+    'device-edit148398-68': 'Modified successfully',
+    'device-edit148398-69': 'Device number already exists, adding device failed',
+    'device-edit148398-70': 'Added device successfully.',
+    'device-edit148398-71': 'Copied.',
+    'device-edit148398-72': 'Please select a product first',
+    'device-edit148398-73': 'Configuration Applications',
+    'device-edit148398-74': 'Data Collection',
+    'device-edit148398-75': 'Video Surveillance',
+    'device-edit148398-76': 'Data Debug',
+    'device-edit148398-77': 'Polling Task',
+    'device-edit148398-78': 'Gateway',
+    'device-edit148398-79': 'Cloud Recording',
+    'device-edit148398-80': 'Alert User',
+    'device-edit148398-81': 'Device Alarm',
+    'device-functionlog399522-0': 'Please select the device slave:',
+    'device-functionlog399522-1': 'Please select device slave',
+    'device-functionlog399522-2': 'Slave Address:$',
+    'device-functionlog399522-3': 'Log Types',
+    'device-functionlog399522-4': 'Please select type.',
+    'device-functionlog399522-5': 'Identifier',
+    'device-functionlog399522-6': 'Please enter an identifier',
+    'device-functionlog399522-7': 'Time Frame',
+    'device-functionlog399522-8': 'Start Date',
+    'device-functionlog399522-9': 'End Date',
+    'device-functionlog399522-10': 'Search',
+    'device-functionlog399522-11': 'Reset',
+    'device-functionlog399522-12': 'Instruction Type',
+    'device-functionlog399522-13': 'Set Value',
+    'device-functionlog399522-15': 'Issue Time',
+    'device-functionlog399522-16': 'Issue Result Description',
+    'device-functionlog399522-18': 'Delete',
+    'device-functionlog399522-19': 'Register Address',
+    'device-functionlog399522-20': 'Identifier cannot be empty',
+    'device-functionlog399522-21': '1=Service issue, 2=Property get, 3=OTA upgrade cannot be empty',
+    'device-functionlog399522-22': 'Log value cannot be empty',
+    'device-functionlog399522-23': 'Device number cannot be empty',
+    'device-functionlog399522-24':
+      'Confirm to delete the device service-issue log record with number {0}?',
+    'device-functionlog399522-26': 'Deleted successfully',
+    'device-linkage188958-0': 'Please enter organization name',
+    'device-linkage188958-1': 'Overall Minimum Value',
+    'device-linkage188958-2': 'Online',
+    'device-linkage188958-3': 'Offline',
+    'device-linkage188958-5': 'Devices list',
+    'device-linkage188958-25': 'Please select device status',
+    'device-linkage188958-26': 'Device Longitude',
+    'device-linkage188958-27': 'Please enter device longitude',
+    'device-linkage188958-28': 'Coordinate Pickup',
+    'device-linkage188958-29': 'Device Latitude',
+    'device-linkage188958-30': 'Please enter device latitude',
+    'device-linkage188958-31': 'Address',
+    'device-linkage188958-32': 'Please enter the address of the device',
+    'device-linkage188958-33': 'Network access address',
+    'device-linkage188958-34': 'Device access IP',
+    'device-linkage188958-35': 'Activation Time',
+    'device-linkage188958-36': 'Device activation time',
+    'device-linkage188958-37': 'Device Signal',
+    'device-linkage188958-38': 'Device Signal Strength',
+    'device-linkage188958-39': 'Other Information',
+    'device-linkage188958-40': 'Certification Informations',
+    'device-linkage188958-41': 'QR code',
+    'device-linkage188958-42': 'Map display area, displayed when added',
+    'device-linkage188958-43': 'Operating Status',
+    'device-linkage188958-44': 'Sub device',
+    'device-linkage188958-45': 'Device Channels',
+    'device-linkage188958-46': 'Device livestream',
+    'device-linkage188958-47': 'Livestream Recording',
+    'device-linkage188958-48': 'Device timing',
+    'device-linkage188958-49': 'Device sharing',
+    'device-linkage188958-50': 'Events Log',
+    'device-linkage188958-51': 'Instruction Log',
+    'device-linkage188958-52': 'Real time monitoring',
+    'device-linkage188958-53': 'Surveillance Statistics',
+    'device-linkage188958-54': 'Summary (device uploaded read-only data)',
+    'device-linkage188958-55': 'Copy',
+    'device-linkage188958-56': 'Device QR Code',
+    'device-linkage188958-57': 'Close',
+    'device-linkage188958-58': 'Mqtt Connection Parameters',
+    'device-linkage188958-59': 'One-click copy',
+    'device-linkage188958-60': 'Device name cannot be empty',
+    'device-linkage188958-61': 'Device name is between 2 and 32 characters long',
+    'device-linkage188958-62': 'Firmware version cannot be empty',
+    'device-linkage188958-63': 'Received [Device Status - Details] Subject:',
+    'device-linkage188958-64': 'Received [Device Status - Details] content:',
+    'device-linkage188958-65': 'Device number cannot be empty',
+    'device-linkage188958-66': 'Device number can only be alphanumeric',
+    'device-linkage188958-67': 'The belonging product cannot be empty',
+    'device-linkage188958-68': 'Modified successfully',
+    'device-linkage188958-69': 'Device number already exists, adding device failed',
+    'device-linkage188958-70': 'Added device successfully.',
+    'device-linkage188958-71': 'Copied.',
+    'device-linkage188958-72': 'Please select a product first',
+    'device-linkage188958-73': 'Alert User',
+    'device-log798283-0': 'Log Types',
+    'device-log798283-1': 'Please select type.',
+    'device-log798283-2': 'Identifier',
+    'device-log798283-3': 'Please enter an identifier',
+    'device-log798283-4': 'Time Frame',
+    'device-log798283-5': 'Start Date',
+    'device-log798283-6': 'End Date',
+    'device-log798283-7': 'Search',
+    'device-log798283-8': 'Reset',
+    'device-log798283-9': '&Genre',
+    'device-log798283-10': 'Mode',
+    'device-log798283-11': 'Shadow Mode',
+    'device-log798283-12': 'Online',
+    'device-log798283-13': 'Other Information',
+    'device-log798283-14': 'Time',
+    'device-log798283-15': 'Action',
+    'device-log798283-16': 'Remarks',
+    'device-log798283-17': 'None',
+    'device-log798283-18': 'Device upgrade',
+    'device-log798283-19': 'Device Online',
+    'device-log798283-20': 'Device Offline',
+    'device-log798283-21': 'Element',
+    'device-monitor817489-0': 'Monitoring Interval',
+    'device-monitor817489-1': 'Range: 500-10000 ms',
+    'device-monitor817489-2': 'Please enter monitoring interval',
+    'device-monitor817489-3': 'Monitoring Count',
+    'device-monitor817489-4': 'Range: 1-300',
+    'device-monitor817489-5': 'Please enter monitoring count',
+    'device-monitor817489-6': 'Start Monitoring',
+    'device-monitor817489-7': 'Stop Monitoring',
+    'device-monitor817489-8': 'Receiving device data, please wait...',
+    'device-monitor817489-9': 'Received [Device Status] Subject:',
+    'device-monitor817489-10': 'Received [Device Status] content:',
+    'device-monitor817489-11': 'Received topic [Real-time Monitoring]:',
+    'device-monitor817489-12': 'Received content [Real-time Monitoring]:',
+    'device-monitor817489-13': 'Device is offline; command issue failed',
+    'device-monitor817489-14': 'Real-time monitoring interval range: 500-10000 ms',
+    'device-monitor817489-15': 'Real-time monitoring count range: 1-300',
+    'device-monitor817489-16': 'Update Real-time Monitoring',
+    'device-monitor817489-17': 'Close Real-time Monitoring',
+    'device-monitor817489-18': '(Unit',
+    'device-monitor817489-19': 'None',
+    'device-recycle864193-0': 'Device Recycle',
+    'device-recycle864193-1': 'Recycle Organization',
+    'device-recycle864193-2': 'Please select recycle organization',
+    'device-recycle864193-5': 'Query',
+    'device-recycle864193-6': 'Reset',
+    'device-recycle864193-7': 'All Equipment',
+    'device-recycle864193-8': 'No data',
+    'device-recycle864193-12': 'Selected Devices',
+    'device-recycle864193-13': 'Confirm Recycle',
+    'device-recycle864193-14': 'Recycle organization cannot be empty',
+    'device-select-allot.903153-0': 'dispensing device.',
+    'device-select-allot.903153-4': 'Query',
+    'device-select-allot.903153-5': 'Reset',
+    'device-select-allot.903153-6': 'All Equipment',
+    'device-select-allot.903153-7': 'No data',
+    'device-select-allot.903153-11': 'Selected Devices',
+    'device-select-allot.903153-14': 'Confirm Allocation',
+    'device-statistic932674-0': 'Please select the device slave:',
+    'device-statistic932674-1': 'Please select device slave',
+    'device-statistic932674-2': 'Time Frame',
+    'device-statistic932674-3': 'Start Date',
+    'device-statistic932674-4': 'End Date',
+    'device-statistic932674-5': 'Query',
+    'device-statistic932674-6': 'Statistics (Unit',
+    'device-statistic932674-7': 'None',
+    'device-sub299018-2': 'Device Status',
+    'device-sub299018-3': 'Please select device status',
+    'device-sub299018-4': 'Search',
+    'device-sub299018-5': 'Reset',
+    'device-sub299018-7': 'Gateway Code',
+    'device-sub299018-8': 'Slave Address',
+    'device-sub299018-10': 'Activation Time',
+    'device-sub299018-11': 'Created Time',
+    'device-sub299018-13': 'Edit',
+    'device-sub299018-14': 'Device Name',
+    'device-sub299018-15': 'Please enter device name',
+    'device-sub299018-19': 'Device name cannot be empty',
+    'device-sub299018-20': 'Firmware version cannot be empty',
+    'device-sub299018-21': 'Device Addition',
+    'device-sub299018-22': 'Modify Device',
+    'device-sub299018-23': 'Modified successfully',
+    'device-sub299018-24': 'Added successfully',
+    'device-sub299018-25': 'Are you sure you want to delete the data item with device number {0}?',
+    'device-sub299018-27': 'Deleted successfully',
+    'device-sub299018-28': 'The bound sub-device default address inherits from the product',
+    'device-user037521-0': 'Refresh',
+    'device-user037521-1': 'Customer no.',
+    'device-user037521-2': 'Client Name',
+    'device-user037521-3': 'Phone No.:',
+    'device-user037521-4': 'User Type',
+    'device-user037521-5': 'Owner',
+    'device-user037521-6': 'Share',
+    'device-user037521-7': 'Share Time',
+    'device-user037521-8': 'Remarks',
+    'device-user037521-10': 'View',
+    'device-user037521-11': 'Cancel Share',
+    'device-user037521-12': 'Device sharing',
+    'device-user037521-13': "Please enter the user's phone number",
+    'device-user037521-14': 'Query User',
+    'device-user037521-15': 'User Info',
+    'device-user037521-16': 'User ID:',
+    'device-user037521-17': 'Phone Number:',
+    'device-user037521-18': 'User Name:',
+    'device-user037521-19': 'Set User Permission',
+    'device-user037521-20': 'Permission Name',
+    'device-user037521-21': 'Permission Code',
+    'device-user037521-24': 'Edit',
+    'device-user037521-25': 'Close',
+    'device-user037521-26': 'Nomor ponsel tidak boleh kosong',
+    'device-user037521-27': 'Phone number length is 11 digits',
+    'device-user037521-28': 'Confirm to cancel sharing the device?',
+    'device-user037521-29': 'Share canceled successfully',
+    'device-user037521-30': 'Device info not found. Please refresh and retry.',
+    'device-user037521-31': 'User info not found, or this user is already a device user',
+    'device-user037521-32': 'Device upgrade',
+    'device-user037521-33': 'Device OTA Upgrade',
+    'device-user037521-34': 'Device timing',
+    'device-user037521-35': 'Scheduled Task Execution',
+    'device-user037521-36': 'Device Log',
+    'device-user037521-37': 'Includes event logs and command logs',
+    'device-user037521-38': 'Real time monitoring',
+    'device-user037521-39':
+      'After issuing the real-time monitoring command, the chart displays device-reported data in real time',
+    'device-user037521-40': 'Surveillance Statistics',
+    'device-user037521-41': 'The chart displays stored historical monitoring data',
+    'device-user037521-42': 'Updated successfully',
+    'device-user037521-43': 'Added successfully',
+    'device-timer433369-0': 'Timing Name',
+    'device-timer433369-1': 'Please enter a timing name',
+    'device-timer433369-2': 'Timing status',
+    'device-timer433369-3': 'Please select timing status',
+    'device-timer433369-4': 'Search',
+    'device-timer433369-5': 'Reset',
+    'device-timer433369-6': 'Add',
+    'device-timer433369-7': 'Name',
+    'device-timer433369-8': 'Description',
+    'device-timer433369-9': 'Cron Expression',
+    'device-timer433369-10': 'Action',
+    'device-timer433369-11': 'Status',
+    'device-timer433369-12': 'Enable',
+    'device-timer433369-14': 'View',
+    'device-timer433369-15': 'Schedule Details',
+    'device-timer433369-16': 'Delete',
+    'device-timer433369-17': 'Execute Once',
+    'device-timer433369-18': 'Execute time',
+    'device-timer433369-19': 'Select time',
+    'device-timer433369-20': 'Select Weekday',
+    'device-timer433369-21': 'Please select',
+    'device-timer433369-22': 'Cron Expression',
+    'device-timer433369-23': 'Cron Execution Expression',
+    'device-timer433369-24': 'Generate Expression',
+    'device-timer433369-25': 'Custom Expression',
+    'device-timer433369-26': 'Execution Action',
+    'device-timer433369-27': 'Please select type.',
+    'device-timer433369-28': 'Please select parent thing model',
+    'device-timer433369-29': 'Value',
+    'device-timer433369-30': 'Please enter a string',
+    'device-timer433369-31': 'Add Execution Action',
+    'device-timer433369-32': 'Add',
+    'device-timer433369-33': 'Modify',
+    'device-timer433369-35': 'Cron Expression Builder',
+    'device-timer433369-36': 'Schedule No.:',
+    'device-timer433369-37': 'Schedule Name:',
+    'device-timer433369-38': 'Schedule Group:',
+    'device-timer433369-39': 'Created Time:',
+    'device-timer433369-40': 'Concurrent:',
+    'device-timer433369-41': 'Allow',
+    'device-timer433369-42': 'Forbid',
+    'device-timer433369-43': 'Cron Expression:',
+    'device-timer433369-44': 'Execution Policy:',
+    'device-timer433369-45': 'Default Policy',
+    'device-timer433369-46': 'Execute Immediately',
+    'device-timer433369-47': 'Abandon Execution',
+    'device-timer433369-48': 'Next Execution Time:',
+    'device-timer433369-49': 'Schedule Status:',
+    'device-timer433369-50': '&Normal',
+    'device-timer433369-51': 'Pause',
+    'device-timer433369-52': 'Execution Action:',
+    'device-timer433369-53': 'Close',
+    'device-timer433369-54': 'Monday',
+    'device-timer433369-55': 'Tuesday',
+    'device-timer433369-56': 'Wednesday',
+    'device-timer433369-57': 'Thursday',
+    'device-timer433369-58': 'Friday',
+    'device-timer433369-59': 'Saturday',
+    'device-timer433369-60': 'Sunday',
+    'device-timer433369-61': 'Attribute',
+    'device-timer433369-62': 'Function',
+    'device-timer433369-63': 'Schedule name cannot be empty',
+    'device-timer433369-64': 'Deactivate',
+    'device-timer433369-65': 'Are you sure you want to {0} timer?',
+    'device-timer433369-67': 'Berhasil',
+    'device-timer433369-68': 'Confirm to execute {0} immediately',
+    'device-timer433369-69': 'Executed successfully',
+    'device-timer433369-70': 'Add Schedule',
+    'device-timer433369-71': 'Modify Schedule',
+    'device-timer433369-72': 'No Unit',
+    'device-timer433369-73': 'Confirm to delete the schedule record with number {0}?',
+    'device-timer433369-75': 'Deleted successfully',
+    'device-timer433369-76': 'Time',
+    'device-timer433369-77': 'Every day',
+    'device-timer433369-78': 'Mon:',
+    'device-timer433369-79': 'Tue:',
+    'device-timer433369-80': 'Wed:',
+    'device-timer433369-81': 'Thursday',
+    'device-timer433369-82': 'Friday',
+    'device-timer433369-83': 'Saturday',
+    'device-timer433369-84': 'Sunday',
+    'device-timer433369-85': 'Custom Cron Expression',
+    'device-timer433369-86': 'None',
+    'device-timer433369-87': 'Execution time cannot be empty',
+    'device-timer433369-88': 'Please select the weekday to execute',
+    'device-timer433369-89': 'Cron expression cannot be empty',
+    'device-timer433369-90': 'Options and values in the execution action cannot be empty',
+    'device-timer433369-91': 'Modified successfully',
+    'device-timer433369-92': 'Added successfully',
+    'import-record086254-0': 'Device Import Records',
+    'import-record086254-2': 'Batch Task Status',
+    'import-record086254-3': 'Start Date',
+    'import-record086254-4': 'End Date',
+    'import-record086254-5': 'Search',
+    'import-record086254-6': 'Reset',
+    'import-record086254-7': 'Batch No.',
+    'import-record086254-8': 'over Total Devices per:',
+    'import-record086254-9': 'Success Count',
+    'import-record086254-10': 'Failure Count',
+    'import-record086254-11': 'Task Status',
+    'import-record086254-12': 'Completion date',
+    'import-record086254-13': 'Product Name',
+    'device-modbus.433390-1': 'Add Polling Task',
+    'index.105953-0': 'Device Name',
+    'index.105953-1': 'Please enter device name',
+    'index.105953-2': 'Device No.',
+    'index.105953-3': 'Please enter the device number',
+    'index.105953-4': 'Device Status',
+    'index.105953-5': 'Please select device status',
+    'index.105953-6': 'MY GROUPS',
+    'index.105953-7': 'Please select my group',
+    'index.105953-8': 'Search',
+    'index.105953-9': 'Reset',
+    'index.105953-10': 'Add Device',
+    'index.105953-11': 'Manual Addition',
+    'index.105953-12': 'Batch import',
+    'index.105953-13': 'dispensing device.',
+    'index.105953-14': 'Select Allocation',
+    'index.105953-15': 'Import Assignments',
+    'index.105953-16': 'Recycle Device',
+    'index.105953-17': 'Toggle Display',
+    'index.105953-18': 'Show Sub-organization Data',
+    'index.105953-19': 'After selecting, this level can view sub-level data',
+    'index.105953-20': 'NO.',
+    'index.105953-21': 'Products',
+    'index.105953-22': 'Protocol',
+    'index.105953-23': 'Communications protocol',
+    'index.105953-24': 'Number of child devices',
+    'index.105953-26': 'Enable',
+    'index.105953-27': 'Disable',
+    'index.105953-28': 'Status',
+    'index.105953-29': 'Signal',
+    'index.105953-32': 'Activation Time',
+    'index.105953-33': 'Created Time',
+    'index.105953-35': 'Delete',
+    'index.105953-36': 'View',
+    'index.105953-37': 'QR code',
+    'index.105953-38': 'Shared devices',
+    'index.105953-39': 'Products',
+    'index.105953-40': 'Operating Status',
+    'index.105953-41': 'No data. Please add a device.',
+    'index.105953-42': 'Device QR Code',
+    'index.105953-43': 'Received [Device Status] Subject:',
+    'index.105953-44': 'Received [Device Status] content:',
+    'index.105953-45': 'Are you sure you want to delete the data item with device number {0}?',
+    'index.105953-47': 'Deleted successfully',
+    'index.105953-48': 'More Operations',
+    'index.105953-49': 'Import Records',
+    'index.105953-50': 'Generate Device Number',
+    'index.105953-51': 'Equipment Recycling Record',
+    'index.105953-52': 'Device Allocation Record',
+    'index.105953-53': 'Alarm:',
+    'index.105953-54': 'Generate Device Number',
+    'index.105953-55': 'Generated Count',
+    'index.105953-56': 'Confirm',
+    'index.105953-57': 'Close',
+    'index.105953-58': 'No configuration yet. Please configure the template configuration first!',
+    'product-list.058448-0': 'Select Products',
+    'product-list.058448-2': 'Please enter product name',
+    'product-list.058448-3': 'Search',
+    'product-list.058448-4': 'Reset',
+    'product-list.058448-6': 'Category Name',
+    'product-list.058448-7': 'Tenant name',
+    'product-list.058448-8': 'Authorized Code',
+    'product-list.058448-9': 'Enable',
+    'product-list.058448-10': 'Not enabled',
+    'product-list.058448-11': 'Authentication',
+    'product-list.058448-12': 'Network method',
+    'product-list.058448-13': 'Created Time',
+    'product-list.058448-14': 'Confirm',
+    'product-list.058448-15': 'Close',
+    'realTime-status099127-0': 'Slave Real-time Status',
+    'realTime-status099127-1': 'Property Report',
+    'realTime-status099127-2': 'Time:',
+    'realTime-status099127-3': 'Service Issue',
+    'realTime-status099127-4': 'Send',
+    'realTime-status099127-5': 'Device Command',
+    'realTime-status099127-6': 'Service Issue:',
+    'realTime-status099127-7': 'Device Response:',
+    'realTime-status099127-8': 'No data',
+    'realTime-status099127-9': 'Please select device slave',
+    'realTime-status099127-10': 'Gateway Real-time Status',
+    'realTime-status099127-11': 'Device Mode',
+    'realTime-status099127-12': 'Please select',
+    'realTime-status099127-13': 'Please enter a string',
+    'realTime-status099127-14': 'Please enter a string, unit: {0}',
+    'realTime-status099127-15': 'Instruction Transmission',
+    'realTime-status099127-16': 'Status when device is offline',
+    'realTime-status099127-17': 'Please enter a decimal',
+    'realTime-status099127-18': 'Please enter a whole number',
+    'realTime-status099127-19': 'Service Call',
+    'realTime-status099127-20': 'Data Range:',
+    'realTime-status099127-21': 'Cancel',
+    'realTime-status099127-22': 'Confirm',
+    'realTime-status099127-23': 'Online',
+    'realTime-status099127-24': 'Shadow Mode',
+    'realTime-status099127-25': 'Offline form',
+    'realTime-status099127-26': 'Issuing Orders',
+    'realTime-status099127-27': 'Service call successful!',
+    'realTime-status099127-28': 'Received [Device Status - Run] Subject:',
+    'realTime-status099127-29': 'Received [Device Status - Run] content:',
+    'realTime-status099127-30': 'Received [Object Model] Theme 1:',
+    'realTime-status099127-31': 'Received [object model] content:',
+    'recycle-record.845969-0': 'Equipment Recycling Record',
+    'recycle-record.845969-1': 'Organization Name',
+    'recycle-record.845969-4': 'Search',
+    'recycle-record.845969-5': 'Reset',
+    'recycle-record.845969-6': 'Recycled Organization Name',
+    'recycle-record.845969-8': 'Recycle Time',
+    'user-list.041943-0': 'Select Users',
+    'user-list.041943-1': 'Phone No.:',
+    'user-list.041943-2': "Please enter the user's phone number",
+    'user-list.041943-3': 'Query',
+    'user-list.041943-5': 'Customer no.',
+    'user-list.041943-6': 'Client Name',
+    'user-list.041943-7': 'User Nice Name',
+    'user-list.041943-8': 'Created Time',
+    'user-list.041943-9': 'Share',
+    'user-list.041943-10': 'Close',
+    'user-list.041943-11': 'Nomor ponsel tidak boleh kosong',
+    'user-list.041943-12': 'Phone number length is 11 digits',
+    'user-list.041943-13': 'Added successfully',
+    'running-status866086-0': 'Device Mode',
+    'running-status866086-1': 'OTA Upgrade',
+    'running-status866086-2': 'Check for Updates',
+    'running-status866086-3': 'Please select',
+    'running-status866086-4': 'Please enter a string',
+    'running-status866086-5': 'Please enter a string, unit: {0}',
+    'running-status866086-6': 'Instruction Transmission',
+    'running-status866086-7': 'Please enter a decimal',
+    'running-status866086-8': 'Please enter a whole number',
+    'running-status866086-9': 'Status when device is offline',
+    'running-status866086-10': 'Device Firmware Upgrade',
+    'running-status866086-11': 'Already the latest version; no upgrade needed',
+    'running-status866086-12': 'Can upgrade to the following versions',
+    'running-status866086-13': 'Branch name',
+    'running-status866086-16': 'Download url',
+    'running-status866086-17': 'Firmware description',
+    'running-status866086-18': 'Upgrade',
+    'running-status866086-20': 'Device Control',
+    'running-status866086-21': 'Received [Device Status - Run] Subject:',
+    'running-status866086-22': 'Received [Device Status - Run] content:',
+    'running-status866086-23': 'Received [Object Model] Theme 1:',
+    'running-status866086-24': 'Received [object model] content:',
+    'running-status866086-25': 'Service call successful!',
+    'running-status866086-26': 'Online',
+    'running-status866086-27': 'Shadow Mode',
+    'running-status866086-28': 'Offline form',
+    'running-status866086-29': 'Element count mismatch; array element count is',
+    'running-status866086-30': 'separated by English commas.',
+    'running-status866086-31': 'Device upgrade',
+    'sub.083943-0': 'Add Sub-device',
+    'sub.083943-1': 'Remove Sub-device',
+    'sub.083943-2': 'Set Sub-device Address',
+    'sub.083943-3': 'Sub-device Address',
+    'sub.083943-4': 'Confirm to delete the device record with number {0}?',
+    'sub.083943-5': 'Saved',
+    'sub-device-list323213-0': 'Select device',
+    'sub-device-list323213-1': 'Please enter sub-device number',
+    'sub-device-list323213-2': 'Name',
+    'sub-device-list323213-3': 'Please enter sub-device name',
+    'sub-device-list323213-4': 'Sub-device added successfully',
+    'scada.789543-0': 'No configuration yet',
+    'variable-case347856-0': 'Variable type',
+    'variable-case347856-1': 'Please select variable',
+    'variable-case347856-2': 'Variable Name',
+    'variable-case347856-3': 'Please enter variable name',
+    'variable-case347856-4': 'Search',
+    'variable-case347856-5': 'Reset',
+    'variable-case347856-6': 'Variable ID',
+    'variable-case347856-7': 'Variable type',
+    'variable-case347856-8': 'Variable Name',
+    'variable-case347856-9': 'Updated time',
+    'variable-case347856-10': 'Current Value',
+    'variable-case347856-11': 'Actions',
+    'variable-case347856-12': 'History Query',
+    'variable-case347856-13': 'Active Collection',
+    'variable-case347856-14': 'Issue a command to actively collect the variable. Continue?',
+    'variable-case347856-15': 'Tip',
+    'variable-case347856-16': 'Collect All',
+    'inline-video986754-0': 'No Video',
+    'iot.group.index.637432-0': 'Group Name',
+    'iot.group.index.637432-1': 'Please enter group name',
+    'iot.group.index.637432-2': 'MY GROUPS',
+    'iot.group.index.637432-3': 'Search',
+    'iot.group.index.637432-4': 'Reset',
+    'iot.group.index.637432-5': 'Add',
+    'iot.group.index.637432-6': 'Group Sort Order',
+    'iot.group.index.637432-7': 'Created Time',
+    'iot.group.index.637432-8': 'Belonging User',
+    'iot.group.index.637432-9': 'Remarks',
+    'iot.group.index.637432-10': 'Actions',
+    'iot.group.index.637432-11': 'View devices',
+    'iot.group.index.637432-12': 'Device Addition',
+    'iot.group.index.637432-13': 'View',
+    'iot.group.index.637432-14': 'Delete',
+    'iot.group.index.637432-15': 'Please enter group sort order',
+    'iot.group.index.637432-16': 'Please enter content',
+    'iot.group.index.637432-17': 'Modify',
+    'iot.group.index.637432-18': 'Add',
+    'iot.group.index.637432-19': 'Cancel',
+    'iot.group.index.637432-20': 'Group name cannot be empty',
+    'iot.group.index.637432-21': 'Group sort order cannot be empty; max value is 99',
+    'iot.group.index.637432-22': 'Add Device Group',
+    'iot.group.index.637432-23': 'Modify Device Group',
+    'iot.group.index.637432-24': 'Modified successfully',
+    'iot.group.index.637432-25': 'Added successfully',
+    'iot.group.index.637432-26': 'Confirm to delete the device group record with number {0}?',
+    'iot.group.index.637432-27': 'Deleted successfully',
+    'iot.group.device-list.849593-0': 'Select device',
+    'iot.group.device-list.849593-1': 'Device Name',
+    'iot.group.device-list.849593-2': 'Please enter device name',
+    'iot.group.device-list.849593-3': 'Search',
+    'iot.group.device-list.849593-4': 'Device Name',
+    'iot.group.device-list.849593-5': 'Device No.',
+    'iot.group.device-list.849593-6': 'Product Name',
+    'iot.group.device-list.849593-7': 'Device type',
+    'iot.group.device-list.849593-8': 'Share',
+    'iot.group.device-list.849593-9': 'Own',
+    'iot.group.device-list.849593-10': 'Device Status',
+    'iot.group.device-list.849593-11': 'Confirm',
+    'iot.group.device-list.849593-12': 'Cancel',
+    'iot.group.device-list.849593-13': 'Devices under the group updated successfully',
+    'instruction-parsing830424-0': 'Issue Device No.:',
+    'instruction-parsing830424-1': 'Manual Issue',
+    'instruction-parsing830424-2': 'Device Return',
+    'instruction-parsing830424-3': 'Device Report',
+    'instruction-parsing830424-4': 'Parse Data',
+    'instruction-parsing830424-5': 'Parsed',
+    'instruction-parsing830424-6': 'Thing Model Name:',
+    'instruction-parsing830424-7': 'Identifier:',
+    'instruction-parsing830424-8': 'Data Value:',
+    'instruction-parsing830424-9': 'More insights',
+    'instruction-parsing830424-10': 'Please enter content',
+    'instruction-parsing830424-11': 'Please select',
+    'instruction-parsing830424-12': 'issued',
+    'instruction-parsing830424-13': 'Report',
+    'instruction-parsing830424-14': 'Send',
+    'instruction-parsing830424-15': 'Common Quick Commands',
+    'instruction-parsing830424-16': 'Command Generation',
+    'instruction-parsing830424-17': 'Add to common shortcuts',
+    'instruction-parsing830424-18': 'Generate instruction data',
+    'instruction-parsing830424-19': 'Slave Address',
+    'instruction-parsing830424-20': 'Instruction Type',
+    'instruction-parsing830424-21': 'Feature Key',
+    'instruction-parsing830424-22': 'Start register address',
+    'instruction-parsing830424-23': 'Register value',
+    'instruction-parsing830424-24': 'Register value',
+    'instruction-parsing830424-25': 'Coil status value',
+    'instruction-parsing830424-26': 'Click to generate preview',
+    'instruction-parsing830424-27': 'Add to Common',
+    'instruction-parsing830424-28': 'Copy Data',
+    'instruction-parsing830424-29': 'Command Name',
+    'instruction-parsing830424-30': 'Input',
+    'instruction-parsing830424-31': 'Command Data',
+    'instruction-parsing830424-32': 'Cancel',
+    'instruction-parsing830424-33': 'Confirm',
+    'instruction-parsing830424-34': 'Delete Common Shortcut',
+    'instruction-parsing830424-35': 'Confirm Delete',
+    'instruction-parsing830424-36': '?',
+    'instruction-parsing830424-37': 'Cancel',
+    'instruction-parsing830424-38': 'Confirm',
+    'instruction-parsing830424-39': 'More insights',
+    'instruction-parsing830424-40': 'No.',
+    'instruction-parsing830424-41': 'Object model name',
+    'instruction-parsing830424-42': 'Identifier',
+    'instruction-parsing830424-43': 'Data Value',
+    'instruction-parsing830424-44': 'Number of coils',
+    'instruction-parsing830424-45': 'Register quantity',
+    'instruction-parsing830424-46': 'Coil value',
+    'instruction-parsing830424-47': 'Register value',
+    'instruction-parsing830424-48': '01 Read coil status',
+    'instruction-parsing830424-49': '02 Reading Input Status',
+    'instruction-parsing830424-50': '03 Read save registers',
+    'instruction-parsing830424-51': '04 Read Input Registers',
+    'instruction-parsing830424-52': '05 Writing a single coil register',
+    'instruction-parsing830424-53': '06 Writing to a single save register',
+    'instruction-parsing830424-54': '15 Write Multiple Coil States',
+    'instruction-parsing830424-55': '16 Write multiple save registers',
+    'instruction-parsing830424-56': 'issued',
+    'instruction-parsing830424-57': 'Report',
+    'instruction-parsing830424-58': 'Edit',
+    'instruction-parsing830424-59': 'Add',
+    'instruction-parsing830424-60': 'Quick command succeeded',
+    'instruction-parsing830424-61': 'Quick command failed',
+    'instruction-parsing830424-62': 'Encoding Failed',
+    'instruction-parsing830424-63': 'Command cannot be empty',
+    'instruction-parsing830424-64': 'Send Failed',
+    'instruction-parsing830424-65': 'Parse Result Empty',
+    'instruction-parsing830424-66': 'Encoding Failed',
+    'instruction-parsing830424-67': 'Edit',
+    'instruction-parsing830424-68': 'Delete',
+    'instruction-parsing830424-69': 'Command deleted successfully',
+    'instruction-parsing830424-70': 'Command deletion failed',
+    'device-modbus-task384302-0': 'Timing Name',
+    'device-modbus-task384302-1': 'Please enter a timing name',
+    'device-modbus-task384302-2': 'Timing status',
+    'device-modbus-task384302-3': 'Please select timing status',
+    'device-modbus-task384302-4': 'Search',
+    'device-modbus-task384302-5': 'Reset',
+    'device-modbus-task384302-6': 'Add',
+    'device-modbus-task384302-7': 'Name',
+    'device-modbus-task384302-8': 'Description',
+    'device-modbus-task384302-9': 'Cron Expression',
+    'device-modbus-task384302-10': 'Action',
+    'device-modbus-task384302-11': 'Delete',
+    'device-modbus-task384302-12': 'Add to common shortcuts',
+    'device-modbus-task384302-13': 'Generate instruction data',
+    'device-modbus-task384302-14': 'Slave Address',
+    'device-modbus-task384302-15': 'Feature Key',
+    'device-modbus-task384302-16': 'Start register address',
+    'device-modbus-task384302-17': 'Register value',
+    'device-modbus-task384302-18': 'Coil status value',
+    'device-modbus-task384302-19': 'Time Period',
+    'device-modbus-task384302-20': 'Periodic Cycle',
+    'device-modbus-task384302-21':
+      'For scenarios with periodic rules, poll once per natural day on a fixed cycle.',
+    'device-modbus-task384302-22':
+      'e.g.: poll once daily at 07:00 (value time range: today 07:00 - yesterday 07:00)',
+    'device-modbus-task384302-23': 'Every',
+    'device-modbus-task384302-24': 'Poll Once',
+    'device-modbus-task384302-25': 'Click to generate preview',
+    'device-modbus-task384302-26': 'Copy Data',
+    'device-modbus-task384302-27': 'Cancel',
+    'device-modbus-task384302-28': 'Confirm',
+    'device-modbus-task384302-29': 'Number of coils',
+    'device-modbus-task384302-30': 'Register quantity',
+    'device-modbus-task384302-31': 'Coil value',
+    'device-modbus-task384302-32': 'Register value',
+    'device-modbus-task384302-33': '01 Read coil status',
+    'device-modbus-task384302-34': '02 Reading Input Status',
+    'device-modbus-task384302-35': '03 Read save registers',
+    'device-modbus-task384302-36': '04 Read Input Registers',
+    'device-modbus-task384302-37': '05 Writing a single coil register',
+    'device-modbus-task384302-38': '06 Writing to a single save register',
+    'device-modbus-task384302-39': '15 Write Multiple Coil States',
+    'device-modbus-task384302-40': '16 Write multiple save registers',
+    'device-modbus-task384302-41': 'Encoding Failed',
+    'device-modbus-task384302-42': 'Enable',
+    'device-modbus-task384302-43': 'Deactivate',
+    'device-modbus-task384302-44': 'Are you sure you want to {0} timer?',
+    'device-modbus-task384302-45': 'Berhasil',
+    'device-modbus-task384302-46': 'Time',
+    'device-modbus-task384302-47': 'Every day',
+    'device-modbus-task384302-48': 'Mon:',
+    'device-modbus-task384302-49': 'Tue:',
+    'device-modbus-task384302-50': 'Wed:',
+    'device-modbus-task384302-51': 'Thursday',
+    'device-modbus-task384302-52': 'Friday',
+    'device-modbus-task384302-53': 'Saturday',
+    'device-modbus-task384302-54': 'Sunday',
+    'device-modbus-task384302-55': 'Custom Cron Expression',
+    'device-modbus-task384302-56': 'Task ID',
+    'device-modbus-task384302-57': 'OPERATION',
+    'device-modbus-task384302-58': 'Status',
+    'device-modbus-task384302-59': 'Scheduled Time',
+    'device-modbus-task384302-60': 'Actions',
+    'device-modbus-task384302-61': 'Delete',
+    'device-modbus-task384302-62': 'Modified successfully',
+    'device-modbus-task384302-63': 'Added successfully',
+    'device-modbus-task384302-64': 'Confirm to delete the polling task record with number {0}?',
+    'device-modbus-task384302-65': 'Deleted successfully',
+    'order.index.045965-1': 'Add Command Permission Control',
+    'order.index.045965-2': 'Modify Command Permission Control',
+    'order.index.045965-3':
+      'Confirm to delete the command permission control record with number {0}?',
+    'order.index.045965-4': 'OPERATION',
+    'order.index.045965-5': 'Device',
+    'order.index.045965-6': 'User',
+    'order.index.045965-7': 'Allowed Operations Count',
+    'order.index.045965-8': 'Start Time',
+    'order.index.045965-9': 'End Time',
+    'order.index.045965-10': 'Select device',
+    'order.index.045965-11': 'Select Users',
+    'order.index.045965-12': 'Command Config',
+    'order.index.045965-13': 'Select all',
+    'order.index.045965-14': 'Operation Count',
+    'order.index.045965-15': 'Start Time',
+    'order.index.045965-16': 'Please select start time',
+    'order.index.045965-17': 'End Time',
+    'order.index.045965-18': 'Please select end hour',
+    'order.index.045965-19': 'Select File',
+    'order.index.045965-20': 'Image',
+    'order.index.045965-21': 'Remarks',
+    'order.index.045965-22': 'Please enter content',
+    'order.index.045965-23': 'Confirm',
+    'order.index.045965-24': 'Cancel',
+    'order.index.045965-25': 'Please select the equipment',
+    'order.index.045965-26': 'Please select user',
+    'order.index.045965-27': 'Operation count cannot be empty',
+    'order.index.045965-28': 'Please select start time',
+    'order.index.045965-29': 'Please select end hour',
+    'order.index.045965-30': 'Select at least one command',
+    'device-alert309509-0': 'Alarm Name',
+    'device-alert309509-1': 'Please enter alarm name',
+    'device-alert309509-2': 'Alarm Level',
+    'device-alert309509-3': 'Please select alarm level',
+    'device-alert309509-4': 'Process status',
+    'device-alert309509-5': 'Please select handling status',
+    'device-alert309509-6': 'Search',
+    'device-alert309509-7': 'Reset',
+    'device-alert309509-8': 'Alarm Source',
+    'device-alert309509-9': 'Alarm time',
+    'device-alert309509-10': 'Data',
+    'device-alert309509-11': 'Process status',
+    'device-alert309509-12': 'Actions',
+    'device-alert309509-13': 'Handle',
+    'device-alert309509-14': 'Handling Result',
+    'device-alert309509-15': 'Please enter content',
+    'device-alert309509-16': 'Confirm',
+    'device-alert309509-17': 'Cancel',
+    'device-alert309509-18': 'Handling content cannot be empty',
+    'device-alert309509-19': 'Modify Device Alarm',
+    'device-alert309509-20': 'Modified successfully',
+    'device-alert309509-21': 'Added successfully',
+    'device-variable930930-0': 'Device is not active.',
+    'device-variable930930-1': 'Device is disabled',
+    'device-variable930930-2': 'Device is offline',
+    'device-variable930930-3': 'Issued successfully',
+    'device-variable930930-4': 'Please input data',
+    'device-variable930930-5': 'Edit',
+    'device-variable930930-6': 'Confirm',
+    'device-variable930930-7': 'Cancel',
+    'device-variable930930-8': 'Please input data',
+    'device-variable930930-9': 'Device is not active.',
+    'device-variable930930-10': 'Device is disabled',
+    'device-variable930930-11': 'Device is offline',
+    'realTime-status845353-0': 'Edit',
+    'realTime-status845353-1': 'Issuing Orders',
+    'realTime-status845353-2': 'Report Time:',
+    'realTime-status845353-3': 'Issuing Orders',
+    'realTime-status845353-4': 'Cancel',
+    'realTime-status845353-5': 'Confirm',
+    'realTime-status845353-6': 'Issued successfully',
+    'configdevi641838-0': 'Transfer Department',
+    'configdevi641838-1':
+      'After selecting the target department, its personnel will be loaded; transfer records are generated as a per-device preview.',
+    'configdevi641838-2': 'Original Department',
+    'deviceallo663824-0': 'Created Time',
+    'deviceallo663824-1': 'Start Date',
+    'deviceallo663824-2': 'End Date',
+    'deviceallo663824-3': 'Export',
+    'deviceallo873237-0': 'View the department change records before and after device transfer',
+    'bominfovue772542-0': 'Material Name',
+    'bominfovue772542-1': 'Please enter material name',
+    'bominfovue772542-2': 'Search',
+    'bominfovue772542-3': 'Reset',
+    'bominfovue772542-4': 'Material Code',
+    'bominfovue772542-5': 'Specification/Model',
+    'bominfovue772542-6': 'Unit',
+    'bominfovue772542-7': 'Remarks',
+    'bominfovue772542-8': 'Created Time',
+    'bomlistvue481710-0': 'User System',
+    'bomlistvue481710-1': 'Three-way login',
+    'bomlistvue481710-2': 'Excel Import Export',
+    'bomlistvue481710-3': "`Device Category:${scope.row.deviceCategoryName || 'None'}`",
+    'bomlistvue481710-4': 'Fix',
+    'bomlistvue481710-5': 'Maintain',
+    'bomtreevue000110-0': 'Please enter a BOM name',
+    'bomtreevue000110-1': 'Add child node',
+    'bomtreevue000110-2': 'Edit Node',
+    'bomtreevue000110-3': 'Delete node',
+    'bomtreevue000110-4': 'Copy',
+    'bomtreevue000110-5': 'Profile Classification Name',
+    'bomtreevue000110-6': 'Please enter a profile category name',
+    'bomtreevue000110-7': 'Display Order',
+    'bomtreevue000110-8': 'Remarks',
+    'bomtreevue000110-9': 'Please enter remarks',
+    'bomtreevue000110-10': 'Confirm',
+    'bomtreevue000110-11': 'Cancel',
+    'brandlistv210116-0': 'Choose brand',
+    'brandlistv210116-1': 'Dictionary tags',
+    'brandlistv210116-2': 'Please enter dictionary label',
+    'brandlistv210116-3': 'Status',
+    'brandlistv210116-4': 'Data Status',
+    'brandlistv210116-5': 'Search',
+    'brandlistv210116-6': 'Reset',
+    'brandlistv210116-7': 'Select',
+    'brandlistv210116-8': 'Dictionary encoding',
+    'brandlistv210116-9': 'Dictionary key value',
+    'brandlistv210116-10': 'Remarks',
+    'brandlistv210116-11': 'Created Time',
+    'checkcerti853760-0': 'Device Name',
+    'checkcerti853760-1': 'Please enter device name',
+    'checkcerti853760-2': 'Test type',
+    'checkcerti853760-3': 'Please select a test type',
+    'checkcerti853760-4': 'Serial Number',
+    'checkcerti853760-5': 'Please enter the certificate number',
+    'checkcerti853760-6': 'Inspection Date',
+    'checkcerti853760-7': 'Start Date',
+    'checkcerti853760-8': 'End Date',
+    'checkcerti853760-9': 'Test UoM',
+    'checkcerti853760-10': 'Please enter the testing unit',
+    'checkcerti853760-11': 'Validity Period',
+    'checkcerti853760-12': 'Search',
+    'checkcerti853760-13': 'Reset',
+    'checkcerti853760-14': 'Export',
+    'checkcerti853760-15': 'Device Code',
+    'checkcerti853760-16': 'Department Name',
+    'checkcerti853760-17': 'Remarks',
+    'checkcerti853760-18': 'Attachment',
+    'checkcerti853760-19': 'View',
+    'checkcerti853760-20': 'Equipment to be inspected certificate has expired red alert',
+    'checkcerti853760-21': 'Download',
+    'checkcerti853760-22': 'Confirm',
+    'indexvue257540-0': 'Oxygen Pressure',
+    'indexvue257540-1': 'Oxygen Instantaneous Flow',
+    'indexvue257540-2': 'Oxygen Cumulative Flow',
+    'indexvue257540-3': 'Operating Status',
+    'indexvue257540-4': 'Air Handling Parameters',
+    'indexvue257540-5': 'Outlet Pressure',
+    'indexvue257540-6': 'Refrigerated Dryer Running Status',
+    'indexvue257540-7': 'Fan Running Status',
+    'indexvue257540-8': 'Exhaust Temperature',
+    'indexvue257540-9': 'Total Power Consumption',
+    'indexvue257540-10': 'Exhaust Pressure',
+    'indexvue257540-11': 'Hydraulic drive compressor parameters',
+    'indexvue257540-12': 'Inlet Pressure',
+    'indexvue257540-13': 'Stage-1 Inlet Pressure',
+    'indexvue257540-14': 'A-Stage Stage-1 Outlet Temperature',
+    'indexvue257540-15': 'A-Stage Stage-1 Post-cooling Temperature',
+    'indexvue257540-16': 'A-Stage Stage-2 Inlet Pressure',
+    'indexvue257540-17': 'A-Stage Stage-2 Outlet Temperature',
+    'indexvue257540-18': 'A-Stage Stage-2 Post-cooling Temperature',
+    'indexvue257540-19': 'A-Stage Stage-3 Inlet Pressure',
+    'indexvue257540-20': 'B-Stage Stage-1 Outlet Temperature',
+    'indexvue257540-21': 'B-Stage Stage-1 Post-cooling Temperature',
+    'indexvue257540-22': 'B-Stage Stage-2 Inlet Pressure',
+    'indexvue257540-23': 'B-Stage Stage-2 Outlet Temperature',
+    'indexvue257540-24': 'B-Stage Stage-2 Post-cooling Temperature',
+    'indexvue257540-25': 'B-Stage Stage-3 Inlet Pressure',
+    'indexvue257540-26': 'Stage-3 Outlet Temperature',
+    'indexvue257540-27': 'Total Outlet Temperature',
+    'indexvue257540-28': 'Total Outlet Pressure',
+    'associatio458387-0': 'Device Code',
+    'associatio458387-1': 'Please enter device code',
+    'associatio458387-2': 'Package name',
+    'associatio458387-3': 'Is Primary Device',
+    'associatio458387-4': 'Yes',
+    'associatio458387-5': 'W/O',
+    'associatio458387-6': 'Created Time',
+    'devicecomp596172-0': 'Package name',
+    'devicecomp596172-1': 'Please enter the kit name',
+    'devicecomp596172-2': 'Add Complete Set',
+    'devicecomp596172-3': 'Department Name',
+    'devicecomp596172-4': 'Complete Set Type',
+    'devicecomp596172-5': 'Online status',
+    'devicecomp596172-6': 'Online',
+    'devicecomp596172-7': 'Offline',
+    'devicecomp596172-8': 'Description',
+    'devicecomp596172-9': 'Number of devices',
+    'devicecomp596172-10': 'Main Device',
+    'devicecomp596172-11': 'Edit',
+    'devicecomp596172-12': 'Delete',
+    'devicecomp596172-13': 'Please select complete set type',
+    'devicecomp596172-14': 'Please select department',
+    'devicecomp596172-15': 'Please enter Description',
+    'devicecomp596172-16': 'Select device',
+    'devicecomp596172-17': 'Please enter device name',
+    'devicecomp596172-18': 'Main Device',
+    'devicecomp596172-19': 'Please select main device',
+    'devicecomp596172-20': 'Cancel',
+    'devicecomp596172-21': 'Confirm',
+    'devicestat181259-0': 'Device Status',
+    'devicestat181259-1': 'Total',
+    'devicetota735835-0': 'Device Overview',
+    'devicetota735835-1': 'over Total Devices per:',
+    'devicetota735835-2': 'Device Ledger',
+    'brandlistv345436-0': 'Choose brand',
+    'brandlistv345436-1': 'Dictionary tags',
+    'brandlistv345436-2': 'Please enter dictionary label',
+    'brandlistv345436-3': 'Status',
+    'brandlistv345436-4': 'Data Status',
+    'brandlistv345436-5': 'Search',
+    'brandlistv345436-6': 'Reset',
+    'brandlistv345436-7': 'Select',
+    'brandlistv345436-8': 'Dictionary encoding',
+    'brandlistv345436-9': 'Dictionary key value',
+    'brandlistv345436-10': 'Remarks',
+    'brandlistv345436-11': 'Created Time',
+    'brandlistv345436-12': 'Cancel',
+    'brandlistv345436-13': 'Confirm',
+    'customerli184037-0': 'Merchant Name',
+    'customerli184037-1': 'Please enter the merchant name',
+    'customerli184037-2': 'Customer number',
+    'customerli184037-3': 'Please enter the merchant number',
+    'customerli184037-4': 'Search',
+    'customerli184037-5': 'Reset',
+    'customerli184037-6': 'Select',
+    'customerli184037-7': 'Merchant Classification',
+    'customerli184037-8': 'Status',
+    'customerli184037-9': 'Created Time',
+    'customerli184037-10': 'Cancel',
+    'customerli184037-11': 'Confirm',
+    'modellistv210042-0': 'Select Specification Model',
+    'modellistv210042-1': 'Model name',
+    'modellistv210042-2': 'Please enter model name',
+    'modellistv210042-3': 'Status',
+    'modellistv210042-4': 'Data Status',
+    'modellistv210042-5': 'Search',
+    'modellistv210042-6': 'Reset',
+    'modellistv210042-7': 'Select',
+    'modellistv210042-8': 'Compliant standard',
+    'modellistv210042-9': 'Created Time',
+    'modellistv210042-10': 'Cancel',
+    'modellistv210042-11': 'Confirm',
+    'customerli510445-0': 'Select Customer',
+    'customerli510445-1': 'Query and select the customer info to associate',
+    'customerli510445-2': 'Merchant Name',
+    'customerli510445-3': 'Please enter the merchant name',
+    'customerli510445-4': 'Customer number',
+    'customerli510445-5': 'Please enter the merchant number',
+    'customerli510445-6': 'Search',
+    'customerli510445-7': 'Reset',
+    'customerli510445-8': 'Customer List',
+    'customerli510445-9': 'Select',
+    'customerli510445-10': 'Merchant Classification',
+    'customerli510445-11': 'Status',
+    'customerli510445-12': 'Created Time',
+    'customerli510445-13': 'Close',
+    'depttree2v724110-0': 'Please enter the Department name',
+    'depttree2v724110-1': 'Add child node',
+    'depttree2v724110-2': 'Rename',
+    'depttree2v724110-3': 'Delete',
+    'deviceallo305472-0': 'Post Stock moves',
+    'deviceallo305472-1': 'Device Name',
+    'deviceallo305472-2': 'Device Code',
+    'deviceallo305472-3': 'Department Before Transfer',
+    'deviceallo305472-4': 'Department After Transfer',
+    'deviceallo305472-5': 'Transfer Reason',
+    'deviceallo305472-6': 'Adjusted by',
+    'deviceallo305472-7': 'Adjust time',
+    'deviceasso162747-0': 'Link Device',
+    'deviceasso162747-1': 'Device Code',
+    'deviceasso162747-2': 'Please enter device code',
+    'deviceasso162747-3': 'Search',
+    'deviceasso162747-4': 'Reset',
+    'deviceasso162747-5': 'No.',
+    'deviceasso162747-6': 'Package name',
+    'deviceasso162747-7': 'Device Name',
+    'deviceasso162747-8': 'Is Primary Device',
+    'deviceasso162747-9': 'Yes',
+    'deviceasso162747-10': 'W/O',
+    'deviceasso162747-11': 'Created Time',
+    'devicebasi313029-0': 'Manufacturing Information',
+    'devicebasi313029-1': 'Device production, supply, warranty and activation info',
+    'devicebasi313029-2': 'Financial Information',
+    'devicebasi313029-3': 'Other Information',
+    'devicebasi313029-4': 'Device classification template supplementary information',
+    'deviceboml064738-0': 'BOM Node Name',
+    'deviceboml064738-1': 'Please enter a BOM node name',
+    'deviceboml064738-2': 'BOM Node',
+    'deviceboml064738-3': 'Please select a BOM node',
+    'deviceboml064738-4': 'Search',
+    'deviceboml064738-5': 'Reset',
+    'deviceboml064738-6': 'Add',
+    'deviceboml064738-7':
+      "`Device Category:${row.deviceCategoryName || props.deviceCategoryName || 'None'}`",
+    'deviceboml064738-8': 'Device Category',
+    'deviceboml064738-9': 'Sort',
+    'deviceboml064738-10': 'Fix',
+    'deviceboml064738-11': 'Maintain',
+    'deviceboml064738-12': 'Quantity of materials',
+    'deviceboml064738-13': 'Actions',
+    'deviceboml064738-14': 'Edit',
+    'deviceboml064738-15': 'Add Material',
+    'deviceboml064738-16': 'Material Details',
+    'deviceboml064738-17': 'Delete',
+    'devicefail620996-0': 'Fault recording',
+    'devicefail620996-1': 'Fault coding',
+    'devicefail620996-2': 'Please enter the fault code',
+    'devicefail620996-3': 'Fault name',
+    'devicefail620996-4': 'Please enter a fault name',
+    'devicefail620996-5': 'Status',
+    'devicefail620996-6': 'Please select status',
+    'devicefail620996-7': 'Search',
+    'devicefail620996-8': 'Reset',
+    'devicefail620996-9': 'Stopped or Not',
+    'devicefail620996-10': 'Please select',
+    'devicefail620996-11': 'Fault Time',
+    'devicefail620996-12': 'Start Time',
+    'devicefail620996-13': 'End Time',
+    'devicefail620996-14': 'Resolution',
+    'devicefail620996-15': 'Whether to assist',
+    'devicefail620996-16': 'Created Time',
+    'devicefail620996-17': 'Fault System',
+    'devicefail620996-18': 'Please enter the malfunctioning system',
+    'devicefail620996-19': 'failure effects',
+    'devicefail620996-20': 'Please enter the impact of the failure',
+    'devicefail620996-21': 'Description',
+    'devicefail620996-22': 'Please enter Description',
+    'devicefail620996-23': 'Device',
+    'devicefail620996-24': 'Review Status',
+    'devicefile737256-0': 'Document List',
+    'devicefile737256-1': 'Please enter a file name',
+    'devicefile737256-2': 'Search',
+    'devicefile737256-3': 'Reset',
+    'devicefile737256-4': 'File Name',
+    'devicefile737256-5': 'Double-click to open folder',
+    'devicefile737256-6': 'File Type',
+    'devicefile737256-7': 'Folder',
+    'devicefile737256-8': 'File &Size',
+    'devicefile737256-9': 'Department',
+    'devicefile737256-10': 'Owned Devices',
+    'devicefile737256-11': 'Actions',
+    'devicefile737256-12': 'Sneak Peak',
+    'devicefile737256-13': 'Download',
+    'devicefile737256-14': 'Double-click to enter',
+    'deviceinfo661964-0': 'Manufacturing Archive',
+    'deviceinfo661964-1': 'Device production, supply and warranty info',
+    'deviceinfo661964-2': 'Asset Depreciation',
+    'deviceinfo661964-3': 'Purchase cost and depreciation execution info',
+    'deviceinfo661964-4': 'Extended Attributes',
+    'deviceinfo661964-5': 'Device classification template supplementary information',
+    'deviceinsp728206-0': 'Inspection Record',
+    'deviceinsp728206-1': 'Work Order Name',
+    'deviceinsp728206-2': 'Please enter a ticket name',
+    'deviceinsp728206-3': 'Ticket code',
+    'deviceinsp728206-4': 'Please enter the ticket code',
+    'deviceinsp728206-5': 'Status',
+    'deviceinsp728206-6': 'Please select status',
+    'deviceinsp728206-7': 'Created Time',
+    'deviceinsp728206-8': 'Start Time',
+    'deviceinsp728206-9': 'End Time',
+    'deviceinsp728206-10': 'Search',
+    'deviceinsp728206-11': 'Reset',
+    'deviceinsp728206-12': 'No.',
+    'deviceinsp728206-13': '&Genre',
+    'deviceinsp728206-14': 'Responsible Person',
+    'deviceinsp728206-15': 'Remarks',
+    'deviceinsp728206-16': 'Actions',
+    'deviceinsp728206-17': 'View',
+    'devicemain901827-0': 'maintenance records',
+    'devicemain901827-1': 'Fault coding',
+    'devicemain901827-2': 'Please enter the fault code',
+    'devicemain901827-3': 'Fault name',
+    'devicemain901827-4': 'Please enter a fault name',
+    'devicemain901827-5': 'Status',
+    'devicemain901827-6': 'Please select status',
+    'devicemain901827-7': 'Search',
+    'devicemain901827-8': 'Reset',
+    'devicemain901827-9': 'Stopped or Not',
+    'devicemain901827-10': 'Please select',
+    'devicemain901827-11': 'Fault Time',
+    'devicemain901827-12': 'Start Time',
+    'devicemain901827-13': 'End Time',
+    'devicemain901827-14': 'Maintenance Start',
+    'devicemain901827-15': 'Maintenance End',
+    'devicemain901827-16': 'Created Time',
+    'devicemain901827-17': 'Fault System',
+    'devicemain901827-18': 'Please enter the malfunctioning system',
+    'devicemain901827-19': 'failure effects',
+    'devicemain901827-20': 'Please enter the impact of the failure',
+    'devicemain901827-21': 'Description',
+    'devicemain901827-22': 'Please enter Description',
+    'devicemain901827-23': 'Device',
+    'devicemain901827-24': 'Review Status',
+    'devicemain901827-25': 'Repair start time',
+    'devicemain901827-26': 'Actions',
+    'devicemain901827-27': 'View',
+    'devicemain398413-0': 'Maintenance record',
+    'devicemain398413-1': 'Work Order Name',
+    'devicemain398413-2': 'Please enter a ticket name',
+    'devicemain398413-3': 'Status',
+    'devicemain398413-4': 'Please select status',
+    'devicemain398413-5': 'Created Time',
+    'devicemain398413-6': 'Start Time',
+    'devicemain398413-7': 'End Time',
+    'devicemain398413-8': 'Search',
+    'devicemain398413-9': 'Reset',
+    'devicemain398413-10': 'No.',
+    'devicemain398413-11': 'Maintenance Cycle',
+    'devicemain398413-12': 'Type of work order',
+    'devicemain398413-13': 'Responsible Person',
+    'devicemain398413-14': 'Actions',
+    'devicemain398413-15': 'View',
+    'deviceoper817057-0': 'Run Record',
+    'deviceoper817057-1': 'Run Name',
+    'deviceoper817057-2': 'Please enter run name',
+    'deviceoper817057-3': 'Status',
+    'deviceoper817057-4': 'Please select status',
+    'deviceoper817057-5': 'Search',
+    'deviceoper817057-6': 'Reset',
+    'deviceoper817057-7': 'No.',
+    'deviceoper817057-8': 'Responsible Person',
+    'deviceoper817057-9': 'Actions',
+    'deviceoper817057-10': 'View',
+    'devicepers660941-0': 'Responsible person adjustment record',
+    'devicepers660941-1': 'Device Name',
+    'devicepers660941-2': 'Device Code',
+    'devicepers660941-3': 'Pre-Adjustment Responsible',
+    'devicepers660941-4': 'Adjusted Responsible',
+    'devicepers660941-5': 'Adjustment Reason',
+    'devicepers660941-6': 'Adjusted by',
+    'devicepers660941-7': 'Adjust time',
+    'devicestat332202-0': 'Status Change Record',
+    'devicestat332202-1': 'Device Name',
+    'devicestat332202-2': 'Device Code',
+    'devicestat332202-3': 'Status Before Change',
+    'devicestat332202-4': 'Status After Change',
+    'devicestat332202-5': 'Change Reason',
+    'devicestat332202-6': 'Adjusted by',
+    'devicestat332202-7': 'Adjust time',
+    'filetreevu579915-0': 'Please enter a profile category name',
+    'filetreevu579915-1': 'Add child node',
+    'filetreevu579915-2': 'Edit Node',
+    'filetreevu579915-3': 'Delete node',
+    'filetreevu579915-4': 'Profile Classification Name',
+    'filetreevu579915-5': 'Display Order',
+    'filetreevu579915-6': 'Remarks',
+    'filetreevu579915-7': 'Please enter remarks',
+    'filetreevu579915-8': 'Confirm',
+    'filetreevu579915-9': 'Cancel',
+    'indexvue100657-0': 'Car number',
+    'indexvue100657-1': 'Please enter the license plate number',
+    'indexvue100657-2': 'Device No',
+    'indexvue100657-3': 'Please enter the device number',
+    'indexvue100657-4': 'Export',
+    'indexvue100657-5': 'Please enter the oil suit code',
+    'indexvue100657-6': 'Empty',
+    'indexvue100657-7': 'Search',
+    'indexvue100657-8': 'Please enter a history code',
+    'indexvue100657-9': 'Please enter device name',
+    'indexvue100657-10': 'Please select department',
+    'indexvue100657-11': 'Please select device status',
+    'indexvue100657-12': 'Please enter specification/model',
+    'indexvue100657-13': 'Please select manufacturer',
+    'indexvue100657-14': 'Please enter brand',
+    'indexvue100657-15': 'Please enter responsible person',
+    'indexvue100657-16': 'Please enter a usage item',
+    'indexvue100657-17': 'Please enter asset attribution',
+    'indexvue100657-18': 'Working Location:',
+    'indexvue100657-19': 'Please enter a location',
+    'iotdevicef293671-0': 'Device ledger info maintenance',
+    'iotdevicef293671-1': 'Basic Information',
+    'iotdevicef293671-2': 'Please enter code category',
+    'iotdevicef293671-3': 'System Generated',
+    'iotdevicef293671-4': 'Please enter a history code',
+    'iotdevicef293671-5': 'Please enter device name',
+    'iotdevicef293671-6': 'Please select department',
+    'iotdevicef293671-7': 'Please select a device category',
+    'iotdevicef293671-8': 'Please select device status',
+    'iotdevicef293671-9': 'Please select asset nature',
+    'iotdevicef293671-10': 'Please select brand',
+    'iotdevicef293671-11': 'Select',
+    'iotdevicef293671-12': 'Car number',
+    'iotdevicef293671-13': 'Please enter the license plate number',
+    'iotdevicef293671-14': 'Device No',
+    'iotdevicef293671-15': 'Please enter the device number',
+    'iotdevicef293671-16': 'Please enter or select specification/model',
+    'iotdevicef293671-17': 'Please enter a usage item',
+    'iotdevicef293671-18': 'Asset Attribution',
+    'iotdevicef293671-19': 'Please enter asset attribution',
+    'iotdevicef293671-20': 'Working Location:',
+    'iotdevicef293671-21': 'Please enter a location',
+    'iotdevicef293671-22': 'Remarks',
+    'iotdevicef293671-23': 'Please enter a note',
+    'iotdevicef293671-24': 'Manufacturing Information',
+    'iotdevicef293671-25': 'Financial Information',
+    'iotdevicef293671-26': "form.assetProperty === 'zy' ? 'Purchase Price' : 'Lease Price'",
+    'iotdevicef293671-27':
+      "form.assetProperty === 'zy' ? 'Please enter purchase price' : 'Please enter lease price'",
+    'iotdevicef293671-28': "form.assetProperty === 'zy' ? 'Purchase Date' : 'Lease Date'",
+    'iotdevicef293671-29':
+      "form.assetProperty === 'zy' ? 'Please select purchase date' : 'Please select lease date'",
+    'iotdevicef293671-30': "form.assetProperty === 'zy' ? 'Depreciation Years' : 'Lease Years'",
+    'iotdevicef293671-31':
+      "form.assetProperty === 'zy' ? 'Please enter depreciation years' : 'Please enter lease years'",
+    'iotdevicef293671-32':
+      "form.assetProperty === 'zy' ? 'Depreciation Start Date' : 'Lease Start Date'",
+    'iotdevicef293671-33':
+      "form.assetProperty === 'zy' ? 'Please select depreciation start date' : 'Please select lease start date'",
+    'iotdevicef293671-34': "form.assetProperty === 'zy' ? 'Depreciated Months' : 'Leased Months'",
+    'iotdevicef293671-35':
+      "form.assetProperty === 'zy' ? 'Please enter depreciated months' : 'Please enter leased months'",
+    'iotdevicef293671-36': "form.assetProperty === 'zy' ? 'Depreciated Amount' : 'Leased Amount'",
+    'iotdevicef293671-37':
+      "form.assetProperty === 'zy' ? 'Please enter depreciated amount' : 'Please enter leased amount'",
+    'iotdevicef293671-38': 'Amount Remaining:',
+    'iotdevicef293671-39': 'Please enter the remaining amount',
+    'iotdevicef293671-40': 'Monthly Depreciation Amount',
+    'iotdevicef293671-41': 'Please enter monthly depreciation amount',
+    'iotdevicef293671-42': 'Total Depreciation Month',
+    'iotdevicef293671-43': 'Please enter the total depreciation month',
+    'iotdevicef293671-44': 'Currency Type',
+    'iotdevicef293671-45': 'Please enter a currency',
+    'iotdevicef293671-46': 'Other Information',
+    'iotdevicef293671-47': '`Input${field.name}`',
+    'iotdevicef293671-48': '`Please select${field.name}`',
+    'iotdevicef293671-49': 'One-click expansion',
+    'iotdevicef293671-50': 'One-click collapse',
+    'iotdevicef293671-51': 'Cancel',
+    'iotdevicef293671-52': 'Save',
+    'iotdevicef730970-0': 'Please enter the oil service equipment code',
+    'iotdevicef730970-1': 'Please enter device code',
+    'iotdevicef730970-2': 'Please enter device name',
+    'iotdevicef730970-3': 'Please select department',
+    'iotdevicef730970-4': 'Please select',
+    'iotdevicef730970-5': 'Car number',
+    'iotdevicef730970-6': 'Please enter the license plate number',
+    'iotdevicef730970-7': 'Device No',
+    'iotdevicef730970-8': 'Please enter the device number',
+    'iotdevicef730970-9': 'Working Location:',
+    'iotdevicef730970-10': "formData.assetProperty = = = 'zy'? 'Purchase Price': 'Rental Price'",
+    'iotdevicef730970-11':
+      "formData.assetProperty = = = 'zy'? 'Please enter the purchase price': 'Please enter the rental price'",
+    'iotdevicef730970-12': "formData.assetProperty = = = 'zy'? 'Purchase Date': 'Lease Date'",
+    'iotdevicef730970-13':
+      "formData.assetProperty = = = 'zy'? 'Please enter purchase date': 'Please enter lease date'",
+    'iotdevicef730970-14':
+      "formData.assetProperty = = = 'zy'? 'Depreciation period': 'Lease period'",
+    'iotdevicef730970-15':
+      "formData.assetProperty = = = 'zy'? 'Please enter the depreciation period': 'Please enter the lease period'",
+    'iotdevicef730970-16':
+      "formData.assetProperty = = = 'zy'? 'Depreciation Start Date': 'Lease Start Date'",
+    'iotdevicef730970-17':
+      "formData.assetProperty = = = 'zy'? 'Please select a depreciation start date': 'Please select a lease start date'",
+    'iotdevicef730970-18':
+      "formData.assetProperty = = = 'zy'? 'Depreciated Months Provided': 'Leased Months'",
+    'iotdevicef730970-19':
+      "formData.assetProperty = = = 'zy'? 'Please enter the number of months depreciated': 'Please enter the number of months leased'",
+    'iotdevicef730970-20':
+      "formData.assetProperty = = = 'zy'? 'Depreciated Amount Provided': 'Leased Amount'",
+    'iotdevicef730970-21':
+      "formData.assetProperty = = = 'zy'? 'Please enter the depreciated amount': 'Leased amount'",
+    'iotdevicef730970-22': 'Amount Remaining:',
+    'iotdevicef730970-23': 'Please enter the remaining amount',
+    'iotdevicef730970-24': 'Monthly Depreciation Amount',
+    'iotdevicef730970-25': 'Please enter monthly depreciation amount',
+    'iotdevicef730970-26': 'Total Depreciation Month',
+    'iotdevicef730970-27': 'Please enter the total depreciation month',
+    'iotdevicef730970-28': 'Currency Type',
+    'iotdevicef730970-29': 'Please enter a currency',
+    'iotdevicef730970-30': "'Please enter' + field.name",
+    'iotdevicef777770-0': 'Please enter the oil service equipment code',
+    'iotdevicef777770-1': 'Please enter device code',
+    'iotdevicef777770-2': 'Please enter device name',
+    'iotdevicef777770-3': 'Please select department',
+    'iotdevicef777770-4': 'Please select',
+    'iotdevicef777770-5': 'Car number',
+    'iotdevicef777770-6': 'Please enter the license plate number',
+    'iotdevicef777770-7': 'Device No',
+    'iotdevicef777770-8': 'Please enter the device number',
+    'iotdevicef777770-9': 'Working Location:',
+    'iotdevicef777770-10': "formData.assetProperty = = = 'zy'? 'Purchase Price': 'Rental Price'",
+    'iotdevicef777770-11':
+      "formData.assetProperty = = = 'zy'? 'Please enter the purchase price': 'Please enter the rental price'",
+    'iotdevicef777770-12': "formData.assetProperty = = = 'zy'? 'Purchase Date': 'Lease Date'",
+    'iotdevicef777770-13':
+      "formData.assetProperty = = = 'zy'? 'Please enter purchase date': 'Please enter lease date'",
+    'iotdevicef777770-14':
+      "formData.assetProperty = = = 'zy'? 'Depreciation period': 'Lease period'",
+    'iotdevicef777770-15':
+      "formData.assetProperty = = = 'zy'? 'Please enter the depreciation period': 'Please enter the lease period'",
+    'iotdevicef777770-16':
+      "formData.assetProperty = = = 'zy'? 'Depreciation Start Date': 'Lease Start Date'",
+    'iotdevicef777770-17':
+      "formData.assetProperty = = = 'zy'? 'Please select a depreciation start date': 'Please select a lease start date'",
+    'iotdevicef777770-18':
+      "formData.assetProperty = = = 'zy'? 'Depreciated Months Provided': 'Leased Months'",
+    'iotdevicef777770-19':
+      "formData.assetProperty = = = 'zy'? 'Please enter the number of months depreciated': 'Please enter the number of months leased'",
+    'iotdevicef777770-20':
+      "formData.assetProperty = = = 'zy'? 'Depreciated Amount Provided': 'Leased Amount'",
+    'iotdevicef777770-21':
+      "formData.assetProperty = = = 'zy'? 'Please enter the depreciated amount': 'Leased amount'",
+    'iotdevicef777770-22': 'Amount Remaining:',
+    'iotdevicef777770-23': 'Please enter the remaining amount',
+    'iotdevicef777770-24': 'Monthly Depreciation Amount',
+    'iotdevicef777770-25': 'Please enter monthly depreciation amount',
+    'iotdevicef777770-26': 'Total Depreciation Month',
+    'iotdevicef777770-27': 'Please enter the total depreciation month',
+    'iotdevicef777770-28': 'Currency Type',
+    'iotdevicef777770-29': 'Please enter a currency',
+    'iotdevicef777770-30': "'Please enter' + field.name",
+    'maintenanc595783-0': 'Work Order Name',
+    'maintenanc595783-1': 'Work Order No.',
+    'maintenanc595783-2': 'Responsible Person',
+    'maintenanc595783-3': 'Type of work order',
+    'maintenanc595783-4': 'Maintenance results',
+    'maintenanc595783-5': 'Maintenance cost (yuan)',
+    'maintenanc595783-6': 'Actual Maintenance Start Time',
+    'maintenanc595783-7': 'Actual Maintenance End Time',
+    'maintenanc595783-8': 'Other expenses (yuan)',
+    'maintenanc595783-9': 'Remarks',
+    'maintenanc595783-10': 'Please enter remarks',
+    'maintenanc595783-11': 'No.',
+    'maintenanc595783-12': 'bom node',
+    'maintenanc595783-13': 'Device Code',
+    'maintenanc595783-14': 'Device Name',
+    'maintenanc595783-15': 'Cumulative run time (H)',
+    'maintenanc595783-16': 'Cumulative operating kilometers (KM)',
+    'maintenanc595783-17': 'Maintenance Items',
+    'maintenanc595783-18': 'Running mileage',
+    'maintenanc595783-19': 'Run time',
+    'maintenanc595783-20': 'Natural Date',
+    'maintenanc595783-21': 'Selected Materials',
+    'maintenanc595783-22': 'Actions',
+    'maintenanc595783-23': 'Config',
+    'maintenanc595783-24': 'Material Details',
+    'maintenanc595783-25': 'Material Code',
+    'maintenanc595783-26': 'Material Name',
+    'maintenanc595783-27': 'Unit',
+    'maintenanc595783-28': 'Unit Price (CNY/yuan)',
+    'maintenanc595783-29': 'Consumed Quantity',
+    'maintenanc595783-30': 'Total Stock Quantity',
+    'maintenanc595783-31': 'Cancel',
+    'maintenanc595783-32':
+      "`Device ${configDialog.current?.deviceCode + '-' + configDialog.current?.name} Maintenance Config`",
+    'maintenanc595783-33': 'Last Maintenance Mileage (KM)',
+    'maintenanc595783-34': 'Deferred kilometers (KM)',
+    'maintenanc595783-35': '& Last maintenance run time',
+    'maintenanc595783-36': 'Deferred time (H)',
+    'maintenanc595783-37': '& Date of last maintenance nature',
+    'maintenanc595783-38': 'Select date',
+    'maintenanc595783-39': '& Defer Natural Date',
+    'maintenanc595783-40': 'Running Mileage Cycle (KM)',
+    'maintenanc595783-41': 'Running Mileage Cycle - Lead Amount (KM)',
+    'maintenanc595783-42': 'Runtime period (H)',
+    'maintenanc595783-43': 'Runtime Period - Lead Time (H)',
+    'maintenanc595783-44': '& Natural daily cycle',
+    'maintenanc595783-45': 'Natural Daily Cycle - Advance (D)',
+    'maintenanc595783-46': 'Cancel',
+    'materialli127293-0': 'Device Category:',
+    'materialli127293-1': 'Please enter quantity',
+    'modellistv464422-0': 'Select Specification Model',
+    'modellistv464422-1': 'Model name',
+    'modellistv464422-2': 'Please enter model name',
+    'modellistv464422-3': 'Search',
+    'modellistv464422-4': 'Reset',
+    'modellistv464422-5': 'Select',
+    'modellistv464422-6': 'Compliant standard',
+    'modellistv464422-7': 'Status',
+    'modellistv464422-8': 'Created Time',
+    'indexvue471356-0': 'Data Collection Query',
+    'indexvue471356-1': 'Please select data collection source',
+    'indexvue471356-2': 'Overall Minimum Value',
+    'indexvue471356-3': 'Gateway Device',
+    'indexvue471356-4': 'AVIC Beidou',
+    'indexvue471356-5': 'Export',
+    'iotalarmse931035-0': 'Category Name',
+    'iotalarmse931035-1': 'Device Code',
+    'iotalarmse931035-2': 'Alarm Attribute',
+    'iotalarmse931035-3': 'Please select alarm attribute',
+    'iotalarmse931035-4': 'Property Identification',
+    'iotalarmse931035-5': 'Please enter attribute identifier',
+    'iotalarmse931035-6': 'Upper Limit Value',
+    'iotalarmse931035-7': 'Please enter upper limit',
+    'iotalarmse931035-8': 'Lower Limit Value',
+    'iotalarmse931035-9': 'Please enter lower limit',
+    'iotalarmse931035-10': 'Confirm',
+    'iotalarmse931035-11': 'Cancel',
+    'rangesetvu328011-0': 'Category Alarm Range Setting',
+    'rangesetvu328011-1': 'Device Alarm Range Setting',
+    'rangesetvu328011-2': 'Query',
+    'rangesetvu328011-3': 'Add Attributes',
+    'rangesetvu328011-4': 'Save',
+    'rangesetvu328011-5': 'Device Name',
+    'rangesetvu328011-6': 'Upper Limit Value',
+    'rangesetvu328011-7': 'Lower Limit Value',
+    'rangesetvu328011-8': 'Edit',
+    'rangesetvu328011-9': 'Delete',
+    'rangesetvu328011-10': 'Add first property',
+    'rangesetti238585-0': 'Device Attribute Management',
+    'rangesetti238585-1': 'Home',
+    'rangesetti238585-2': 'Device Management',
+    'rangesetti238585-3': 'Attribute Config',
+    'rangesetti238585-4': 'Devices and Categories',
+    'rangesetti238585-5': 'Search device or category...',
+    'rangesetti238585-6': 'Add Attributes',
+    'rangesetti238585-7': 'Save',
+    'rangesetti238585-8': 'View History',
+    'rangesetti238585-9': 'Add first property',
+    'rangesetti238585-10': "isEditing ? 'Edit Attribute' : 'Add New Attribute'",
+    'rangesetti238585-11': 'Attribute Name',
+    'rangesetti238585-12': 'Please enter attribute name',
+    'rangesetti238585-13': 'Property Identification',
+    'rangesetti238585-14': 'Please enter unique attribute identifier',
+    'rangesetti238585-15':
+      'Identifier is used for internal system recognition and cannot be modified after adding',
+    'rangesetti238585-16': 'Data Type',
+    'rangesetti238585-17': 'Please select a data type',
+    'rangesetti238585-18': 'Integer number',
+    'rangesetti238585-19': 'Float',
+    'rangesetti238585-20': 'Boolean',
+    'rangesetti238585-21': 'Unit',
+    'rangesetti238585-22': 'e.g.: ℃, %, m',
+    'rangesetti238585-23': 'Minimum',
+    'rangesetti238585-24': 'Please enter a minimum value',
+    'rangesetti238585-25': 'Maximum',
+    'rangesetti238585-26': 'Please enter a maximum value',
+    'rangesetti238585-27': 'Description Info',
+    'rangesetti238585-28': 'Please enter attribute description (optional)',
+    'rangesetti238585-29': 'Set as required attribute',
+    'rangesetti238585-30': 'Cancel',
+    'tddevicein208875-0': 'Device Basic Info',
+    'tddevicein208875-1': 'Asset Code',
+    'tddevicein208875-2': 'Device Category',
+    'tddevicein208875-3': 'Department',
+    'tddevicein208875-4': 'Gateway Status',
+    'tddevicein208875-5': 'Online',
+    'tddevicein208875-6': 'Offline',
+    'tddevicein208875-7': 'AVIC Beidou',
+    'tddevicein208875-8': 'Last Data Time',
+    'tddevicein208875-9': 'License Plate Number',
+    'tddevicein208875-10': 'Gateway Data Collection',
+    'tddevicein208875-11': 'data trends',
+    'tddevicein208875-12': 'Export as picture',
+    'tddevicein208875-13': 'Reset',
+    'tddevicein208875-14': 'Start Date',
+    'tddevicein208875-15': 'End Date',
+    'tddevicein018010-0': 'Asset Code',
+    'tddevicein018010-1': 'Online',
+    'tddevicein018010-2': 'Offline',
+    'tddevicein018010-3': 'data trends',
+    'tddevicein018010-4': 'Export as picture',
+    'tddevicein018010-5': 'Reset',
+    'tddevicein018010-6': 'Start Date',
+    'tddevicein018010-7': 'End Date',
+    'devicepers811612-0': 'Created Time',
+    'devicepers811612-1': 'Start Date',
+    'devicepers811612-2': 'End Date',
+    'devicepers811612-3': 'Export',
+    'devicepers798281-0':
+      'View the change records of device responsible person before and after adjustment',
+    'devicestat037846-0': 'Created Time',
+    'devicestat037846-1': 'Start Date',
+    'devicestat037846-2': 'End Date',
+    'devicestat037846-3': 'Export',
+    'devicestat786447-0': 'View the change records of device status before and after adjustment',
+    'devicestat786447-1': 'Category Top‌'
+  },
+  'OAuth 2.0': 'OAuth 2.0',
+  app: {
+    'indexvue112700-0': 'Created Time',
+    'indexvue112700-1': 'Start Date',
+    'indexvue112700-2': 'End Date',
+    'indexvue112700-3': 'Search',
+    'indexvue112700-4': 'Reset',
+    'indexvue112700-5': 'Add',
+    'indexvue112700-6': 'App Version Number',
+    'indexvue112700-7': 'App Package Name',
+    'indexvue112700-8': 'App APK Path',
+    'indexvue112700-9': 'Remarks',
+    'iotappform295229-0': 'Version Number',
+    'iotappform295229-1': 'Please enter version number',
+    'iotappform295229-2': 'App Name',
+    'iotappform295229-3': 'Please enter package name',
+    'iotappform295229-4': 'Confirm',
+    'iotappform295229-5': 'Cancel'
+  },
+  bom: {
+    'bomformvue818829-0': 'Device Category',
+    'bomformvue818829-1': 'Please select a device category',
+    'bomformvue818829-2': 'Superior BOM',
+    'bomformvue818829-3': 'Please select parent BOM',
+    'bomformvue818829-4': 'BOM Node Name',
+    'bomformvue818829-5': 'Please enter a BOM node name',
+    'bomformvue818829-6': 'BOM Node Properties',
+    'bomformvue818829-7': 'Display Order',
+    'bomformvue818829-8': 'Status',
+    'bomformvue818829-9': 'Please select status',
+    'bomformvue818829-10': 'Confirm',
+    'bomformvue818829-11': 'Cancel',
+    'devicecate054617-0': 'Please enter a device classification name',
+    'devicecate054617-1': 'Add child node',
+    'devicecate054617-2': 'Rename',
+    'devicecate054617-3': 'Delete',
+    'indexvue513755-0': 'BOM Node Name',
+    'indexvue513755-1': 'Please enter a BOM node name',
+    'indexvue513755-2': 'BOM Node',
+    'indexvue513755-3': 'Please select a BOM node',
+    'indexvue513755-4': 'Search',
+    'indexvue513755-5': 'Reset',
+    'indexvue513755-6': 'Add',
+    'indexvue513755-7': "`Device Category:${row.deviceCategoryName || 'None'}`",
+    'indexvue513755-8': 'Device Category',
+    'indexvue513755-9': 'Fix',
+    'indexvue513755-10': 'Maintain',
+    'indexvue513755-11': 'Sort',
+    'indexvue513755-12': 'Quantity of materials',
+    'indexvue513755-13': 'Actions',
+    'indexvue513755-14': 'Edit',
+    'indexvue513755-15': 'Add Material',
+    'indexvue513755-16': 'Material Details',
+    'indexvue513755-17': 'Delete',
+    'materialli039948-0': 'Device Category',
+    'materialli002525-0': 'Material Details',
+    'materialli002525-1': 'Device Category',
+    'materialli002525-2': 'Associated Material',
+    'materialli002525-3': 'Please enter quantity',
+    'materialli002525-4': 'Actions',
+    'materialli002525-5': 'Edit',
+    'materialli002525-6': 'Delete'
+  },
+  constructiondailyreport: {
+    'constructi275711-0': 'Cancel',
+    'constructi275711-1': 'Save',
+    'constructi429667-0': 'Please select',
+    'constructi153072-0': 'No.',
+    'constructi153072-1': 'Actions',
+    'indexvue914679-0': 'Project',
+    'indexvue914679-1': 'Please enter project name',
+    'indexvue914679-2': 'Production Tasks',
+    'indexvue914679-3': 'Please enter production task',
+    'indexvue914679-4': 'Created Time',
+    'indexvue914679-5': 'Start Date',
+    'indexvue914679-6': 'End Date',
+    'indexvue914679-7': 'Search',
+    'indexvue914679-8': 'Reset',
+    'indexvue914679-9': 'Fill in',
+    'indexvue914679-10': 'View'
+  },
+  devicetemplate: {
+    'attrtempla702033-0': 'Attribute Name',
+    'attrtempla702033-1': 'Please enter attribute name',
+    'attrtempla702033-2': 'Default Value',
+    'attrtempla702033-3': 'Enter a value to be applied to the field automatically.',
+    'attrtempla702033-4': 'Description',
+    'attrtempla702033-5': 'Please enter an attribute description',
+    'attrtempla702033-6': 'Confirm',
+    'attrtempla702033-7': 'Cancel',
+    'attrtempla277474-0': 'Data Type',
+    'attrtempla277474-1': 'Please select a data type',
+    'attrtempla277474-2': 'Boolean',
+    'attrtempla277474-3': "`e.g.:${item.value === 0 ? 'Off' : 'On'}`",
+    'attrtempla277474-4': 'Time Format',
+    'attrtempla277474-5': 'UTC timestamp of type String (milliseconds)',
+    'attrtempla277474-6': 'Required?',
+    'indexvue690177-0': 'Template Name',
+    'indexvue690177-1': 'Device Classification Name',
+    'indexvue690177-2': 'Add Attributes',
+    'indexvue690177-3': 'Attribute Name',
+    'indexvue690177-4': 'Identifier',
+    'indexvue690177-5': 'Data Type',
+    'indexvue690177-6': 'Actions',
+    'indexvue690177-7': 'Edit',
+    'indexvue690177-8': 'Delete',
+    'deviceattr164527-0': 'Element type',
+    'deviceattr164527-1': 'Number of elements',
+    'deviceattr164527-2': 'Please enter the number of elements in the array',
+    'deviceattr327235-0': 'Dropdown Options',
+    'deviceattr327235-1': 'Description of the drop-down option',
+    'deviceattr327235-2': 'Delete',
+    'deviceattr135995-0': 'Unit',
+    'deviceattr135995-1': 'Please select a unit',
+    'deviceattr961839-0': 'A JSON object',
+    'deviceattr961839-1': 'Edit',
+    'deviceattr961839-2': 'Delete',
+    'deviceattr961839-3': 'Attribute Name',
+    'deviceattr961839-4': 'Please enter attribute name',
+    'deviceattr961839-5': 'Identifier',
+    'deviceattr961839-6': 'Please enter an identifier',
+    'deviceattr961839-7': 'Confirm',
+    'deviceattr961839-8': 'Cancel',
+    'indexvue815883-0': 'Property Templates',
+    'templatede588206-0': 'Device Encoding&amp;nbsp;',
+    'templatede588206-1': 'Note:',
+    'devicecate795273-0': 'Please enter a device classification name',
+    'devicecate795273-1': 'Add child node',
+    'devicecate795273-2': 'Rename',
+    'devicecate795273-3': 'Delete',
+    'indexvue576171-0': 'Template Name',
+    'indexvue576171-1': 'Please enter template name',
+    'indexvue576171-2': 'Template Code',
+    'indexvue576171-3': 'Please enter template code',
+    'indexvue576171-4': 'Status',
+    'indexvue576171-5': 'Please select status',
+    'indexvue576171-6': 'Created Time',
+    'indexvue576171-7': 'Start Date',
+    'indexvue576171-8': 'End Date',
+    'indexvue576171-9': 'Search',
+    'indexvue576171-10': 'Reset',
+    'indexvue576171-11': 'Add',
+    'indexvue576171-12': 'No.',
+    'indexvue576171-13': 'Device Classification Name',
+    'indexvue576171-14': 'Unknown',
+    'indexvue576171-15': 'Actions',
+    'indexvue576171-16': 'View',
+    'indexvue576171-17': 'Edit',
+    'indexvue576171-18': 'More',
+    'indexvue576171-19': 'Delete',
+    'templatefo180085-0': 'Device Category',
+    'templatefo180085-1': 'Please select a device category',
+    'templatefo180085-2': 'Template Name',
+    'templatefo180085-3': 'Please enter template name',
+    'templatefo180085-4': 'Template Code',
+    'templatefo180085-5': 'Please enter template code',
+    'templatefo180085-6': 'Remarks',
+    'templatefo180085-7': 'Please enter content',
+    'templatefo180085-8': 'Confirm',
+    'templatefo180085-9': 'Cancel'
+  },
+  failure: {
+    'failureinf485899-0': 'Select troubleshooting time',
+    'failureinf485899-1': 'Solution',
+    'failureinf485899-2': 'Please enter a resolution',
+    'indexvue635109-0': 'Start Date',
+    'indexvue635109-1': 'End Date',
+    'indexvue635109-2': 'Created Time',
+    'indexvue635109-3': 'Export',
+    'iotfailure322545-0': 'Maintain fault basic info, handling status and on-site description',
+    'iotfailure322545-1': 'Basic Information',
+    'iotfailure322545-2': 'Other Fault Description',
+    'iotfailure322545-3': 'Please enter other fault description',
+    'iotfailure322545-4': 'Handling Info',
+    'iotfailure322545-5': 'Select troubleshooting time',
+    'iotfailure322545-6': 'Failure Description',
+    'iotfailure322545-7': 'Solution',
+    'iotfailure322545-8': 'Please enter a resolution'
+  },
+  fivedailyreportsummary: {
+    'indexvue544038-0': 'Created Time',
+    'indexvue544038-1': 'Start Date',
+    'indexvue544038-2': 'End Date',
+    'indexvue544038-3': 'Search',
+    'indexvue544038-4': 'Reset',
+    'indexvue544038-5': 'No.'
+  },
+  information: {
+    'indexvue303943-0': 'Export',
+    'iotinforma670843-0': 'Maintain fault symptoms, impact and solution',
+    'iotinforma670843-1': 'Basic Information',
+    'iotinforma670843-2': 'Supplementary Note'
+  },
+  iotcargolocation: {
+    'indexvue542846-0': 'Inventory Location',
+    'indexvue542846-1': 'Please select',
+    'indexvue542846-2': 'Reservoir area',
+    'indexvue542846-3': 'Racking',
+    'indexvue542846-4': 'Cargo Location Name',
+    'indexvue542846-5': 'Please enter a location name',
+    'indexvue542846-6': 'Search',
+    'indexvue542846-7': 'Reset',
+    'indexvue542846-8': 'Add',
+    'indexvue542846-9': 'Export',
+    'indexvue542846-10': 'Warehouse area',
+    'indexvue542846-11': 'Location Code',
+    'indexvue542846-12': 'Created Time',
+    'indexvue542846-13': 'Actions',
+    'indexvue542846-14': 'Edit',
+    'indexvue542846-15': 'Delete',
+    'iotcargolo432811-0': 'Inventory Location',
+    'iotcargolo432811-1': 'Please select',
+    'iotcargolo432811-2': 'Reservoir area',
+    'iotcargolo432811-3': 'Racking',
+    'iotcargolo432811-4': 'Location Code',
+    'iotcargolo432811-5': 'Please enter location code',
+    'iotcargolo432811-6': 'Cargo Location Name',
+    'iotcargolo432811-7': 'Please enter a location name',
+    'iotcargolo432811-8': 'Display Sequence',
+    'iotcargolo432811-9': 'Remarks',
+    'iotcargolo432811-10': 'Please enter remarks',
+    'iotcargolo432811-11': 'Confirm',
+    'iotcargolo432811-12': 'Cancel'
+  },
+  iotdailyreportattrs: {
+    'indexvue972958-0': 'Daily Extended Template ID',
+    'indexvue972958-1': 'Please enter daily extension template id',
+    'indexvue972958-2': 'Company id',
+    'indexvue972958-3': 'Please enter the company id',
+    'indexvue972958-4': 'Project ID',
+    'indexvue972958-5': 'Please enter project ID',
+    'indexvue972958-6': 'Project Category (Drilling Workover Injection Nitriding Fracturing...)',
+    'indexvue972958-7':
+      'Please enter the project category (drilling, workover, nitric acid fracturing...)',
+    'indexvue972958-8': 'Well Type',
+    'indexvue972958-9': 'Please select well type',
+    'indexvue972958-10': 'Please select dictionary to generate',
+    'indexvue972958-11': 'Well Category',
+    'indexvue972958-12': 'Please enter well type',
+    'indexvue972958-13': 'Construction Process',
+    'indexvue972958-14': 'Please enter construction process',
+    'indexvue972958-15': 'Attribute Name',
+    'indexvue972958-16': 'Please enter attribute name',
+    'indexvue972958-17': 'Property Identifier',
+    'indexvue972958-18': 'Please enter a property identifier',
+    'indexvue972958-19': 'Data type (double text textarea date dropdown)',
+    'indexvue972958-20': 'Please select the data type (double text textarea date dropdown)',
+    'indexvue972958-21': 'Is required (0 not required 1 required)',
+    'indexvue972958-22': 'Please enter whether it is required (0 is not required 1 is required)',
+    'indexvue972958-23': 'Unit (MPa)',
+    'indexvue972958-24': 'Please enter unit (MPa)',
+    'indexvue972958-25': 'Access mode (r read w write)',
+    'indexvue972958-26': 'Please enter access mode (r read w write)',
+    'indexvue972958-27': 'Default Value',
+    'indexvue972958-28': 'Enter a value to be applied to the field automatically.',
+    'indexvue972958-29': 'Maximum',
+    'indexvue972958-30': 'Please enter a maximum value',
+    'indexvue972958-31': 'Minimum',
+    'indexvue972958-32': 'Please enter a minimum value',
+    'indexvue972958-33': 'Extended attributes of different specialist companies',
+    'indexvue972958-34': 'Please enter extended attributes for different specialist companies',
+    'indexvue972958-35': 'Sort the values',
+    'indexvue972958-36': 'Please enter a sort value',
+    'indexvue972958-37': 'Remarks',
+    'indexvue972958-38': 'Please enter remarks',
+    'indexvue972958-39': 'Status: 0=Enabled, 1=Disabled',
+    'indexvue972958-40': 'Please select status (0 to enable 1 to disable)',
+    'indexvue972958-41': 'Created Time',
+    'indexvue972958-42': 'Start Date',
+    'indexvue972958-43': 'End Date',
+    'indexvue972958-44': 'Search',
+    'indexvue972958-45': 'Reset',
+    'indexvue972958-46': 'Add',
+    'indexvue972958-47': 'Export',
+    'indexvue972958-48': 'Primary Key ID',
+    'indexvue972958-49': 'Actions',
+    'indexvue972958-50': 'Edit',
+    'indexvue972958-51': 'Delete',
+    'iotdailyre624435-0': 'Daily Extended Template ID',
+    'iotdailyre624435-1': 'Please enter daily extension template id',
+    'iotdailyre624435-2': 'Company id',
+    'iotdailyre624435-3': 'Please enter the company id',
+    'iotdailyre624435-4': 'Project ID',
+    'iotdailyre624435-5': 'Please enter project ID',
+    'iotdailyre624435-6': 'Project Category (Drilling Workover Injection Nitriding Fracturing...)',
+    'iotdailyre624435-7':
+      'Please enter the project category (drilling, workover, nitric acid fracturing...)',
+    'iotdailyre624435-8': 'Well Type',
+    'iotdailyre624435-9': 'Please select well type',
+    'iotdailyre624435-10': 'Please select dictionary to generate',
+    'iotdailyre624435-11': 'Well Category',
+    'iotdailyre624435-12': 'Please enter well type',
+    'iotdailyre624435-13': 'Construction Process',
+    'iotdailyre624435-14': 'Please enter construction process',
+    'iotdailyre624435-15': 'Attribute Name',
+    'iotdailyre624435-16': 'Please enter attribute name',
+    'iotdailyre624435-17': 'Property Identifier',
+    'iotdailyre624435-18': 'Please enter a property identifier',
+    'iotdailyre624435-19': 'Data type (double text textarea date dropdown)',
+    'iotdailyre624435-20': 'Please select the data type (double text textarea date dropdown)',
+    'iotdailyre624435-21': 'Is required (0 not required 1 required)',
+    'iotdailyre624435-22': 'Please enter whether it is required (0 is not required 1 is required)',
+    'iotdailyre624435-23': 'Unit (MPa)',
+    'iotdailyre624435-24': 'Please enter unit (MPa)',
+    'iotdailyre624435-25': 'Access mode (r read w write)',
+    'iotdailyre624435-26': 'Please enter access mode (r read w write)',
+    'iotdailyre624435-27': 'Default Value',
+    'iotdailyre624435-28': 'Enter a value to be applied to the field automatically.',
+    'iotdailyre624435-29': 'Maximum',
+    'iotdailyre624435-30': 'Please enter a maximum value',
+    'iotdailyre624435-31': 'Minimum',
+    'iotdailyre624435-32': 'Please enter a minimum value',
+    'iotdailyre624435-33': 'Extended attributes of different specialist companies',
+    'iotdailyre624435-34': 'Please enter extended attributes for different specialist companies',
+    'iotdailyre624435-35': 'Sort the values',
+    'iotdailyre624435-36': 'Please enter a sort value',
+    'iotdailyre624435-37': 'Remarks',
+    'iotdailyre624435-38': 'Please enter remarks',
+    'iotdailyre624435-39': 'Status: 0=Enabled, 1=Disabled',
+    'iotdailyre624435-40': 'Confirm',
+    'iotdailyre624435-41': 'Cancel'
+  },
+  iotdailyreporttemplate: {
+    'indexvue923348-0': 'Company id',
+    'indexvue923348-1': 'Please enter the company id',
+    'indexvue923348-2': 'Project ID',
+    'indexvue923348-3': 'Please enter project ID',
+    'indexvue923348-4': 'Project Category (Drilling Workover Injection Nitriding Fracturing...)',
+    'indexvue923348-5':
+      'Please enter the project category (drilling, workover, nitric acid fracturing...)',
+    'indexvue923348-6': 'Well Type',
+    'indexvue923348-7': 'Please select well type',
+    'indexvue923348-8': 'Please select dictionary to generate',
+    'indexvue923348-9': 'Well Category',
+    'indexvue923348-10': 'Please enter well type',
+    'indexvue923348-11': 'Construction Process',
+    'indexvue923348-12': 'Please enter construction process',
+    'indexvue923348-13': 'Template Name',
+    'indexvue923348-14': 'Please enter template name',
+    'indexvue923348-15': 'Template Identifier',
+    'indexvue923348-16': 'Please enter a template identifier',
+    'indexvue923348-17': 'Remarks',
+    'indexvue923348-18': 'Please enter remarks',
+    'indexvue923348-19': 'Status: 0=Enabled, 1=Disabled',
+    'indexvue923348-20': 'Please select status (0 to enable 1 to disable)',
+    'indexvue923348-21': 'Created Time',
+    'indexvue923348-22': 'Start Date',
+    'indexvue923348-23': 'End Date',
+    'indexvue923348-24': 'Search',
+    'indexvue923348-25': 'Reset',
+    'indexvue923348-26': 'Add',
+    'indexvue923348-27': 'Export',
+    'indexvue923348-28': 'Primary Key ID',
+    'indexvue923348-29': 'Actions',
+    'indexvue923348-30': 'Edit',
+    'indexvue923348-31': 'Delete',
+    'iotdailyre409995-0': 'Company id',
+    'iotdailyre409995-1': 'Please enter the company id',
+    'iotdailyre409995-2': 'Project ID',
+    'iotdailyre409995-3': 'Please enter project ID',
+    'iotdailyre409995-4': 'Project Category (Drilling Workover Injection Nitriding Fracturing...)',
+    'iotdailyre409995-5':
+      'Please enter the project category (drilling, workover, nitric acid fracturing...)',
+    'iotdailyre409995-6': 'Well Type',
+    'iotdailyre409995-7': 'Please select well type',
+    'iotdailyre409995-8': 'Please select dictionary to generate',
+    'iotdailyre409995-9': 'Well Category',
+    'iotdailyre409995-10': 'Please enter well type',
+    'iotdailyre409995-11': 'Construction Process',
+    'iotdailyre409995-12': 'Please enter construction process',
+    'iotdailyre409995-13': 'Template Name',
+    'iotdailyre409995-14': 'Please enter template name',
+    'iotdailyre409995-15': 'Template Identifier',
+    'iotdailyre409995-16': 'Please enter a template identifier',
+    'iotdailyre409995-17': 'Remarks',
+    'iotdailyre409995-18': 'Please enter remarks',
+    'iotdailyre409995-19': 'Status: 0=Enabled, 1=Disabled',
+    'iotdailyre409995-20': 'Confirm',
+    'iotdailyre409995-21': 'Cancel'
+  },
+  iotdeviceallotlog: {
+    'indexvue353597-0': 'Device ID',
+    'indexvue353597-1': 'Please enter device ID',
+    'indexvue353597-2': 'Department before equipment transfer',
+    'indexvue353597-3': 'Please enter the department before the equipment transfer',
+    'indexvue353597-4': 'Department after equipment transfer',
+    'indexvue353597-5': 'Please enter the department after equipment transfer',
+    'indexvue353597-6': 'Reason for Equipment Transfer',
+    'indexvue353597-7': 'Please enter the equipment transfer reason',
+    'indexvue353597-8': 'Remarks',
+    'indexvue353597-9': 'Please enter remarks',
+    'indexvue353597-10': 'Created Time',
+    'indexvue353597-11': 'Start Date',
+    'indexvue353597-12': 'End Date',
+    'indexvue353597-13': 'Search',
+    'indexvue353597-14': 'Reset',
+    'indexvue353597-15': 'Add',
+    'indexvue353597-16': 'Export',
+    'indexvue353597-17': 'Primary Key ID',
+    'indexvue353597-18': 'Actions',
+    'indexvue353597-19': 'Edit',
+    'indexvue353597-20': 'Delete',
+    'iotdevicea003569-0': 'Device ID',
+    'iotdevicea003569-1': 'Please enter device ID',
+    'iotdevicea003569-2': 'Department before equipment transfer',
+    'iotdevicea003569-3': 'Please enter the department before the equipment transfer',
+    'iotdevicea003569-4': 'Department after equipment transfer',
+    'iotdevicea003569-5': 'Please enter the department after equipment transfer',
+    'iotdevicea003569-6': 'Reason for Equipment Transfer',
+    'iotdevicea003569-7': 'Please enter the equipment transfer reason',
+    'iotdevicea003569-8': 'Remarks',
+    'iotdevicea003569-9': 'Please enter remarks',
+    'iotdevicea003569-10': 'Confirm',
+    'iotdevicea003569-11': 'Cancel'
+  },
+  iotdevicematerial: {
+    'indexvue273446-0': 'Owned Equipment Classification',
+    'indexvue273446-1': 'Please enter device category',
+    'indexvue273446-2': 'Owned Devices',
+    'indexvue273446-3': 'Please enter your device',
+    'indexvue273446-4': 'Device BOM Node Name',
+    'indexvue273446-5': 'Please enter device BOM node name',
+    'indexvue273446-6': 'Device BOM Node ID',
+    'indexvue273446-7': 'Please enter device BOM node id',
+    'indexvue273446-8': 'Device BOM Node Code',
+    'indexvue273446-9': 'Please enter the device BOM node code',
+    'indexvue273446-10': 'Material ID',
+    'indexvue273446-11': 'Please enter material ID',
+    'indexvue273446-12': 'Quantity',
+    'indexvue273446-13': 'Please enter quantity',
+    'indexvue273446-14': 'Status: 0=Enabled, 1=Disabled',
+    'indexvue273446-15': 'Please select status: 0=Enabled, 1=Disabled',
+    'indexvue273446-16': 'Please select dictionary to generate',
+    'indexvue273446-17': 'Remarks',
+    'indexvue273446-18': 'Please enter remarks',
+    'indexvue273446-19': 'Created Time',
+    'indexvue273446-20': 'Start Date',
+    'indexvue273446-21': 'End Date',
+    'indexvue273446-22': 'Search',
+    'indexvue273446-23': 'Reset',
+    'indexvue273446-24': 'Add',
+    'indexvue273446-25': 'Export',
+    'indexvue273446-26': 'Primary Key',
+    'indexvue273446-27': 'Actions',
+    'indexvue273446-28': 'Edit',
+    'indexvue273446-29': 'Delete',
+    'iotdevicem753123-0': 'Owned Equipment Classification',
+    'iotdevicem753123-1': 'Please enter device category',
+    'iotdevicem753123-2': 'Owned Devices',
+    'iotdevicem753123-3': 'Please enter your device',
+    'iotdevicem753123-4': 'Device BOM Node Name',
+    'iotdevicem753123-5': 'Please enter device BOM node name',
+    'iotdevicem753123-6': 'Device BOM Node ID',
+    'iotdevicem753123-7': 'Please enter device BOM node id',
+    'iotdevicem753123-8': 'Device BOM Node Code',
+    'iotdevicem753123-9': 'Please enter the device BOM node code',
+    'iotdevicem753123-10': 'Material ID',
+    'iotdevicem753123-11': 'Please enter material ID',
+    'iotdevicem753123-12': 'Quantity',
+    'iotdevicem753123-13': 'Please enter quantity',
+    'iotdevicem753123-14': 'Status: 0=Enabled, 1=Disabled',
+    'iotdevicem753123-15': 'Please select dictionary to generate',
+    'iotdevicem753123-16': 'Remarks',
+    'iotdevicem753123-17': 'Please enter remarks',
+    'iotdevicem753123-18': 'Confirm',
+    'iotdevicem753123-19': 'Cancel'
+  },
+  iotdeviceperson: {
+    'indexvue488660-0': 'Device ID',
+    'indexvue488660-1': 'Please enter device ID',
+    'indexvue488660-2': 'Responsible Person ID',
+    'indexvue488660-3': 'Please enter the person in charge ID',
+    'indexvue488660-4': 'On Status 0 Enabled 1 Disabled',
+    'indexvue488660-5': 'Please select enable status: 0=Enabled, 1=Disabled',
+    'indexvue488660-6': 'Please select dictionary to generate',
+    'indexvue488660-7': 'Remarks',
+    'indexvue488660-8': 'Please enter remarks',
+    'indexvue488660-9': 'Created Time',
+    'indexvue488660-10': 'Start Date',
+    'indexvue488660-11': 'End Date',
+    'indexvue488660-12': 'Search',
+    'indexvue488660-13': 'Reset',
+    'indexvue488660-14': 'Add',
+    'indexvue488660-15': 'Export',
+    'indexvue488660-16': 'Primary Key ID',
+    'indexvue488660-17': 'Actions',
+    'indexvue488660-18': 'Edit',
+    'indexvue488660-19': 'Delete',
+    'iotdevicep460607-0': 'Device ID',
+    'iotdevicep460607-1': 'Please enter device ID',
+    'iotdevicep460607-2': 'Responsible Person ID',
+    'iotdevicep460607-3': 'Please enter the person in charge ID',
+    'iotdevicep460607-4': 'On Status 0 Enabled 1 Disabled',
+    'iotdevicep460607-5': 'Please select dictionary to generate',
+    'iotdevicep460607-6': 'Remarks',
+    'iotdevicep460607-7': 'Please enter remarks',
+    'iotdevicep460607-8': 'Confirm',
+    'iotdevicep460607-9': 'Cancel'
+  },
+  iotdevicepersonlog: {
+    'indexvue499398-0': 'Device ID',
+    'indexvue499398-1': 'Please enter device ID',
+    'indexvue499398-2': 'Responsible person before equipment adjustment',
+    'indexvue499398-3': 'Please enter the person responsible before the equipment adjustment',
+    'indexvue499398-4': 'Collection of responsible person ids before equipment adjustment',
+    'indexvue499398-5':
+      'Please enter the set of responsible person ids before equipment adjustment',
+    'indexvue499398-6': 'Responsible person after equipment adjustment',
+    'indexvue499398-7': 'Please enter the person responsible for adjusting the equipment',
+    'indexvue499398-8': 'Responsible person id collection after equipment adjustment',
+    'indexvue499398-9':
+      'Please enter the person in charge id collection after equipment adjustment',
+    'indexvue499398-10': 'Adjustment Reason',
+    'indexvue499398-11': 'Please enter an adjustment reason',
+    'indexvue499398-12': 'Remarks',
+    'indexvue499398-13': 'Please enter remarks',
+    'indexvue499398-14': 'Created Time',
+    'indexvue499398-15': 'Start Date',
+    'indexvue499398-16': 'End Date',
+    'indexvue499398-17': 'Search',
+    'indexvue499398-18': 'Reset',
+    'indexvue499398-19': 'Add',
+    'indexvue499398-20': 'Export',
+    'indexvue499398-21': 'Primary Key ID',
+    'indexvue499398-22': 'Actions',
+    'indexvue499398-23': 'Edit',
+    'indexvue499398-24': 'Delete',
+    'iotdevicep121035-0': 'Device ID',
+    'iotdevicep121035-1': 'Please enter device ID',
+    'iotdevicep121035-2': 'Responsible person before equipment adjustment',
+    'iotdevicep121035-3': 'Please enter the person responsible before the equipment adjustment',
+    'iotdevicep121035-4': 'Collection of responsible person ids before equipment adjustment',
+    'iotdevicep121035-5':
+      'Please enter the set of responsible person ids before equipment adjustment',
+    'iotdevicep121035-6': 'Responsible person after equipment adjustment',
+    'iotdevicep121035-7': 'Please enter the person responsible for adjusting the equipment',
+    'iotdevicep121035-8': 'Responsible person id collection after equipment adjustment',
+    'iotdevicep121035-9':
+      'Please enter the person in charge id collection after equipment adjustment',
+    'iotdevicep121035-10': 'Adjustment Reason',
+    'iotdevicep121035-11': 'Please enter an adjustment reason',
+    'iotdevicep121035-12': 'Remarks',
+    'iotdevicep121035-13': 'Please enter remarks',
+    'iotdevicep121035-14': 'Confirm',
+    'iotdevicep121035-15': 'Cancel'
+  },
+  iotdevicestatuslog: {
+    'indexvue455561-0': 'Device ID',
+    'indexvue455561-1': 'Please enter device ID',
+    'indexvue455561-2': 'Status before device modification',
+    'indexvue455561-3': 'Please select device status before modification',
+    'indexvue455561-4': 'Please select dictionary to generate',
+    'indexvue455561-5': 'Modified status of the device',
+    'indexvue455561-6': 'Please select device status after modification',
+    'indexvue455561-7': 'Device Status Adjustment Reason',
+    'indexvue455561-8': 'Please enter the device status adjustment reason',
+    'indexvue455561-9': 'Remarks',
+    'indexvue455561-10': 'Please enter remarks',
+    'indexvue455561-11': 'Created Time',
+    'indexvue455561-12': 'Start Date',
+    'indexvue455561-13': 'End Date',
+    'indexvue455561-14': 'Search',
+    'indexvue455561-15': 'Reset',
+    'indexvue455561-16': 'Add',
+    'indexvue455561-17': 'Export',
+    'indexvue455561-18': 'Primary Key ID',
+    'indexvue455561-19': 'Actions',
+    'indexvue455561-20': 'Edit',
+    'indexvue455561-21': 'Delete',
+    'iotdevices314667-0': 'Device ID',
+    'iotdevices314667-1': 'Please enter device ID',
+    'iotdevices314667-2': 'Status before device modification',
+    'iotdevices314667-3': 'Please select dictionary to generate',
+    'iotdevices314667-4': 'Modified status of the device',
+    'iotdevices314667-5': 'Device Status Adjustment Reason',
+    'iotdevices314667-6': 'Please enter the device status adjustment reason',
+    'iotdevices314667-7': 'Remarks',
+    'iotdevices314667-8': 'Please enter remarks',
+    'iotdevices314667-9': 'Confirm',
+    'iotdevices314667-10': 'Cancel'
+  },
+  iotinfo: {
+    'indexvue146327-0': 'Device ID',
+    'indexvue146327-1': 'Please enter device ID',
+    'indexvue146327-2': 'Department ID',
+    'indexvue146327-3': 'Please enter department ID',
+    'indexvue146327-4': 'File Name',
+    'indexvue146327-5': 'Please enter a file name',
+    'indexvue146327-6': 'File Type',
+    'indexvue146327-7': 'Please select Document type',
+    'indexvue146327-8': 'Please select dictionary to generate',
+    'indexvue146327-9': 'File Path',
+    'indexvue146327-10': 'Please enter file path',
+    'indexvue146327-11': 'Remarks',
+    'indexvue146327-12': 'Please enter remarks',
+    'indexvue146327-13': 'Created Time',
+    'indexvue146327-14': 'Start Date',
+    'indexvue146327-15': 'End Date',
+    'indexvue146327-16': 'Search',
+    'indexvue146327-17': 'Reset',
+    'indexvue146327-18': 'Add',
+    'indexvue146327-19': 'Export',
+    'indexvue146327-20': 'Primary Key ID',
+    'indexvue146327-21': 'Actions',
+    'indexvue146327-22': 'Edit',
+    'indexvue146327-23': 'Delete',
+    'iotinfofor118437-0': 'Please select a file directory',
+    'iotinfofor118437-1': 'Please select',
+    'iotinfofor971619-0': 'Please select a file directory',
+    'iotinfofor971619-1': 'Please select'
+  },
+  iotlockstock: {
+    'indexvue918872-0': 'Export',
+    'iotaddtost594062-0': 'Factory ID',
+    'iotaddtost594062-1': 'Cost Center ID',
+    'iotlocksto809451-0': 'Factory',
+    'iotlocksto809451-1': 'Please enter factory',
+    'iotlocksto809451-2': 'Cost Centre',
+    'iotlocksto809451-3': 'Please enter cost center',
+    'iotlocksto809451-4': 'Material Code',
+    'iotlocksto809451-5': 'Please enter material code',
+    'iotlocksto809451-6': 'Material Name',
+    'iotlocksto809451-7': 'Please enter material name',
+    'iotlocksto809451-8': 'Quantity',
+    'iotlocksto809451-9': 'Please enter quantity',
+    'iotlocksto809451-10': 'Unit Price',
+    'iotlocksto809451-11': 'Please enter unit price',
+    'iotlocksto809451-12': 'Unit',
+    'iotlocksto809451-13': 'Please enter unit',
+    'iotlocksto809451-14': 'Storage Time:',
+    'iotlocksto809451-15': 'Select Storage Time',
+    'iotlocksto809451-16': 'Remarks',
+    'iotlocksto809451-17': 'Please enter remarks',
+    'iotlocksto809451-18': 'Confirm',
+    'iotlocksto809451-19': 'Cancel',
+    'stockmater320404-0': 'New materials',
+    'stockmater320404-1': 'Material Master Data',
+    'stockmater320404-2': 'Please enter material master data',
+    'stockmater320404-3': 'Quantity',
+    'stockmater320404-4': 'Please enter quantity',
+    'stockmater320404-5': 'Unit',
+    'stockmater320404-6': 'Please enter unit',
+    'stockmater320404-7': 'Unit Price',
+    'stockmater320404-8': 'Please enter unit price',
+    'stockmater320404-9': 'Remarks',
+    'stockmater320404-10': 'Please enter remarks',
+    'stockmater320404-11': 'Confirm',
+    'stockmater320404-12': 'Cancel'
+  },
+  iotmainplanbommaterial: {
+    'indexvue624850-0': 'Maintenance Plan ID',
+    'indexvue624850-1': 'Please enter maintenance plan ID',
+    'indexvue624850-2': 'Maintenance Plan Detail ID',
+    'indexvue624850-3': 'Please enter the Maintenance Plan Detail ID',
+    'indexvue624850-4': 'Owned Equipment Classification',
+    'indexvue624850-5': 'Please enter device category',
+    'indexvue624850-6': 'Maintenance Plan Detail Device BOM Node ID',
+    'indexvue624850-7': 'Please enter the Maintenance Plan Detail Device BOM Node ID',
+    'indexvue624850-8': 'Device Classification Public BOM Node Name',
+    'indexvue624850-9': 'Please enter the device classification public BOM node name',
+    'indexvue624850-10': 'Device Classification Public BOM Node Code',
+    'indexvue624850-11': 'Please enter the device classification public BOM node code',
+    'indexvue624850-12': 'Material ID',
+    'indexvue624850-13': 'Please enter material ID',
+    'indexvue624850-14': 'Quantity',
+    'indexvue624850-15': 'Please enter quantity',
+    'indexvue624850-16': 'Unit Price (Yuan)',
+    'indexvue624850-17': 'Please enter the unit price (yuan)',
+    'indexvue624850-18': 'Kilometers Cycles (km)',
+    'indexvue624850-19': 'Please enter kilometers Cycles (km)',
+    'indexvue624850-20': 'Kilometers Cycles - Advance Amount (km)',
+    'indexvue624850-21': 'Please enter the number of kilometers of cycles - amount of advance (km)',
+    'indexvue624850-22': 'Time period (hours)',
+    'indexvue624850-23': 'Please enter a time period (hours)',
+    'indexvue624850-24': 'Time Period - Lead Time (Hours)',
+    'indexvue624850-25': 'Please enter time period - lead time (hours)',
+    'indexvue624850-26': 'Natural Daily Cycle (Days)',
+    'indexvue624850-27': 'Please enter a natural day period (days)',
+    'indexvue624850-28': 'Natural Daily Cycle - Lead Amount (Days)',
+    'indexvue624850-29': 'Please enter Natural Day Cycle - Lead Amount (Days)',
+    'indexvue624850-30': 'Sort',
+    'indexvue624850-31': 'Please enter sort order',
+    'indexvue624850-32': 'Status: 0=Enabled, 1=Disabled',
+    'indexvue624850-33': 'Please select status: 0=Enabled, 1=Disabled',
+    'indexvue624850-34': 'Please select dictionary to generate',
+    'indexvue624850-35': 'Remarks',
+    'indexvue624850-36': 'Please enter remarks',
+    'indexvue624850-37': 'Created Time',
+    'indexvue624850-38': 'Start Date',
+    'indexvue624850-39': 'End Date',
+    'indexvue624850-40': 'Search',
+    'indexvue624850-41': 'Reset',
+    'indexvue624850-42': 'Add',
+    'indexvue624850-43': 'Export',
+    'indexvue624850-44': 'Primary Key',
+    'indexvue624850-45': 'Actions',
+    'indexvue624850-46': 'Edit',
+    'indexvue624850-47': 'Delete',
+    'iotmainpla138667-0': 'Maintenance Plan ID',
+    'iotmainpla138667-1': 'Please enter maintenance plan ID',
+    'iotmainpla138667-2': 'Maintenance Plan Detail ID',
+    'iotmainpla138667-3': 'Please enter the Maintenance Plan Detail ID',
+    'iotmainpla138667-4': 'Owned Equipment Classification',
+    'iotmainpla138667-5': 'Please enter device category',
+    'iotmainpla138667-6': 'Maintenance Plan Detail Device BOM Node ID',
+    'iotmainpla138667-7': 'Please enter the Maintenance Plan Detail Device BOM Node ID',
+    'iotmainpla138667-8': 'Device Classification Public BOM Node Name',
+    'iotmainpla138667-9': 'Please enter the device classification public BOM node name',
+    'iotmainpla138667-10': 'Device Classification Public BOM Node Code',
+    'iotmainpla138667-11': 'Please enter the device classification public BOM node code',
+    'iotmainpla138667-12': 'Material ID',
+    'iotmainpla138667-13': 'Please enter material ID',
+    'iotmainpla138667-14': 'Quantity',
+    'iotmainpla138667-15': 'Please enter quantity',
+    'iotmainpla138667-16': 'Unit Price (Yuan)',
+    'iotmainpla138667-17': 'Please enter the unit price (yuan)',
+    'iotmainpla138667-18': 'Kilometers Cycles (km)',
+    'iotmainpla138667-19': 'Please enter kilometers Cycles (km)',
+    'iotmainpla138667-20': 'Kilometers Cycles - Advance Amount (km)',
+    'iotmainpla138667-21':
+      'Please enter the number of kilometers of cycles - amount of advance (km)',
+    'iotmainpla138667-22': 'Time period (hours)',
+    'iotmainpla138667-23': 'Please enter a time period (hours)',
+    'iotmainpla138667-24': 'Time Period - Lead Time (Hours)',
+    'iotmainpla138667-25': 'Please enter time period - lead time (hours)',
+    'iotmainpla138667-26': 'Natural Daily Cycle (Days)',
+    'iotmainpla138667-27': 'Please enter a natural day period (days)',
+    'iotmainpla138667-28': 'Natural Daily Cycle - Lead Amount (Days)',
+    'iotmainpla138667-29': 'Please enter Natural Day Cycle - Lead Amount (Days)',
+    'iotmainpla138667-30': 'Sort',
+    'iotmainpla138667-31': 'Please enter sort order',
+    'iotmainpla138667-32': 'Status: 0=Enabled, 1=Disabled',
+    'iotmainpla138667-33': 'Please select dictionary to generate',
+    'iotmainpla138667-34': 'Remarks',
+    'iotmainpla138667-35': 'Please enter remarks',
+    'iotmainpla138667-36': 'Confirm',
+    'iotmainpla138667-37': 'Cancel'
+  },
+  iotmaintenancebom: {
+    'indexvue111734-0': 'Maintenance Plan ID',
+    'indexvue111734-1': 'Please enter maintenance plan ID',
+    'indexvue111734-2': 'Maintenance Plan Detail ID',
+    'indexvue111734-3': 'Please enter the Maintenance Plan Detail ID',
+    'indexvue111734-4': 'Owned Equipment Classification',
+    'indexvue111734-5': 'Please enter device category',
+    'indexvue111734-6': 'Device ID',
+    'indexvue111734-7': 'Please enter device ID',
+    'indexvue111734-8':
+      'Maintenance rules (natural date of range run time) can be selected multiple times',
+    'indexvue111734-9':
+      'Please enter the maintenance rules (natural date of the running time of the measuring range) Multiple selections are possible',
+    'indexvue111734-10': 'Last Maintenance Run Time (Hours)',
+    'indexvue111734-11': 'Start Date',
+    'indexvue111734-12': 'End Date',
+    'indexvue111734-13': 'Next Maintenance Run Time (Hours)',
+    'indexvue111734-14': 'Kilometers last serviced (km)',
+    'indexvue111734-15': 'Please enter the number of kilometers of the last maintenance run (km)',
+    'indexvue111734-16': 'Kilometers for next service run (km)',
+    'indexvue111734-17': 'Please enter the number of kilometers for the next service run (km)',
+    'indexvue111734-18': 'Last maintenance natural date (days)',
+    'indexvue111734-19': 'Next Maintenance Natural Date (Days)',
+    'indexvue111734-20': 'BOM Name',
+    'indexvue111734-21': 'Please enter a BOM name',
+    'indexvue111734-22': 'BOM Ref',
+    'indexvue111734-23': 'Please enter the BOM code',
+    'indexvue111734-24': 'Parent BOM id top level is 0',
+    'indexvue111734-25': 'Please enter parent BOM id top level is 0',
+    'indexvue111734-26': 'Child node id comma separated',
+    'indexvue111734-27': 'Please enter child node id comma separated',
+    'indexvue111734-28': 'Stratum',
+    'indexvue111734-29': 'Please enter a hierarchy',
+    'indexvue111734-30': 'Whether the leaf node 0 is 1 No',
+    'indexvue111734-31': 'Please enter whether the leaf node 0 Yes 1 No',
+    'indexvue111734-32': 'Display Sequence',
+    'indexvue111734-33': 'Please enter display sequence',
+    'indexvue111734-34': 'M Repair S Maintenance Repair + Maintenance',
+    'indexvue111734-35': 'Please select M Repair S Maintenance Repair + Maintenance',
+    'indexvue111734-36': 'Please select dictionary to generate',
+    'indexvue111734-37': 'Status: 0=Enabled, 1=Disabled',
+    'indexvue111734-38': 'Please select status: 0=Enabled, 1=Disabled',
+    'indexvue111734-39': 'Remarks',
+    'indexvue111734-40': 'Please enter remarks',
+    'indexvue111734-41': 'Version',
+    'indexvue111734-42': 'Please enter a version',
+    'indexvue111734-43': 'Created Time',
+    'indexvue111734-44': 'Search',
+    'indexvue111734-45': 'Reset',
+    'indexvue111734-46': 'Add',
+    'indexvue111734-47': 'Export',
+    'indexvue111734-48': 'Primary Key',
+    'indexvue111734-49': 'Actions',
+    'indexvue111734-50': 'Edit',
+    'indexvue111734-51': 'Delete',
+    'iotmainten706435-0': 'Maintenance Plan ID',
+    'iotmainten706435-1': 'Please enter maintenance plan ID',
+    'iotmainten706435-2': 'Maintenance Plan Detail ID',
+    'iotmainten706435-3': 'Please enter the Maintenance Plan Detail ID',
+    'iotmainten706435-4': 'Owned Equipment Classification',
+    'iotmainten706435-5': 'Please enter device category',
+    'iotmainten706435-6': 'Device ID',
+    'iotmainten706435-7': 'Please enter device ID',
+    'iotmainten706435-8':
+      'Maintenance rules (natural date of range run time) can be selected multiple times',
+    'iotmainten706435-9':
+      'Please enter the maintenance rules (natural date of the running time of the measuring range) Multiple selections are possible',
+    'iotmainten706435-10': 'Last Maintenance Run Time (Hours)',
+    'iotmainten706435-11': 'Select last maintenance run time (hours)',
+    'iotmainten706435-12': 'Next Maintenance Run Time (Hours)',
+    'iotmainten706435-13': 'Select Next Maintenance Run Time (Hours)',
+    'iotmainten706435-14': 'Kilometers last serviced (km)',
+    'iotmainten706435-15': 'Please enter the number of kilometers of the last maintenance run (km)',
+    'iotmainten706435-16': 'Kilometers for next service run (km)',
+    'iotmainten706435-17': 'Please enter the number of kilometers for the next service run (km)',
+    'iotmainten706435-18': 'Last maintenance natural date (days)',
+    'iotmainten706435-19': 'Select last maintenance natural date (days)',
+    'iotmainten706435-20': 'Next Maintenance Natural Date (Days)',
+    'iotmainten706435-21': 'Select Next Care Natural Date (Days)',
+    'iotmainten706435-22': 'BOM Name',
+    'iotmainten706435-23': 'Please enter a BOM name',
+    'iotmainten706435-24': 'BOM Ref',
+    'iotmainten706435-25': 'Please enter the BOM code',
+    'iotmainten706435-26': 'Parent BOM id top level is 0',
+    'iotmainten706435-27': 'Please enter parent BOM id top level is 0',
+    'iotmainten706435-28': 'Child node id comma separated',
+    'iotmainten706435-29': 'Please enter child node id comma separated',
+    'iotmainten706435-30': 'Stratum',
+    'iotmainten706435-31': 'Please enter a hierarchy',
+    'iotmainten706435-32': 'Whether the leaf node 0 is 1 No',
+    'iotmainten706435-33': 'Please enter whether the leaf node 0 Yes 1 No',
+    'iotmainten706435-34': 'Display Sequence',
+    'iotmainten706435-35': 'Please enter display sequence',
+    'iotmainten706435-36': 'M Repair S Maintenance Repair + Maintenance',
+    'iotmainten706435-37': 'Please select M Repair S Maintenance Repair + Maintenance',
+    'iotmainten706435-38': 'Please select dictionary to generate',
+    'iotmainten706435-39': 'Status: 0=Enabled, 1=Disabled',
+    'iotmainten706435-40': 'Remarks',
+    'iotmainten706435-41': 'Please enter remarks',
+    'iotmainten706435-42': 'Version',
+    'iotmainten706435-43': 'Please enter a version',
+    'iotmainten706435-44': 'Confirm',
+    'iotmainten706435-45': 'Cancel'
+  },
+  iotmainworkorder: {
+    'devicealar546324-0': 'View device maintenance items and maintenance mileage by dimension',
+    'devicealar546324-1': 'Device Info',
+    'devicealar546324-2': 'Maintenance Item',
+    'devicealar546324-3': 'Maintenance Duration',
+    'devicealar546324-4': 'Maintenance Mileage',
+    'devicealar546324-5': 'Maintenance Date',
+    'devicealar546324-6': 'Select date',
+    'devicebomm960435-0': 'Maintenance Item Material',
+    'devicebomm960435-1': 'Device Encoding&amp;nbsp;',
+    'devicebomm960435-2': 'Device name:',
+    'indexvue246609-0': 'Export',
+    'indexvue246609-1': 'Reporter',
+    'indexvue246609-2': "t('workOrderMaterial.delayReason') || 'Delay Reason'",
+    'indexvue246609-3': "t('workOrderMaterial.inputDelayReason') || 'Please enter delay reason'",
+    'iotdevicem155621-0': 'Export',
+    'iotdevicem155621-1': 'No maintenance plan',
+    'iotdevicem155621-2': 'Cumulative Run Time H',
+    'iotdevicem155621-3': 'Cumulative Run Mileage KM',
+    'iotdevicem155621-4': 'Multi-attribute Cumulative Value',
+    'iotmainten470046-0': 'Export',
+    'iotmainten470046-1': 'No maintenance plan',
+    'iotmainwor248071-0': 'Automatically generated based on material consumption',
+    'iotmainwor248071-1': 'Other expenses',
+    'iotmainwor248071-2': 'Maintenance Mileage',
+    'iotmainwor248071-3': 'Maintenance Duration',
+    'iotmainwor248071-4': 'Maintenance Date',
+    'iotmainwor248071-5': 'Factory ID',
+    'iotmainwor248071-6': 'Name',
+    'iotmainwor248071-7': 'Cost Center ID',
+    'iotmainwor248071-8': 'Cost Centre Name',
+    'iotmainwor248071-9': 'Inventory location id',
+    'iotmainwor248071-10': 'Inventory Location Name',
+    'iotmainwor248071-11': 'Material Code',
+    'iotmainwor248071-12': 'Material Name',
+    'iotmainwor248071-13': 'Unit',
+    'iotmainwor248071-14': 'Unit Price (CNY/yuan)',
+    'iotmainwor248071-15': 'Consumed Quantity',
+    'iotmainwor248071-16': 'Total Stock Quantity',
+    'iotmainwor248071-17':
+      "`Device ${configDialog.current?.deviceCode+'-'+configDialog.current?.name} Maintenance Config`",
+    'iotmainwor248071-18': 'Device',
+    'iotmainwor248071-19': 'Maintenance Item Config',
+    'iotmainwor248071-20': 'Select date',
+    'iotmainwor685578-0': 'Reporter',
+    'iotmainwor685578-1': 'Please enter a submitter',
+    'iotmainwor685578-2': 'Automatically generated based on material consumption',
+    'iotmainwor685578-3': 'Other expenses',
+    'iotmainwor685578-4': 'Attachment',
+    'iotmainwor685578-5': 'Delete',
+    'iotmainwor685578-6': 'Has no attachments',
+    'iotmainwor685578-7':
+      "`Device ${configDialog.current?.deviceCode + '-' + configDialog.current?.name} Maintenance Config`",
+    'iotmainwor685578-8': 'Device',
+    'iotmainwor685578-9': 'Maintenance Item Config',
+    'iotmainwor685578-10': 'Last Maintenance Mileage (KM)',
+    'iotmainwor685578-11': 'Deferred kilometers (KM)',
+    'iotmainwor685578-12': '& Last maintenance run time',
+    'iotmainwor685578-13': 'Deferred time (H)',
+    'iotmainwor685578-14': '& Date of last maintenance nature',
+    'iotmainwor685578-15': 'Select date',
+    'iotmainwor685578-16': '& Defer Natural Date',
+    'iotmainwor685578-17': 'Running Mileage Cycle (KM)',
+    'iotmainwor685578-18': 'Running Mileage Cycle - Lead Amount (KM)',
+    'iotmainwor685578-19': 'Runtime period (H)',
+    'iotmainwor685578-20': 'Runtime Period - Lead Time (H)',
+    'iotmainwor685578-21': '& Natural daily cycle',
+    'iotmainwor685578-22': 'Natural Daily Cycle - Advance (D)',
+    'iotmainwor685578-23': 'Cancel',
+    'iotmainwor685578-24': 'Save',
+    'iotmainwor950328-0': 'Reporter',
+    'iotmainwor950328-1': 'Please enter a submitter',
+    'iotmainwor950328-2': 'Attachment',
+    'iotmainwor950328-3': 'Delete',
+    'iotmainwor950328-4': 'Has no attachments',
+    'iotmainwor950328-5': 'Maintenance Items',
+    'iotmainwor950328-6': 'bom node',
+    'iotmainwor950328-7': 'Material Code',
+    'iotmainwor950328-8': 'Material Name',
+    'iotmainwor950328-9': 'Unit',
+    'iotmainwor950328-10': 'Unit Price (CNY/yuan)',
+    'iotmainwor950328-11': 'Consumed Quantity',
+    'iotmainwor950328-12': 'Total Stock Quantity',
+    'iotmainwor950328-13':
+      "`Device ${configDialog.current?.deviceCode + '-' + configDialog.current?.name} Maintenance Config`",
+    'iotmainwor950328-14': 'Device',
+    'iotmainwor950328-15': 'Maintenance Item Config',
+    'iotmainwor950328-16': 'Select date',
+    'iotmainwor950328-17': 'Reason for postponement',
+    'iotmainwor149483-0': 'Maintenance Plan ID',
+    'iotmainwor149483-1': 'Please enter maintenance plan ID',
+    'iotmainwor149483-2': 'Maintenance Plan No.',
+    'iotmainwor149483-3': 'Please enter maintenance plan no.',
+    'iotmainwor149483-4': 'Organization ID',
+    'iotmainwor149483-5': 'Please enter organization ID',
+    'iotmainwor149483-6': 'Work Order No.',
+    'iotmainwor149483-7': 'Please enter work order no.',
+    'iotmainwor149483-8': 'Work Order Name (Tuha-C14-Maintenance Plan)',
+    'iotmainwor149483-9': 'Please enter work order name (Tuha-C14-Maintenance Plan)',
+    'iotmainwor149483-10': 'Work Order Type (1 plan-generated, 2 temporary new)',
+    'iotmainwor149483-11': 'Please select work order type (1 plan-generated, 2 temporary new)',
+    'iotmainwor149483-12': 'Please select dictionary to generate',
+    'iotmainwor149483-13': 'Owner IDs Multiple separated by commas',
+    'iotmainwor149483-14': 'Please enter responsible id Multiple separated by comma',
+    'iotmainwor149483-15': 'Maintenance Cost',
+    'iotmainwor149483-16': 'Please enter maintenance cost',
+    'iotmainwor149483-17': 'Maintenance Result (1 pending, 2 executed)',
+    'iotmainwor149483-18': 'Please enter maintenance result (1 pending, 2 executed)',
+    'iotmainwor149483-19': 'Other expenses',
+    'iotmainwor149483-20': 'Please enter a different fee',
+    'iotmainwor149483-21': 'Labor Costs',
+    'iotmainwor149483-22': 'Please enter a labor fee',
+    'iotmainwor149483-23': 'Outsourced? 0=No, 1=Yes',
+    'iotmainwor149483-24': 'Please enter outsourced? 0=No, 1=Yes',
+    'iotmainwor149483-25': 'Actual Maintenance Start Time',
+    'iotmainwor149483-26': 'Select Actual Maintenance Start Time',
+    'iotmainwor149483-27': 'Actual Maintenance End Time',
+    'iotmainwor149483-28': 'Select Actual Maintenance End Time',
+    'iotmainwor149483-29': 'Remarks',
+    'iotmainwor149483-30': 'Please enter remarks',
+    'iotmainwor149483-31': 'Status: 0=Enabled, 1=Disabled',
+    'iotmainwor149483-32': 'Process Instance ID',
+    'iotmainwor149483-33': 'Please enter process instance ID',
+    'iotmainwor149483-34':
+      'Approval Status Not Submitted, Approving, Approved, Not Approved, Cancelled',
+    'iotmainwor149483-35': 'Confirm',
+    'iotmainwor149483-36': 'Cancel',
+    'iotmainwor639521-0': 'Automatically generated based on material consumption',
+    'iotmainwor639521-1': 'Other expenses',
+    'iotmainwor639521-2': 'Maintenance Mileage',
+    'iotmainwor639521-3': 'Maintenance Duration',
+    'iotmainwor639521-4': 'Maintenance Date',
+    'iotmainwor639521-5': 'New materials',
+    'iotmainwor639521-6': 'Factory ID',
+    'iotmainwor639521-7': 'Name',
+    'iotmainwor639521-8': 'Cost Center ID',
+    'iotmainwor639521-9': 'Cost Centre Name',
+    'iotmainwor639521-10': 'Inventory location id',
+    'iotmainwor639521-11': 'Inventory Location Name',
+    'iotmainwor639521-12': 'Material Code',
+    'iotmainwor639521-13': 'Please enter material code',
+    'iotmainwor639521-14': 'Material Name',
+    'iotmainwor639521-15': 'Please enter a material name (required)',
+    'iotmainwor639521-16': 'Unit',
+    'iotmainwor639521-17': 'Unit (required)',
+    'iotmainwor639521-18': 'Unit Price (CNY/yuan)',
+    'iotmainwor639521-19': 'Consumed Quantity',
+    'iotmainwor639521-20': 'Please enter (required)',
+    'iotmainwor639521-21': 'Stock qty:',
+    'iotmainwor639521-22': 'Get from',
+    'iotmainwor639521-23': 'Actions',
+    'iotmainwor639521-24': 'Delete item',
+    'iotmainwor639521-25':
+      "`Device ${configDialog.current?.deviceCode+'-'+configDialog.current?.name} Maintenance Config`",
+    'iotmainwor639521-26': 'Device',
+    'iotmainwor639521-27': 'Maintenance Item Config',
+    'iotmainwor639521-28': 'Select date',
+    'iotmainwor605124-0': 'Reporter',
+    'iotmainwor605124-1': 'Please enter a submitter',
+    'iotmainwor605124-2': 'Automatically generated based on material consumption',
+    'iotmainwor605124-3': 'Other expenses',
+    'iotmainwor605124-4': 'Attachment',
+    'iotmainwor605124-5': 'Delete',
+    'iotmainwor605124-6': 'Has no attachments',
+    'iotmainwor605124-7': 'Maintenance Mileage',
+    'iotmainwor605124-8': 'Maintenance Duration',
+    'iotmainwor605124-9': 'Maintenance Date',
+    'iotmainwor605124-10': 'New materials',
+    'iotmainwor605124-11': 'Factory ID',
+    'iotmainwor605124-12': 'Name',
+    'iotmainwor605124-13': 'Cost Center ID',
+    'iotmainwor605124-14': 'Cost Centre Name',
+    'iotmainwor605124-15': 'Inventory location id',
+    'iotmainwor605124-16': 'Inventory Location Name',
+    'iotmainwor605124-17': 'Material Code',
+    'iotmainwor605124-18': 'Please enter material code',
+    'iotmainwor605124-19': 'Material Name',
+    'iotmainwor605124-20': 'Please enter a material name (required)',
+    'iotmainwor605124-21': 'Unit',
+    'iotmainwor605124-22': 'Unit (required)',
+    'iotmainwor605124-23': 'Unit Price (CNY/yuan)',
+    'iotmainwor605124-24': 'Consumed Quantity',
+    'iotmainwor605124-25': 'Please enter (required)',
+    'iotmainwor605124-26': 'Stock qty:',
+    'iotmainwor605124-27': 'Get from',
+    'iotmainwor605124-28': 'Actions',
+    'iotmainwor605124-29': 'Delete item',
+    'iotmainwor605124-30':
+      "`Device ${configDialog.current?.deviceCode + '-' + configDialog.current?.name} Maintenance Config`",
+    'iotmainwor605124-31': 'Device',
+    'iotmainwor605124-32': 'Maintenance Item Config',
+    'iotmainwor605124-33': 'Select date',
+    'selectedma757732-0': 'View material details linked to the current maintenance item',
+    'selectedma757732-1': 'Associated Material',
+    'selectedma757732-2': 'Close',
+    'workorderm174883-0': 'Select material',
+    'workorderm174883-1': 'Device Encoding&amp;nbsp;',
+    'workorderm174883-2': 'Device name:',
+    'workorderm174883-3': 'No Bound Material',
+    'workorderm174883-4': 'Material Code',
+    'workorderm174883-5': 'Material Name',
+    'workorderm174883-6': 'Quantity',
+    'workorderm174883-7': 'Unit'
+  },
+  iotmainworkorderbom: {
+    'indexvue231525-0': 'Maintenance Plan ID',
+    'indexvue231525-1': 'Please enter maintenance plan ID',
+    'indexvue231525-2': 'Maintenance Plan Detail ID',
+    'indexvue231525-3': 'Please enter the Maintenance Plan Detail ID',
+    'indexvue231525-4': 'Maintenance Work Order ID',
+    'indexvue231525-5': 'Please enter the Maintenance Work Order ID',
+    'indexvue231525-6': 'Owned Equipment Classification',
+    'indexvue231525-7': 'Please enter device category',
+    'indexvue231525-8': 'Device ID',
+    'indexvue231525-9': 'Please enter device ID',
+    'indexvue231525-10':
+      'Maintenance rules (natural date of range run time) can be selected multiple times',
+    'indexvue231525-11':
+      'Please enter the maintenance rules (natural date of the running time of the measuring range) Multiple selections are possible',
+    'indexvue231525-12': 'Maintenance Rules - Mileage (0 Enabled 1 Disabled)',
+    'indexvue231525-13': 'Please enter Maintenance Rule - Mileage (0 Enabled 1 Disabled)',
+    'indexvue231525-14': 'Maintenance Rules - Natural Date (0 Enabled 1 Disabled)',
+    'indexvue231525-15': 'Please enter Maintenance Rule - Natural Date (0 Enabled 1 Disabled)',
+    'indexvue231525-16': 'Maintenance Rules - Runtime (0 Enabled 1 Deactivated)',
+    'indexvue231525-17': 'Please enter Maintenance Rule - Runtime (0 Enabled 1 Deactivated)',
+    'indexvue231525-18': 'Last Maintenance Run Time (Hours)',
+    'indexvue231525-19': 'Start Date',
+    'indexvue231525-20': 'End Date',
+    'indexvue231525-21': 'Next Maintenance Run Time (Hours)',
+    'indexvue231525-22': 'Deferred run time (hours)',
+    'indexvue231525-23': 'Please enter the delayed run time (hours)',
+    'indexvue231525-24': 'Kilometers last serviced (km)',
+    'indexvue231525-25': 'Please enter the number of kilometers of the last maintenance run (km)',
+    'indexvue231525-26': 'Kilometers for next service run (km)',
+    'indexvue231525-27': 'Please enter the number of kilometers for the next service run (km)',
+    'indexvue231525-28': 'Deferred operating kilometers (km)',
+    'indexvue231525-29': 'Please enter the number of delayed kilometers (km)',
+    'indexvue231525-30': 'Last maintenance natural date (days)',
+    'indexvue231525-31': 'Next Maintenance Natural Date (Days)',
+    'indexvue231525-32': 'Postpone natural date (days)',
+    'indexvue231525-33': 'Reason for postponement',
+    'indexvue231525-34': 'Please enter the reason for the delay',
+    'indexvue231525-35': 'Last Service Date:',
+    'indexvue231525-36': 'Time period (hours)',
+    'indexvue231525-37': 'Please enter a time period (hours)',
+    'indexvue231525-38': 'Time Period - Lead Time (Hours)',
+    'indexvue231525-39': 'Please enter time period - lead time (hours)',
+    'indexvue231525-40': 'Kilometers Cycles (km)',
+    'indexvue231525-41': 'Please enter kilometers Cycles (km)',
+    'indexvue231525-42': 'Kilometers Cycles - Advance Amount (km)',
+    'indexvue231525-43': 'Please enter the number of kilometers of cycles - amount of advance (km)',
+    'indexvue231525-44': 'Natural Daily Cycle (Days)',
+    'indexvue231525-45': 'Please enter a natural day period (days)',
+    'indexvue231525-46': 'Natural Daily Cycle - Lead Amount (Days)',
+    'indexvue231525-47': 'Please enter Natural Day Cycle - Lead Amount (Days)',
+    'indexvue231525-48': 'BOM node id',
+    'indexvue231525-49': 'Please enter the BOM node id',
+    'indexvue231525-50': 'BOM Name',
+    'indexvue231525-51': 'Please enter a BOM name',
+    'indexvue231525-52': 'BOM Ref',
+    'indexvue231525-53': 'Please enter the BOM code',
+    'indexvue231525-54': 'Parent BOM id top level is 0',
+    'indexvue231525-55': 'Please enter parent BOM id top level is 0',
+    'indexvue231525-56': 'Child node id comma separated',
+    'indexvue231525-57': 'Please enter child node id comma separated',
+    'indexvue231525-58': 'Stratum',
+    'indexvue231525-59': 'Please enter a hierarchy',
+    'indexvue231525-60': 'Whether the leaf node 0 is 1 No',
+    'indexvue231525-61': 'Please enter whether the leaf node 0 Yes 1 No',
+    'indexvue231525-62': 'Display Sequence',
+    'indexvue231525-63': 'Please enter display sequence',
+    'indexvue231525-64': '1 Repair 2 Repair + Maintenance (1,2)',
+    'indexvue231525-65': 'Please select 1 Repair 2 Repair + Maintenance (1,2)',
+    'indexvue231525-66': 'Please select dictionary to generate',
+    'indexvue231525-67': 'Maintenance Type (1 Temporary Maintenance 2 Planned Maintenance)',
+    'indexvue231525-68':
+      'Please select Maintenance Type (1 Temporary Maintenance 2 Planned Maintenance)',
+    'indexvue231525-69': 'Status: 0=Enabled, 1=Disabled',
+    'indexvue231525-70': 'Please select status: 0=Enabled, 1=Disabled',
+    'indexvue231525-71': 'Remarks',
+    'indexvue231525-72': 'Please enter remarks',
+    'indexvue231525-73': 'Version',
+    'indexvue231525-74': 'Please enter a version',
+    'indexvue231525-75': 'Created Time',
+    'indexvue231525-76': 'Search',
+    'indexvue231525-77': 'Reset',
+    'indexvue231525-78': 'Add',
+    'indexvue231525-79': 'Export',
+    'indexvue231525-80': 'Primary Key',
+    'indexvue231525-81': 'Actions',
+    'indexvue231525-82': 'Edit',
+    'indexvue231525-83': 'Delete',
+    'iotmainwor385505-0': 'Maintenance Plan ID',
+    'iotmainwor385505-1': 'Please enter maintenance plan ID',
+    'iotmainwor385505-2': 'Maintenance Plan Detail ID',
+    'iotmainwor385505-3': 'Please enter the Maintenance Plan Detail ID',
+    'iotmainwor385505-4': 'Maintenance Work Order ID',
+    'iotmainwor385505-5': 'Please enter the Maintenance Work Order ID',
+    'iotmainwor385505-6': 'Owned Equipment Classification',
+    'iotmainwor385505-7': 'Please enter device category',
+    'iotmainwor385505-8': 'Device ID',
+    'iotmainwor385505-9': 'Please enter device ID',
+    'iotmainwor385505-10':
+      'Maintenance rules (natural date of range run time) can be selected multiple times',
+    'iotmainwor385505-11':
+      'Please enter the maintenance rules (natural date of the running time of the measuring range) Multiple selections are possible',
+    'iotmainwor385505-12': 'Maintenance Rules - Mileage (0 Enabled 1 Disabled)',
+    'iotmainwor385505-13': 'Please enter Maintenance Rule - Mileage (0 Enabled 1 Disabled)',
+    'iotmainwor385505-14': 'Maintenance Rules - Natural Date (0 Enabled 1 Disabled)',
+    'iotmainwor385505-15': 'Please enter Maintenance Rule - Natural Date (0 Enabled 1 Disabled)',
+    'iotmainwor385505-16': 'Maintenance Rules - Runtime (0 Enabled 1 Deactivated)',
+    'iotmainwor385505-17': 'Please enter Maintenance Rule - Runtime (0 Enabled 1 Deactivated)',
+    'iotmainwor385505-18': 'Last Maintenance Run Time (Hours)',
+    'iotmainwor385505-19': 'Select last maintenance run time (hours)',
+    'iotmainwor385505-20': 'Next Maintenance Run Time (Hours)',
+    'iotmainwor385505-21': 'Select Next Maintenance Run Time (Hours)',
+    'iotmainwor385505-22': 'Deferred run time (hours)',
+    'iotmainwor385505-23': 'Please enter the delayed run time (hours)',
+    'iotmainwor385505-24': 'Kilometers last serviced (km)',
+    'iotmainwor385505-25': 'Please enter the number of kilometers of the last maintenance run (km)',
+    'iotmainwor385505-26': 'Kilometers for next service run (km)',
+    'iotmainwor385505-27': 'Please enter the number of kilometers for the next service run (km)',
+    'iotmainwor385505-28': 'Deferred operating kilometers (km)',
+    'iotmainwor385505-29': 'Please enter the number of delayed kilometers (km)',
+    'iotmainwor385505-30': 'Last maintenance natural date (days)',
+    'iotmainwor385505-31': 'Select last maintenance natural date (days)',
+    'iotmainwor385505-32': 'Next Maintenance Natural Date (Days)',
+    'iotmainwor385505-33': 'Select Next Care Natural Date (Days)',
+    'iotmainwor385505-34': 'Postpone natural date (days)',
+    'iotmainwor385505-35': 'Select Postpone Natural Date (days)',
+    'iotmainwor385505-36': 'Reason for postponement',
+    'iotmainwor385505-37': 'Please enter the reason for the delay',
+    'iotmainwor385505-38': 'Last Service Date:',
+    'iotmainwor385505-39': 'Select Last Maintenance Date',
+    'iotmainwor385505-40': 'Time period (hours)',
+    'iotmainwor385505-41': 'Please enter a time period (hours)',
+    'iotmainwor385505-42': 'Time Period - Lead Time (Hours)',
+    'iotmainwor385505-43': 'Please enter time period - lead time (hours)',
+    'iotmainwor385505-44': 'Kilometers Cycles (km)',
+    'iotmainwor385505-45': 'Please enter kilometers Cycles (km)',
+    'iotmainwor385505-46': 'Kilometers Cycles - Advance Amount (km)',
+    'iotmainwor385505-47':
+      'Please enter the number of kilometers of cycles - amount of advance (km)',
+    'iotmainwor385505-48': 'Natural Daily Cycle (Days)',
+    'iotmainwor385505-49': 'Please enter a natural day period (days)',
+    'iotmainwor385505-50': 'Natural Daily Cycle - Lead Amount (Days)',
+    'iotmainwor385505-51': 'Please enter Natural Day Cycle - Lead Amount (Days)',
+    'iotmainwor385505-52': 'BOM node id',
+    'iotmainwor385505-53': 'Please enter the BOM node id',
+    'iotmainwor385505-54': 'BOM Name',
+    'iotmainwor385505-55': 'Please enter a BOM name',
+    'iotmainwor385505-56': 'BOM Ref',
+    'iotmainwor385505-57': 'Please enter the BOM code',
+    'iotmainwor385505-58': 'Parent BOM id top level is 0',
+    'iotmainwor385505-59': 'Please enter parent BOM id top level is 0',
+    'iotmainwor385505-60': 'Child node id comma separated',
+    'iotmainwor385505-61': 'Please enter child node id comma separated',
+    'iotmainwor385505-62': 'Stratum',
+    'iotmainwor385505-63': 'Please enter a hierarchy',
+    'iotmainwor385505-64': 'Whether the leaf node 0 is 1 No',
+    'iotmainwor385505-65': 'Please enter whether the leaf node 0 Yes 1 No',
+    'iotmainwor385505-66': 'Display Sequence',
+    'iotmainwor385505-67': 'Please enter display sequence',
+    'iotmainwor385505-68': '1 Repair 2 Repair + Maintenance (1,2)',
+    'iotmainwor385505-69': 'Please select 1 Repair 2 Repair + Maintenance (1,2)',
+    'iotmainwor385505-70': 'Please select dictionary to generate',
+    'iotmainwor385505-71': 'Maintenance Type (1 Temporary Maintenance 2 Planned Maintenance)',
+    'iotmainwor385505-72':
+      'Please select Maintenance Type (1 Temporary Maintenance 2 Planned Maintenance)',
+    'iotmainwor385505-73': 'Status: 0=Enabled, 1=Disabled',
+    'iotmainwor385505-74': 'Remarks',
+    'iotmainwor385505-75': 'Please enter remarks',
+    'iotmainwor385505-76': 'Version',
+    'iotmainwor385505-77': 'Please enter a version',
+    'iotmainwor385505-78': 'Confirm',
+    'iotmainwor385505-79': 'Cancel'
+  },
+  iotmainworkorderbommaterial: {
+    'indexvue270924-0': 'Maintenance Plan ID',
+    'indexvue270924-1': 'Please enter maintenance plan ID',
+    'indexvue270924-2': 'Maintenance Work Order ID',
+    'indexvue270924-3': 'Please enter the Maintenance Work Order ID',
+    'indexvue270924-4': 'Maintenance Work Order Detail ID',
+    'indexvue270924-5': 'Please enter the Maintenance Work Order Detail ID',
+    'indexvue270924-6': 'Classification of the equipment to which the material belongs',
+    'indexvue270924-7': 'Please enter the equipment classification of the material',
+    'indexvue270924-8': 'Maintenance Work Order Detail Device BOM Node ID',
+    'indexvue270924-9': 'Please enter the Maintenance Work Order Detail Device BOM Node ID',
+    'indexvue270924-10': 'Device Classification Public BOM Node Name',
+    'indexvue270924-11': 'Please enter the device classification public BOM node name',
+    'indexvue270924-12': 'Device Classification Public BOM Node Code',
+    'indexvue270924-13': 'Please enter the device classification public BOM node code',
+    'indexvue270924-14': 'Material ID',
+    'indexvue270924-15': 'Please enter material ID',
+    'indexvue270924-16': 'Material Code',
+    'indexvue270924-17': 'Please enter material code',
+    'indexvue270924-18': 'Material Name',
+    'indexvue270924-19': 'Please enter material name',
+    'indexvue270924-20': 'Consumed Quantity',
+    'indexvue270924-21': 'Please enter the quantity consumed',
+    'indexvue270924-22': 'Unit Price (Yuan)',
+    'indexvue270924-23': 'Please enter the unit price (yuan)',
+    'indexvue270924-24': 'Total Amount (RMB)',
+    'indexvue270924-25': 'Please enter the total amount (yuan)',
+    'indexvue270924-26': 'Kilometers Cycles (km)',
+    'indexvue270924-27': 'Please enter kilometers Cycles (km)',
+    'indexvue270924-28': 'Kilometers Cycles - Advance Amount (km)',
+    'indexvue270924-29': 'Please enter the number of kilometers of cycles - amount of advance (km)',
+    'indexvue270924-30': 'Time period (hours)',
+    'indexvue270924-31': 'Please enter a time period (hours)',
+    'indexvue270924-32': 'Time Period - Lead Time (Hours)',
+    'indexvue270924-33': 'Please enter time period - lead time (hours)',
+    'indexvue270924-34': 'Natural Daily Cycle (Days)',
+    'indexvue270924-35': 'Please enter a natural day period (days)',
+    'indexvue270924-36': 'Natural Daily Cycle - Lead Amount (Days)',
+    'indexvue270924-37': 'Please enter Natural Day Cycle - Lead Amount (Days)',
+    'indexvue270924-38': 'Material Source (SAP Inventory Local Inventory...)',
+    'indexvue270924-39': 'Please enter the item source (SAP Inventory Local Inventory...)',
+    'indexvue270924-40': 'Inventory Location',
+    'indexvue270924-41': 'Please enter stock location',
+    'indexvue270924-42': 'Sort',
+    'indexvue270924-43': 'Please enter sort order',
+    'indexvue270924-44': 'Status: 0=Enabled, 1=Disabled',
+    'indexvue270924-45': 'Please select status: 0=Enabled, 1=Disabled',
+    'indexvue270924-46': 'Please select dictionary to generate',
+    'indexvue270924-47': 'Remarks',
+    'indexvue270924-48': 'Please enter remarks',
+    'indexvue270924-49': 'Created Time',
+    'indexvue270924-50': 'Start Date',
+    'indexvue270924-51': 'End Date',
+    'indexvue270924-52': 'Search',
+    'indexvue270924-53': 'Reset',
+    'indexvue270924-54': 'Add',
+    'indexvue270924-55': 'Export',
+    'indexvue270924-56': 'Primary Key',
+    'indexvue270924-57': 'Actions',
+    'indexvue270924-58': 'Edit',
+    'indexvue270924-59': 'Delete',
+    'iotmainwor262735-0': 'Maintenance Plan ID',
+    'iotmainwor262735-1': 'Please enter maintenance plan ID',
+    'iotmainwor262735-2': 'Maintenance Work Order ID',
+    'iotmainwor262735-3': 'Please enter the Maintenance Work Order ID',
+    'iotmainwor262735-4': 'Maintenance Work Order Detail ID',
+    'iotmainwor262735-5': 'Please enter the Maintenance Work Order Detail ID',
+    'iotmainwor262735-6': 'Classification of the equipment to which the material belongs',
+    'iotmainwor262735-7': 'Please enter the equipment classification of the material',
+    'iotmainwor262735-8': 'Maintenance Work Order Detail Device BOM Node ID',
+    'iotmainwor262735-9': 'Please enter the Maintenance Work Order Detail Device BOM Node ID',
+    'iotmainwor262735-10': 'Device Classification Public BOM Node Name',
+    'iotmainwor262735-11': 'Please enter the device classification public BOM node name',
+    'iotmainwor262735-12': 'Device Classification Public BOM Node Code',
+    'iotmainwor262735-13': 'Please enter the device classification public BOM node code',
+    'iotmainwor262735-14': 'Material ID',
+    'iotmainwor262735-15': 'Please enter material ID',
+    'iotmainwor262735-16': 'Material Code',
+    'iotmainwor262735-17': 'Please enter material code',
+    'iotmainwor262735-18': 'Material Name',
+    'iotmainwor262735-19': 'Please enter material name',
+    'iotmainwor262735-20': 'Consumed Quantity',
+    'iotmainwor262735-21': 'Please enter the quantity consumed',
+    'iotmainwor262735-22': 'Unit Price (Yuan)',
+    'iotmainwor262735-23': 'Please enter the unit price (yuan)',
+    'iotmainwor262735-24': 'Total Amount (RMB)',
+    'iotmainwor262735-25': 'Please enter the total amount (yuan)',
+    'iotmainwor262735-26': 'Kilometers Cycles (km)',
+    'iotmainwor262735-27': 'Please enter kilometers Cycles (km)',
+    'iotmainwor262735-28': 'Kilometers Cycles - Advance Amount (km)',
+    'iotmainwor262735-29':
+      'Please enter the number of kilometers of cycles - amount of advance (km)',
+    'iotmainwor262735-30': 'Time period (hours)',
+    'iotmainwor262735-31': 'Please enter a time period (hours)',
+    'iotmainwor262735-32': 'Time Period - Lead Time (Hours)',
+    'iotmainwor262735-33': 'Please enter time period - lead time (hours)',
+    'iotmainwor262735-34': 'Natural Daily Cycle (Days)',
+    'iotmainwor262735-35': 'Please enter a natural day period (days)',
+    'iotmainwor262735-36': 'Natural Daily Cycle - Lead Amount (Days)',
+    'iotmainwor262735-37': 'Please enter Natural Day Cycle - Lead Amount (Days)',
+    'iotmainwor262735-38': 'Material Source (SAP Inventory Local Inventory...)',
+    'iotmainwor262735-39': 'Please enter the item source (SAP Inventory Local Inventory...)',
+    'iotmainwor262735-40': 'Inventory Location',
+    'iotmainwor262735-41': 'Please enter stock location',
+    'iotmainwor262735-42': 'Sort',
+    'iotmainwor262735-43': 'Please enter sort order',
+    'iotmainwor262735-44': 'Status: 0=Enabled, 1=Disabled',
+    'iotmainwor262735-45': 'Please select dictionary to generate',
+    'iotmainwor262735-46': 'Remarks',
+    'iotmainwor262735-47': 'Please enter remarks',
+    'iotmainwor262735-48': 'Confirm',
+    'iotmainwor262735-49': 'Cancel'
+  },
+  iotmainworkorderdetails: {
+    'indexvue225447-0': 'Maintenance Plan ID',
+    'indexvue225447-1': 'Please enter maintenance plan ID',
+    'indexvue225447-2': 'Maintenance Work Order ID',
+    'indexvue225447-3': 'Please enter the Maintenance Work Order ID',
+    'indexvue225447-4': 'Device ID',
+    'indexvue225447-5': 'Please enter device ID',
+    'indexvue225447-6': 'Equipment asset number',
+    'indexvue225447-7': 'Please enter the equipment asset number',
+    'indexvue225447-8': 'Device Name',
+    'indexvue225447-9': 'Please enter device name',
+    'indexvue225447-10': 'Device Category',
+    'indexvue225447-11': 'Please enter a device category',
+    'indexvue225447-12': 'Device Brand',
+    'indexvue225447-13': 'Please enter device brand',
+    'indexvue225447-14': 'Current kilometers in operation (km)',
+    'indexvue225447-15': 'Please enter the number of kilometers you are currently running (km)',
+    'indexvue225447-16': 'Current Uptime (Hours)',
+    'indexvue225447-17': 'Start Date',
+    'indexvue225447-18': 'End Date',
+    'indexvue225447-19': 'Natural Date (Days)',
+    'indexvue225447-20': 'Remarks',
+    'indexvue225447-21': 'Please enter remarks',
+    'indexvue225447-22': 'Sort',
+    'indexvue225447-23': 'Please enter sort order',
+    'indexvue225447-24': 'Status: 0=Enabled, 1=Disabled',
+    'indexvue225447-25': 'Please select status: 0=Enabled, 1=Disabled',
+    'indexvue225447-26': 'Please select dictionary to generate',
+    'indexvue225447-27': 'Created Time',
+    'indexvue225447-28': 'Search',
+    'indexvue225447-29': 'Reset',
+    'indexvue225447-30': 'Add',
+    'indexvue225447-31': 'Export',
+    'indexvue225447-32': 'Primary Key ID',
+    'indexvue225447-33': 'Actions',
+    'indexvue225447-34': 'Edit',
+    'indexvue225447-35': 'Delete',
+    'iotmainwor713573-0': 'Maintenance Plan ID',
+    'iotmainwor713573-1': 'Please enter maintenance plan ID',
+    'iotmainwor713573-2': 'Maintenance Work Order ID',
+    'iotmainwor713573-3': 'Please enter the Maintenance Work Order ID',
+    'iotmainwor713573-4': 'Device ID',
+    'iotmainwor713573-5': 'Please enter device ID',
+    'iotmainwor713573-6': 'Equipment asset number',
+    'iotmainwor713573-7': 'Please enter the equipment asset number',
+    'iotmainwor713573-8': 'Device Name',
+    'iotmainwor713573-9': 'Please enter device name',
+    'iotmainwor713573-10': 'Device Category',
+    'iotmainwor713573-11': 'Please enter a device category',
+    'iotmainwor713573-12': 'Device Brand',
+    'iotmainwor713573-13': 'Please enter device brand',
+    'iotmainwor713573-14': 'Current kilometers in operation (km)',
+    'iotmainwor713573-15': 'Please enter the number of kilometers you are currently running (km)',
+    'iotmainwor713573-16': 'Current Uptime (Hours)',
+    'iotmainwor713573-17': 'Select current run time (hours)',
+    'iotmainwor713573-18': 'Natural Date (Days)',
+    'iotmainwor713573-19': 'Select natural date (days)',
+    'iotmainwor713573-20': 'Remarks',
+    'iotmainwor713573-21': 'Please enter remarks',
+    'iotmainwor713573-22': 'Sort',
+    'iotmainwor713573-23': 'Please enter sort order',
+    'iotmainwor713573-24': 'Status: 0=Enabled, 1=Disabled',
+    'iotmainwor713573-25': 'Please select dictionary to generate',
+    'iotmainwor713573-26': 'Confirm',
+    'iotmainwor713573-27': 'Cancel'
+  },
+  iotmaterialrequisition: {
+    'indexvue826082-0': 'Requisition No.',
+    'indexvue826082-1': 'Please enter the material requisition number',
+    'indexvue826082-2': 'Expense Date',
+    'indexvue826082-3': 'Start Date',
+    'indexvue826082-4': 'End Date',
+    'indexvue826082-5': 'Search',
+    'indexvue826082-6': 'Reset',
+    'indexvue826082-7': 'Add',
+    'indexvue826082-8': 'Export',
+    'indexvue826082-9': 'Requisition Name',
+    'indexvue826082-10': 'Recipient Name',
+    'indexvue826082-11': 'Total Cost',
+    'indexvue826082-12': 'Actions',
+    'indexvue826082-13': 'Edit',
+    'indexvue826082-14': 'Delete',
+    'iotmateria405434-0': 'Picking list name',
+    'iotmateria405434-1': 'Expense ratio',
+    'iotmateria405434-2': 'Automatically generated from claimed materials',
+    'iotmateria405434-3': 'Expense Date',
+    'iotmateria405434-4': 'Actual Maintenance Start Time',
+    'iotmateria405434-5': 'Submitted by',
+    'iotmateria405434-6': 'Please enter the recipient',
+    'iotmateria405434-7': 'Claim Reason',
+    'iotmateria405434-8': 'Please enter the claim reason',
+    'iotmateria405434-9': 'Remarks',
+    'iotmateria405434-10': 'Please enter remarks',
+    'iotmateria405434-11': 'No.',
+    'iotmateria405434-12': 'Factory',
+    'iotmateria405434-13': 'Cost Centre',
+    'iotmateria405434-14': 'Material Code',
+    'iotmateria405434-15': 'Material Name',
+    'iotmateria405434-16': 'Unit Price',
+    'iotmateria405434-17': 'Stock qty:',
+    'iotmateria405434-18': 'Claim Quantity',
+    'iotmateria405434-19': 'Unit',
+    'iotmateria405434-20': 'Confirm',
+    'iotmateria768138-0': 'Picking list name',
+    'iotmateria768138-1': 'Expense ratio',
+    'iotmateria768138-2': 'Automatically generated from claimed materials',
+    'iotmateria768138-3': 'Expense Date',
+    'iotmateria768138-4': 'Actual Maintenance Start Time',
+    'iotmateria768138-5': 'Submitted by',
+    'iotmateria768138-6': 'Please enter the recipient',
+    'iotmateria768138-7': 'Claim Reason',
+    'iotmateria768138-8': 'Please enter the claim reason',
+    'iotmateria768138-9': 'Remarks',
+    'iotmateria768138-10': 'Please enter remarks',
+    'iotmateria768138-11': 'Select material',
+    'iotmateria768138-12': 'No.',
+    'iotmateria768138-13': 'Factory ID',
+    'iotmateria768138-14': 'Cost Center ID',
+    'iotmateria768138-15': 'Factory',
+    'iotmateria768138-16': 'Cost Centre',
+    'iotmateria768138-17': 'Material Code',
+    'iotmateria768138-18': 'Material Name',
+    'iotmateria768138-19': 'Unit Price',
+    'iotmateria768138-20': 'Stock qty:',
+    'iotmateria768138-21': 'Claim Quantity',
+    'iotmateria768138-22': 'Unit',
+    'iotmateria768138-23': 'Actions',
+    'iotmateria768138-24': 'remove',
+    'iotmateria768138-25': 'Save',
+    'iotmateria768138-26': 'Cancel',
+    'iotmateria970475-0': 'Department ID',
+    'iotmateria970475-1': 'Please enter department ID',
+    'iotmateria970475-2': 'Material Requisition No.',
+    'iotmateria970475-3': 'Please enter the material requisition number',
+    'iotmateria970475-4': 'Material Requisition Name',
+    'iotmateria970475-5': 'Please enter material requisition name',
+    'iotmateria970475-6': 'Requisition Purpose (1 repair, 2 maintenance, 3 other)',
+    'iotmateria970475-7': 'Please select requisition purpose (1 repair, 2 maintenance, 3 other)',
+    'iotmateria970475-8': 'Please select dictionary to generate',
+    'iotmateria970475-9': 'Recipient Name',
+    'iotmateria970475-10': 'Please enter requisitioner name',
+    'iotmateria970475-11': 'Material Total Cost',
+    'iotmateria970475-12': 'Please enter material total cost',
+    'iotmateria970475-13': 'Requisition Result (1 pending, 2 executed)',
+    'iotmateria970475-14': 'Please enter requisition result (1 pending, 2 executed)',
+    'iotmateria970475-15': 'Other expenses',
+    'iotmateria970475-16': 'Please enter a different fee',
+    'iotmateria970475-17': 'Labor Costs',
+    'iotmateria970475-18': 'Please enter a labor fee',
+    'iotmateria970475-19': 'Expense Date',
+    'iotmateria970475-20': 'Select Requisition Date',
+    'iotmateria970475-21': 'Claim Reason',
+    'iotmateria970475-22': 'Please enter the claim reason',
+    'iotmateria970475-23': 'Remarks (e.g. special requirements, urgency)',
+    'iotmateria970475-24': 'Please enter remarks (e.g. special requirements, urgency)',
+    'iotmateria970475-25': 'Status: 0=Not Outbound, 1=Outbound, 2=Closed',
+    'iotmateria970475-26': 'Process Instance ID',
+    'iotmateria970475-27': 'Please enter process instance ID',
+    'iotmateria970475-28':
+      'Approval Status Not Submitted, Approving, Approved, Not Approved, Cancelled',
+    'iotmateria970475-29': 'Confirm',
+    'iotmateria970475-30': 'Cancel'
+  },
+  iotmaterialrequisitiondetail: {
+    'indexvue665395-0': 'Material requisition ID',
+    'indexvue665395-1': 'Please enter the material requisition id',
+    'indexvue665395-2': 'Material ID',
+    'indexvue665395-3': 'Please enter material ID',
+    'indexvue665395-4': 'Material Code',
+    'indexvue665395-5': 'Please enter material code',
+    'indexvue665395-6': 'Material Name',
+    'indexvue665395-7': 'Please enter material name',
+    'indexvue665395-8': 'Claim Quantity',
+    'indexvue665395-9': 'Please enter claim quantity',
+    'indexvue665395-10': 'elementary unit',
+    'indexvue665395-11': 'Please enter base unit',
+    'indexvue665395-12': 'Unit Price (Yuan)',
+    'indexvue665395-13': 'Please enter the unit price (yuan)',
+    'indexvue665395-14': 'Total Amount (RMB)',
+    'indexvue665395-15': 'Please enter the total amount (yuan)',
+    'indexvue665395-16': 'Specification/Model',
+    'indexvue665395-17': 'Please enter specification/model',
+    'indexvue665395-18': 'Sort',
+    'indexvue665395-19': 'Please enter sort order',
+    'indexvue665395-20': 'Status: 0=Enabled, 1=Disabled',
+    'indexvue665395-21': 'Please select status: 0=Enabled, 1=Disabled',
+    'indexvue665395-22': 'Please select dictionary to generate',
+    'indexvue665395-23': 'Remarks',
+    'indexvue665395-24': 'Please enter remarks',
+    'indexvue665395-25': 'Created Time',
+    'indexvue665395-26': 'Start Date',
+    'indexvue665395-27': 'End Date',
+    'indexvue665395-28': 'Search',
+    'indexvue665395-29': 'Reset',
+    'indexvue665395-30': 'Add',
+    'indexvue665395-31': 'Export',
+    'indexvue665395-32': 'Primary Key',
+    'indexvue665395-33': 'Actions',
+    'indexvue665395-34': 'Edit',
+    'indexvue665395-35': 'Delete',
+    'iotmateria282731-0': 'Material requisition ID',
+    'iotmateria282731-1': 'Please enter the material requisition id',
+    'iotmateria282731-2': 'Material ID',
+    'iotmateria282731-3': 'Please enter material ID',
+    'iotmateria282731-4': 'Material Code',
+    'iotmateria282731-5': 'Please enter material code',
+    'iotmateria282731-6': 'Material Name',
+    'iotmateria282731-7': 'Please enter material name',
+    'iotmateria282731-8': 'Claim Quantity',
+    'iotmateria282731-9': 'Please enter claim quantity',
+    'iotmateria282731-10': 'elementary unit',
+    'iotmateria282731-11': 'Please enter base unit',
+    'iotmateria282731-12': 'Unit Price (Yuan)',
+    'iotmateria282731-13': 'Please enter the unit price (yuan)',
+    'iotmateria282731-14': 'Total Amount (RMB)',
+    'iotmateria282731-15': 'Please enter the total amount (yuan)',
+    'iotmateria282731-16': 'Specification/Model',
+    'iotmateria282731-17': 'Please enter specification/model',
+    'iotmateria282731-18': 'Sort',
+    'iotmateria282731-19': 'Please enter sort order',
+    'iotmateria282731-20': 'Status: 0=Enabled, 1=Disabled',
+    'iotmateria282731-21': 'Please select dictionary to generate',
+    'iotmateria282731-22': 'Remarks',
+    'iotmateria282731-23': 'Please enter remarks',
+    'iotmateria282731-24': 'Confirm',
+    'iotmateria282731-25': 'Cancel'
+  },
+  iotopeationfill: {
+    'indexvue479101-0': 'Ignore Reason',
+    'indexvue479101-1': 'Reason',
+    'indexvue479101-2': 'Please enter a reason for ignoring',
+    'indexvue479101-3': 'Cancel',
+    'indexvue479101-4': 'Confirm',
+    'index1vue839044-0': 'Well No.',
+    'index1vue839044-1': 'Please select well no.',
+    'index1vue839044-2': 'Non-Production Time',
+    'index1vue839044-3': 'Please enter numbers',
+    'index1vue839044-4': 'Please enter another non-production reason',
+    'index1vue839044-5': 'Production Dynamics',
+    'index1vue839044-6': 'Add a Line',
+    'index1vue839044-7': 'Date',
+    'index1vue839044-8': 'Select date',
+    'index1vue839044-9': 'Start Time',
+    'index1vue839044-10': 'Select start time',
+    'index1vue839044-11': 'End Time',
+    'index1vue839044-12': 'Choose the end time',
+    'index1vue839044-13': 'Duration (H)',
+    'index1vue839044-14': 'Working conditions',
+    'index1vue839044-15': 'Please enter a working condition',
+    'index1vue839044-16': 'End well depth (m)',
+    'index1vue839044-17': 'Please enter the ending well depth',
+    'index1vue839044-18': 'Elaboration',
+    'index1vue839044-19': 'Please enter a detailed description',
+    'index1vue839044-20': 'Actions',
+    'index1vue839044-21': 'Delete',
+    'indexvue614225-0': 'Export',
+    'indexvue614225-1': 'Unknown',
+    'iotoperati342067-0': 'Basic Information',
+    'iotoperati342067-1': 'Daily Report Entry',
+    'iotoperati342067-2': 'Devices list',
+    'iotoperati574167-0': 'Patrol Plan Title',
+    'iotoperati574167-1': 'Please enter a title for the inspection plan',
+    'iotoperati574167-2': 'Inspection plan number',
+    'iotoperati574167-3': 'Please enter the inspection plan number',
+    'iotoperati574167-4': 'Period',
+    'iotoperati574167-5': 'Please enter a period',
+    'iotoperati574167-6': 'Unit',
+    'iotoperati574167-7': 'Please enter unit',
+    'iotoperati574167-8': 'Responsible Person',
+    'iotoperati574167-9': 'Please enter the person in charge',
+    'iotoperati574167-10': 'Device',
+    'iotoperati574167-11': 'Please enter a device',
+    'iotoperati574167-12': 'Remarks',
+    'iotoperati574167-13': 'Please enter remarks',
+    'iotoperati574167-14': 'Department ID',
+    'iotoperati574167-15': 'Please enter department ID',
+    'iotoperati574167-16': 'Confirm',
+    'iotoperati574167-17': 'Cancel',
+    'plandevice327246-0': 'Please select department',
+    'plandevice327246-1': 'Selected Route Devices:',
+    'statistics953800-0': 'Run Record Filling Statistics',
+    'statistics953800-1': 'Filter Conditions',
+    'statistics953800-2': 'Related department',
+    'statistics953800-3': 'Please select department',
+    'statistics953800-4': 'Created Time',
+    'statistics953800-5': 'Start Date',
+    'statistics953800-6': 'End Date',
+    'statistics953800-7': 'Search',
+    'statistics953800-8': 'Reset',
+    'statistics953800-9': 'Run Record Work Order Statistics',
+    'statistics953800-10': 'Run Record Device Statistics',
+    'statistics953800-11': 'Department Run Record Work Order Statistics',
+    'statistics110540-0': 'Search Criteria',
+    'statistics110540-1': 'Please enter query criteria',
+    'statistics110540-2': 'Created Time',
+    'statistics110540-3': 'Start Date',
+    'statistics110540-4': 'End Date',
+    'statistics110540-5': 'Search',
+    'statistics110540-6': 'Reset',
+    'statistics110540-7': 'Export',
+    'statistics110540-8': 'Work Order Name',
+    'statistics110540-9': 'Belonging Organization',
+    'statistics110540-10': 'Device Responsible Person',
+    'statistics110540-11': 'Device No.',
+    'statistics110540-12': 'Device Name',
+    'statistics110540-13': 'Filled'
+  },
+  iotoutbound: {
+    'indexvue035801-0': 'Inbound ID',
+    'indexvue035801-1': 'Please enter the Inbound ID',
+    'indexvue035801-2': 'Org Unit ID',
+    'indexvue035801-3': 'Please enter the Org Unit ID',
+    'indexvue035801-4': 'Factory (SAP) specialist company',
+    'indexvue035801-5': 'Please enter a factory (SAP) specialty company',
+    'indexvue035801-6': 'Inventory Location - SAP Department Project Department Level',
+    'indexvue035801-7': 'Please enter Inventory Location - SAP Department Project Department Level',
+    'indexvue035801-8': 'Cost Center (SAP) Inventory Location Team',
+    'indexvue035801-9': 'Please enter cost center (SAP) stock location team',
+    'indexvue035801-10': 'Material Code',
+    'indexvue035801-11': 'Please enter material code',
+    'indexvue035801-12': 'Material Name',
+    'indexvue035801-13': 'Please enter material name',
+    'indexvue035801-14': 'REF family',
+    'indexvue035801-15': 'Please enter item group',
+    'indexvue035801-16': 'Material group id',
+    'indexvue035801-17': 'Please enter item group id',
+    'indexvue035801-18': 'Out Stock Quantity',
+    'indexvue035801-19': 'Please enter outbound quantity',
+    'indexvue035801-20': 'Unit Price',
+    'indexvue035801-21': 'Please enter unit price',
+    'indexvue035801-22': 'Unit',
+    'indexvue035801-23': 'Please enter unit',
+    'indexvue035801-24': 'Use direction corresponding to BOM node',
+    'indexvue035801-25': 'Please enter the BOM node corresponding to the direction of use',
+    'indexvue035801-26': 'Type of use (1 Repair 2 Maintenance 3 Temporary)',
+    'indexvue035801-27': 'Please select the type of use (1 Repair 2 Maintenance 3 Temporary)',
+    'indexvue035801-28': 'Please select dictionary to generate',
+    'indexvue035801-29': 'Outbound time',
+    'indexvue035801-30': 'Start Date',
+    'indexvue035801-31': 'End Date',
+    'indexvue035801-32': 'Outbound Reason',
+    'indexvue035801-33': 'Please enter the outbound reason',
+    'indexvue035801-34': 'Sort',
+    'indexvue035801-35': 'Please enter sort order',
+    'indexvue035801-36': 'Status: 0=Enabled, 1=Disabled',
+    'indexvue035801-37': 'Please select status: 0=Enabled, 1=Disabled',
+    'indexvue035801-38': 'Remarks',
+    'indexvue035801-39': 'Please enter remarks',
+    'indexvue035801-40': 'Process Instance ID',
+    'indexvue035801-41': 'Please enter process instance ID',
+    'indexvue035801-42':
+      'Approval Status Not Submitted, Approving, Approved, Not Approved, Cancelled',
+    'indexvue035801-43':
+      'Please select approval status Not submitted, Pending, Approved, Not approved, Cancelled',
+    'indexvue035801-44': 'Created Time',
+    'indexvue035801-45': 'Search',
+    'indexvue035801-46': 'Reset',
+    'indexvue035801-47': 'Add',
+    'indexvue035801-48': 'Export',
+    'indexvue035801-49': 'Primary Key',
+    'indexvue035801-50': 'Actions',
+    'indexvue035801-51': 'Edit',
+    'indexvue035801-52': 'Delete',
+    'iotoutboun861929-0': 'Inbound ID',
+    'iotoutboun861929-1': 'Please enter the Inbound ID',
+    'iotoutboun861929-2': 'Org Unit ID',
+    'iotoutboun861929-3': 'Please enter the Org Unit ID',
+    'iotoutboun861929-4': 'Factory (SAP) specialist company',
+    'iotoutboun861929-5': 'Please enter a factory (SAP) specialty company',
+    'iotoutboun861929-6': 'Inventory Location - SAP Department Project Department Level',
+    'iotoutboun861929-7':
+      'Please enter Inventory Location - SAP Department Project Department Level',
+    'iotoutboun861929-8': 'Cost Center (SAP) Inventory Location Team',
+    'iotoutboun861929-9': 'Please enter cost center (SAP) stock location team',
+    'iotoutboun861929-10': 'Material Code',
+    'iotoutboun861929-11': 'Please enter material code',
+    'iotoutboun861929-12': 'Material Name',
+    'iotoutboun861929-13': 'Please enter material name',
+    'iotoutboun861929-14': 'REF family',
+    'iotoutboun861929-15': 'Please enter item group',
+    'iotoutboun861929-16': 'Material group id',
+    'iotoutboun861929-17': 'Please enter item group id',
+    'iotoutboun861929-18': 'Out Stock Quantity',
+    'iotoutboun861929-19': 'Please enter outbound quantity',
+    'iotoutboun861929-20': 'Unit Price',
+    'iotoutboun861929-21': 'Please enter unit price',
+    'iotoutboun861929-22': 'Unit',
+    'iotoutboun861929-23': 'Please enter unit',
+    'iotoutboun861929-24': 'Use direction corresponding to BOM node',
+    'iotoutboun861929-25': 'Please enter the BOM node corresponding to the direction of use',
+    'iotoutboun861929-26': 'Type of use (1 Repair 2 Maintenance 3 Temporary)',
+    'iotoutboun861929-27': 'Please select the type of use (1 Repair 2 Maintenance 3 Temporary)',
+    'iotoutboun861929-28': 'Please select dictionary to generate',
+    'iotoutboun861929-29': 'Outbound time',
+    'iotoutboun861929-30': 'Select Outbound Time',
+    'iotoutboun861929-31': 'Outbound Reason',
+    'iotoutboun861929-32': 'Please enter the outbound reason',
+    'iotoutboun861929-33': 'Sort',
+    'iotoutboun861929-34': 'Please enter sort order',
+    'iotoutboun861929-35': 'Status: 0=Enabled, 1=Disabled',
+    'iotoutboun861929-36': 'Remarks',
+    'iotoutboun861929-37': 'Please enter remarks',
+    'iotoutboun861929-38': 'Process Instance ID',
+    'iotoutboun861929-39': 'Please enter process instance ID',
+    'iotoutboun861929-40':
+      'Approval Status Not Submitted, Approving, Approved, Not Approved, Cancelled',
+    'iotoutboun861929-41': 'Confirm',
+    'iotoutboun861929-42': 'Cancel'
+  },
+  iotprojectdailyreport: {
+    'indexvue978109-0': 'Construction Team ID',
+    'indexvue978109-1': 'Please enter construction team id',
+    'indexvue978109-2': 'Project ID',
+    'indexvue978109-3': 'Please enter project ID',
+    'indexvue978109-4': 'Task ID',
+    'indexvue978109-5': 'Please enter task id',
+    'indexvue978109-6': 'Project Category (Drilling Workover Injection Nitriding Fracturing...)',
+    'indexvue978109-7':
+      'Please enter the project category (drilling, workover, nitric acid fracturing...)',
+    'indexvue978109-8': 'Construction start date',
+    'indexvue978109-9': 'Start Date',
+    'indexvue978109-10': 'End Date',
+    'indexvue978109-11': 'Construction end date',
+    'indexvue978109-12': 'Next Work Plan',
+    'indexvue978109-13': 'Please enter your next work plan',
+    'indexvue978109-14': 'Production situation of the day Production dynamics',
+    'indexvue978109-15': "Please select today's production situation / production dynamics",
+    'indexvue978109-16': 'Please select dictionary to generate',
+    'indexvue978109-17': 'Construction Status (Data Dictionary)',
+    'indexvue978109-18': 'Please select construction status (data dictionary)',
+    'indexvue978109-19': 'Situation of Personnel',
+    'indexvue978109-20': 'Please enter the status of the person',
+    'indexvue978109-21': 'Extended attribute values for different specialist companies',
+    'indexvue978109-22':
+      'Please enter an extended attribute value for a different specialist company',
+    'indexvue978109-23': 'Sort the values',
+    'indexvue978109-24': 'Please enter a sort value',
+    'indexvue978109-25': 'Remarks',
+    'indexvue978109-26': 'Please enter remarks',
+    'indexvue978109-27': 'Status: 0=Enabled, 1=Disabled',
+    'indexvue978109-28': 'Please select status (0 to enable 1 to disable)',
+    'indexvue978109-29': 'Process Instance ID',
+    'indexvue978109-30': 'Please enter process instance ID',
+    'indexvue978109-31':
+      'Approval Status Not Submitted, Approving, Approved, Not Approved, Cancelled',
+    'indexvue978109-32':
+      'Please select approval status Not submitted, Pending, Approved, Not approved, Cancelled',
+    'indexvue978109-33': 'Created Time',
+    'indexvue978109-34': 'Search',
+    'indexvue978109-35': 'Reset',
+    'indexvue978109-36': 'Add',
+    'indexvue978109-37': 'Export',
+    'indexvue978109-38': 'Primary Key ID',
+    'indexvue978109-39': 'Actions',
+    'indexvue978109-40': 'Edit',
+    'indexvue978109-41': 'Delete',
+    'iotproject538801-0': 'Construction Team ID',
+    'iotproject538801-1': 'Please enter construction team id',
+    'iotproject538801-2': 'Project ID',
+    'iotproject538801-3': 'Please enter project ID',
+    'iotproject538801-4': 'Task ID',
+    'iotproject538801-5': 'Please enter task id',
+    'iotproject538801-6': 'Project Category (Drilling Workover Injection Nitriding Fracturing...)',
+    'iotproject538801-7':
+      'Please enter the project category (drilling, workover, nitric acid fracturing...)',
+    'iotproject538801-8': 'Construction start date',
+    'iotproject538801-9': 'Select construction start date',
+    'iotproject538801-10': 'Construction end date',
+    'iotproject538801-11': 'Select construction end date',
+    'iotproject538801-12': 'Next Work Plan',
+    'iotproject538801-13': 'Please enter your next work plan',
+    'iotproject538801-14': 'Production situation of the day Production dynamics',
+    'iotproject538801-15': 'Please select dictionary to generate',
+    'iotproject538801-16': 'Construction Status (Data Dictionary)',
+    'iotproject538801-17': 'Situation of Personnel',
+    'iotproject538801-18': 'Please enter the status of the person',
+    'iotproject538801-19': 'Extended attribute values for different specialist companies',
+    'iotproject538801-20':
+      'Please enter an extended attribute value for a different specialist company',
+    'iotproject538801-21': 'Sort the values',
+    'iotproject538801-22': 'Please enter a sort value',
+    'iotproject538801-23': 'Remarks',
+    'iotproject538801-24': 'Please enter remarks',
+    'iotproject538801-25': 'Status: 0=Enabled, 1=Disabled',
+    'iotproject538801-26': 'Process Instance ID',
+    'iotproject538801-27': 'Please enter process instance ID',
+    'iotproject538801-28':
+      'Approval Status Not Submitted, Approving, Approved, Not Approved, Cancelled',
+    'iotproject538801-29': 'Confirm',
+    'iotproject538801-30': 'Cancel'
+  },
+  iotprojectinfo: {
+    'indexvue711764-0': 'Companies',
+    'indexvue711764-1': 'Please select company',
+    'indexvue711764-2': 'Project Dept',
+    'indexvue711764-3':
+      "queryParams.companyDeptId ? 'Please select project dept' : 'Please select company first'",
+    'indexvue711764-4': 'Contract Name',
+    'indexvue711764-5': 'Please enter a contract name',
+    'indexvue711764-6': 'Contract No.',
+    'indexvue711764-7': 'Please enter the contract number',
+    'indexvue711764-8': 'Start and End Date',
+    'indexvue711764-9': 'Start Date',
+    'indexvue711764-10': 'End Date',
+    'indexvue711764-11': 'Search',
+    'indexvue711764-12': 'Reset',
+    'indexvue711764-13': 'Add',
+    'indexvue711764-14': 'Export',
+    'indexvue711764-15': 'Customer Name',
+    'indexvue711764-16': 'Contract Start Time',
+    'indexvue711764-17': 'Contract Completion Time',
+    'indexvue711764-18': 'Created Time',
+    'indexvue711764-19': 'Actions',
+    'indexvue711764-20': 'Edit',
+    'indexvue711764-21': 'Assign Task',
+    'indexvue711764-22': 'Delete',
+    'indexvue711764-23': 'Well No.',
+    'indexvue711764-24': 'Status Not Updated',
+    'indexvue711764-25': 'Construction Location',
+    'indexvue711764-26': 'Design effort',
+    'indexvue711764-27': 'Workload Unit',
+    'indexvue711764-28': 'Construction Team',
+    'indexvue711764-29': 'Construction Equipment',
+    'indexvue711764-30': 'Responsible Person',
+    'indexvue711764-31': "`Task Progress - ${currentTaskRow ? currentTaskRow.wellName : ''}`",
+    'indexvue711764-32': 'Actual Progress',
+    'indexvue711764-33': 'Close',
+    'iotproject508088-0': 'Project Basic Info',
+    'iotproject508088-1': 'Contract Name',
+    'iotproject508088-2': 'Contract No.',
+    'iotproject508088-3': 'Customer Name',
+    'iotproject508088-4': 'Please select',
+    'iotproject508088-5': 'Total',
+    'iotproject508088-6': 'Completed',
+    'iotproject508088-7': 'Start Time',
+    'iotproject508088-8': 'Select start time',
+    'iotproject508088-9': 'Completion date',
+    'iotproject508088-10': 'Select completion time',
+    'iotproject508088-11': 'Remarks',
+    'iotproject508088-12': 'Task List',
+    'iotproject508088-13': 'Well No.',
+    'iotproject508088-14': 'Construction Location',
+    'iotproject508088-15': 'Design effort',
+    'iotproject508088-16': 'Construction Team',
+    'iotproject508088-17': 'Construction Equipment',
+    'iotproject508088-18': 'Responsible Person',
+    'iotproject500203-0': 'Maintain customer, contract, owning department and project config info',
+    'iotproject500203-1': 'Back',
+    'iotproject500203-2': 'Contract Info',
+    'iotproject500203-3': 'Customer, contract and project cycle info',
+    'iotproject500203-4': 'Customer Name',
+    'iotproject500203-5': 'Please select',
+    'iotproject500203-6': 'Contract Name',
+    'iotproject500203-7': 'Please enter a contract name',
+    'iotproject500203-8': 'Contract No.',
+    'iotproject500203-9': 'Please enter the contract number',
+    'iotproject500203-10': 'Start Time',
+    'iotproject500203-11': 'Select start time',
+    'iotproject500203-12': 'Completion date',
+    'iotproject500203-13': 'Select completion time',
+    'iotproject500203-14': 'Study Settings',
+    'iotproject500203-15': 'Owning department, responsible person and project attributes',
+    'iotproject500203-16': 'Please select owning company',
+    'iotproject500203-17': 'Project Dept',
+    'iotproject500203-18': 'Please select the project department',
+    'iotproject500203-19': 'Responsible Person',
+    'iotproject500203-20': 'No responsible person selected yet',
+    'iotproject500203-21': 'Select',
+    'iotproject500203-22': 'Please select owning company first',
+    'iotproject500203-23': 'Please enter the construction area',
+    'iotproject500203-24': 'No construction area options available, please enter manually',
+    'iotproject500203-25': 'Virtual Project',
+    'iotproject500203-26': 'Remarks',
+    'iotproject500203-27': 'Please enter remarks',
+    'iotproject500203-28': 'Select Responsible Person',
+    'iotproject500203-29': 'Select project responsible person from current company staff',
+    'iotproject500203-30': "`${option.nickname} - ${option.deptName || 'Unassigned Dept'}`",
+    'iotproject500203-31': 'Cancel',
+    'iotproject500203-32': 'Confirm',
+    'iotproject500203-33': 'Save',
+    'iotproject148994-0': 'Well No.',
+    'iotproject148994-1': 'Please enter the pound number',
+    'iotproject148994-2': 'Well Type / Well Category',
+    'iotproject148994-3': 'Please select well type / well category',
+    'iotproject148994-4': 'Please select dictionary to generate',
+    'iotproject148994-5': 'Construction Location',
+    'iotproject148994-6': 'Please enter the construction site',
+    'iotproject148994-7': 'Construction Process',
+    'iotproject148994-8': 'Please enter construction process',
+    'iotproject148994-9': 'Design effort',
+    'iotproject148994-10': 'Please enter the design effort',
+    'iotproject148994-11': 'Your team',
+    'iotproject148994-12': 'Remarks',
+    'iotproject148994-13': 'Please enter remarks',
+    'iotproject148994-14': 'Confirm',
+    'iotproject148994-15': 'Cancel'
+  },
+  iotprojecttask: {
+    'indexvue752171-0': 'Companies',
+    'indexvue752171-1': 'Please select company',
+    'indexvue752171-2': 'Customer Name',
+    'indexvue752171-3': 'Please enter customer name',
+    'indexvue752171-4': 'Contract Name',
+    'indexvue752171-5': 'Please enter a contract name',
+    'indexvue752171-6': 'Contract No.',
+    'indexvue752171-7': 'Please enter the contract number',
+    'indexvue752171-8': 'Construction Team',
+    'indexvue752171-9': 'Please enter construction team',
+    'indexvue752171-10': 'Well No.',
+    'indexvue752171-11': 'Please enter the pound number',
+    'indexvue752171-12': 'Platform well',
+    'indexvue752171-13': 'Please select a platform well',
+    'indexvue752171-14': 'Overall Minimum Value',
+    'indexvue752171-15': 'Yes',
+    'indexvue752171-16': 'W/O',
+    'indexvue752171-17': 'Created Time',
+    'indexvue752171-18': 'Start Date',
+    'indexvue752171-19': 'End Date',
+    'indexvue752171-20': 'Search',
+    'indexvue752171-21': 'Reset',
+    'indexvue752171-22': 'Export',
+    'indexvue752171-23': 'Construction Location',
+    'indexvue752171-24': 'Construction Status',
+    'indexvue752171-25': 'Actions',
+    'indexvue752171-26': 'Plan',
+    'indexvue752171-27': 'Generate Daily Report',
+    'indexvue752171-28': 'Edit',
+    'indexvue752171-29': 'Delete',
+    'indexvue752171-30': 'Task Plan',
+    'indexvue752171-31': 'Plan Details',
+    'indexvue752171-32': 'Maintain task start time, end time and workload',
+    'indexvue752171-33': 'Add Plan',
+    'indexvue752171-34': 'No.',
+    'indexvue752171-35': 'Start Time',
+    'indexvue752171-36': 'Select start time',
+    'indexvue752171-37': 'End Time',
+    'indexvue752171-38': 'Choose the end time',
+    'indexvue752171-39': 'Input',
+    'indexvue752171-40': 'Please confirm all plan times and workloads are filled in',
+    'indexvue752171-41': 'Cancel',
+    'indexvue752171-42': 'Save',
+    'indexvue752171-43': 'Daily Report Date',
+    'indexvue752171-44': 'Please select date',
+    'indexvue752171-45': 'Confirm',
+    'iotproject820427-0': 'Maintain task basic info, construction resources and designed workload',
+    'iotproject820427-1': 'Back',
+    'iotproject820427-2': 'Project Info',
+    'iotproject820427-3': 'Contract-related info is view-only',
+    'iotproject820427-4': 'Contract Name',
+    'iotproject820427-5': 'Please select',
+    'iotproject820427-6': 'Contract No.',
+    'iotproject820427-7': 'Please enter the contract number',
+    'iotproject820427-8': 'Customer Name',
+    'iotproject820427-9': 'Start Time',
+    'iotproject820427-10': 'Select start time',
+    'iotproject820427-11': 'Completion date',
+    'iotproject820427-12': 'Select completion time',
+    'iotproject820427-13': 'Project Dept',
+    'iotproject820427-14': 'Please select the project department',
+    'iotproject820427-15': 'Remarks',
+    'iotproject820427-16': 'Please enter remarks',
+    'iotproject820427-17': 'Well No.',
+    'iotproject820427-18': 'Well Type',
+    'iotproject820427-19': 'Well Category',
+    'iotproject820427-20': 'Construction Location',
+    'iotproject820427-21': 'Design effort',
+    'iotproject820427-22': 'Construction Team',
+    'iotproject820427-23': 'Construction Equipment',
+    'iotproject820427-24': 'Responsible Person',
+    'iotproject820427-25': 'Task Details',
+    'iotproject820427-26': 'Configure well count, process, workload and construction resources',
+    'iotproject820427-27': 'Please enter the pound number',
+    'iotproject820427-28': 'Please enter the construction area',
+    'iotproject820427-29': 'No construction area options available, please enter manually',
+    'iotproject820427-30': 'Please select a construction process',
+    'iotproject820427-31': 'No available construction process option',
+    'iotproject820427-32': 'Please enter the design effort',
+    'iotproject820427-33': 'Add Multiple Designed Workloads',
+    'iotproject820427-34': 'Please select workload unit',
+    'iotproject820427-35': 'Please select a construction team',
+    'iotproject820427-36': 'Select device',
+    'iotproject820427-37': 'No device selected yet',
+    'iotproject820427-38': "isSpecialDept ? 'On-duty Cadre' : 'Responsible Person'",
+    'iotproject820427-39': 'Reporter',
+    'iotproject820427-40': 'Select Reporter',
+    'iotproject820427-41': 'No reporter selected yet',
+    'iotproject820427-42': 'Platform well',
+    'iotproject820427-43': '`Input${attr.name}`',
+    'iotproject820427-44': '`Select${attr.name}`',
+    'iotproject820427-45': 'Reset Task',
+    'iotproject820427-46': 'Attachment',
+    'iotproject820427-47': 'Supports uploading and previewing project design and completion data',
+    'iotproject820427-48': 'Engineering Design',
+    'iotproject820427-49': 'Upload Engineering Design',
+    'iotproject820427-50': 'Geological Design',
+    'iotproject820427-51': 'Upload Geological Design',
+    'iotproject820427-52': 'Completion Report',
+    'iotproject820427-53': 'Upload Completion Report',
+    'iotproject820427-54': 'Maintain platform well numbers and corresponding designed workloads',
+    'iotproject820427-55': 'Workload Unit',
+    'iotproject820427-56': 'Actions',
+    'iotproject820427-57': 'Delete',
+    'iotproject820427-58': 'Add a Line',
+    'iotproject820427-59': 'Save',
+    'iotproject820427-60': 'Cancel',
+    'iotproject820427-61': 'Select Construction Equipment',
+    'iotproject820427-62': 'Confirm',
+    'iotproject820427-63': 'Select Responsible Person',
+    'iotproject820427-64': "`${option.nickname} - ${option.deptName || 'Unassigned Dept'}`",
+    'iotproject820427-65': 'Workload',
+    'iotproject820427-66': 'Please enter workload'
+  },
+  iotprojecttaskattrs: {
+    'indexvue889197-0': 'TaskExtensionTemplateid',
+    'indexvue889197-1': 'Please enter the task extension template id',
+    'indexvue889197-2': 'Company id',
+    'indexvue889197-3': 'Please enter the company id',
+    'indexvue889197-4': 'Project ID',
+    'indexvue889197-5': 'Please enter project ID',
+    'indexvue889197-6': 'Project Category (Drilling Workover Injection Nitriding Fracturing)',
+    'indexvue889197-7':
+      'Please enter the project category (drilling workover injection nitric acid fracturing)',
+    'indexvue889197-8': 'Well Type',
+    'indexvue889197-9': 'Please select well type',
+    'indexvue889197-10': 'Please select dictionary to generate',
+    'indexvue889197-11': 'Well Category',
+    'indexvue889197-12': 'Please enter well type',
+    'indexvue889197-13': 'Construction Process',
+    'indexvue889197-14': 'Please enter construction process',
+    'indexvue889197-15': 'Attribute Name',
+    'indexvue889197-16': 'Please enter attribute name',
+    'indexvue889197-17': 'Property Identifier',
+    'indexvue889197-18': 'Please enter a property identifier',
+    'indexvue889197-19': 'Extended attributes of different specialist companies',
+    'indexvue889197-20': 'Please enter extended attributes for different specialist companies',
+    'indexvue889197-21': 'Remarks',
+    'indexvue889197-22': 'Please enter remarks',
+    'indexvue889197-23': 'Construction status (workload start/relocation/preparation/construction)',
+    'indexvue889197-24':
+      'Please select the construction status (workload start/relocation/preparation/construction)',
+    'indexvue889197-25': 'Created Time',
+    'indexvue889197-26': 'Start Date',
+    'indexvue889197-27': 'End Date',
+    'indexvue889197-28': 'Search',
+    'indexvue889197-29': 'Reset',
+    'indexvue889197-30': 'Add',
+    'indexvue889197-31': 'Export',
+    'indexvue889197-32': 'Primary Key ID',
+    'indexvue889197-33': 'Actions',
+    'indexvue889197-34': 'Edit',
+    'indexvue889197-35': 'Delete',
+    'iotproject891409-0': 'TaskExtensionTemplateid',
+    'iotproject891409-1': 'Please enter the task extension template id',
+    'iotproject891409-2': 'Company id',
+    'iotproject891409-3': 'Please enter the company id',
+    'iotproject891409-4': 'Project ID',
+    'iotproject891409-5': 'Please enter project ID',
+    'iotproject891409-6': 'Project Category (Drilling Workover Injection Nitriding Fracturing)',
+    'iotproject891409-7':
+      'Please enter the project category (drilling workover injection nitric acid fracturing)',
+    'iotproject891409-8': 'Well Type',
+    'iotproject891409-9': 'Please select well type',
+    'iotproject891409-10': 'Please select dictionary to generate',
+    'iotproject891409-11': 'Well Category',
+    'iotproject891409-12': 'Please enter well type',
+    'iotproject891409-13': 'Construction Process',
+    'iotproject891409-14': 'Please enter construction process',
+    'iotproject891409-15': 'Attribute Name',
+    'iotproject891409-16': 'Please enter attribute name',
+    'iotproject891409-17': 'Property Identifier',
+    'iotproject891409-18': 'Please enter a property identifier',
+    'iotproject891409-19': 'Extended attributes of different specialist companies',
+    'iotproject891409-20': 'Please enter extended attributes for different specialist companies',
+    'iotproject891409-21': 'Remarks',
+    'iotproject891409-22': 'Please enter remarks',
+    'iotproject891409-23':
+      'Construction status (workload start/relocation/preparation/construction)',
+    'iotproject891409-24': 'Confirm',
+    'iotproject891409-25': 'Cancel'
+  },
+  iotprojecttaskschedule: {
+    'indexvue467778-0': 'Project ID',
+    'indexvue467778-1': 'Please enter project ID',
+    'indexvue467778-2': 'Task ID',
+    'indexvue467778-3': 'Please enter task id',
+    'indexvue467778-4': 'Construction status (workload start/relocation/preparation/construction)',
+    'indexvue467778-5':
+      'Please select the construction status (workload start/relocation/preparation/construction)',
+    'indexvue467778-6': 'Please select dictionary to generate',
+    'indexvue467778-7': 'State start time',
+    'indexvue467778-8': 'Start Date',
+    'indexvue467778-9': 'End Date',
+    'indexvue467778-10': 'Status End Time',
+    'indexvue467778-11': 'Remarks',
+    'indexvue467778-12': 'Please enter remarks',
+    'indexvue467778-13': 'Created Time',
+    'indexvue467778-14': 'Search',
+    'indexvue467778-15': 'Reset',
+    'indexvue467778-16': 'Add',
+    'indexvue467778-17': 'Export',
+    'indexvue467778-18': 'Primary Key ID',
+    'indexvue467778-19': 'Construction Phase Description',
+    'indexvue467778-20': 'Actions',
+    'indexvue467778-21': 'Edit',
+    'indexvue467778-22': 'Delete',
+    'iotproject787787-0': 'Project ID',
+    'iotproject787787-1': 'Please enter project ID',
+    'iotproject787787-2': 'Task ID',
+    'iotproject787787-3': 'Please enter task id',
+    'iotproject787787-4':
+      'Construction status (workload start/relocation/preparation/construction)',
+    'iotproject787787-5': 'Please select dictionary to generate',
+    'iotproject787787-6': 'Construction Phase Description',
+    'iotproject787787-7': 'State start time',
+    'iotproject787787-8': 'Select Status Start Time',
+    'iotproject787787-9': 'Status End Time',
+    'iotproject787787-10': 'Select Status End Time',
+    'iotproject787787-11': 'Remarks',
+    'iotproject787787-12': 'Please enter remarks',
+    'iotproject787787-13': 'Confirm',
+    'iotproject787787-14': 'Cancel'
+  },
+  iotprojecttasktemplate: {
+    'taskattrmo927795-0': 'Dropdown Options',
+    'taskattrmo927795-1': 'Description of the drop-down option',
+    'taskattrmo927795-2': 'Dropdown Option Value',
+    'taskattrmo927795-3': 'Delete',
+    'taskattrmo437499-0': 'Unit',
+    'taskattrmo437499-1': 'Please select a unit',
+    'indexvue272401-0': 'Template Name',
+    'indexvue272401-1': 'Company Name',
+    'indexvue272401-2': 'Add Attributes',
+    'indexvue272401-3': 'Attribute Name',
+    'indexvue272401-4': 'Identifier',
+    'indexvue272401-5': 'Data Type',
+    'indexvue272401-6': 'Actions',
+    'indexvue272401-7': 'Edit',
+    'indexvue272401-8': 'Delete',
+    'taskattrmo172918-0': 'Attribute Name',
+    'taskattrmo172918-1': 'Please enter attribute name',
+    'taskattrmo172918-2': 'Default Value',
+    'taskattrmo172918-3': 'Enter a value to be applied to the field automatically.',
+    'taskattrmo172918-4': 'Description',
+    'taskattrmo172918-5': 'Please enter an attribute description',
+    'taskattrmo172918-6': 'Confirm',
+    'taskattrmo172918-7': 'Cancel',
+    'taskattrmo359495-0': 'Data Type',
+    'taskattrmo359495-1': 'Please select a data type',
+    'taskattrmo359495-2': 'Time Format',
+    'taskattrmo359495-3': 'UTC timestamp of type String (milliseconds)',
+    'taskattrmo359495-4': 'Required?',
+    'indexvue797541-0': 'Project Category',
+    'indexvue797541-1': 'Please enter project category',
+    'indexvue797541-2': 'Template Name',
+    'indexvue797541-3': 'Please enter template name',
+    'indexvue797541-4': 'Created Time',
+    'indexvue797541-5': 'Start Date',
+    'indexvue797541-6': 'End Date',
+    'indexvue797541-7': 'Search',
+    'indexvue797541-8': 'Reset',
+    'indexvue797541-9': 'Add',
+    'indexvue797541-10': 'Export',
+    'indexvue797541-11': 'Companies',
+    'indexvue797541-12': 'Template Identifier',
+    'indexvue797541-13': 'Actions',
+    'indexvue797541-14': 'View',
+    'indexvue797541-15': 'Edit',
+    'indexvue797541-16': 'Delete',
+    'iotproject621355-0': 'Company id',
+    'iotproject621355-1': 'Please enter the company id',
+    'iotproject621355-2': 'Project ID',
+    'iotproject621355-3': 'Please enter project ID',
+    'iotproject621355-4': 'Project Category (Drilling Workover Injection Nitriding Fracturing)',
+    'iotproject621355-5':
+      'Please enter the project category (drilling workover injection nitric acid fracturing)',
+    'iotproject621355-6': 'Well Type',
+    'iotproject621355-7': 'Please select well type',
+    'iotproject621355-8': 'Please select dictionary to generate',
+    'iotproject621355-9': 'Well Category',
+    'iotproject621355-10': 'Please enter well type',
+    'iotproject621355-11': 'Construction Process',
+    'iotproject621355-12': 'Please enter construction process',
+    'iotproject621355-13': 'Template Name',
+    'iotproject621355-14': 'Please enter template name',
+    'iotproject621355-15': 'Template Identifier',
+    'iotproject621355-16': 'Please enter a template identifier',
+    'iotproject621355-17': 'Remarks',
+    'iotproject621355-18': 'Please enter remarks',
+    'iotproject621355-19':
+      'Construction status (workload start/relocation/preparation/construction)',
+    'iotproject621355-20': 'Confirm',
+    'iotproject621355-21': 'Cancel'
+  },
+  iotrddailyreport: {
+    'dailystati057949-0': 'No data',
+    'dailystati057949-1': 'Table',
+    'dailystati057949-2': 'Dashboard',
+    'dailystati057949-3': 'Export',
+    'dailystati057949-4': 'Department',
+    'dailystati057949-5': 'Fuel Consumption (10k L)',
+    'dailystati057949-6': 'Bridge plug',
+    'dailystati057949-7': 'Number of trips',
+    'dailystati057949-8': 'Well Count',
+    'dailystati057949-9': 'Stage Count',
+    'dailystati057949-10': 'Hour (H)',
+    'dailystati057949-11': 'Water Volume (m³)',
+    'dailystati057949-12': 'Vehicle-shifts',
+    'dailystati057949-13': 'Pump Truck',
+    'dailystati057949-14': 'Instrumentation/sand mixing',
+    'dailystati057949-15': 'Device Utilization Rate',
+    'nonproduct278320-0': 'Table',
+    'nonproduct278320-1': 'Dashboard',
+    'nonproduct278320-2': 'Team',
+    'nonproduct278320-3': 'npt total',
+    'nonproduct278320-4': 'Duration (H)',
+    'nonproduct278320-5': 'Percentage',
+    'nonproduct278320-6': 'Natural time (H)',
+    'createrdfo032456-0': 'New Daily Report',
+    'createrdfo032456-1': 'Construction Team',
+    'createrdfo032456-2': 'Please select a construction team',
+    'createrdfo032456-3': 'Construction Date',
+    'createrdfo032456-4': 'Please select construction date',
+    'createrdfo032456-5': 'Construction Location',
+    'createrdfo032456-6': 'Please enter the construction site',
+    'createrdfo032456-7': 'Leading Cadre',
+    'createrdfo032456-8': 'Please select on-duty cadre',
+    'createrdfo032456-9': 'Reporter',
+    'createrdfo032456-10': 'Time point',
+    'createrdfo032456-11': 'Start Time',
+    'createrdfo032456-12': 'End Time',
+    'createrdfo032456-13': 'Select a time range',
+    'createrdfo032456-14': 'Construction Status',
+    'createrdfo032456-15': 'Please select',
+    'createrdfo032456-16': 'Fuel consumption for the day (L)',
+    'createrdfo032456-17': 'Please enter the fuel consumption for the day',
+    'createrdfo032456-18': 'Production dynamics of the day',
+    'createrdfo032456-19': 'Please enter an external group device',
+    'createrdfo032456-20': 'Next Work Plan',
+    'createrdfo032456-21': 'Please enter your next work plan',
+    'createrdfo032456-22': 'Rental equipment',
+    'createrdfo032456-23': 'Fault Condition',
+    'createrdfo032456-24': 'Please enter a fault condition',
+    'createrdfo032456-25': 'Construction Briefing',
+    'createrdfo032456-26': 'Please enter construction brief',
+    'createrdfo032456-27': 'Non-Production Time',
+    'createrdfo032456-28': 'Other non-production reasons',
+    'createrdfo032456-29': "Required when 'other non-production time' is greater than 0",
+    'createrdfo032456-30': 'Confirm',
+    'createrdfo032456-31': 'Cancel',
+    'dailyrepor816746-0': 'Party A:',
+    'dailyrepor816746-1': 'Contract No:',
+    'dailyrepor816746-2': 'Well No:',
+    'dailyrepor816746-3': 'Construction Team:',
+    'dailyrepor816746-4': 'Construction Site:',
+    'dailyrepor816746-5': 'Process:',
+    'dailyrepor816746-6': 'Move Date:',
+    'dailyrepor816746-7': 'Start Date:',
+    'dailyrepor816746-8': 'Completion Date:',
+    'dailyrepor816746-9': 'On-duty Cadre:',
+    'dailyrepor816746-10': 'Device Config:',
+    'dailyrepor816746-11': 'Time point',
+    'dailyrepor816746-12': 'Start Time',
+    'dailyrepor816746-13': 'End Time',
+    'dailyrepor816746-14': 'Select a time range',
+    'dailyrepor816746-15': 'Construction Status',
+    'dailyrepor816746-16': 'Please select the construction status',
+    'dailyrepor816746-17': 'Platform well',
+    'dailyrepor816746-18': 'Please select a platform well',
+    'dailyrepor816746-19': 'Construction Equipment',
+    'dailyrepor816746-20': 'Select device',
+    'dailyrepor816746-21': 'No device selected',
+    'dailyrepor816746-22': 'Unconstructed Devices',
+    'dailyrepor816746-23': 'Unconstructed devices will be shown here',
+    'dailyrepor816746-24': 'Construction Process',
+    'dailyrepor816746-25': 'Please select a construction process',
+    'dailyrepor816746-26': '`Input${attr.name}`',
+    'dailyrepor816746-27': '`Select${attr.name}`',
+    'dailyrepor816746-28': 'Production dynamics of the day',
+    'dailyrepor816746-29': "Please enter today's production dynamics",
+    'dailyrepor816746-30': 'Next Work Plan',
+    'dailyrepor816746-31': 'Please enter your next work plan',
+    'dailyrepor816746-32': 'Rental equipment',
+    'dailyrepor816746-33': 'Please enter leased device info',
+    'dailyrepor816746-34': 'Fault Condition',
+    'dailyrepor816746-35': 'Please enter a fault condition',
+    'dailyrepor816746-36': 'Fault Delay H',
+    'dailyrepor816746-37': 'Please enter fault delay H',
+    'dailyrepor816746-38': 'Attachment',
+    'dailyrepor816746-39': 'Delete',
+    'dailyrepor816746-40': 'Has no attachments',
+    'dailyrepor816746-41': 'Platform well workload',
+    'dailyrepor816746-42': 'Well No.',
+    'dailyrepor816746-43': 'No platform well workload data',
+    'dailyrepor816746-44': 'Approval comments',
+    'dailyrepor816746-45': 'Please enter approval comments',
+    'dailyrepor816746-46': 'Approved',
+    'dailyrepor816746-47': 'Approval Rejected',
+    'dailyrepor816746-48': 'Select Construction Equipment',
+    'dailyrepor816746-49': 'Cancel',
+    'dailyrepor816746-50': 'Confirm',
+    'filldailyr440256-0': 'Project',
+    'filldailyr440256-1': 'Please enter project',
+    'filldailyr440256-2': 'Task',
+    'filldailyr440256-3': 'Please enter task',
+    'filldailyr440256-4': 'Created Time',
+    'filldailyr440256-5': 'Start Date',
+    'filldailyr440256-6': 'End Date',
+    'filldailyr440256-7': 'Add Daily Report',
+    'filldailyr440256-8': 'Search',
+    'filldailyr440256-9': 'Reset',
+    'filldailyr440256-10': 'Actions',
+    'filldailyr440256-11': 'Fill in',
+    'filldailyr440256-12': 'View',
+    'filldailyr440256-13': 'Time Efficiency',
+    'filldailyr440256-14': 'Daily Report Status',
+    'filldailyr440256-15': 'Approval Status',
+    'filldailyr440256-16': 'Construction Team',
+    'filldailyr440256-17': 'Non-Production Time',
+    'filldailyr440256-18': 'Non-Production Time',
+    'filldailyr440256-19': 'Quality of the project design and implementation',
+    'filldailyr440256-20': 'Device Malfunction',
+    'filldailyr440256-21': 'Equipment maintenance',
+    'filldailyr440256-22': 'Technology limitations',
+    'filldailyr440256-23': 'Production cooperation',
+    'filldailyr440256-24': '<g x=1 id="37074"/><g x=2 id="37077">Manufacturer</g>',
+    'filldailyr440256-25': '<g id="5927">FORCE MAJEURE</g>.',
+    'filldailyr440256-26': 'Stand by',
+    'filldailyr440256-27': 'Designed by Party A',
+    'filldailyr440256-28': 'Party A prepares',
+    'filldailyr440256-29': "Party A's Resources",
+    'filldailyr440256-30': 'Other non-production time',
+    'filldailyr440256-31': 'Other non-production time reasons',
+    'filldailyr440256-32': 'Leading Cadre',
+    'filldailyr440256-33': 'Reporter',
+    'filldailyr570052-0': 'Party A',
+    'filldailyr570052-1': 'Contract #',
+    'filldailyr570052-2': 'Well No.',
+    'filldailyr570052-3': 'Construction Team',
+    'filldailyr570052-4': 'Construction Location',
+    'filldailyr570052-5': 'technology',
+    'filldailyr570052-6': 'Design effort',
+    'filldailyr570052-7': 'Start Date',
+    'filldailyr570052-8': 'Date Completed',
+    'filldailyr570052-9': 'Leading Cadre',
+    'filldailyr570052-10': 'Reporter',
+    'filldailyr570052-11': 'Device Configuration',
+    'filldailyr570052-12': 'Task Progress',
+    'filldailyr570052-13': 'Time point',
+    'filldailyr570052-14': 'Start Time',
+    'filldailyr570052-15': 'End Time',
+    'filldailyr570052-16': 'Select a time range',
+    'filldailyr570052-17': 'Fuel consumption for the day (L)',
+    'filldailyr570052-18': 'Please enter the fuel consumption for the day',
+    'filldailyr570052-19': 'Construction Equipment',
+    'filldailyr570052-20': 'Please select construction equipment',
+    'filldailyr570052-21': 'Idle/unconstructed equipment',
+    'filldailyr570052-22': 'All equipment has been put into construction',
+    'filldailyr570052-23': 'Production Dynamics',
+    'filldailyr570052-24': 'Add a Line',
+    'filldailyr570052-25': 'Start Date',
+    'filldailyr570052-26': 'Select Start Date',
+    'filldailyr570052-27': 'Select start time',
+    'filldailyr570052-28': 'End Date',
+    'filldailyr570052-29': 'Select End Date',
+    'filldailyr570052-30': 'Choose the end time',
+    'filldailyr570052-31': 'Duration (H)',
+    'filldailyr570052-32': 'Construction Details',
+    'filldailyr570052-33': 'Enter construction details',
+    'filldailyr570052-34': 'Actions',
+    'filldailyr570052-35': 'Delete',
+    'filldailyr570052-36': 'Next Work Plan',
+    'filldailyr570052-37': 'Please enter your next work plan',
+    'filldailyr570052-38': 'Rental equipment',
+    'filldailyr570052-39': 'Please enter leased device',
+    'filldailyr570052-40': 'Fault Condition',
+    'filldailyr570052-41': 'Please enter a fault condition',
+    'filldailyr570052-42': 'Failure to work (H)',
+    'filldailyr570052-43': 'Attachment',
+    'filldailyr570052-44': 'Has no attachments',
+    'filldailyr570052-45': 'Platform well',
+    'filldailyr570052-46': 'Please select a platform well',
+    'filldailyr570052-47': 'Construction Status',
+    'filldailyr570052-48': 'Please select',
+    'filldailyr570052-49': 'Construction Process',
+    'filldailyr570052-50': 'Input',
+    'filldailyr570052-51': 'Non-Production Time',
+    'filldailyr570052-52': 'Other non-production reasons',
+    'filldailyr570052-53': "Required when 'other non-production time' is greater than 0",
+    'filldailyr570052-54': 'Construction briefing of the day',
+    'filldailyr570052-55': 'Please enter the construction brief of the day',
+    'filldailyr570052-56': 'Fuel Consumption Information',
+    'filldailyr570052-57': 'Device No.',
+    'filldailyr570052-58': 'Device Name',
+    'filldailyr570052-59': 'Date of occurrence',
+    'filldailyr570052-60': 'AVIC Beidou Fuel Consumption (L)',
+    'filldailyr570052-61': 'Actual Fuel Consumption (L)',
+    'filldailyr570052-62': 'Platform well workload',
+    'filldailyr570052-63': 'Approval comments',
+    'filldailyr570052-64': 'Please enter approval comments',
+    'filldailyr570052-65': 'Confirm',
+    'filldailyr570052-66': 'Cancel',
+    'filldailyr570052-67': 'Approved',
+    'filldailyr570052-68': 'Approval Rejection',
+    'filldailyr570052-69': 'Back',
+    'indexvue483816-0': 'Project',
+    'indexvue483816-1': 'Please enter project',
+    'indexvue483816-2': 'Task',
+    'indexvue483816-3': 'Please enter task',
+    'indexvue483816-4': 'Created Time',
+    'indexvue483816-5': 'Start Date',
+    'indexvue483816-6': 'End Date',
+    'indexvue483816-7': 'Construction Status',
+    'indexvue483816-8': 'Please select the construction status',
+    'indexvue483816-9': 'Search',
+    'indexvue483816-10': 'Reset',
+    'indexvue483816-11': 'Export',
+    'indexvue483816-12': 'Construction Team',
+    'indexvue483816-13': 'Construction Process',
+    'indexvue483816-14': 'Production Dynamics',
+    'indexvue483816-15': 'Construction Details:',
+    'indexvue483816-16': 'Construction briefing of the day',
+    'indexvue483816-17': 'Next Work Plan',
+    'indexvue483816-18': 'Current day',
+    'indexvue483816-19': 'Construction Well',
+    'indexvue483816-20': 'Construction Layer',
+    'indexvue483816-21': 'Pump unit times',
+    'indexvue483816-22': 'Instrumentation/sand mixing',
+    'indexvue483816-23': 'Number of trips',
+    'indexvue483816-24': 'Bridge plug',
+    'indexvue483816-25': 'Quantity of water',
+    'indexvue483816-26': 'Time (H)',
+    'indexvue483816-27': 'Fuel consumption (L)',
+    'indexvue483816-28': 'Rental equipment',
+    'indexvue483816-29': 'Fault Condition',
+    'indexvue483816-30': 'Failure to work (H)',
+    'indexvue483816-31': 'Non-Production Time',
+    'indexvue483816-32': 'Non-Production Time',
+    'indexvue483816-33': 'Quality of the project design and implementation',
+    'indexvue483816-34': 'Device Malfunction',
+    'indexvue483816-35': 'Equipment maintenance',
+    'indexvue483816-36': 'Technology limitations',
+    'indexvue483816-37': 'Production cooperation',
+    'indexvue483816-38': '<g x=1 id="37074"/><g x=2 id="37077">Manufacturer</g>',
+    'indexvue483816-39': '<g id="5927">FORCE MAJEURE</g>.',
+    'indexvue483816-40': 'Stand by',
+    'indexvue483816-41': 'Designed by Party A',
+    'indexvue483816-42': 'Party A prepares',
+    'indexvue483816-43': "Party A's Resources",
+    'indexvue483816-44': 'Other non-production time',
+    'indexvue483816-45': 'Other non-production time reasons',
+    'indexvue483816-46': 'Non-production Time Filling',
+    'indexvue483816-47': 'Time point',
+    'indexvue483816-48': 'Approval Status',
+    'indexvue483816-49': 'Actions',
+    'indexvue483816-50': 'View',
+    'indexvue483816-51': 'Approval',
+    'iotrddaily086731-0': 'Construction Team ID',
+    'iotrddaily086731-1': 'Please enter construction team id',
+    'iotrddaily086731-2': 'Project ID',
+    'iotrddaily086731-3': 'Please enter project ID',
+    'iotrddaily086731-4': 'Task ID',
+    'iotrddaily086731-5': 'Please enter task id',
+    'iotrddaily086731-6': 'Project Category (Drilling Workover Injection Nitriding Fracturing...)',
+    'iotrddaily086731-7':
+      'Please enter the project category (drilling, workover, nitric acid fracturing...)',
+    'iotrddaily086731-8': 'Construction Process ([123,233])',
+    'iotrddaily086731-9': 'Please enter construction process ([123,233])',
+    'iotrddaily086731-10': 'Construction Device ([123,233])',
+    'iotrddaily086731-11': 'Please enter construction device ([123,233])',
+    'iotrddaily086731-12': 'Time Node - Start',
+    'iotrddaily086731-13': 'Select Time Node - Start',
+    'iotrddaily086731-14': 'Time Node - End',
+    'iotrddaily086731-15': 'Select Time Node - End',
+    'iotrddaily086731-16': 'Cumulative Construction Wells',
+    'iotrddaily086731-17': 'Please enter cumulative construction wells',
+    'iotrddaily086731-18': 'Cumulative Construction Layers',
+    'iotrddaily086731-19': 'Please enter cumulative construction layers',
+    'iotrddaily086731-20': 'Daily Pump Truck Shifts',
+    'iotrddaily086731-21': 'Please enter daily pump truck shifts',
+    'iotrddaily086731-22': 'Daily Instrument / Sand Mixing',
+    'iotrddaily086731-23': 'Please enter daily instrument / sand mixing',
+    'iotrddaily086731-24': 'Number of trips',
+    'iotrddaily086731-25': 'Please enter trip count',
+    'iotrddaily086731-26': 'Bridge plug',
+    'iotrddaily086731-27': 'Please enter bridge plug',
+    'iotrddaily086731-28': 'Quantity of water',
+    'iotrddaily086731-29': 'Please enter water volume',
+    'iotrddaily086731-30': 'Time H',
+    'iotrddaily086731-31': 'Please enter time H',
+    'iotrddaily086731-32': 'Daily Fuel Consumption (t)',
+    'iotrddaily086731-33': 'Please enter daily fuel consumption (t)',
+    'iotrddaily086731-34': 'Electricity consumption for the day (kWh)',
+    'iotrddaily086731-35': 'Please enter the daily electricity consumption (kWh)',
+    'iotrddaily086731-36': 'Production time (H)',
+    'iotrddaily086731-37': 'Select Production Time (H)',
+    'iotrddaily086731-38': 'Non-production time (H)',
+    'iotrddaily086731-39': 'Select Non-production Time (H)',
+    'iotrddaily086731-40': 'Non-Production Time Reason',
+    'iotrddaily086731-41': 'Please enter non-production time reason',
+    'iotrddaily086731-42': 'Construction start date',
+    'iotrddaily086731-43': 'Select construction start date',
+    'iotrddaily086731-44': 'Construction end date',
+    'iotrddaily086731-45': 'Select construction end date',
+    'iotrddaily086731-46': 'Production situation of the day Production dynamics',
+    'iotrddaily086731-47': 'Please select dictionary to generate',
+    'iotrddaily086731-48': 'Lease Situation (may have attachments)',
+    'iotrddaily086731-49': 'Please enter lease situation (may have attachments)',
+    'iotrddaily086731-50': 'Next Work Plan',
+    'iotrddaily086731-51': 'Please enter your next work plan',
+    'iotrddaily086731-52':
+      'Construction Status (mobilize up-well / mobilize down-well / construction prep / construction...)',
+    'iotrddaily086731-53': 'Fault Condition',
+    'iotrddaily086731-54': 'Please enter a fault condition',
+    'iotrddaily086731-55': 'Fault Delay h',
+    'iotrddaily086731-56': 'Select Fault Delay h',
+    'iotrddaily086731-57': 'Situation of Personnel',
+    'iotrddaily086731-58': 'Please enter the status of the person',
+    'iotrddaily086731-59': 'Total number of employees',
+    'iotrddaily086731-60': 'Please enter the total number of employees',
+    'iotrddaily086731-61': 'Number of vacationers',
+    'iotrddaily086731-62': 'Please enter the number of vacationers',
+    'iotrddaily086731-63': 'Extended attribute values for different specialist companies',
+    'iotrddaily086731-64':
+      'Please enter an extended attribute value for a different specialist company',
+    'iotrddaily086731-65': 'Sort the values',
+    'iotrddaily086731-66': 'Please enter a sort value',
+    'iotrddaily086731-67': 'Remarks',
+    'iotrddaily086731-68': 'Please enter remarks',
+    'iotrddaily086731-69': 'Status: 0=Enabled, 1=Disabled',
+    'iotrddaily086731-70': 'Process Instance ID',
+    'iotrddaily086731-71': 'Please enter process instance ID',
+    'iotrddaily086731-72':
+      'Approval Status Not Submitted, Approving, Approved, Not Approved, Cancelled',
+    'iotrddaily086731-73': 'Confirm',
+    'iotrddaily086731-74': 'Cancel',
+    'rdformvue804373-0': 'Party A',
+    'rdformvue804373-1': 'Contract #',
+    'rdformvue804373-2': 'Well No.',
+    'rdformvue804373-3': 'Construction Team',
+    'rdformvue804373-4': 'Construction Location',
+    'rdformvue804373-5': 'technology',
+    'rdformvue804373-6': 'Design effort',
+    'rdformvue804373-7': 'Start Date',
+    'rdformvue804373-8': 'Date Completed',
+    'rdformvue804373-9': 'Leading Cadre',
+    'rdformvue804373-10': 'Device Configuration',
+    'rdformvue804373-11': 'Task Progress',
+    'rdformvue804373-12': 'Platform well',
+    'rdformvue804373-13': 'Please select a platform well',
+    'rdformvue804373-14': 'Construction Status',
+    'rdformvue804373-15': 'Please select',
+    'rdformvue804373-16': 'Construction Process',
+    'rdformvue804373-17': 'Input',
+    'rdformvue804373-18': 'Non-Production Time',
+    'rdformvue804373-19': 'Other non-production reasons',
+    'rdformvue804373-20': "Required when 'other non-production time' is greater than 0",
+    'rdformvue804373-21': 'Construction briefing of the day',
+    'rdformvue804373-22': 'Please enter the construction brief of the day',
+    'rdformvue804373-23': 'Time point',
+    'rdformvue804373-24': 'Start Time',
+    'rdformvue804373-25': 'End Time',
+    'rdformvue804373-26': 'Select a time range',
+    'rdformvue804373-27': 'Fuel consumption for the day (L)',
+    'rdformvue804373-28': 'Please enter the fuel consumption for the day',
+    'rdformvue804373-29': 'Construction Equipment',
+    'rdformvue804373-30': 'Please select construction equipment',
+    'rdformvue804373-31': 'Idle/unconstructed equipment',
+    'rdformvue804373-32': 'All equipment has been put into construction',
+    'rdformvue804373-33': 'Production Dynamics',
+    'rdformvue804373-34': 'Add a Line',
+    'rdformvue804373-35': 'Date',
+    'rdformvue804373-36': 'Select start time',
+    'rdformvue804373-37': 'Choose the end time',
+    'rdformvue804373-38': 'Duration (H)',
+    'rdformvue804373-39': 'Construction Details',
+    'rdformvue804373-40': 'Enter construction details',
+    'rdformvue804373-41': 'Actions',
+    'rdformvue804373-42': 'Delete',
+    'rdformvue804373-43': 'Next Work Plan',
+    'rdformvue804373-44': 'Please enter your next work plan',
+    'rdformvue804373-45': 'External-group Devices',
+    'rdformvue804373-46': 'Please enter an external group device',
+    'rdformvue804373-47': 'Fault Condition',
+    'rdformvue804373-48': 'Please enter a fault condition',
+    'rdformvue804373-49': 'Failure to work (H)',
+    'rdformvue804373-50': 'Attachment',
+    'rdformvue804373-51': 'Has no attachments',
+    'rdformvue804373-52': 'Fuel Consumption Information',
+    'rdformvue804373-53': 'Device No.',
+    'rdformvue804373-54': 'Device Name',
+    'rdformvue804373-55': 'Date of occurrence',
+    'rdformvue804373-56': 'AVIC Beidou Fuel Consumption (L)',
+    'rdformvue804373-57': 'Actual Fuel Consumption (L)',
+    'rdformvue804373-58': 'Platform well workload',
+    'rdformvue804373-59': 'Approval comments',
+    'rdformvue804373-60': 'Please enter approval comments',
+    'rdformvue804373-61': 'Confirm',
+    'rdformvue804373-62': 'Cancel',
+    'rdformvue804373-63': 'Approved',
+    'rdformvue804373-64': 'Approval Rejection',
+    'statistics437821-0': 'Project',
+    'statistics437821-1': 'Please enter project',
+    'statistics437821-2': 'Task',
+    'statistics437821-3': 'Please enter task',
+    'statistics437821-4': 'Created Time',
+    'statistics437821-5': 'Start Date',
+    'statistics437821-6': 'End Date',
+    'statistics437821-7': 'Search',
+    'statistics437821-8': 'Reset',
+    'statistics437821-9': 'Add',
+    'statistics437821-10': 'Export',
+    'statistics437821-11': 'Construction Period (D)',
+    'statistics437821-12': 'Task Start Date',
+    'statistics437821-13': 'Project Dept',
+    'statistics437821-14': 'Team',
+    'statistics437821-15': 'Well No.',
+    'statistics437821-16': 'technology',
+    'statistics437821-17': 'Total Workload',
+    'statistics437821-18': 'Fuel consumption (L)',
+    'statistics437821-19': 'Completed Workload',
+    'statistics437821-20': 'Non-Production Time',
+    'statistics437821-21': 'Party A',
+    'summaryvue825148-0': 'Project',
+    'summaryvue825148-1': 'Please enter project',
+    'summaryvue825148-2': 'Task',
+    'summaryvue825148-3': 'Please enter task',
+    'summaryvue825148-4': 'Created Time',
+    'summaryvue825148-5': 'Start Date',
+    'summaryvue825148-6': 'End Date',
+    'summaryvue825148-7': 'Search',
+    'summaryvue825148-8': 'Reset',
+    'summaryvue825148-9': 'Export',
+    'summaryvue825148-10': 'Daily Statistics',
+    'summaryvue825148-11': 'Non-Production Time'
+  },
+  iotrddailyreportitem: {
+    'indexvue481595-0': 'Daily newspaper id',
+    'indexvue481595-1': 'Please enter daily report id',
+    'indexvue481595-2': 'Construction Team ID',
+    'indexvue481595-3': 'Please enter construction team id',
+    'indexvue481595-4': 'Project ID',
+    'indexvue481595-5': 'Please enter project ID',
+    'indexvue481595-6': 'Task ID',
+    'indexvue481595-7': 'Please enter task id',
+    'indexvue481595-8': 'Project Category (Drilling Workover Injection Nitriding Fracturing...)',
+    'indexvue481595-9':
+      'Please enter the project category (drilling, workover, nitric acid fracturing...)',
+    'indexvue481595-10': 'Construction Process',
+    'indexvue481595-11': 'Please enter construction process',
+    'indexvue481595-12': 'Workload Attribute Identifier (bridgePlug waterVolume...)',
+    'indexvue481595-13':
+      'Please enter the Workload Attribute Identifier (bridgePlug waterVolume...)',
+    'indexvue481595-14': 'Workload Attribute Name (Pump Unit Meter/Mixed Sand...)',
+    'indexvue481595-15':
+      'Please enter the Workload Attribute Name (Pump Trolley Meter/Mixed Sand...)',
+    'indexvue481595-16': 'Workload attribute values',
+    'indexvue481595-17': 'Please enter a workload attribute value',
+    'indexvue481595-18': 'Sort the values',
+    'indexvue481595-19': 'Please enter a sort value',
+    'indexvue481595-20': 'Remarks',
+    'indexvue481595-21': 'Please enter remarks',
+    'indexvue481595-22': 'Status: 0=Enabled, 1=Disabled',
+    'indexvue481595-23': 'Please select status (0 to enable 1 to disable)',
+    'indexvue481595-24': 'Please select dictionary to generate',
+    'indexvue481595-25': 'Created Time',
+    'indexvue481595-26': 'Start Date',
+    'indexvue481595-27': 'End Date',
+    'indexvue481595-28': 'Search',
+    'indexvue481595-29': 'Reset',
+    'indexvue481595-30': 'Add',
+    'indexvue481595-31': 'Export',
+    'indexvue481595-32': 'Primary Key ID',
+    'indexvue481595-33': 'Actions',
+    'indexvue481595-34': 'Edit',
+    'indexvue481595-35': 'Delete',
+    'iotrddaily473419-0': 'Daily newspaper id',
+    'iotrddaily473419-1': 'Please enter daily report id',
+    'iotrddaily473419-2': 'Construction Team ID',
+    'iotrddaily473419-3': 'Please enter construction team id',
+    'iotrddaily473419-4': 'Project ID',
+    'iotrddaily473419-5': 'Please enter project ID',
+    'iotrddaily473419-6': 'Task ID',
+    'iotrddaily473419-7': 'Please enter task id',
+    'iotrddaily473419-8': 'Project Category (Drilling Workover Injection Nitriding Fracturing...)',
+    'iotrddaily473419-9':
+      'Please enter the project category (drilling, workover, nitric acid fracturing...)',
+    'iotrddaily473419-10': 'Construction Process',
+    'iotrddaily473419-11': 'Please enter construction process',
+    'iotrddaily473419-12': 'Workload Attribute Identifier (bridgePlug waterVolume...)',
+    'iotrddaily473419-13':
+      'Please enter the Workload Attribute Identifier (bridgePlug waterVolume...)',
+    'iotrddaily473419-14': 'Workload Attribute Name (Pump Unit Meter/Mixed Sand...)',
+    'iotrddaily473419-15':
+      'Please enter the Workload Attribute Name (Pump Trolley Meter/Mixed Sand...)',
+    'iotrddaily473419-16': 'Workload attribute values',
+    'iotrddaily473419-17': 'Please enter a workload attribute value',
+    'iotrddaily473419-18': 'Sort the values',
+    'iotrddaily473419-19': 'Please enter a sort value',
+    'iotrddaily473419-20': 'Remarks',
+    'iotrddaily473419-21': 'Please enter remarks',
+    'iotrddaily473419-22': 'Status: 0=Enabled, 1=Disabled',
+    'iotrddaily473419-23': 'Please select dictionary to generate',
+    'iotrddaily473419-24': 'Confirm',
+    'iotrddaily473419-25': 'Cancel'
+  },
+  iotrhdailyreport: {
+    'approvalvu291425-0': 'Project',
+    'approvalvu291425-1': 'Please enter project',
+    'approvalvu291425-2': 'Task',
+    'approvalvu291425-3': 'Please enter task',
+    'approvalvu291425-4': 'Created Time',
+    'approvalvu291425-5': 'Start Date',
+    'approvalvu291425-6': 'End Date',
+    'approvalvu291425-7': 'Search',
+    'approvalvu291425-8': 'Reset',
+    'approvalvu291425-9': 'View',
+    'approvalvu291425-10': 'Approval',
+    'dailystati238689-0': 'No data',
+    'dailystati238689-1': 'Table',
+    'dailystati238689-2': 'Dashboard',
+    'dailystati238689-3': 'Export',
+    'nonproduct073396-0': 'Table',
+    'nonproduct073396-1': 'Dashboard',
+    'nonproduct073396-2': 'Team',
+    'nonproduct073396-3': 'npt total',
+    'nonproduct073396-4': 'Duration (H)',
+    'nonproduct073396-5': 'Percentage',
+    'nonproduct073396-6': 'Natural time (H)',
+    'depttree2v185025-0': 'Please enter the Department name',
+    'depttree2v185025-1': 'Add child node',
+    'depttree2v185025-2': 'Rename',
+    'depttree2v185025-3': 'Delete',
+    'fillvue068385-0': 'Project',
+    'fillvue068385-1': 'Please enter project',
+    'fillvue068385-2': 'Task',
+    'fillvue068385-3': 'Please enter task',
+    'fillvue068385-4': 'Created Time',
+    'fillvue068385-5': 'Start Date',
+    'fillvue068385-6': 'End Date',
+    'fillvue068385-7': 'Search',
+    'fillvue068385-8': 'Reset',
+    'fillvue068385-9': 'View',
+    'fillvue068385-10': 'Edit',
+    'indexvue193252-0': 'Project',
+    'indexvue193252-1': 'Please enter project',
+    'indexvue193252-2': 'Task',
+    'indexvue193252-3': 'Please enter task',
+    'indexvue193252-4': 'Created Time',
+    'indexvue193252-5': 'Start Date',
+    'indexvue193252-6': 'End Date',
+    'indexvue193252-7': 'Non-Production Time',
+    'indexvue193252-8': 'Search',
+    'indexvue193252-9': 'Reset',
+    'indexvue193252-10': 'Export',
+    'indexvue193252-11': 'Edit',
+    'indexvue193252-12': 'Alarms',
+    'indexvue193252-13': 'Run time-efficiency >100% red alert',
+    'indexvue193252-14': 'Gas-electricity ratio result >15 orange alert',
+    'iotrhdaily852875-0': 'Construction Team',
+    'iotrhdaily852875-1': 'Project',
+    'iotrhdaily852875-2': 'Task',
+    'iotrhdaily852875-3': 'Relocation and installation days (D)',
+    'iotrhdaily852875-4': 'Running Time Limit',
+    'iotrhdaily852875-5': 'Gas injection volume for the day (square)',
+    'iotrhdaily852875-6': 'Please enter daily gas injection volume (m³)',
+    'iotrhdaily852875-7': 'Water injection volume for the day (square)',
+    'iotrhdaily852875-8': 'Please enter daily water injection volume (m³)',
+    'iotrhdaily852875-9': 'Gas injection time of the day (H)',
+    'iotrhdaily852875-10': 'Please enter daily gas injection time (H)',
+    'iotrhdaily852875-11': 'Same-day water injection time (H)',
+    'iotrhdaily852875-12': 'Non-production time (H)',
+    'iotrhdaily852875-13': 'Non-Production Time Reason',
+    'iotrhdaily852875-14': 'Please select',
+    'iotrhdaily852875-15': 'Production Dynamics',
+    'iotrhdaily852875-16': 'Please enter production activity',
+    'iotrhdaily852875-17': 'Cumulative Gas Injection (10k m³)',
+    'iotrhdaily852875-18': 'Cumulative Water Injection (m³)',
+    'iotrhdaily852875-19': 'Please enter cumulative water injection (m³)',
+    'iotrhdaily852875-20': 'Cumulative Completed Well Count',
+    'iotrhdaily852875-21': 'Please enter cumulative completed well count',
+    'iotrhdaily852875-22': 'Remarks',
+    'iotrhdaily852875-23': 'Please enter remarks',
+    'iotrhdaily852875-24': 'Confirm',
+    'iotrhdaily852875-25': 'Cancel',
+    'rhformvue723341-0': 'Runtime:',
+    'rhformvue723341-1': 'Review Opinion',
+    'rhformvue723341-2': 'Basic Information',
+    'rhformvue723341-3': 'Construction Team',
+    'rhformvue723341-4': 'Project',
+    'rhformvue723341-5': 'Task',
+    'rhformvue723341-6': 'Please select',
+    'rhformvue723341-7': 'No Task Option',
+    'rhformvue723341-8': 'Relocation and installation days (D)',
+    'rhformvue723341-9': 'Running Time Limit',
+    'rhformvue723341-10': 'Construction Status',
+    'rhformvue723341-11': 'Please select the construction status',
+    'rhformvue723341-12': 'Gas injection volume for the day (square)',
+    'rhformvue723341-13': 'Water injection volume for the day (square)',
+    'rhformvue723341-14': 'Electricity consumption (KWh)',
+    'rhformvue723341-15': 'Construction Area',
+    'rhformvue723341-16': 'Production Dynamics',
+    'rhformvue723341-17': 'Fault Condition',
+    'rhformvue723341-18': 'Remarks',
+    'rhformvue723341-19': 'Production vs. non-production time',
+    'rhformvue723341-20': 'Gas injection time of the day (H)',
+    'rhformvue723341-21': 'Gas Injection + Non-production = 24H',
+    'rhformvue723341-22': 'Same-day water injection time (H)',
+    'rhformvue723341-23': 'When gas injection = 0, water injection + non-production = 24H',
+    'rhformvue723341-24': 'Other non-production reasons',
+    'rhformvue723341-25': 'Please enter another non-production reason',
+    'rhformvue723341-26': 'Approval comments',
+    'rhformvue723341-27': 'Please enter approval comments',
+    'rhformvue723341-28': 'Confirm',
+    'rhformvue723341-29': 'Cancel',
+    'rhformvue723341-30': 'Approved',
+    'rhformvue723341-31': 'Approval Rejection',
+    'rhsummaryv714477-0': 'Project',
+    'rhsummaryv714477-1': 'Please enter project',
+    'rhsummaryv714477-2': 'Task',
+    'rhsummaryv714477-3': 'Please enter task',
+    'rhsummaryv714477-4': 'Created Time',
+    'rhsummaryv714477-5': 'Start Date',
+    'rhsummaryv714477-6': 'End Date',
+    'rhsummaryv714477-7': 'Search',
+    'rhsummaryv714477-8': 'Reset',
+    'rhsummaryv714477-9': 'Daily Statistics',
+    'rhsummaryv714477-10': 'Non-Production Time',
+    'rhtablevue744021-0': 'Date',
+    'rhtablevue744021-1': 'Construction Team',
+    'rhtablevue744021-2': 'Task',
+    'rhtablevue744021-3': 'Approval Status',
+    'rhtablevue744021-4': 'Construction Area',
+    'rhtablevue744021-5': 'Construction Process',
+    'rhtablevue744021-6': 'Device No',
+    'rhtablevue744021-7': 'Designed Gas Injection (10k m³)',
+    'rhtablevue744021-8': 'Running Time Limit',
+    'rhtablevue744021-9': 'Current day',
+    'rhtablevue744021-10': 'Gas injection volume (Wanfang)',
+    'rhtablevue744021-11': 'Water Injection (m³)',
+    'rhtablevue744021-12': 'Gas Injection Time (H)',
+    'rhtablevue744021-13': 'Water Injection Time (H)',
+    'rhtablevue744021-14': 'Electricity consumption (KWh)',
+    'rhtablevue744021-15': 'Fuel consumption (L)',
+    'rhtablevue744021-16': 'Gas-Electricity Ratio',
+    'rhtablevue744021-17': 'Non-Production Time',
+    'rhtablevue744021-18': 'Non-Production Time',
+    'rhtablevue744021-19': 'Quality of the project design and implementation',
+    'rhtablevue744021-20': 'Device Malfunction',
+    'rhtablevue744021-21': 'Equipment maintenance',
+    'rhtablevue744021-22': 'Technology limitations',
+    'rhtablevue744021-23': 'Production cooperation',
+    'rhtablevue744021-24': '<g x=1 id="37074"/><g x=2 id="37077">Manufacturer</g>',
+    'rhtablevue744021-25': '<g id="5927">FORCE MAJEURE</g>.',
+    'rhtablevue744021-26': 'Stand by',
+    'rhtablevue744021-27': 'Designed by Party A',
+    'rhtablevue744021-28': 'Party A prepares',
+    'rhtablevue744021-29': "Party A's Resources",
+    'rhtablevue744021-30': 'Other non-production time',
+    'rhtablevue744021-31': 'Other non-production time reasons',
+    'rhtablevue744021-32': 'Production Dynamics',
+    'rhtablevue744021-33': 'Project',
+    'rhtablevue744021-34': 'Move and Install Days',
+    'rhtablevue744021-35': 'Well Cumulative',
+    'rhtablevue744021-36': 'Power Consumption (MWh)',
+    'rhtablevue744021-37': 'Year Cumulative',
+    'rhtablevue744021-38': 'Cumulative',
+    'rhtablevue744021-39': 'Completed Well Count',
+    'rhtablevue744021-40': 'Capacity (10k m³)',
+    'rhtablevue744021-41': 'Actions',
+    'summaryvue798136-0': 'Project',
+    'summaryvue798136-1': 'Please enter project',
+    'summaryvue798136-2': 'Task',
+    'summaryvue798136-3': 'Please enter task',
+    'summaryvue798136-4': 'Created Time',
+    'summaryvue798136-5': 'Start Date',
+    'summaryvue798136-6': 'End Date',
+    'summaryvue798136-7': 'Search',
+    'summaryvue798136-8': 'Reset',
+    'summaryvue798136-9': 'Daily Statistics',
+    'summaryvue798136-10': 'Non-Production Time',
+    'unfilledre019573-0': 'Missing details',
+    'unfilledre019573-1': 'Created Time',
+    'unfilledre019573-2': 'Start Date',
+    'unfilledre019573-3': 'End Date',
+    'unfilledre019573-4': 'Search',
+    'unfilledre019573-5': 'Reset',
+    'unfilledre019573-6': 'Date',
+    'unfilledre019573-7': 'Department Name'
+  },
+  iotrydailyreport: {
+    'approvalvu470962-0': 'Project',
+    'approvalvu470962-1': 'Please enter project',
+    'approvalvu470962-2': 'Task',
+    'approvalvu470962-3': 'Please enter task',
+    'approvalvu470962-4': 'Created Time',
+    'approvalvu470962-5': 'Start Date',
+    'approvalvu470962-6': 'End Date',
+    'approvalvu470962-7': 'Search',
+    'approvalvu470962-8': 'Reset',
+    'approvalvu470962-9': 'View',
+    'approvalvu470962-10': 'Approval',
+    'dailystati330418-0': 'No data',
+    'dailystati330418-1': 'Table',
+    'dailystati330418-2': 'Dashboard',
+    'dailystati330418-3': 'Export',
+    'equipmentf857373-0': '<g id="2610">Captions</g>.',
+    'equipmentf857373-1': 'Please enter title',
+    'equipmentf857373-2': 'Report time',
+    'equipmentf857373-3': 'Please select report time',
+    'equipmentf857373-4': 'Workplace',
+    'equipmentf857373-5': 'Please enter a work location',
+    'equipmentf857373-6': 'Purpose of construction',
+    'equipmentf857373-7': 'Please enter construction purpose',
+    'equipmentf857373-8': 'Days of safe work',
+    'equipmentf857373-9': 'Please enter safe operation days',
+    'equipmentf857373-10': 'day',
+    'equipmentf857373-11': 'Situation of Personnel',
+    'equipmentf857373-12': 'Please enter the status of the person',
+    'equipmentf857373-13': 'Construction Dynamics Details',
+    'equipmentf857373-14': 'Add Detail',
+    'equipmentf857373-15': 'Item',
+    'equipmentf857373-16': 'Please enter project name',
+    'equipmentf857373-17': 'Construction Updates',
+    'equipmentf857373-18': 'Please enter construction dynamics',
+    'equipmentf857373-19': 'Next steps',
+    'equipmentf857373-20': 'Please enter the next step plan',
+    'equipmentf857373-21': 'Actions',
+    'equipmentf857373-22': 'Delete',
+    'equipmentf857373-23': 'Approval comments',
+    'equipmentf857373-24':
+      "formMode === 'approval' ? 'Please enter approval comment' : 'No approval comment'",
+    'equipmentf857373-25': 'Confirm',
+    'equipmentf857373-26': 'Approved',
+    'equipmentf857373-27': 'Approval failed',
+    'equipmentf857373-28': 'Cancel',
+    'nonproduct444293-0': 'Table',
+    'nonproduct444293-1': 'Dashboard',
+    'nonproduct444293-2': 'Department',
+    'nonproduct444293-3': 'npt total',
+    'nonproduct444293-4': 'Duration (H)',
+    'nonproduct444293-5': 'Percentage',
+    'nonproduct444293-6': 'Natural time (H)',
+    'xjdailysta823840-0': 'No data',
+    'xjdailysta823840-1': 'Table',
+    'xjdailysta823840-2': 'Dashboard',
+    'xjdailysta823840-3': 'Export',
+    'xjnonprodu188275-0': 'Table',
+    'xjnonprodu188275-1': 'Dashboard',
+    'xjnonprodu188275-2': 'Department',
+    'xjnonprodu188275-3': 'npt total',
+    'xjnonprodu188275-4': 'Duration (H)',
+    'xjnonprodu188275-5': 'Percentage',
+    'xjnonprodu188275-6': 'Natural time (H)',
+    'equipmentv389039-0': 'Report time',
+    'equipmentv389039-1': 'Start Date',
+    'equipmentv389039-2': 'End Date',
+    'equipmentv389039-3': 'Search',
+    'equipmentv389039-4': 'Reset',
+    'equipmentv389039-5': 'No.',
+    'equipmentv389039-6': '<g id="2610">Captions</g>.',
+    'equipmentv389039-7': 'Construction Team',
+    'equipmentv389039-8': 'Workplace',
+    'equipmentv389039-9': 'Purpose of construction',
+    'equipmentv389039-10': 'Days of safe work',
+    'equipmentv389039-11': 'Construction Updates',
+    'equipmentv389039-12': 'Next steps',
+    'equipmentv389039-13': 'Situation of Personnel',
+    'equipmentv389039-14': 'Approval Status',
+    'equipmentv389039-15': 'Actions',
+    'equipmentv389039-16': 'View',
+    'equipmentv389039-17': 'Edit',
+    'equipmentv389039-18': 'Edit',
+    'equipmentv389039-19': 'Approval',
+    'fillvue066610-0': 'Project',
+    'fillvue066610-1': 'Please enter project',
+    'fillvue066610-2': 'Task',
+    'fillvue066610-3': 'Please enter task',
+    'fillvue066610-4': 'Created Time',
+    'fillvue066610-5': 'Start Date',
+    'fillvue066610-6': 'End Date',
+    'fillvue066610-7': 'Search',
+    'fillvue066610-8': 'Reset',
+    'fillvue066610-9': 'View',
+    'fillvue066610-10': 'Edit',
+    'indexvue974707-0': 'Project',
+    'indexvue974707-1': 'Please enter project',
+    'indexvue974707-2': 'Task',
+    'indexvue974707-3': 'Please enter task',
+    'indexvue974707-4': 'Created Time',
+    'indexvue974707-5': 'Start Date',
+    'indexvue974707-6': 'End Date',
+    'indexvue974707-7': 'Non-Production Time',
+    'indexvue974707-8': 'Search',
+    'indexvue974707-9': 'Reset',
+    'indexvue974707-10': 'Export',
+    'indexvue974707-11': 'Edit',
+    'indexvue974707-12': 'Delete',
+    'indexvue974707-13': 'Alarms',
+    'indexvue974707-14':
+      'Daily fuel consumption > 9000 L&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;red alert',
+    'indexvue974707-15':
+      'Drilling work time + other production time + non-production time = 24H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;otherwise orange alert',
+    'iotrydaily858987-0': 'Construction Team',
+    'iotrydaily858987-1': 'Project',
+    'iotrydaily858987-2': 'Task',
+    'iotrydaily858987-3': 'Please select',
+    'iotrydaily858987-4': 'Last well completion time',
+    'iotrydaily858987-5': 'Design well depth (m)',
+    'iotrydaily858987-6': 'Current well depth (m)',
+    'iotrydaily858987-7': 'Please enter the current well depth (m)',
+    'iotrydaily858987-8': 'Daily Drilling Footage (m)',
+    'iotrydaily858987-9': 'Monthly Drilling Footage (m)',
+    'iotrydaily858987-10': 'Year Cumulative Drilling Footage (m)',
+    'iotrydaily858987-11': 'Electricity consumption for the day (kWh)',
+    'iotrydaily858987-12': 'Please enter the daily electricity consumption (kWh)',
+    'iotrydaily858987-13': 'Fuel consumption for the day (litres)',
+    'iotrydaily858987-14': 'Please enter the fuel consumption for the day (liters)',
+    'iotrydaily858987-15': 'Total number of wells constructed',
+    'iotrydaily858987-16': 'Number of wells completed',
+    'iotrydaily858987-17': 'Mud Density (g/cm ³)',
+    'iotrydaily858987-18': 'Please enter Mud Properties - Density (g/cm ³)',
+    'iotrydaily858987-19': 'Mud viscosity (S)',
+    'iotrydaily858987-20': 'Please enter slurry properties - viscosity (S)',
+    'iotrydaily858987-21': 'Horizontal segment length (m)',
+    'iotrydaily858987-22': 'Please enter the length of the horizontal segment (m)',
+    'iotrydaily858987-23': 'Well Diagonal (°)',
+    'iotrydaily858987-24': 'Please enter the well diagonal (°)',
+    'iotrydaily858987-25': 'Aspect',
+    'iotrydaily858987-26': 'Please enter the azimuth (°)',
+    'iotrydaily858987-27': 'Design wellbore structure',
+    'iotrydaily858987-28': 'Production Dynamics',
+    'iotrydaily858987-29': 'Please enter production activity',
+    'iotrydaily858987-30': 'Situation of Personnel',
+    'iotrydaily858987-31': 'Please enter the status of the person',
+    'iotrydaily858987-32': 'Remarks',
+    'iotrydaily858987-33': 'Please enter remarks',
+    'iotrydaily858987-34': 'Confirm',
+    'iotrydaily858987-35': 'Cancel',
+    'iotryxjdai436185-0': 'Construction Team',
+    'iotryxjdai436185-1': 'Project',
+    'iotryxjdai436185-2': 'Task',
+    'iotryxjdai436185-3': 'Please select',
+    'iotryxjdai436185-4': 'Well Category',
+    'iotryxjdai436185-5': 'Design well depth (m)',
+    'iotryxjdai436185-6': 'Well control level',
+    'iotryxjdai436185-7': 'Production pipe size of nested section (mm)',
+    'iotryxjdai436185-8': 'Total number of wells constructed',
+    'iotryxjdai436185-9': 'Number of wells completed',
+    'iotryxjdai436185-10': 'Please enter the current operation',
+    'iotryxjdai436185-11': 'Please enter the next step',
+    'iotryxjdai436185-12': 'Production time (H)',
+    'iotryxjdai436185-13': 'Please enter production time (H)',
+    'iotryxjdai436185-14': 'Production Dynamics',
+    'iotryxjdai436185-15': 'Please enter production activity',
+    'iotryxjdai436185-16': 'Total number of employees',
+    'iotryxjdai436185-17': 'Please enter the total number of employees',
+    'iotryxjdai436185-18': 'Number of people on duty',
+    'iotryxjdai436185-19': 'Number of vacationers',
+    'iotryxjdai436185-20': 'Please enter the number of vacationers',
+    'iotryxjdai436185-21': 'Remarks',
+    'iotryxjdai436185-22': 'Please enter remarks',
+    'iotryxjdai436185-23': 'Confirm',
+    'iotryxjdai436185-24': 'Cancel',
+    'ryformvue846251-0': 'Fuel consumption:',
+    'ryformvue846251-1': 'Fuel consumption for the day',
+    'ryformvue846251-2': 'Time Balance:',
+    'ryformvue846251-3': 'Review Opinion',
+    'ryformvue846251-4': 'Basic Information',
+    'ryformvue846251-5': 'Construction Team',
+    'ryformvue846251-6': 'Project',
+    'ryformvue846251-7': 'Task well',
+    'ryformvue846251-8': 'Please select a task well',
+    'ryformvue846251-9': 'Construction Area',
+    'ryformvue846251-10': 'Construction Status',
+    'ryformvue846251-11': 'Please select the construction status',
+    'ryformvue846251-12': 'Design well depth (m)',
+    'ryformvue846251-13': 'Current well depth (m)',
+    'ryformvue846251-14': 'Please enter the current well depth (m)',
+    'ryformvue846251-15': 'Electricity consumption for the day (kWh)',
+    'ryformvue846251-16': 'Please enter the daily electricity consumption (kWh)',
+    'ryformvue846251-17': 'Fuel consumption for the day (litres)',
+    'ryformvue846251-18': 'Please enter the fuel consumption for the day (liters)',
+    'ryformvue846251-19': 'Mud Density (g/cm ³)',
+    'ryformvue846251-20': 'Please enter Mud Properties - Density (g/cm ³)',
+    'ryformvue846251-21': 'Mud viscosity (S)',
+    'ryformvue846251-22': 'Please enter slurry properties - viscosity (S)',
+    'ryformvue846251-23': 'Horizontal segment length (m)',
+    'ryformvue846251-24': 'Please enter the length of the horizontal segment (m)',
+    'ryformvue846251-25': 'Well Diagonal (°)',
+    'ryformvue846251-26': 'Please enter the well diagonal (°)',
+    'ryformvue846251-27': 'Aspect',
+    'ryformvue846251-28': 'Please enter the azimuth (°)',
+    'ryformvue846251-29': 'Design wellbore structure',
+    'ryformvue846251-30': 'Situation of Personnel',
+    'ryformvue846251-31': 'Please enter the status of the person',
+    'ryformvue846251-32': 'Remarks',
+    'ryformvue846251-33': 'Production Dynamics',
+    'ryformvue846251-34': 'Add a Line',
+    'ryformvue846251-35': 'Date',
+    'ryformvue846251-36': 'Select date',
+    'ryformvue846251-37': 'Start Time',
+    'ryformvue846251-38': 'Select start time',
+    'ryformvue846251-39': 'End Time',
+    'ryformvue846251-40': 'Choose the end time',
+    'ryformvue846251-41': 'Duration (H)',
+    'ryformvue846251-42': 'Working conditions',
+    'ryformvue846251-43': 'Please enter a working condition',
+    'ryformvue846251-44': 'End well depth (m)',
+    'ryformvue846251-45': 'Please enter the ending well depth',
+    'ryformvue846251-46': 'Elaboration',
+    'ryformvue846251-47': 'Please enter a detailed description',
+    'ryformvue846251-48': 'Actions',
+    'ryformvue846251-49': 'Delete',
+    'ryformvue846251-50': 'Construction briefing of the day',
+    'ryformvue846251-51': 'Please enter the construction brief of the day',
+    'ryformvue846251-52': 'Next steps',
+    'ryformvue846251-53': 'Please enter the next step plan',
+    'ryformvue846251-54': 'Fault Condition',
+    'ryformvue846251-55': 'Please enter a fault condition',
+    'ryformvue846251-56': 'Production vs. non-production time',
+    'ryformvue846251-57': 'Infeed working time (H)',
+    'ryformvue846251-58': 'Footage + Other + Non-production = 24H',
+    'ryformvue846251-59': 'Other production time (H)',
+    'ryformvue846251-60': 'Please enter other production time (H)',
+    'ryformvue846251-61': 'Other non-production reasons',
+    'ryformvue846251-62': 'Please enter another non-production reason',
+    'ryformvue846251-63': 'Approval comments',
+    'ryformvue846251-64': 'Please enter approval comments',
+    'ryformvue846251-65': 'Confirm',
+    'ryformvue846251-66': 'Cancel',
+    'ryformvue846251-67': 'Approved',
+    'ryformvue846251-68': 'Approval Rejection',
+    'rysummaryv399759-0': 'Project',
+    'rysummaryv399759-1': 'Please enter project',
+    'rysummaryv399759-2': 'Task',
+    'rysummaryv399759-3': 'Please enter task',
+    'rysummaryv399759-4': 'Created Time',
+    'rysummaryv399759-5': 'Start Date',
+    'rysummaryv399759-6': 'End Date',
+    'rysummaryv399759-7': 'Search',
+    'rysummaryv399759-8': 'Reset',
+    'rysummaryv399759-9': 'Daily Statistics',
+    'rysummaryv399759-10': 'Non-Production Time',
+    'rytablevue488823-0': 'Date',
+    'rytablevue488823-1': 'Construction Team',
+    'rytablevue488823-2': 'Task',
+    'rytablevue488823-3': 'Approval Status',
+    'rytablevue488823-4': 'Depth of well (m)',
+    'rytablevue488823-5': 'Design',
+    'rytablevue488823-6': 'Current',
+    'rytablevue488823-7': 'Drilling Footage (m)',
+    'rytablevue488823-8': 'Harian',
+    'rytablevue488823-9': 'Month',
+    'rytablevue488823-10': '&Year',
+    'rytablevue488823-11': 'Production Dynamics',
+    'rytablevue488823-12': 'Working conditions',
+    'rytablevue488823-13': 'Description:',
+    'rytablevue488823-14': 'Construction briefing of the day',
+    'rytablevue488823-15': 'Next steps',
+    'rytablevue488823-16': 'Infeed working time (H)',
+    'rytablevue488823-17': 'Other production time (H)',
+    'rytablevue488823-18': 'Non-Production Time',
+    'rytablevue488823-19': 'Device Model',
+    'rytablevue488823-20': 'Last well completion time',
+    'rytablevue488823-21': 'Construction Area',
+    'rytablevue488823-22': 'Total number of wells constructed',
+    'rytablevue488823-23': 'Number of wells completed',
+    'rytablevue488823-24': 'Mud Properties',
+    'rytablevue488823-25': 'Density (g/cm³)',
+    'rytablevue488823-26': 'Viscosity (S)',
+    'rytablevue488823-27': 'Current day',
+    'rytablevue488823-28': 'Electricity consumption (KWh)',
+    'rytablevue488823-29': 'Fuel consumption (litres)',
+    'rytablevue488823-30': 'Horizontal segment length (m)',
+    'rytablevue488823-31': 'Well Diagonal (°)',
+    'rytablevue488823-32': 'Aspect',
+    'rytablevue488823-33': 'Design wellbore structure',
+    'rytablevue488823-34': 'Project',
+    'rytablevue488823-35': 'Non-Production Time',
+    'rytablevue488823-36': 'Quality of the project design and implementation',
+    'rytablevue488823-37': 'Device Malfunction',
+    'rytablevue488823-38': 'Equipment maintenance',
+    'rytablevue488823-39': 'Technology limitations',
+    'rytablevue488823-40': 'Production cooperation',
+    'rytablevue488823-41': '<g x=1 id="37074"/><g x=2 id="37077">Manufacturer</g>',
+    'rytablevue488823-42': '<g id="5927">FORCE MAJEURE</g>.',
+    'rytablevue488823-43': 'Stand by',
+    'rytablevue488823-44': 'Designed by Party A',
+    'rytablevue488823-45': 'Party A prepares',
+    'rytablevue488823-46': "Party A's Resources",
+    'rytablevue488823-47': 'Other non-production time',
+    'rytablevue488823-48': 'Other non-production time reasons',
+    'rytablevue488823-49': 'Actions',
+    'ryxjformvu491688-0': 'Runtime:',
+    'ryxjformvu491688-1': 'Time Balance:',
+    'ryxjformvu491688-2': 'Fuel consumption:',
+    'ryxjformvu491688-3': 'Fuel consumption for the day',
+    'ryxjformvu491688-4': 'Review Opinion',
+    'ryxjformvu491688-5': 'Basic Information',
+    'ryxjformvu491688-6': 'Construction Team',
+    'ryxjformvu491688-7': 'Project',
+    'ryxjformvu491688-8': 'Task well',
+    'ryxjformvu491688-9': 'Please select a task well',
+    'ryxjformvu491688-10': 'Construction Area',
+    'ryxjformvu491688-11': 'Please select',
+    'ryxjformvu491688-12': 'Well Category',
+    'ryxjformvu491688-13': 'Design well depth (m)',
+    'ryxjformvu491688-14': 'Well control level',
+    'ryxjformvu491688-15': 'Production pipe size of nested section (mm)',
+    'ryxjformvu491688-16': 'Fuel consumption for the day (litres)',
+    'ryxjformvu491688-17': 'Please enter the fuel consumption for the day (liters)',
+    'ryxjformvu491688-18': 'Please enter the current operation',
+    'ryxjformvu491688-19': 'Please enter the next step',
+    'ryxjformvu491688-20': 'Running Time Limit',
+    'ryxjformvu491688-21': 'Total number of employees',
+    'ryxjformvu491688-22': 'Please enter the total number of employees',
+    'ryxjformvu491688-23': 'Number of people on duty',
+    'ryxjformvu491688-24': 'Number of vacationers',
+    'ryxjformvu491688-25': 'Please enter the number of vacationers',
+    'ryxjformvu491688-26': 'Day-shift Follow-up Cadre',
+    'ryxjformvu491688-27': 'Please enter day-shift follow-up cadre',
+    'ryxjformvu491688-28': 'Remarks',
+    'ryxjformvu491688-29': 'Night-shift Follow-up Cadre',
+    'ryxjformvu491688-30': 'Please enter night-shift follow-up cadre',
+    'ryxjformvu491688-31': 'Production Dynamics',
+    'ryxjformvu491688-32': 'Add a Line',
+    'ryxjformvu491688-33': 'Date',
+    'ryxjformvu491688-34': 'Select date',
+    'ryxjformvu491688-35': 'Start Time',
+    'ryxjformvu491688-36': 'Select start time',
+    'ryxjformvu491688-37': 'End Time',
+    'ryxjformvu491688-38': 'Choose the end time',
+    'ryxjformvu491688-39': 'Duration (H)',
+    'ryxjformvu491688-40': 'Working conditions',
+    'ryxjformvu491688-41': 'Please enter a working condition',
+    'ryxjformvu491688-42': 'Elaboration',
+    'ryxjformvu491688-43': 'Please enter a detailed description',
+    'ryxjformvu491688-44': 'Quota Duration',
+    'ryxjformvu491688-45': 'Please enter quota duration',
+    'ryxjformvu491688-46': 'Quota Time Efficiency',
+    'ryxjformvu491688-47': 'Actions',
+    'ryxjformvu491688-48': 'Delete',
+    'ryxjformvu491688-49': 'Construction briefing of the day',
+    'ryxjformvu491688-50': 'Please enter the construction brief of the day',
+    'ryxjformvu491688-51': 'Fault Condition',
+    'ryxjformvu491688-52': 'Please enter a fault condition',
+    'ryxjformvu491688-53': 'Production vs. non-production time',
+    'ryxjformvu491688-54': 'Rated production time (H)',
+    'ryxjformvu491688-55': 'Please enter rated production time (H)',
+    'ryxjformvu491688-56': 'Production time (H)',
+    'ryxjformvu491688-57': 'Please enter production time (H)',
+    'ryxjformvu491688-58': 'Other non-production reasons',
+    'ryxjformvu491688-59': 'Please enter another non-production reason',
+    'ryxjformvu491688-60': 'Approval comments',
+    'ryxjformvu491688-61': 'Please enter approval comments',
+    'ryxjformvu491688-62': 'Confirm',
+    'ryxjformvu491688-63': 'Cancel',
+    'ryxjformvu491688-64': 'Approved',
+    'ryxjformvu491688-65': 'Approval Rejection',
+    'ryxjsummar550770-0': 'Project',
+    'ryxjsummar550770-1': 'Please enter project',
+    'ryxjsummar550770-2': 'Task',
+    'ryxjsummar550770-3': 'Please enter task',
+    'ryxjsummar550770-4': 'Created Time',
+    'ryxjsummar550770-5': 'Start Date',
+    'ryxjsummar550770-6': 'End Date',
+    'ryxjsummar550770-7': 'Search',
+    'ryxjsummar550770-8': 'Reset',
+    'ryxjsummar550770-9': 'Daily Statistics',
+    'ryxjsummar550770-10': 'Non-Production Time',
+    'ryxjtablev595482-0': 'Date',
+    'ryxjtablev595482-1': 'Construction Team',
+    'ryxjtablev595482-2': 'Task',
+    'ryxjtablev595482-3': 'Approval Status',
+    'ryxjtablev595482-4': 'Production Dynamics',
+    'ryxjtablev595482-5': 'Working conditions',
+    'ryxjtablev595482-6': 'Description:',
+    'ryxjtablev595482-7': 'Construction briefing of the day',
+    'ryxjtablev595482-8': 'Rated production time (H)',
+    'ryxjtablev595482-9': 'Production time (H)',
+    'ryxjtablev595482-10': 'Non-Production Time',
+    'ryxjtablev595482-11': 'Non-Production Time',
+    'ryxjtablev595482-12': 'Quality of the project design and implementation',
+    'ryxjtablev595482-13': 'Device Malfunction',
+    'ryxjtablev595482-14': 'Equipment maintenance',
+    'ryxjtablev595482-15': 'Technology limitations',
+    'ryxjtablev595482-16': 'Production cooperation',
+    'ryxjtablev595482-17': '<g x=1 id="37074"/><g x=2 id="37077">Manufacturer</g>',
+    'ryxjtablev595482-18': '<g id="5927">FORCE MAJEURE</g>.',
+    'ryxjtablev595482-19': 'Stand by',
+    'ryxjtablev595482-20': 'Designed by Party A',
+    'ryxjtablev595482-21': 'Party A prepares',
+    'ryxjtablev595482-22': "Party A's Resources",
+    'ryxjtablev595482-23': 'Other non-production time',
+    'ryxjtablev595482-24': 'Other non-production time reasons',
+    'ryxjtablev595482-25': 'Construction Area',
+    'ryxjtablev595482-26': 'Total number of wells constructed',
+    'ryxjtablev595482-27': 'Number of wells completed',
+    'ryxjtablev595482-28': 'Well Category',
+    'ryxjtablev595482-29': 'Depth of well (m)',
+    'ryxjtablev595482-30': 'Production pipe size of nested section (mm)',
+    'ryxjtablev595482-31': 'Well control level',
+    'ryxjtablev595482-32': 'Current day',
+    'ryxjtablev595482-33': 'Electricity consumption (KWh)',
+    'ryxjtablev595482-34': 'Fuel consumption (litres)',
+    'ryxjtablev595482-35': 'Project',
+    'ryxjtablev595482-36': 'Follow-up Cadre',
+    'ryxjtablev595482-37': 'Day Shift',
+    'ryxjtablev595482-38': 'Night Shift',
+    'ryxjtablev595482-39': 'Total number of employees',
+    'ryxjtablev595482-40': 'Number of people on duty',
+    'ryxjtablev595482-41': 'Number of vacationers',
+    'ryxjtablev595482-42': 'Actions',
+    'summaryvue683335-0': 'Project',
+    'summaryvue683335-1': 'Please enter project',
+    'summaryvue683335-2': 'Task',
+    'summaryvue683335-3': 'Please enter task',
+    'summaryvue683335-4': 'Created Time',
+    'summaryvue683335-5': 'Start Date',
+    'summaryvue683335-6': 'End Date',
+    'summaryvue683335-7': 'Search',
+    'summaryvue683335-8': 'Reset',
+    'summaryvue683335-9': 'Export',
+    'summaryvue683335-10': 'Daily Statistics',
+    'summaryvue683335-11': 'Non-Production Time',
+    'unfilledre070214-0': 'Missing details',
+    'unfilledre070214-1': 'Created Time',
+    'unfilledre070214-2': 'Start Date',
+    'unfilledre070214-3': 'End Date',
+    'unfilledre070214-4': 'Search',
+    'unfilledre070214-5': 'Reset',
+    'unfilledre070214-6': 'Date',
+    'unfilledre070214-7': 'Department Name',
+    'xapprovalv375964-0': 'Project',
+    'xapprovalv375964-1': 'Please enter project',
+    'xapprovalv375964-2': 'Task',
+    'xapprovalv375964-3': 'Please enter task',
+    'xapprovalv375964-4': 'Created Time',
+    'xapprovalv375964-5': 'Start Date',
+    'xapprovalv375964-6': 'End Date',
+    'xapprovalv375964-7': 'Search',
+    'xapprovalv375964-8': 'Reset',
+    'xapprovalv375964-9': 'View',
+    'xapprovalv375964-10': 'Approval',
+    'xfillvue253660-0': 'Project',
+    'xfillvue253660-1': 'Please enter project',
+    'xfillvue253660-2': 'Task',
+    'xfillvue253660-3': 'Please enter task',
+    'xfillvue253660-4': 'Created Time',
+    'xfillvue253660-5': 'Start Date',
+    'xfillvue253660-6': 'End Date',
+    'xfillvue253660-7': 'Search',
+    'xfillvue253660-8': 'Reset',
+    'xfillvue253660-9': 'Add',
+    'xfillvue253660-10': 'View',
+    'xfillvue253660-11': 'Edit',
+    'xjindexvue644545-0': 'Project',
+    'xjindexvue644545-1': 'Please enter project',
+    'xjindexvue644545-2': 'Task',
+    'xjindexvue644545-3': 'Please enter task',
+    'xjindexvue644545-4': 'Created Time',
+    'xjindexvue644545-5': 'Start Date',
+    'xjindexvue644545-6': 'End Date',
+    'xjindexvue644545-7': 'Non-Production Time',
+    'xjindexvue644545-8': 'Search',
+    'xjindexvue644545-9': 'Reset',
+    'xjindexvue644545-10': 'Export',
+    'xjindexvue644545-11': 'Edit',
+    'xjindexvue644545-12': 'Delete',
+    'xjindexvue644545-13': 'Alarms',
+    'xjindexvue644545-14':
+      'Run time-efficiency = production time / rated production time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;>100% red alert',
+    'xjindexvue644545-15':
+      'Production time + non-production time = rated production time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;otherwise orange alert',
+    'xjindexvue644545-16':
+      'Daily fuel consumption > 3500 L&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blue alert',
+    'xsummaryvu596765-0': 'Project',
+    'xsummaryvu596765-1': 'Please enter project',
+    'xsummaryvu596765-2': 'Task',
+    'xsummaryvu596765-3': 'Please enter task',
+    'xsummaryvu596765-4': 'Created Time',
+    'xsummaryvu596765-5': 'Start Date',
+    'xsummaryvu596765-6': 'End Date',
+    'xsummaryvu596765-7': 'Search',
+    'xsummaryvu596765-8': 'Reset',
+    'xsummaryvu596765-9': 'Export',
+    'xsummaryvu596765-10': 'Daily Statistics',
+    'xsummaryvu596765-11': 'Non-Production Time'
+  },
+  iotsappickinglist: {
+    'indexvue198342-0': 'Org Unit ID',
+    'indexvue198342-1': 'Please enter the Org Unit ID',
+    'indexvue198342-2': 'SAP Factory ID',
+    'indexvue198342-3': 'Please enter SAP factory id',
+    'indexvue198342-4': 'Factory (SAP)',
+    'indexvue198342-5': 'Please enter Plant (SAP)',
+    'indexvue198342-6': 'Cost Center ID',
+    'indexvue198342-7': 'Please enter cost center id',
+    'indexvue198342-8': 'Cost Center (SAP)',
+    'indexvue198342-9': 'Please enter Cost Center (SAP)',
+    'indexvue198342-10': 'Inventory location id',
+    'indexvue198342-11': 'Please enter stock location id',
+    'indexvue198342-12': 'Inventory Location',
+    'indexvue198342-13': 'Please enter stock location',
+    'indexvue198342-14': 'Picking list number',
+    'indexvue198342-15': 'Please enter the picking list number',
+    'indexvue198342-16': 'Material Code',
+    'indexvue198342-17': 'Please enter material code',
+    'indexvue198342-18': 'Material Name',
+    'indexvue198342-19': 'Please enter material name',
+    'indexvue198342-20': 'REF family',
+    'indexvue198342-21': 'Please enter item group',
+    'indexvue198342-22': 'Material group id',
+    'indexvue198342-23': 'Please enter item group id',
+    'indexvue198342-24': 'Quantity',
+    'indexvue198342-25': 'Please enter quantity',
+    'indexvue198342-26': 'Unit Price',
+    'indexvue198342-27': 'Please enter unit price',
+    'indexvue198342-28': 'Unit',
+    'indexvue198342-29': 'Please enter unit',
+    'indexvue198342-30':
+      'Synchronization status 0 Not synchronized 1 Synchronization succeeded 2 Synchronization failed',
+    'indexvue198342-31': 'Please select sync status: 0=Unsynced, 1=Sync success, 2=Sync failed',
+    'indexvue198342-32': 'Please select dictionary to generate',
+    'indexvue198342-33': 'Last sync time',
+    'indexvue198342-34': 'Start Date',
+    'indexvue198342-35': 'End Date',
+    'indexvue198342-36': 'Error Message on Synchronization Failure',
+    'indexvue198342-37': 'Please enter the error message when synchronization fails',
+    'indexvue198342-38': 'Sort',
+    'indexvue198342-39': 'Please enter sort order',
+    'indexvue198342-40': 'Status: 0=Enabled, 1=Disabled',
+    'indexvue198342-41': 'Please select status: 0=Enabled, 1=Disabled',
+    'indexvue198342-42': 'Remarks',
+    'indexvue198342-43': 'Please enter remarks',
+    'indexvue198342-44': 'Created Time',
+    'indexvue198342-45': 'Search',
+    'indexvue198342-46': 'Reset',
+    'indexvue198342-47': 'Add',
+    'indexvue198342-48': 'Export',
+    'indexvue198342-49': 'Primary Key',
+    'indexvue198342-50': 'Actions',
+    'indexvue198342-51': 'Edit',
+    'indexvue198342-52': 'Delete',
+    'iotsappick367171-0': 'Org Unit ID',
+    'iotsappick367171-1': 'Please enter the Org Unit ID',
+    'iotsappick367171-2': 'SAP Factory ID',
+    'iotsappick367171-3': 'Please enter SAP factory id',
+    'iotsappick367171-4': 'Factory (SAP)',
+    'iotsappick367171-5': 'Please enter Plant (SAP)',
+    'iotsappick367171-6': 'Cost Center ID',
+    'iotsappick367171-7': 'Please enter cost center id',
+    'iotsappick367171-8': 'Cost Center (SAP)',
+    'iotsappick367171-9': 'Please enter Cost Center (SAP)',
+    'iotsappick367171-10': 'Inventory location id',
+    'iotsappick367171-11': 'Please enter stock location id',
+    'iotsappick367171-12': 'Inventory Location',
+    'iotsappick367171-13': 'Please enter stock location',
+    'iotsappick367171-14': 'Picking list number',
+    'iotsappick367171-15': 'Please enter the picking list number',
+    'iotsappick367171-16': 'Material Code',
+    'iotsappick367171-17': 'Please enter material code',
+    'iotsappick367171-18': 'Material Name',
+    'iotsappick367171-19': 'Please enter material name',
+    'iotsappick367171-20': 'REF family',
+    'iotsappick367171-21': 'Please enter item group',
+    'iotsappick367171-22': 'Material group id',
+    'iotsappick367171-23': 'Please enter item group id',
+    'iotsappick367171-24': 'Quantity',
+    'iotsappick367171-25': 'Please enter quantity',
+    'iotsappick367171-26': 'Unit Price',
+    'iotsappick367171-27': 'Please enter unit price',
+    'iotsappick367171-28': 'Unit',
+    'iotsappick367171-29': 'Please enter unit',
+    'iotsappick367171-30':
+      'Synchronization status 0 Not synchronized 1 Synchronization succeeded 2 Synchronization failed',
+    'iotsappick367171-31': 'Please select dictionary to generate',
+    'iotsappick367171-32': 'Last sync time',
+    'iotsappick367171-33': 'Select Last Sync Time',
+    'iotsappick367171-34': 'Error Message on Synchronization Failure',
+    'iotsappick367171-35': 'Please enter the error message when synchronization fails',
+    'iotsappick367171-36': 'Sort',
+    'iotsappick367171-37': 'Please enter sort order',
+    'iotsappick367171-38': 'Status: 0=Enabled, 1=Disabled',
+    'iotsappick367171-39': 'Remarks',
+    'iotsappick367171-40': 'Please enter remarks',
+    'iotsappick367171-41': 'Confirm',
+    'iotsappick367171-42': 'Cancel'
+  },
+  iotsapstock: {
+    'indexvue994589-0': 'Export',
+    'indexvue994589-1': 'Total Inventory Amount',
+    'indexvue994589-2': 'Accounted independently by currency',
+    'indexvue994589-3': 'No amount summary data',
+    'indexvue994589-4': 'Currency Type',
+    'iotsapstoc562063-0': 'Export'
+  },
+  iotshelves: {
+    'indexvue542709-0': 'Inventory Location',
+    'indexvue542709-1': 'Please select',
+    'indexvue542709-2': 'Warehouse area',
+    'indexvue542709-3': 'Shelf Name',
+    'indexvue542709-4': 'Please enter a shelf name',
+    'indexvue542709-5': 'Search',
+    'indexvue542709-6': 'Reset',
+    'indexvue542709-7': 'Add',
+    'indexvue542709-8': 'Export',
+    'indexvue542709-9': 'Shelf Code',
+    'indexvue542709-10': 'Created Time',
+    'indexvue542709-11': 'Actions',
+    'indexvue542709-12': 'Edit',
+    'indexvue542709-13': 'Delete',
+    'iotshelves676139-0': 'Inventory Location',
+    'iotshelves676139-1': 'Please select',
+    'iotshelves676139-2': 'Warehouse area',
+    'iotshelves676139-3': 'Shelf Code',
+    'iotshelves676139-4': 'Please enter shelf code',
+    'iotshelves676139-5': 'Shelf Name',
+    'iotshelves676139-6': 'Please enter a shelf name',
+    'iotshelves676139-7': 'Display Sequence',
+    'iotshelves676139-8': 'Remarks',
+    'iotshelves676139-9': 'Please enter remarks',
+    'iotshelves676139-10': 'Confirm',
+    'iotshelves676139-11': 'Cancel'
+  },
+  iotstoragearea: {
+    'indexvue912469-0': 'Warehouse area name',
+    'indexvue912469-1': 'Please enter the name of the warehouse area',
+    'indexvue912469-2': 'Search',
+    'indexvue912469-3': 'Reset',
+    'indexvue912469-4': 'Add',
+    'indexvue912469-5': 'Export',
+    'indexvue912469-6': 'Inventory Location',
+    'indexvue912469-7': 'Warehouse Code',
+    'indexvue912469-8': 'Created Time',
+    'indexvue912469-9': 'Actions',
+    'indexvue912469-10': 'Edit',
+    'indexvue912469-11': 'Delete',
+    'iotstorage927115-0': 'Inventory Location',
+    'iotstorage927115-1': 'Please select',
+    'iotstorage927115-2': 'Warehouse Code',
+    'iotstorage927115-3': 'Please enter storage zone code',
+    'iotstorage927115-4': 'Warehouse area name',
+    'iotstorage927115-5': 'Please enter the name of the warehouse area',
+    'iotstorage927115-6': 'Display Order',
+    'iotstorage927115-7': 'Remarks',
+    'iotstorage927115-8': 'Please enter remarks',
+    'iotstorage927115-9': 'Confirm',
+    'iotstorage927115-10': 'Cancel'
+  },
+  maintenance: {
+    'indexvue660129-0': 'Maintenance Plan ID',
+    'indexvue660129-1': 'Please enter maintenance plan ID',
+    'indexvue660129-2': 'Device ID',
+    'indexvue660129-3': 'Please enter device ID',
+    'indexvue660129-4': 'Equipment asset number',
+    'indexvue660129-5': 'Please enter the equipment asset number',
+    'indexvue660129-6': 'Device Name',
+    'indexvue660129-7': 'Please enter device name',
+    'indexvue660129-8': 'Device Category',
+    'indexvue660129-9': 'Please enter a device category',
+    'indexvue660129-10': 'Device Brand',
+    'indexvue660129-11': 'Please enter device brand',
+    'indexvue660129-12': 'Current kilometers in operation (km)',
+    'indexvue660129-13': 'Please enter the number of kilometers you are currently running (km)',
+    'indexvue660129-14': 'Current Uptime (Hours)',
+    'indexvue660129-15': 'Start Date',
+    'indexvue660129-16': 'End Date',
+    'indexvue660129-17': 'Natural Date (Days)',
+    'indexvue660129-18': 'Remarks',
+    'indexvue660129-19': 'Please enter remarks',
+    'indexvue660129-20': 'Sort',
+    'indexvue660129-21': 'Please enter sort order',
+    'indexvue660129-22': 'Status: 0=Enabled, 1=Disabled',
+    'indexvue660129-23': 'Please select status: 0=Enabled, 1=Disabled',
+    'indexvue660129-24': 'Please select dictionary to generate',
+    'indexvue660129-25': 'Created Time',
+    'indexvue660129-26': 'Search',
+    'indexvue660129-27': 'Reset',
+    'indexvue660129-28': 'Add',
+    'indexvue660129-29': 'Export',
+    'indexvue660129-30': 'Primary Key ID',
+    'indexvue660129-31': 'Actions',
+    'indexvue660129-32': 'Edit',
+    'indexvue660129-33': 'Delete',
+    'iotmainten437424-0': 'Maintenance Plan ID',
+    'iotmainten437424-1': 'Please enter maintenance plan ID',
+    'iotmainten437424-2': 'Device ID',
+    'iotmainten437424-3': 'Please enter device ID',
+    'iotmainten437424-4': 'Equipment asset number',
+    'iotmainten437424-5': 'Please enter the equipment asset number',
+    'iotmainten437424-6': 'Device Name',
+    'iotmainten437424-7': 'Please enter device name',
+    'iotmainten437424-8': 'Device Category',
+    'iotmainten437424-9': 'Please enter a device category',
+    'iotmainten437424-10': 'Device Brand',
+    'iotmainten437424-11': 'Please enter device brand',
+    'iotmainten437424-12': 'Current kilometers in operation (km)',
+    'iotmainten437424-13': 'Please enter the number of kilometers you are currently running (km)',
+    'iotmainten437424-14': 'Current Uptime (Hours)',
+    'iotmainten437424-15': 'Select current run time (hours)',
+    'iotmainten437424-16': 'Natural Date (Days)',
+    'iotmainten437424-17': 'Select natural date (days)',
+    'iotmainten437424-18': 'Remarks',
+    'iotmainten437424-19': 'Please enter remarks',
+    'iotmainten437424-20': 'Sort',
+    'iotmainten437424-21': 'Please enter sort order',
+    'iotmainten437424-22': 'Status: 0=Enabled, 1=Disabled',
+    'iotmainten437424-23': 'Please select dictionary to generate',
+    'iotmainten437424-24': 'Confirm',
+    'iotmainten437424-25': 'Cancel',
+    'indexvue706478-0': 'Export',
+    'iotmainten586594-0': 'Device ID',
+    'iotmainten586594-1':
+      "`Device ${configDialog.current?.deviceCode + '-' + configDialog.current?.name} Maintenance Config`",
+    'iotmainten586594-2': 'Device',
+    'iotmainten586594-3': 'Maintenance Item Config',
+    'iotmainten586594-4': 'Select date',
+    'iotmainten586594-5': 'Please select the cumulative run time',
+    'iotmainten586594-6': 'Please select the cumulative running kilometers',
+    'iotmainten876371-0':
+      "`Device ${configDialog.current?.deviceCode + '-' + configDialog.current?.name} Maintenance Item Config`",
+    'iotmainten876371-1': 'Device',
+    'iotmainten876371-2': 'Maintenance Item Config',
+    'iotmainten876371-3': 'Select date',
+    'iotmainten876371-4': 'Please select the cumulative run time',
+    'iotmainten876371-5': 'Please select the cumulative running kilometers',
+    'iotmainten251148-0': 'Device ID',
+    'iotmainten251148-1': 'Maintenance Duration',
+    'iotmainten251148-2': 'Maintenance Mileage',
+    'iotmainten251148-3': 'Maintenance Date',
+    'iotmainten251148-4':
+      "`Device ${configDialog.current?.deviceCode + '-' + configDialog.current?.name} Maintenance Config`",
+    'iotmainten251148-5': 'Device',
+    'iotmainten251148-6': 'Maintenance Item Config',
+    'iotmainten251148-7': 'Select date',
+    'iotmainten251148-8': 'Please select the cumulative run time',
+    'iotmainten251148-9': 'Please select the cumulative running kilometers',
+    'iotmainten865094-0': 'Plan Number',
+    'iotmainten865094-1': 'Please enter the plan number',
+    'iotmainten865094-2': 'The name of the plan',
+    'iotmainten865094-3': 'Please enter a plan name',
+    'iotmainten865094-4': 'Owner IDs Multiple separated by commas',
+    'iotmainten865094-5': 'Please enter responsible id Multiple separated by comma',
+    'iotmainten865094-6': 'Remarks',
+    'iotmainten865094-7': 'Please enter remarks',
+    'iotmainten865094-8': 'Status: 0=Enabled, 1=Disabled',
+    'iotmainten865094-9': 'Please select dictionary to generate',
+    'iotmainten865094-10': 'Confirm',
+    'iotmainten865094-11': 'Cancel',
+    'iotmainten455015-0': 'Maintenance Duration',
+    'iotmainten455015-1': 'Maintenance Mileage',
+    'iotmainten455015-2': 'Maintenance Date',
+    'iotmainten455015-3':
+      "`Device ${configDialog.current?.deviceCode + '-' + configDialog.current?.name} Maintenance Config`",
+    'iotmainten455015-4': 'Device',
+    'iotmainten455015-5': 'Maintenance Item Config',
+    'iotmainten455015-6': 'Select date',
+    'iotmainten455015-7': 'Please select the cumulative run time',
+    'iotmainten455015-8': 'Please select the cumulative running kilometers',
+    'mainplande437674-0': 'Please select a device with maintenance items',
+    'maintenanc121751-0': 'Please select a device with maintenance items',
+    'maintenanc446154-0': 'Maintenance Item Config',
+    'maintenanc446154-1': 'Please select the cumulative run time',
+    'maintenanc446154-2': 'Please select the cumulative running kilometers',
+    'maintenanc662507-0': 'Maintenance Duration',
+    'maintenanc662507-1': 'Maintenance Mileage',
+    'maintenanc662507-2': 'Maintenance Date'
+  },
+  material: {
+    'indexvue150210-0': 'User System',
+    'indexvue150210-1': 'Three-way login',
+    'indexvue150210-2': 'Excel Import Export',
+    'indexvue150210-3': 'Material Name',
+    'indexvue150210-4': 'Please enter material name',
+    'indexvue150210-5': 'Material Code',
+    'indexvue150210-6': 'Please enter material code',
+    'indexvue150210-7': 'Status',
+    'indexvue150210-8': 'Material Status',
+    'indexvue150210-9': 'Created Time',
+    'indexvue150210-10': 'Start Date',
+    'indexvue150210-11': 'End Date',
+    'indexvue150210-12': 'Search',
+    'indexvue150210-13': 'Reset',
+    'indexvue150210-14': 'Add',
+    'indexvue150210-15': 'Import',
+    'indexvue150210-16': 'Export',
+    'indexvue150210-17': 'Material group name',
+    'indexvue150210-18': 'Specification/Model',
+    'indexvue150210-19': 'Unit',
+    'indexvue150210-20': 'Actions',
+    'indexvue150210-21': 'Edit',
+    'indexvue150210-22': 'More',
+    'indexvue150210-23': 'Delete',
+    'materialfo512811-0': 'Material Name',
+    'materialfo512811-1': 'Please enter material name',
+    'materialfo512811-2': 'Belonging Material Group',
+    'materialfo512811-3': 'Please select the item group to which you belong',
+    'materialfo512811-4': 'Material Code',
+    'materialfo512811-5': 'Please enter material code',
+    'materialfo512811-6': 'Specification/Model',
+    'materialfo512811-7': 'Please enter specification/model',
+    'materialfo512811-8': 'Unit',
+    'materialfo512811-9': 'Please select a unit',
+    'materialfo512811-10': 'Display Order',
+    'materialfo512811-11': 'Remarks',
+    'materialfo512811-12': 'Please enter content',
+    'materialfo512811-13': 'Confirm',
+    'materialfo512811-14': 'Cancel',
+    'materialgr944486-0': 'Please enter category name',
+    'materialgr944486-1': 'Add child node',
+    'materialgr944486-2': 'Rename',
+    'materialgr944486-3': 'Delete',
+    'materialim375984-0': 'User Import',
+    'materialim375984-1': 'Drag file here, or',
+    'materialim375984-2': 'click to upload.',
+    'materialim375984-3': 'Whether to update existing user data',
+    'materialim375984-4': 'Download Template',
+    'materialim375984-5': 'Confirm',
+    'materialim375984-6': 'Cancel'
+  },
+  materialgroup: {
+    'indexvue506387-0': 'Material group name',
+    'indexvue506387-1': 'Please enter item group name',
+    'indexvue506387-2': 'Material Group Status',
+    'indexvue506387-3': 'Please select material group status',
+    'indexvue506387-4': 'Search',
+    'indexvue506387-5': 'Reset',
+    'indexvue506387-6': 'Add',
+    'indexvue506387-7': 'Sort',
+    'indexvue506387-8': 'Status',
+    'indexvue506387-9': 'Created Time',
+    'indexvue506387-10': 'Actions',
+    'indexvue506387-11': 'Edit',
+    'indexvue506387-12': 'Delete',
+    'materialgr258845-0': 'Parent Material Group',
+    'materialgr258845-1': 'Please select parent material group',
+    'materialgr258845-2': 'Material group name',
+    'materialgr258845-3': 'Please enter item group name',
+    'materialgr258845-4': 'Display Order',
+    'materialgr258845-5': 'Status',
+    'materialgr258845-6': 'Please select status',
+    'materialgr258845-7': 'Confirm',
+    'materialgr258845-8': 'Cancel'
+  },
+  model: {
+    'indexvue789316-0': 'Name',
+    'indexvue789316-1': 'Please enter the specification model name',
+    'indexvue789316-2': 'Brand',
+    'indexvue789316-3': 'Please enter brand',
+    'indexvue789316-4': 'Status',
+    'indexvue789316-5': 'Please select a profile classification status',
+    'indexvue789316-6': 'Search',
+    'indexvue789316-7': 'Reset',
+    'indexvue789316-8': 'Add',
+    'indexvue789316-9': 'Export',
+    'indexvue789316-10': 'Specification/Model Name',
+    'indexvue789316-11': 'Compliant standard',
+    'indexvue789316-12': 'Display Sequence',
+    'indexvue789316-13': 'Remarks',
+    'indexvue789316-14': 'Created Time',
+    'indexvue789316-15': 'Actions',
+    'indexvue789316-16': 'Edit',
+    'indexvue789316-17': 'Delete',
+    'iotmodelfo876157-0': 'Name',
+    'iotmodelfo876157-1': 'Please enter the specification model name',
+    'iotmodelfo876157-2': 'Brand',
+    'iotmodelfo876157-3': 'Please enter brand',
+    'iotmodelfo876157-4': 'Status',
+    'iotmodelfo876157-5': 'Please select',
+    'iotmodelfo876157-6': 'Display Sequence',
+    'iotmodelfo876157-7': 'Please enter display sequence',
+    'iotmodelfo876157-8': 'Compliant standard',
+    'iotmodelfo876157-9': 'Please enter compliance standard',
+    'iotmodelfo876157-10': 'Remarks',
+    'iotmodelfo876157-11': 'Please enter remarks',
+    'iotmodelfo876157-12': 'Confirm',
+    'iotmodelfo876157-13': 'Cancel'
+  },
+  modeltemplate: {
+    'attrtempla615780-0': 'Attribute Name',
+    'attrtempla615780-1': 'Please enter attribute name',
+    'attrtempla615780-2': 'Daily Report Value',
+    'attrtempla615780-3': 'Data Collection:',
+    'attrtempla615780-4': 'Cumulative:',
+    'attrtempla615780-5': 'Accumulated Value',
+    'attrtempla615780-6': 'Please select accumulated value',
+    'attrtempla615780-7': 'Cumulative',
+    'attrtempla615780-8': 'Identifier',
+    'attrtempla615780-9': 'Fill Threshold',
+    'attrtempla615780-10': 'Please enter threshold',
+    'attrtempla615780-11': 'Thing Attribute',
+    'attrtempla615780-12': 'Please select',
+    'attrtempla615780-13': 'Description',
+    'attrtempla615780-14': 'Please enter an attribute description',
+    'attrtempla615780-15': 'Confirm',
+    'attrtempla615780-16': 'Cancel',
+    'attrtempla606133-0': 'Data Type',
+    'attrtempla606133-1': 'Please select a data type',
+    'attrtempla606133-2': 'Boolean',
+    'attrtempla606133-3': "`e.g.:${item.value === 0 ? 'Off' : 'On'}`",
+    'attrtempla606133-4': 'Time Format',
+    'attrtempla606133-5': 'UTC timestamp of type String (milliseconds)',
+    'indexvue213204-0': 'Template Info',
+    'indexvue213204-1': 'Belonging Template',
+    'indexvue213204-2': 'Device Category',
+    'indexvue213204-3': 'Attribute List',
+    'indexvue213204-4': 'Search',
+    'indexvue213204-5': 'Reset',
+    'indexvue213204-6': 'Add Attributes',
+    'indexvue213204-7': 'No.',
+    'indexvue213204-8': 'Attribute Name',
+    'indexvue213204-9': 'Data Type',
+    'indexvue213204-10': 'Actions',
+    'indexvue213204-11': 'Edit',
+    'indexvue213204-12': 'Delete',
+    'modelattrm628367-0': 'Element type',
+    'modelattrm628367-1': 'Number of elements',
+    'modelattrm628367-2': 'Please enter the number of elements in the array',
+    'modelattrm154979-0': 'Dropdown Options',
+    'modelattrm154979-1': 'Description of the drop-down option',
+    'modelattrm154979-2': 'Delete',
+    'modelattrm267227-0': 'Unit',
+    'modelattrm267227-1': 'Please select a unit',
+    'modelattrm060367-0': 'A JSON object',
+    'modelattrm060367-1': 'Edit',
+    'modelattrm060367-2': 'Delete',
+    'modelattrm060367-3': 'Attribute Name',
+    'modelattrm060367-4': 'Please enter attribute name',
+    'modelattrm060367-5': 'Identifier',
+    'modelattrm060367-6': 'Please enter an identifier',
+    'modelattrm060367-7': 'Confirm',
+    'modelattrm060367-8': 'Cancel',
+    'indexvue394392-0': 'Property Templates',
+    'templatede197563-0': 'Device Encoding&amp;nbsp;',
+    'templatede197563-1': 'Note:',
+    'indexvue218750-0': 'Unknown',
+    'indexvue218750-1': 'More',
+    'modelcateg669201-0': 'Please enter a device classification name',
+    'modelcateg669201-1': 'Add child node',
+    'modelcateg669201-2': 'Rename',
+    'modelcateg669201-3': 'Delete',
+    'templatefo791298-0': 'Maintain model attribute template info under device category',
+    'templatefo791298-1': 'Template Info',
+    'templatefo791298-2': 'Device Category',
+    'templatefo791298-3': 'Please select a device category',
+    'templatefo791298-4': 'Template Name',
+    'templatefo791298-5': 'Please enter template name',
+    'templatefo791298-6': 'Remarks',
+    'templatefo791298-7': 'Please enter content',
+    'templatefo791298-8': 'Cancel',
+    'templatefo791298-9': 'Confirm'
+  },
+  mqtt: {
+    'mqttvue648391-0': 'MQTT Message Listener (TS Version)',
+    'mqttvue648391-1': 'New Message Received',
+    'mqttvue648391-2': 'Disconnected',
+    'mqttvue648391-3': 'Connected',
+    'mqttvue648391-4': 'Not Connected'
+  },
+  operationmeeting: {
+    'meetingdet422836-0': 'Item',
+    'meetingdet422836-1': 'Please select or enter project name',
+    'meetingdet422836-2': 'Revenue - Current Period',
+    'meetingdet422836-3': 'Revenue - Cumulative',
+    'meetingdet422836-4': 'On-account - Current Period',
+    'meetingdet422836-5': 'On-account - Cumulative',
+    'meetingdet422836-6': 'Collection - Current Period',
+    'meetingdet422836-7': 'Collection - Cumulative',
+    'meetingdet422836-8': 'Current Period Production Status',
+    'meetingdet422836-9': '`Input${item.name}`',
+    'meetingdet422836-10': 'Production management and key work',
+    'meetingdet422836-11': 'Priority Work and Completion',
+    'meetingdet422836-12': 'Please enter key work and completion',
+    'meetingdet422836-13': 'Problems and analysis',
+    'meetingdet422836-14': 'Please enter existing problems and analysis',
+    'meetingdet422836-15': 'Equipment, safety management work',
+    'meetingdet422836-16': 'Please enter device and safety management work',
+    'meetingdet422836-17': 'Next Period Work Plan',
+    'meetingdet422836-18': 'Planned Workload',
+    'meetingdet422836-19': 'Please enter next-period planned workload',
+    'meetingdet422836-20': 'Key Items',
+    'meetingdet422836-21': 'Please enter key work items',
+    'meetingdet422836-22': 'Cancel',
+    'meetingdet422836-23': 'Save',
+    'operationm684378-0': 'Production Operation Biweekly Meeting Report',
+    'operationm684378-1': 'Session',
+    'operationm684378-2': 'No meeting session',
+    'operationm684378-3': 'Please enter meeting session',
+    'operationm684378-4': 'Professional corporation',
+    'operationm684378-5': 'All Companies',
+    'operationm684378-6': 'Auto-filled by system after new save',
+    'operationm684378-7': 'Auto-filled by the system after new save.',
+    'operationm684378-8': 'Date',
+    'operationm684378-9': 'No meeting date',
+    'operationm684378-10': 'Please select meeting date',
+    'operationm684378-11': 'Business Data Summary',
+    'operationm684378-12': '10k CNY',
+    'operationm684378-13': 'Workload Completion',
+    'operationm684378-14': 'More',
+    'operationm684378-15': '`${workloadScopeName}Workload Completion Details`',
+    'operationm684378-16': 'Item',
+    'operationm684378-17': '`${currentSummaryScopeName}Total`',
+    'operationm684378-18': 'Meeting Details',
+    'operationm684378-19': 'Add a Row',
+    'operationm684378-20': 'Production management and key work',
+    'operationm684378-21': 'Priority Work and Completion',
+    'operationm684378-22': 'Problems and analysis',
+    'operationm684378-23': 'Equipment, safety management work',
+    'operationm684378-24': 'Next Period Work Plan',
+    'operationm684378-25': 'Planned Workload',
+    'operationm684378-26': 'Key Items',
+    'operationm684378-27': 'Actions',
+    'operationm684378-28': 'Delete',
+    'operationm684378-29': 'Other key items and matters needing group coordination',
+    'operationm684378-30': 'Please enter other key items and matters needing group coordination',
+    'indexvue930288-0': 'Professional corporation',
+    'indexvue930288-1': 'Please select professional company',
+    'indexvue930288-2': 'Date',
+    'indexvue930288-3': 'Start Date',
+    'indexvue930288-4': 'End Date',
+    'indexvue930288-5': 'Search',
+    'indexvue930288-6': 'Reset',
+    'indexvue930288-7': 'New',
+    'indexvue930288-8': 'Session',
+    'indexvue930288-9': 'Company Name',
+    'indexvue930288-10': 'Actions',
+    'indexvue930288-11': 'Edit',
+    'indexvue930288-12': 'View',
+    'meetingfor692584-0': 'Save',
+    'summaryvue521284-0': 'Search',
+    'summaryvue521284-1': 'Reset',
+    'summaryvue521284-2': 'Session',
+    'summaryvue521284-3': 'Company Name',
+    'summaryvue521284-4': 'Date',
+    'summaryvue521284-5': 'Actions',
+    'summaryvue521284-6': 'View',
+    'summaryvue521284-7': 'Operating Status (CNY 10,000)'
+  },
+  planwork: {
+    'fillvue793717-0': 'Time Frame',
+    'fillvue793717-1': 'Start Date',
+    'fillvue793717-2': 'End Date',
+    'fillvue793717-3': 'Add',
+    'fillvue793717-4': 'Search',
+    'fillvue793717-5': 'Reset',
+    'fillvue793717-6': 'Department Name',
+    'fillvue793717-7': 'Project Business',
+    'fillvue793717-8': 'Time',
+    'fillvue793717-9': 'Planned Workload',
+    'fillvue793717-10': 'Workload Unit',
+    'fillvue793717-11': 'Actions',
+    'fillvue793717-12': 'View',
+    'fillvue793717-13': 'Edit',
+    'fillvue793717-14': 'Plan Information',
+    'fillvue793717-15': 'Select Department',
+    'fillvue793717-16': 'Please select department',
+    'fillvue793717-17': 'Select time',
+    'fillvue793717-18': 'Please select year and month',
+    'fillvue793717-19':
+      "createFormData.deptId ? 'Please select project business' : 'Please select department first'",
+    'fillvue793717-20': 'Auto-filled after selecting project business',
+    'fillvue793717-21':
+      "createFormData.business ? 'Please enter planned workload' : 'Please select project business first'",
+    'fillvue793717-22': 'Confirm',
+    'indexvue482320-0': 'Time Frame',
+    'indexvue482320-1': 'Start Date',
+    'indexvue482320-2': 'End Date',
+    'indexvue482320-3': 'Search',
+    'indexvue482320-4': 'Reset',
+    'indexvue482320-5': 'Department Name',
+    'indexvue482320-6': 'Project Business',
+    'indexvue482320-7': 'Total',
+    'indexvue482320-8': 'Unit'
+  },
+  productclassify: {
+    'indexvue432782-0': 'Category Name',
+    'indexvue432782-1': 'Please enter category name',
+    'indexvue432782-2': 'Classify status',
+    'indexvue432782-3': 'Please select category status',
+    'indexvue432782-4': 'Search',
+    'indexvue432782-5': 'Reset',
+    'indexvue432782-6': 'Add',
+    'indexvue432782-7': 'Sort',
+    'indexvue432782-8': 'Status',
+    'indexvue432782-9': 'Remarks',
+    'indexvue432782-10': 'Created Time',
+    'indexvue432782-11': 'Actions',
+    'indexvue432782-12': 'Edit',
+    'indexvue432782-13': 'Delete',
+    'productcla272275-0': 'Parent category',
+    'productcla272275-1': 'Please select a parent category',
+    'productcla272275-2': 'Category Name',
+    'productcla272275-3': 'Please enter category name',
+    'productcla272275-4': 'Display Order',
+    'productcla272275-5': 'Status',
+    'productcla272275-6': 'Please select status',
+    'productcla272275-7': 'Remarks',
+    'productcla272275-8': 'Please enter remarks',
+    'productcla272275-9': 'Confirm',
+    'productcla272275-10': 'Cancel'
+  },
+  qhse: {
+    'indexvue646594-0': 'Event Level',
+    'indexvue646594-1': 'Please enter event level',
+    'indexvue646594-2': 'Type of occurrence',
+    'indexvue646594-3': 'Please Select An Event',
+    'indexvue646594-4': 'Search',
+    'indexvue646594-5': 'Reset',
+    'indexvue646594-6': 'Event Time',
+    'indexvue646594-7': 'Event State',
+    'indexvue646594-8': 'Incident losses',
+    'indexvue646594-9': 'event address',
+    'indexvue646594-10': 'Department Name',
+    'indexvue646594-11': 'Field Supervisor',
+    'indexvue646594-12': 'Created Time',
+    'indexvue646594-13': 'Actions',
+    'indexvue646594-14': 'Circulation Information',
+    'indexvue646594-15': 'Approval',
+    'indexvue646594-16': 'Who',
+    'indexvue646594-17': 'Approval comments:',
+    'indexvue646594-18': 'Appendix:',
+    'indexvue646594-19': 'Approval Suggestion',
+    'indexvue646594-20': 'Please enter approval suggestion',
+    'indexvue646594-21': 'Cancel',
+    'indexvue646594-22': 'Report',
+    'indexvue848945-0': 'Accident Type',
+    'indexvue848945-1': 'Please select accident type',
+    'indexvue848945-2': 'Accident Level',
+    'indexvue848945-3': 'Please select accident level',
+    'indexvue848945-4': 'Field Supervisor',
+    'indexvue848945-5': 'Please enter on-site responsible person',
+    'indexvue848945-6': 'Search',
+    'indexvue848945-7': 'Reset',
+    'indexvue848945-8': 'Add',
+    'indexvue848945-9': 'Export',
+    'indexvue848945-10': 'Accident Time',
+    'indexvue848945-11': 'Attachment',
+    'indexvue848945-12': 'View',
+    'indexvue848945-13': 'Remarks',
+    'indexvue848945-14': 'Actions',
+    'indexvue848945-15': 'Edit',
+    'indexvue848945-16': 'Delete',
+    'indexvue848945-17': 'Please select accident time',
+    'indexvue848945-18': 'Department',
+    'indexvue848945-19': 'Please select department',
+    'indexvue848945-20': 'Please enter remarks',
+    'indexvue848945-21': 'Confirm',
+    'indexvue848945-22': 'Cancel',
+    'indexvue848945-23': 'Download',
+    'indexvue848945-24': 'Confirm',
+    'certificat865417-0': 'Expired',
+    'certificat865417-1': 'Total Numer of Certificate',
+    'certificat865417-2': 'Personal Certificate',
+    'certificat865417-3': 'Certificate Type',
+    'certificat865417-4': 'Please select certificate type',
+    'certificat865417-5': 'Other',
+    'certificat865417-6': 'Certificate Categories',
+    'certificat865417-7': 'Belongs to',
+    'certificat865417-8': 'Enter Owner',
+    'certificat865417-9': 'Expired or not',
+    'certificat865417-10': 'Please select whether to expire or not',
+    'certificat865417-11': 'Is Early Warning',
+    'certificat865417-12': 'Please select whether to warn or not',
+    'certificat865417-13': 'Add',
+    'certificat865417-14': 'Export',
+    'certificat865417-15': 'Certification name',
+    'certificat865417-16': 'Training Period',
+    'certificat865417-17': 'Department',
+    'certificat865417-18': 'Issued by',
+    'certificat865417-19': 'Certificate Standards',
+    'certificat865417-20': 'Awarded on',
+    'certificat865417-21': 'Validity Period',
+    'certificat865417-22': 'Remarks',
+    'certificat865417-23': 'Edit',
+    'certificat865417-24': 'Delete',
+    'certificat865417-25': 'View',
+    'certificat865417-26': 'Certificate Expired Red Alert',
+    'certificat865417-27': 'Please enter a certificate name',
+    'certificat865417-28': 'Please select department',
+    'certificat865417-29': 'Please enter owner',
+    'certificat865417-30': 'Please enter the issuing authority',
+    'certificat865417-31': 'such as national standards, APIs, etc.',
+    'certificat865417-32': 'Please select a time for issuance',
+    'certificat865417-33': 'Please select an expiration date',
+    'certificat865417-34': 'Please enter remarks',
+    'certificat865417-35': 'Certificate Attachment',
+    'certificat865417-36': 'Cancel',
+    'certificat865417-37': 'Confirm',
+    'certificat865417-38': 'Attachment',
+    'certificat865417-39': 'View',
+    'certificat865417-40': 'Download',
+    'certificat865417-41': 'Confirm',
+    'certperson740485-0': 'Your team',
+    'certperson740485-1': 'Please select department',
+    'certperson740485-2': 'Name',
+    'certperson740485-3': 'Please enter full name',
+    'certperson740485-4': 'Mobile',
+    'certperson740485-5': 'Please enter phone number',
+    'certperson740485-6': 'Job position',
+    'certperson740485-7': 'Please enter a job title',
+    'certperson740485-8': 'Remarks',
+    'certperson740485-9': 'Please enter remarks',
+    'certperson740485-10': 'Whether related certificate is required',
+    'certperson740485-11': 'H2S',
+    'certperson740485-12': 'Well Control',
+    'certperson740485-13': 'HSE',
+    'certperson740485-14': 'Drilling',
+    'certperson740485-15': 'Aerial Work Permit',
+    'certperson740485-16': 'Electrotechnical',
+    'certperson740485-17': 'Main operation of coiled tubing',
+    'certperson740485-18': 'Lifting',
+    'certperson740485-19': 'Safety Management',
+    'certperson740485-20': 'International Well Control',
+    'certperson740485-21': 'Fire',
+    'certperson740485-22': 'First aid',
+    'certperson740485-23': 'Confirm',
+    'certperson740485-24': 'Cancel',
+    'indexvue292698-0': 'Person Name',
+    'indexvue292698-1': 'Please enter person name',
+    'indexvue292698-2': 'Name',
+    'indexvue292698-3': 'Please enter full name',
+    'indexvue292698-4': 'Job position',
+    'indexvue292698-5': 'Please enter a job title',
+    'indexvue292698-6': 'Search',
+    'indexvue292698-7': 'Reset',
+    'indexvue292698-8': 'Add',
+    'indexvue292698-9': 'Export',
+    'indexvue292698-10': 'Mobile',
+    'indexvue292698-11': 'Department Name',
+    'indexvue292698-12': 'Three Small',
+    'indexvue292698-13': 'H2S',
+    'indexvue292698-14': 'Well Control (A2)',
+    'indexvue292698-15': 'Drilling',
+    'indexvue292698-16': 'Aerial Work Permit',
+    'indexvue292698-17': 'Electrotechnical',
+    'indexvue292698-18': 'Main operation of coiled tubing',
+    'indexvue292698-19': 'Lifting',
+    'indexvue292698-20': 'Safety Management',
+    'indexvue292698-21': 'International Well Control',
+    'indexvue292698-22': 'Fire',
+    'indexvue292698-23': 'First aid',
+    'indexvue292698-24': 'Remarks',
+    'indexvue292698-25': 'Actions',
+    'indexvue292698-26': 'Edit',
+    'indexvue292698-27': 'Delete',
+    'indexvue451736-0': 'Expired',
+    'indexvue451736-1': 'Total Numer of Certificate',
+    'indexvue451736-2': 'Certificate Categories',
+    'indexvue451736-3': 'Expired or not',
+    'indexvue451736-4': 'Please select whether to expire or not',
+    'indexvue451736-5': 'Is Early Warning',
+    'indexvue451736-6': 'Please select whether to warn or not',
+    'indexvue451736-7': 'Add',
+    'indexvue451736-8': 'Export',
+    'indexvue451736-9': 'Certification name',
+    'indexvue451736-10': 'Department',
+    'indexvue451736-11': 'Issued by',
+    'indexvue451736-12': 'Certificate Standards',
+    'indexvue451736-13': 'Awarded on',
+    'indexvue451736-14': 'Validity Period',
+    'indexvue451736-15': 'Remarks',
+    'indexvue451736-16': 'Edit',
+    'indexvue451736-17': 'Delete',
+    'indexvue451736-18': 'View',
+    'indexvue451736-19': 'Certificate Expired Red Alert',
+    'indexvue451736-20': 'Please enter a certificate name',
+    'indexvue451736-21': 'Please select department',
+    'indexvue451736-22': 'Please enter the issuing authority',
+    'indexvue451736-23': 'such as national standards, APIs, etc.',
+    'indexvue451736-24': 'Please select a time for issuance',
+    'indexvue451736-25': 'Please select an expiration date',
+    'indexvue451736-26': 'Please enter remarks',
+    'indexvue451736-27': 'Certificate Attachment',
+    'indexvue451736-28': 'Cancel',
+    'indexvue451736-29': 'Confirm',
+    'indexvue451736-30': 'Attachment',
+    'indexvue451736-31': 'View',
+    'indexvue451736-32': 'Download',
+    'indexvue451736-33': 'Confirm',
+    'indexvue243883-0': 'Folder List',
+    'indexvue243883-1': 'File List',
+    'indexvue243883-2': "'Search under' + breadcrumbs[breadcrumbs.length - 1].name",
+    'iotinfofor854199-0': 'Please select a file directory',
+    'iotinfofor854199-1': 'Please select',
+    'pmstreevue476301-0': 'Please enter %s name',
+    'pmstreevue476301-1': 'New Directory',
+    'pmstreevue476301-2': 'Edit Directory',
+    'pmstreevue476301-3': 'Delete Directory',
+    'pmstreevue476301-4': 'Directory Name',
+    'pmstreevue476301-5': 'Please enter directory name',
+    'pmstreevue476301-6': 'Display Order',
+    'pmstreevue476301-7': 'Confirm',
+    'pmstreevue476301-8': 'Cancel',
+    'devicecert652005-0': 'Link Device',
+    'devicecert652005-1': 'Please select related device',
+    'devicecert652005-2': 'Select',
+    'devicecert652005-3': 'Device Code',
+    'devicecert652005-4': 'Please enter device code',
+    'devicecert652005-5': 'Device Name',
+    'devicecert652005-6': 'Please enter device name',
+    'devicecert652005-7': 'Test type',
+    'devicecert652005-8': 'Please select a test type',
+    'devicecert652005-9': 'Serial Number',
+    'devicecert652005-10': 'Please enter a serial number',
+    'devicecert652005-11': 'Test UoM',
+    'devicecert652005-12': 'Please enter the testing unit',
+    'devicecert652005-13': 'Inspection Date',
+    'devicecert652005-14': 'Please select a test date',
+    'devicecert652005-15': 'Expiration Date',
+    'devicecert652005-16': 'Please select an expiration date',
+    'devicecert652005-17': 'Department',
+    'devicecert652005-18': 'Please select department',
+    'devicecert652005-19': 'Attachment',
+    'devicecert652005-20': 'Remarks',
+    'devicecert652005-21': 'Please enter remarks',
+    'devicecert652005-22': 'Confirm',
+    'devicecert652005-23': 'Cancel',
+    'devicecert652005-24': 'Select device',
+    'devicecert652005-25': 'Department',
+    'devicecert652005-26': 'Device Status',
+    'devicecert652005-27': 'Position',
+    'indexvue995099-0': 'Expired',
+    'indexvue995099-1': 'Total Numer of Certificate',
+    'indexvue995099-2': 'Device Name',
+    'indexvue995099-3': 'Please enter device name',
+    'indexvue995099-4': 'Test type',
+    'indexvue995099-5': 'Please select a test type',
+    'indexvue995099-6': 'Serial Number',
+    'indexvue995099-7': 'Please enter a serial number',
+    'indexvue995099-8': 'Inspection Date',
+    'indexvue995099-9': 'Start Date',
+    'indexvue995099-10': 'End Date',
+    'indexvue995099-11': 'Test UoM',
+    'indexvue995099-12': 'Please enter the testing unit',
+    'indexvue995099-13': 'Validity Period',
+    'indexvue995099-14': 'Search',
+    'indexvue995099-15': 'Reset',
+    'indexvue995099-16': 'Add',
+    'indexvue995099-17': 'Export',
+    'indexvue995099-18': 'Device Code',
+    'indexvue995099-19': 'Department Name',
+    'indexvue995099-20': 'Remarks',
+    'indexvue995099-21': 'Attachment',
+    'indexvue995099-22': 'View',
+    'indexvue995099-23': 'Actions',
+    'indexvue995099-24': 'Edit',
+    'indexvue995099-25': 'Delete',
+    'indexvue995099-26': 'Equipment to be inspected certificate has expired red alert',
+    'indexvue995099-27': 'Download',
+    'indexvue995099-28': 'Confirm',
+    'emergencyb962599-0': 'Related Materials',
+    'emergencyb962599-1': 'Please select related material',
+    'emergencyb962599-2': 'Select',
+    'emergencyb962599-3': 'Certificate Number',
+    'emergencyb962599-4': 'Please enter the certificate number',
+    'emergencyb962599-5': 'Test UoM',
+    'emergencyb962599-6': 'Please enter the testing unit',
+    'emergencyb962599-7': 'Inspection Date',
+    'emergencyb962599-8': 'Please select a test date',
+    'emergencyb962599-9': 'Expiration Date',
+    'emergencyb962599-10': 'Please select an expiration date',
+    'emergencyb962599-11': 'Attachment',
+    'emergencyb962599-12': 'Remarks',
+    'emergencyb962599-13': 'Please enter remarks',
+    'emergencyb962599-14': 'Confirm',
+    'emergencyb962599-15': 'Cancel',
+    'emergencyb962599-16': 'Select device',
+    'emergencyb962599-17': 'Material No.',
+    'emergencyb962599-18': 'Please enter the material number',
+    'emergencyb962599-19': 'Material Name',
+    'emergencyb962599-20': 'Please enter device name',
+    'emergencyb962599-21': 'Responsible Person',
+    'emergencyb962599-22': 'Please enter responsible person',
+    'emergencyb962599-23': 'Emergency Item Number',
+    'emergencyb962599-24': 'Emergency Material Name',
+    'emergencyb962599-25': 'Emergency supplies unit',
+    'emergencyb962599-26': 'Quantity',
+    'emergencyb962599-27': 'Storage location',
+    'emergencyb962599-28': 'Phone',
+    'emergencyb962599-29': 'View',
+    'emergencyb962599-30': 'Download',
+    'emergencyb962599-31': 'Confirm',
+    'indexvue924955-0': 'Emergency Material Name',
+    'indexvue924955-1': 'Please enter the name of the emergency supplies',
+    'indexvue924955-2': 'Certificate Number',
+    'indexvue924955-3': 'Please enter the certificate number',
+    'indexvue924955-4': 'Search',
+    'indexvue924955-5': 'Reset',
+    'indexvue924955-6': 'Add',
+    'indexvue924955-7': 'Export',
+    'indexvue924955-8': 'Material Name',
+    'indexvue924955-9': 'Inspection Date',
+    'indexvue924955-10': 'Test UoM',
+    'indexvue924955-11': 'Validity Period',
+    'indexvue924955-12': 'Remarks',
+    'indexvue924955-13': 'Attachment',
+    'indexvue924955-14': 'View',
+    'indexvue924955-15': 'Actions',
+    'indexvue924955-16': 'Edit',
+    'indexvue924955-17': 'Delete',
+    'indexvue924955-18': 'Download',
+    'indexvue924955-19': 'Confirm',
+    'certdrawer958956-0': 'Certificate Inspection List',
+    'certdrawer958956-1': 'Emergency Material Name',
+    'certdrawer958956-2': 'Please enter the name of the emergency supplies',
+    'certdrawer958956-3': 'Certificate Number',
+    'certdrawer958956-4': 'Please enter the certificate number',
+    'certdrawer958956-5': 'Add',
+    'certdrawer958956-6': 'Search',
+    'certdrawer958956-7': 'Reset',
+    'certdrawer958956-8': 'Material Name',
+    'certdrawer958956-9': 'Inspection Date',
+    'certdrawer958956-10': 'Test UoM',
+    'certdrawer958956-11': 'Validity Period',
+    'certdrawer958956-12': 'Remarks',
+    'certdrawer958956-13': 'Attachment',
+    'certdrawer958956-14': 'View',
+    'certdrawer958956-15': 'Related Materials',
+    'certdrawer958956-16': 'Please enter the testing unit',
+    'certdrawer958956-17': 'Please select a test date',
+    'certdrawer958956-18': 'Expiration Date',
+    'certdrawer958956-19': 'Please select an expiration date',
+    'certdrawer958956-20': 'Please enter remarks',
+    'certdrawer958956-21': 'Confirm',
+    'certdrawer958956-22': 'Cancel',
+    'certdrawer958956-23': 'Download',
+    'certdrawer958956-24': 'Confirm',
+    'emergencyd314725-0': 'Emergency Material Name',
+    'emergencyd314725-1': 'Please enter the name of the emergency supplies',
+    'emergencyd314725-2': 'Emergency supplies unit',
+    'emergencyd314725-3': 'Please enter emergency material unit, e.g.: pcs, sets, etc.',
+    'emergencyd314725-4': 'Whether to enter certificate',
+    'emergencyd314725-5': 'Quantity',
+    'emergencyd314725-6': 'Storage location',
+    'emergencyd314725-7': 'Please enter storage location',
+    'emergencyd314725-8': 'Responsible Person',
+    'emergencyd314725-9': 'Please enter responsible person',
+    'emergencyd314725-10': 'Phone',
+    'emergencyd314725-11': 'Please enter contact phone',
+    'emergencyd314725-12': 'Department',
+    'emergencyd314725-13': 'Please select department',
+    'emergencyd314725-14': 'Attachment',
+    'emergencyd314725-15': 'Remarks',
+    'emergencyd314725-16': 'Please enter remarks',
+    'emergencyd314725-17': 'Confirm',
+    'emergencyd314725-18': 'Cancel',
+    'indexvue592075-0': 'Emergency Material Name',
+    'indexvue592075-1': 'Please enter the material number',
+    'indexvue592075-2': 'Please enter material name',
+    'indexvue592075-3': 'Responsible Person',
+    'indexvue592075-4': 'Please enter responsible person',
+    'indexvue592075-5': 'Search',
+    'indexvue592075-6': 'Reset',
+    'indexvue592075-7': 'Add',
+    'indexvue592075-8': 'Export',
+    'indexvue592075-9': 'Emergency Item Number',
+    'indexvue592075-10': 'Emergency supplies unit',
+    'indexvue592075-11': 'Quantity',
+    'indexvue592075-12': 'Storage location',
+    'indexvue592075-13': 'Phone',
+    'indexvue592075-14': 'Remarks',
+    'indexvue592075-15': 'Attachment',
+    'indexvue592075-16': 'View',
+    'indexvue592075-17': 'Actions',
+    'indexvue592075-18': 'View',
+    'indexvue592075-19': 'Edit',
+    'indexvue592075-20': 'Delete',
+    'indexvue592075-21': 'Download',
+    'indexvue592075-22': 'Confirm',
+    'indexvue239376-0': 'Process Step',
+    'indexvue239376-1': 'Please enter process step',
+    'indexvue239376-2': 'Step Breakdown',
+    'indexvue239376-3': 'Please enter step breakdown',
+    'indexvue239376-4': 'Environmental Factor',
+    'indexvue239376-5': 'Please enter environmental factor',
+    'indexvue239376-6': 'Search',
+    'indexvue239376-7': 'Reset',
+    'indexvue239376-8': 'Add',
+    'indexvue239376-9': 'Export',
+    'indexvue239376-10': 'No.',
+    'indexvue239376-11': 'Tense',
+    'indexvue239376-12': 'Past',
+    'indexvue239376-13': 'Present',
+    'indexvue239376-14': 'Future',
+    'indexvue239376-15': 'Status',
+    'indexvue239376-16': '&Normal',
+    'indexvue239376-17': 'Abnormal',
+    'indexvue239376-18': 'Urgent',
+    'indexvue239376-19': 'Environmental Impact Type',
+    'indexvue239376-20': 'Energy/Resource Consumption',
+    'indexvue239376-21': 'Water Body',
+    'indexvue239376-22': 'Atmosphere',
+    'indexvue239376-23': 'Noise',
+    'indexvue239376-24': 'Waste',
+    'indexvue239376-25': 'Soil',
+    'indexvue239376-26': 'Other',
+    'indexvue239376-27': 'Control Measures',
+    'indexvue239376-28': 'Creation Date',
+    'indexvue239376-29': 'Remarks',
+    'indexvue239376-30': 'Actions',
+    'indexvue239376-31': 'Edit',
+    'indexvue239376-32': 'Delete',
+    'indexvue239376-33': 'Water Pollution',
+    'indexvue239376-34': 'Air Pollution',
+    'indexvue239376-35': 'Noise Pollution',
+    'indexvue239376-36': 'Soil Pollution',
+    'indexvue239376-37': 'Please enter control measures',
+    'indexvue239376-38': 'Department',
+    'indexvue239376-39': 'Please select department',
+    'indexvue239376-40': 'Please enter remarks',
+    'indexvue239376-41': 'Cancel',
+    'indexvue239376-42': 'Confirm',
+    'indexvue561643-0': 'Strictly prohibit late, omitted or concealed reporting!!!',
+    'indexvue561643-1': 'Event Level',
+    'indexvue561643-2': 'Please enter event level',
+    'indexvue561643-3': 'Type of occurrence',
+    'indexvue561643-4': 'Please Select An Event',
+    'indexvue561643-5': 'Search',
+    'indexvue561643-6': 'Reset',
+    'indexvue561643-7': 'Add',
+    'indexvue561643-8': 'Event Time',
+    'indexvue561643-9': 'Event State',
+    'indexvue561643-10': 'Incident losses',
+    'indexvue561643-11': 'event address',
+    'indexvue561643-12': 'Department Name',
+    'indexvue561643-13': 'Field Supervisor',
+    'indexvue561643-14': 'Created Time',
+    'indexvue561643-15': 'Actions',
+    'indexvue561643-16': 'Details',
+    'indexvue561643-17': 'Circulation Information',
+    'indexvue561643-18': 'Who',
+    'indexvue561643-19': 'Approval comments:',
+    'indexvue561643-20': 'Appendix:',
+    'qhsefaultr063978-0': 'Event Time',
+    'qhsefaultr063978-1': 'Select the time the event occurred',
+    'qhsefaultr063978-2': 'Event Level',
+    'qhsefaultr063978-3': 'Please enter event level',
+    'qhsefaultr063978-4': 'Type of occurrence',
+    'qhsefaultr063978-5': 'Please Select An Event',
+    'qhsefaultr063978-6': 'event address',
+    'qhsefaultr063978-7': 'Please enter the event address',
+    'qhsefaultr063978-8': 'Field Supervisor',
+    'qhsefaultr063978-9': 'Please enter the name of the person in charge of the site',
+    'qhsefaultr063978-10': 'Incident losses',
+    'qhsefaultr063978-11': 'Please enter the incident loss information',
+    'qhsefaultr063978-12': 'Action taken on site',
+    'qhsefaultr063978-13': 'Please enter the emergency action taken on site',
+    'qhsefaultr063978-14': 'Event Brief Passage',
+    'qhsefaultr063978-15': 'Please enter the event details',
+    'qhsefaultr063978-16': 'Attachments/Site Images',
+    'qhsefaultr063978-17': 'Remarks',
+    'qhsefaultr063978-18': 'Please enter a note',
+    'qhsefaultr063978-19': 'Confirm',
+    'qhsefaultr063978-20': 'Cancel',
+    'qhsefaultr321236-0': 'Event Time',
+    'qhsefaultr321236-1': 'Select the time the event occurred',
+    'qhsefaultr321236-2': 'Event Level',
+    'qhsefaultr321236-3': 'Please enter event level',
+    'qhsefaultr321236-4': 'Type of occurrence',
+    'qhsefaultr321236-5': 'Please Select An Event',
+    'qhsefaultr321236-6': 'event address',
+    'qhsefaultr321236-7': 'Please enter the event address',
+    'qhsefaultr321236-8': 'Field Supervisor',
+    'qhsefaultr321236-9': 'Please enter the name of the person in charge of the site',
+    'qhsefaultr321236-10': 'Incident losses',
+    'qhsefaultr321236-11': 'Please enter the incident loss information',
+    'qhsefaultr321236-12': 'Action taken on site',
+    'qhsefaultr321236-13': 'Please enter the emergency action taken on site',
+    'qhsefaultr321236-14': 'Event Brief Passage',
+    'qhsefaultr321236-15': 'Please enter the event details',
+    'qhsefaultr321236-16': 'Attachments/Site Images',
+    'qhsefaultr321236-17': 'Remarks',
+    'qhsefaultr321236-18': 'Please enter a note',
+    'indexvue677779-0': 'Risk level',
+    'indexvue677779-1': 'Please select risk level',
+    'indexvue677779-2': 'Search',
+    'indexvue677779-3': 'Reset',
+    'indexvue677779-4': 'Add',
+    'indexvue677779-5': 'Export',
+    'indexvue677779-6': 'Region (pos)',
+    'indexvue677779-7': 'No.',
+    'indexvue677779-8': 'Hazard Factor Description',
+    'indexvue677779-9': 'Possible Consequences',
+    'indexvue677779-10': 'Risk evaluation',
+    'indexvue677779-11': 'Likelihood',
+    'indexvue677779-12': 'Severity (S)',
+    'indexvue677779-13': '& Risk value',
+    'indexvue677779-14': 'Control Measures',
+    'indexvue677779-15': 'Responsible Person',
+    'indexvue677779-16': 'Actions',
+    'indexvue677779-17': 'Edit',
+    'indexvue677779-18': 'Delete',
+    'indexvue677779-19': 'Please enter area/location',
+    'indexvue677779-20': 'Please enter hazard factor description',
+    'indexvue677779-21': 'Possible Consequences',
+    'indexvue677779-22': 'Please enter possible consequences',
+    'indexvue677779-23': 'Risk Assessment Likelihood',
+    'indexvue677779-24': 'Risk Assessment Severity',
+    'indexvue677779-25': 'Risk Assessment Risk Value',
+    'indexvue677779-26': 'Please enter responsible person',
+    'indexvue677779-27': 'Remarks',
+    'indexvue677779-28': 'Please enter remarks',
+    'indexvue677779-29': 'Please enter control measures',
+    'indexvue677779-30': 'Cancel',
+    'indexvue677779-31': 'Confirm',
+    'hiddenclas732977-0': 'Parent category',
+    'hiddenclas732977-1': 'Please select a parent category',
+    'hiddenclas732977-2': 'Category Name',
+    'hiddenclas732977-3': 'Please enter category name',
+    'hiddenclas732977-4': 'Display Order',
+    'hiddenclas732977-5': 'Status',
+    'hiddenclas732977-6': 'Please select status',
+    'hiddenclas732977-7': 'Remarks',
+    'hiddenclas732977-8': 'Please enter remarks',
+    'hiddenclas732977-9': 'Confirm',
+    'hiddenclas732977-10': 'Cancel',
+    'indexvue359203-0': 'Category Name',
+    'indexvue359203-1': 'Please enter category name',
+    'indexvue359203-2': 'Classify status',
+    'indexvue359203-3': 'Please select category status',
+    'indexvue359203-4': 'Search',
+    'indexvue359203-5': 'Reset',
+    'indexvue359203-6': 'Add',
+    'indexvue359203-7': 'Sort',
+    'indexvue359203-8': 'Status',
+    'indexvue359203-9': 'Remarks',
+    'indexvue359203-10': 'Created Time',
+    'indexvue359203-11': 'Actions',
+    'indexvue359203-12': 'Edit',
+    'indexvue359203-13': 'Delete',
+    'indexvue585796-0': 'Expired',
+    'indexvue585796-1': 'Category Statistics',
+    'indexvue585796-2': 'Name',
+    'indexvue585796-3': 'Please enter the name of the measuring instrument',
+    'indexvue585796-4': 'Code',
+    'indexvue585796-5': 'Please enter the measuring instrument code',
+    'indexvue585796-6': 'Expired or not',
+    'indexvue585796-7': 'Please select whether to expire or not',
+    'indexvue585796-8': 'Is Early Warning',
+    'indexvue585796-9': 'Please select whether to warn or not',
+    'indexvue585796-10': 'Add',
+    'indexvue585796-11': 'Export',
+    'indexvue585796-12': 'Name',
+    'indexvue585796-13': 'Serial Number',
+    'indexvue585796-14': 'Department Name',
+    'indexvue585796-15': 'Precision',
+    'indexvue585796-16': 'Responsible Person',
+    'indexvue585796-17': 'Brand',
+    'indexvue585796-18': 'Specification/Model',
+    'indexvue585796-19': 'Sort',
+    'indexvue585796-20': 'Status',
+    'indexvue585796-21': 'Scrap Time',
+    'indexvue585796-22': 'Purchase Date',
+    'indexvue585796-23': 'Price',
+    'indexvue585796-24': 'Remarks',
+    'indexvue585796-25': 'View',
+    'indexvue585796-26': 'Edit',
+    'indexvue585796-27': 'Delete',
+    'indexvue585796-28': 'Ledger expired red alert',
+    'indexvue585796-29': 'Please enter a serial number',
+    'indexvue585796-30': 'Department',
+    'indexvue585796-31': 'Please select department',
+    'indexvue585796-32': 'Please enter responsible person',
+    'indexvue585796-33': 'Please enter brand',
+    'indexvue585796-34': 'Please enter specification/model',
+    'indexvue585796-35': 'Please enter precision',
+    'indexvue585796-36': 'select a category',
+    'indexvue585796-37': 'Please select status',
+    'indexvue585796-38': 'Please select scrap time',
+    'indexvue585796-39': 'Please enter price amount',
+    'indexvue585796-40': 'Please select purchase date',
+    'indexvue585796-41': 'Please enter Description',
+    'indexvue585796-42': 'Cancel',
+    'indexvue585796-43': 'Confirm',
+    'indexvue585796-44': 'Inspection Info',
+    'indexvue585796-45': 'Certificate Coding',
+    'indexvue585796-46': 'Test/Calibration Date',
+    'indexvue585796-47': 'Testing/Calibration Bodies',
+    'indexvue585796-48': 'Test/Calibration Standards',
+    'indexvue585796-49': 'Test/Calibration Content',
+    'indexvue585796-50': 'Test/calibration expiration date',
+    'indexvue585796-51': 'Calibration Amount',
+    'indexvue585796-52': 'Attachment',
+    'indexvue585796-53': 'View',
+    'indexvue585796-54': 'No Attachment',
+    'indexvue585796-55': 'Download',
+    'indexvue585796-56': 'Confirm',
+    'indexvue598751-0': '&Genre',
+    'indexvue598751-1': 'Please select type.',
+    'indexvue598751-2': 'Name',
+    'indexvue598751-3': 'Please enter %s name',
+    'indexvue598751-4': 'Search',
+    'indexvue598751-5': 'Reset',
+    'indexvue598751-6': 'Add',
+    'indexvue598751-7': 'Export',
+    'indexvue598751-8': 'Publish Date',
+    'indexvue598751-9': 'Effective Date',
+    'indexvue598751-10': 'Latest Revision Date',
+    'indexvue598751-11': 'Publishing Department',
+    'indexvue598751-12': 'Document No.',
+    'indexvue598751-13': 'Applicable Clauses',
+    'indexvue598751-14': 'Remarks',
+    'indexvue598751-15': 'Actions',
+    'indexvue598751-16': 'Edit',
+    'indexvue598751-17': 'Delete',
+    'indexvue598751-18': 'Please enter regulation name',
+    'indexvue598751-19': 'Please select publish date',
+    'indexvue598751-20': 'Please select effective date',
+    'indexvue598751-21': 'Please select latest revision date',
+    'indexvue598751-22': 'Please enter document no.',
+    'indexvue598751-23': 'Please enter publishing department',
+    'indexvue598751-24': 'Department',
+    'indexvue598751-25': 'Please select department',
+    'indexvue598751-26': 'Please enter applicable clauses',
+    'indexvue598751-27': 'Please enter remarks',
+    'indexvue598751-28': 'Confirm',
+    'indexvue598751-29': 'Cancel',
+    'indexvue546164-0': 'Measuring instrument code',
+    'indexvue546164-1': 'Please enter the measuring instrument code',
+    'indexvue546164-2': 'Test/Calibration Date',
+    'indexvue546164-3': 'Start Date',
+    'indexvue546164-4': 'End Date',
+    'indexvue546164-5': 'Testing/Calibration Bodies',
+    'indexvue546164-6': 'Please enter the testing/calibration mechanism',
+    'indexvue546164-7': 'Test/calibration expiration date',
+    'indexvue546164-8': 'Search',
+    'indexvue546164-9': 'Reset',
+    'indexvue546164-10': 'Add',
+    'indexvue546164-11': 'Export',
+    'indexvue546164-12': 'Serial Number',
+    'indexvue546164-13': 'Name of measuring instrument',
+    'indexvue546164-14': 'Certificate Coding',
+    'indexvue546164-15': 'Test/Calibration Standards',
+    'indexvue546164-16': 'Test/Calibration Content',
+    'indexvue546164-17': 'More',
+    'indexvue546164-18': 'Detection period',
+    'indexvue546164-19': 'Precision',
+    'indexvue546164-20': 'Calibration Amount',
+    'indexvue546164-21': 'Department Name',
+    'indexvue546164-22': 'Attachment',
+    'indexvue546164-23': 'View',
+    'indexvue546164-24': 'Actions',
+    'indexvue546164-25': 'Edit',
+    'indexvue546164-26': 'Delete',
+    'indexvue546164-27': 'Download',
+    'indexvue546164-28': 'Confirm',
+    'iotmeasure707653-0': 'measurement instrument',
+    'iotmeasure707653-1': 'Select',
+    'iotmeasure707653-2': 'Certificate Coding',
+    'iotmeasure707653-3': 'Please enter the certificate code',
+    'iotmeasure707653-4': 'Test/Calibration Date',
+    'iotmeasure707653-5': 'Select Inspection/Calibration Date',
+    'iotmeasure707653-6': 'Testing/Calibration Bodies',
+    'iotmeasure707653-7': 'Please enter the testing/calibration mechanism',
+    'iotmeasure707653-8': 'Test/Calibration Standards',
+    'iotmeasure707653-9': 'Please enter inspection/calibration standard',
+    'iotmeasure707653-10': 'Test/calibration expiration date',
+    'iotmeasure707653-11': 'Select Inspection/Calibration Validity',
+    'iotmeasure707653-12': 'Precision',
+    'iotmeasure707653-13': 'Please enter precision',
+    'iotmeasure707653-14': 'Calibration Amount',
+    'iotmeasure707653-15': 'Please enter calibration amount',
+    'iotmeasure707653-16': 'Detection period',
+    'iotmeasure707653-17': 'Test/Calibration Content',
+    'iotmeasure707653-18': 'Attachment',
+    'iotmeasure707653-19': 'Confirm',
+    'iotmeasure707653-20': 'Cancel',
+    'iotmeasure707653-21': 'select Instrument',
+    'iotmeasure707653-22': 'Name of measuring instrument',
+    'iotmeasure707653-23': 'Please enter the name of the measuring instrument',
+    'iotmeasure707653-24': 'Serial Number',
+    'iotmeasure707653-25': 'Please enter a serial number',
+    'iotmeasure707653-26': 'Measuring instrument code',
+    'iotmeasure707653-27': 'Please enter the measuring instrument code',
+    'iotmeasure707653-28': 'Responsible Person',
+    'iotmeasure707653-29': 'Please enter responsible person',
+    'iotmeasure707653-30': 'Unit of Measurement',
+    'iotmeasure707653-31': 'Brand',
+    'iotmeasure707653-32': 'Specification/Model',
+    'iotmeasure707653-33': 'Sort',
+    'iotmeasure707653-34': 'Purchase Date',
+    'iotmeasure707653-35': 'Validity Period',
+    'iotmeasure707653-36': 'Date of last inspection',
+    'iotmeasure707653-37': 'Price',
+    'iotmeasure707653-38': 'Remarks',
+    'indexvue225698-0': 'Name',
+    'indexvue225698-1': 'Please enter the name of the measuring instrument',
+    'indexvue225698-2': 'Measurement Items',
+    'indexvue225698-3': 'Please enter a metering item',
+    'indexvue225698-4': 'User',
+    'indexvue225698-5': 'Please enter the user',
+    'indexvue225698-6': 'Search',
+    'indexvue225698-7': 'Reset',
+    'indexvue225698-8': 'Add',
+    'indexvue225698-9': 'Export',
+    'indexvue225698-10': 'Use Date',
+    'indexvue225698-11': 'Reason for Use',
+    'indexvue225698-12': 'Department Name',
+    'indexvue225698-13': 'Actions',
+    'indexvue225698-14': 'Edit',
+    'indexvue225698-15': 'Delete',
+    'iotmeasure566789-0': 'measurement instrument',
+    'iotmeasure566789-1': 'Select Measuring Instrument',
+    'iotmeasure566789-2': 'Use Date',
+    'iotmeasure566789-3': 'Select Use Date',
+    'iotmeasure566789-4': 'Reason for Use',
+    'iotmeasure566789-5': 'Please enter use reason',
+    'iotmeasure566789-6': 'Measurement Items',
+    'iotmeasure566789-7': 'Please enter a metering item',
+    'iotmeasure566789-8': 'User',
+    'iotmeasure566789-9': 'Please enter the user',
+    'iotmeasure566789-10': 'Department',
+    'iotmeasure566789-11': 'Please select department',
+    'iotmeasure566789-12': 'Confirm',
+    'iotmeasure566789-13': 'Cancel',
+    'iotmeasure566789-14': 'select Instrument',
+    'iotmeasure566789-15': 'Name',
+    'iotmeasure566789-16': 'Please enter the name of the measuring instrument',
+    'iotmeasure566789-17': 'Unit',
+    'iotmeasure566789-18': 'Name',
+    'iotmeasure566789-19': 'Responsible Person',
+    'iotmeasure566789-20': 'Brand',
+    'iotmeasure566789-21': 'Specification/Model',
+    'iotmeasure566789-22': 'Sort',
+    'iotmeasure566789-23': 'Purchase Date',
+    'iotmeasure566789-24': 'Validity Period',
+    'iotmeasure566789-25': 'Date of last inspection',
+    'iotmeasure566789-26': 'Price',
+    'iotmeasure566789-27': 'Remarks',
+    'indexvue032173-0': 'No.',
+    'indexvue032173-1': 'Please enter the serial number',
+    'indexvue032173-2': 'Work Owner',
+    'indexvue032173-3': 'Please enter the work owner',
+    'indexvue032173-4': 'Search',
+    'indexvue032173-5': 'Reset',
+    'indexvue032173-6': 'Add',
+    'indexvue032173-7': 'Export',
+    'indexvue032173-8': 'JSA Serial Number',
+    'indexvue032173-9': 'NO.',
+    'indexvue032173-10': 'Date',
+    'indexvue032173-11': 'Work tasks',
+    'indexvue032173-12': 'Workplace',
+    'indexvue032173-13': 'Attachment',
+    'indexvue032173-14': 'View',
+    'indexvue032173-15': 'Remarks',
+    'indexvue032173-16': 'Actions',
+    'indexvue032173-17': 'Edit',
+    'indexvue032173-18': 'Delete',
+    'indexvue032173-19': 'Download',
+    'indexvue032173-20': 'Confirm',
+    'iotsocsumm767788-0': 'Your team',
+    'iotsocsumm767788-1': 'Please select department',
+    'iotsocsumm767788-2': 'Date',
+    'iotsocsumm767788-3': 'Select date',
+    'iotsocsumm767788-4': 'No.',
+    'iotsocsumm767788-5': 'Please enter the serial number',
+    'iotsocsumm767788-6': 'Work tasks',
+    'iotsocsumm767788-7': 'Please enter work task',
+    'iotsocsumm767788-8': 'Workplace',
+    'iotsocsumm767788-9': 'Please enter a work location',
+    'iotsocsumm767788-10': 'Work Owner',
+    'iotsocsumm767788-11': 'Please enter the work owner',
+    'iotsocsumm767788-12': 'Attachment',
+    'iotsocsumm767788-13': 'Remarks',
+    'iotsocsumm767788-14': 'Please enter remarks',
+    'iotsocsumm767788-15': 'Confirm',
+    'iotsocsumm767788-16': 'Cancel',
+    'indexvue325112-0': 'Start',
+    'indexvue325112-1': 'END',
+    'indexvue325112-2': 'Monthly',
+    'indexvue325112-3': 'Quarterly',
+    'indexvue325112-4': 'Annual',
+    'indexvue325112-5': 'Inisialisasi',
+    'indexvue325112-6': 'Risk Control and Hidden Danger Management',
+    'indexvue325112-7': 'Behavioral Safety and System Warning',
+    'indexvue325112-8': 'Person',
+    'indexvue325112-9': 'Expired or not',
+    'indexvue325112-10': 'Please select whether to expire or not',
+    'indexvue325112-11': 'Is Early Warning',
+    'indexvue325112-12': 'Query',
+    'indexvue325112-13': 'Reset',
+    'indexvue325112-14': 'No.',
+    'indexvue325112-15': 'Certificate Categories',
+    'indexvue325112-16': 'Certification name',
+    'indexvue325112-17': 'Department',
+    'indexvue325112-18': 'Issued by',
+    'indexvue325112-19': 'Certificate Standards',
+    'indexvue325112-20': 'Awarded on',
+    'indexvue325112-21': 'Validity Period',
+    'indexvue325112-22': 'Expiry Reminder',
+    'indexvue325112-23': 'Remarks',
+    'indexvue325112-24': 'Actions',
+    'indexvue325112-25': 'View',
+    'indexvue325112-26': 'Certificate Expired Red Alert',
+    'indexvue325112-27': 'Attachment',
+    'indexvue325112-28': 'View',
+    'indexvue325112-29': 'Download',
+    'indexvue325112-30': 'Confirm',
+    'indexvue325112-31': 'Certificate Type',
+    'indexvue325112-32': 'Belongs to',
+    'indexvue325112-33': 'Unit',
+    'indexvue325112-34': '&Genre',
+    'indexvue325112-35': 'Get from',
+    'indexvue325112-36': 'Location',
+    'indexvue325112-37': 'Problem',
+    'indexvue325112-38': 'Hidden Danger Attachment',
+    'indexvue325112-39': 'Rectifier',
+    'indexvue325112-40': 'Rectification requirements',
+    'indexvue325112-41': 'CAPA',
+    'indexvue325112-42': 'Rectification Attachment',
+    'indexvue325112-43': 'Troubleshooting time',
+    'indexvue325112-44': 'Status',
+    'indexvue325112-45': 'Region (pos)',
+    'indexvue325112-46': 'Hazard Factor Description',
+    'indexvue325112-47': 'Possible Consequences',
+    'indexvue325112-48': 'Risk evaluation',
+    'indexvue325112-49': 'Likelihood',
+    'indexvue325112-50': 'Severity (S)',
+    'indexvue325112-51': '& Risk value',
+    'indexvue325112-52': 'Risk level',
+    'indexvue325112-53': 'Control Measures',
+    'indexvue325112-54': 'Responsible Person',
+    'indexvue325112-55': 'Name',
+    'indexvue325112-56': 'Code',
+    'indexvue325112-57': 'Serial Number',
+    'indexvue325112-58': 'Department Name',
+    'indexvue325112-59': 'Unit of Measurement',
+    'indexvue325112-60': 'Brand',
+    'indexvue325112-61': 'Specification/Model',
+    'indexvue325112-62': 'Sort',
+    'indexvue325112-63': 'Purchase Date',
+    'indexvue325112-64': 'Price',
+    'indexvue621523-0': 'Name',
+    'indexvue621523-1': 'Please enter the name of the measuring instrument',
+    'indexvue621523-2': 'Responsible Person',
+    'indexvue621523-3': 'Please enter responsible person',
+    'indexvue621523-4': 'Search',
+    'indexvue621523-5': 'Reset',
+    'indexvue621523-6': 'Add',
+    'indexvue621523-7': 'Export',
+    'indexvue621523-8': 'Primary Key ID',
+    'indexvue621523-9': 'Measuring instrument code',
+    'indexvue621523-10': 'Sort',
+    'indexvue621523-11': 'Purchase Date',
+    'indexvue621523-12': 'Brand',
+    'indexvue621523-13': 'Specification/Model',
+    'indexvue621523-14': 'Validity Period',
+    'indexvue621523-15': 'Last Inspection/Calibration Date',
+    'indexvue621523-16': 'Unit',
+    'indexvue621523-17': 'Price',
+    'indexvue621523-18': 'Image',
+    'indexvue621523-19': 'Remarks',
+    'indexvue621523-20': 'Created Time',
+    'indexvue621523-21': 'Department ID',
+    'indexvue621523-22': 'Actions',
+    'indexvue621523-23': 'Edit',
+    'indexvue621523-24': 'Delete',
+    'iotmeasure525708-0': 'Name',
+    'iotmeasure525708-1': 'Please enter the name of the measuring instrument',
+    'iotmeasure525708-2': 'Sort',
+    'iotmeasure525708-3': 'Please enter category',
+    'iotmeasure525708-4': 'Responsible Person',
+    'iotmeasure525708-5': 'Please enter responsible person',
+    'iotmeasure525708-6': 'Purchase Date',
+    'iotmeasure525708-7': 'Select Purchase Date',
+    'iotmeasure525708-8': 'Brand',
+    'iotmeasure525708-9': 'Please enter brand',
+    'iotmeasure525708-10': 'Specification/Model',
+    'iotmeasure525708-11': 'Please enter specification/model',
+    'iotmeasure525708-12': 'Validity Period',
+    'iotmeasure525708-13': 'Select Validity Period',
+    'iotmeasure525708-14': 'Last Inspection/Calibration Date',
+    'iotmeasure525708-15': 'Select Last Inspection/Calibration Date',
+    'iotmeasure525708-16': 'Unit',
+    'iotmeasure525708-17': 'Please enter unit',
+    'iotmeasure525708-18': 'Price',
+    'iotmeasure525708-19': 'Please enter price amount',
+    'iotmeasure525708-20': 'Image',
+    'iotmeasure525708-21': 'Please enter an image',
+    'iotmeasure525708-22': 'Remarks',
+    'iotmeasure525708-23': 'Please enter remarks',
+    'iotmeasure525708-24': 'Department ID',
+    'iotmeasure525708-25': 'Please enter department ID',
+    'iotmeasure525708-26': 'Confirm',
+    'iotmeasure525708-27': 'Cancel',
+    'measurecer329669-0': 'View',
+    'measurecer329669-1': 'Certificate Coding',
+    'measurecer329669-2': 'Please enter the certificate code',
+    'measurecer329669-3': 'Test/Calibration Date',
+    'measurecer329669-4': 'Start Date',
+    'measurecer329669-5': 'End Date',
+    'measurecer329669-6': 'Add',
+    'measurecer329669-7': 'Search',
+    'measurecer329669-8': 'Reset',
+    'measurecer329669-9': 'Inspection Date',
+    'measurecer329669-10': 'Inspection Institution',
+    'measurecer329669-11': 'Inspection Standard',
+    'measurecer329669-12': 'Test/Calibration Content',
+    'measurecer329669-13': 'Validity Period',
+    'measurecer329669-14': 'Detection period',
+    'measurecer329669-15': 'Precision',
+    'measurecer329669-16': 'Calibration Amount',
+    'measurecer329669-17': 'Attachment',
+    'measurecer329669-18': 'View',
+    'measurecer329669-19': 'None',
+    'measurecer329669-20': 'Download',
+    'measurecer329669-21': 'Confirm',
+    'indexvue463638-0': 'Monthly Report Title',
+    'indexvue463638-1': 'Please enter a monthly report title',
+    'indexvue463638-2': 'Creation Date',
+    'indexvue463638-3': 'Start Date',
+    'indexvue463638-4': 'End Date',
+    'indexvue463638-5': 'Search',
+    'indexvue463638-6': 'Reset',
+    'indexvue463638-7': 'Export',
+    'indexvue463638-8': 'Ticket Completed by',
+    'indexvue463638-9': 'Actions',
+    'indexvue463638-10': 'Fill in',
+    'indexvue463638-11': 'View',
+    'monthlyrep647557-0': 'Basic Information',
+    'monthlyrep647557-1': 'Department Name',
+    'monthlyrep647557-2': 'Please select your team',
+    'monthlyrep647557-3': 'Monthly Report Title',
+    'monthlyrep647557-4': 'Please enter a monthly report title',
+    'monthlyrep647557-5': 'Month/year',
+    'monthlyrep647557-6': 'Select year/month',
+    'monthlyrep647557-7': 'Man-hours and kilometers driven safely',
+    'monthlyrep647557-8': 'Number of employees',
+    'monthlyrep647557-9': 'Number of subcontractors',
+    'monthlyrep647557-10': 'Safe Mileage (km)',
+    'monthlyrep647557-11': 'Total man-hours (hours)',
+    'monthlyrep647557-12': 'Accident-free cumulative days',
+    'monthlyrep647557-13': 'Fatal accidents (occurrences)',
+    'monthlyrep647557-14': 'Loss of working hours accidents (from)',
+    'monthlyrep647557-15': 'Work Restricted Events (occurrences)',
+    'monthlyrep647557-16': 'Medical Handling Incidents (Occurrences)',
+    'monthlyrep647557-17': 'First aid kit incidents (occurrences)',
+    'monthlyrep647557-18': 'Traffic accidents (occurrence)',
+    'monthlyrep647557-19': 'Attempted Incidents ()',
+    'monthlyrep647557-20': 'Leakage incidents (occurrences)',
+    'monthlyrep647557-21': 'Number of lifesaving rule violations (times)',
+    'monthlyrep647557-22': 'Pre-shift meeting (times)',
+    'monthlyrep647557-23': 'QHSE Management Committee meetings (times)',
+    'monthlyrep647557-24': 'QHSE Monthly Meeting (s)',
+    'monthlyrep647557-25': 'Company-level hidden hazard investigation (times)',
+    'monthlyrep647557-26': 'QHSE inspection (times)',
+    'monthlyrep647557-27': 'Safety observation card (pieces)',
+    'monthlyrep647557-28': 'Work Permit Review ()',
+    'monthlyrep647557-29': 'Work safety analysis (times)',
+    'monthlyrep647557-30': 'Number of rehearsals',
+    'monthlyrep647557-31': 'Number of QHSE trainings',
+    'monthlyrep647557-32': 'QHSE Training Courses',
+    'monthlyrep647557-33': 'QHSE Training Hours (Hours)',
+    'monthlyrep647557-34': 'Environmental Data',
+    'monthlyrep647557-35': 'Water consumption (tonnes)',
+    'monthlyrep647557-36': 'Diesel consumption (in liters):',
+    'monthlyrep647557-37': 'Electricity consumption (kWh)',
+    'monthlyrep647557-38': 'Natural gas consumption (m3)',
+    'monthlyrep647557-39': 'Other Information',
+    'monthlyrep647557-40': 'Ticket Completed by',
+    'monthlyrep647557-41': 'Please select reporter',
+    'monthlyrep647557-42': 'Remarks',
+    'monthlyrep647557-43': 'Please enter a note',
+    'monthlyrep647557-44': 'Back',
+    'monthlyrep687564-0': 'Basic Information',
+    'monthlyrep687564-1': 'Department Name',
+    'monthlyrep687564-2': 'Please select your team',
+    'monthlyrep687564-3': 'Monthly Report Title',
+    'monthlyrep687564-4': 'Please enter a monthly report title',
+    'monthlyrep687564-5': 'Month/year',
+    'monthlyrep687564-6': 'Select year/month',
+    'monthlyrep687564-7': 'Man-hours and kilometers driven safely',
+    'monthlyrep687564-8': 'Number of employees',
+    'monthlyrep687564-9': 'Number of subcontractors',
+    'monthlyrep687564-10': 'Safe Mileage (km)',
+    'monthlyrep687564-11': 'Total man-hours (hours)',
+    'monthlyrep687564-12': 'Accident-free cumulative days',
+    'monthlyrep687564-13': 'Fatal accidents (occurrences)',
+    'monthlyrep687564-14': 'Loss of working hours accidents (from)',
+    'monthlyrep687564-15': 'Work Restricted Events (occurrences)',
+    'monthlyrep687564-16': 'Medical Handling Incidents (Occurrences)',
+    'monthlyrep687564-17': 'First aid kit incidents (occurrences)',
+    'monthlyrep687564-18': 'Traffic accidents (occurrence)',
+    'monthlyrep687564-19': 'Attempted Incidents ()',
+    'monthlyrep687564-20': 'Leakage incidents (occurrences)',
+    'monthlyrep687564-21': 'Number of lifesaving rule violations (times)',
+    'monthlyrep687564-22': 'Pre-shift meeting (times)',
+    'monthlyrep687564-23': 'QHSE Management Committee meetings (times)',
+    'monthlyrep687564-24': 'QHSE Monthly Meeting (s)',
+    'monthlyrep687564-25': 'Company-level hidden hazard investigation (times)',
+    'monthlyrep687564-26': 'QHSE inspection (times)',
+    'monthlyrep687564-27': 'Safety observation card (pieces)',
+    'monthlyrep687564-28': 'Work Permit Review ()',
+    'monthlyrep687564-29': 'Work safety analysis (times)',
+    'monthlyrep687564-30': 'Number of rehearsals',
+    'monthlyrep687564-31': 'Number of QHSE trainings',
+    'monthlyrep687564-32': 'QHSE Training Courses',
+    'monthlyrep687564-33': 'QHSE Training Hours (Hours)',
+    'monthlyrep687564-34': 'Environmental Data',
+    'monthlyrep687564-35': 'Water consumption (tonnes)',
+    'monthlyrep687564-36': 'Diesel consumption (in liters):',
+    'monthlyrep687564-37': 'Electricity consumption (kWh)',
+    'monthlyrep687564-38': 'Natural gas consumption (m3)',
+    'monthlyrep687564-39': 'Other Information',
+    'monthlyrep687564-40': 'Remarks',
+    'monthlyrep687564-41': 'Please enter a note',
+    'monthlyrep687564-42': 'Cancel',
+    'monthlyrep687564-43': 'Save',
+    'indexvue439912-0': 'Total Work Permits',
+    'indexvue439912-1': 'Work Permit Category Statistics',
+    'indexvue439912-2': 'Work Permit Trend Statistics',
+    'indexvue439912-3': 'PTW No.',
+    'indexvue439912-4': 'Please enter PTW no.',
+    'indexvue439912-5': 'PTW Serial No.',
+    'indexvue439912-6': 'Please enter PTW serial no.',
+    'indexvue439912-7': 'Creation Date',
+    'indexvue439912-8': 'Start Date',
+    'indexvue439912-9': 'End Date',
+    'indexvue439912-10': 'Add',
+    'indexvue439912-11': 'Export',
+    'indexvue439912-12': 'Time',
+    'indexvue439912-13': 'Work Permit Type',
+    'indexvue439912-14': 'Work Grade',
+    'indexvue439912-15': 'Work Location',
+    'indexvue439912-16': 'Work Content',
+    'indexvue439912-17': 'Workers',
+    'indexvue439912-18': 'Guardian',
+    'indexvue439912-19': 'Work Responsible Person',
+    'indexvue439912-20': 'Department',
+    'indexvue439912-21': 'Attachment',
+    'indexvue439912-22': 'View',
+    'indexvue439912-23': 'Created Time',
+    'indexvue439912-24': 'Remarks',
+    'indexvue439912-25': 'Edit',
+    'indexvue439912-26': 'Delete',
+    'indexvue439912-27': 'Your team',
+    'indexvue439912-28': 'Please select your team',
+    'indexvue439912-29': 'JSA No.',
+    'indexvue439912-30': 'Select JSA No.',
+    'indexvue439912-31': 'Select',
+    'indexvue439912-32': 'No.',
+    'indexvue439912-33': 'Please enter the serial number',
+    'indexvue439912-34': 'Please enter work content',
+    'indexvue439912-35': 'Please select work permit type',
+    'indexvue439912-36': 'Please select work grade',
+    'indexvue439912-37': 'Please enter work location',
+    'indexvue439912-38': 'Work Time',
+    'indexvue439912-39': 'Please select work time',
+    'indexvue439912-40': 'Please select workers',
+    'indexvue439912-41': 'Please select guardian',
+    'indexvue439912-42': 'Please select work responsible person',
+    'indexvue439912-43': 'Please enter remarks',
+    'indexvue439912-44': 'Cancel',
+    'indexvue439912-45': 'Confirm',
+    'indexvue439912-46': 'Download',
+    'indexvue439912-47': 'Confirm',
+    'indexvue439912-48': 'Belonging Personnel',
+    'indexvue439912-49': 'Please enter belonging personnel',
+    'indexvue439912-50': 'Certificate Type',
+    'indexvue439912-51': 'Certificate Categories',
+    'indexvue439912-52': 'Certification name',
+    'indexvue439912-53': 'Belongs to',
+    'indexvue439912-54': 'Department',
+    'indexvue439912-55': 'Issued by',
+    'indexvue439912-56': 'Certificate Standards',
+    'indexvue439912-57': 'Awarded on',
+    'indexvue439912-58': 'Validity Period',
+    'indexvue439912-59': 'Expiry Reminder',
+    'indexvue439912-60': 'Select JSA Serial No.',
+    'indexvue439912-61': 'JSA Serial Number',
+    'indexvue439912-62': 'Please enter JSA serial no.',
+    'indexvue439912-63': 'NO.',
+    'indexvue439912-64': 'Date',
+    'indexvue439912-65': 'Work tasks',
+    'indexvue439912-66': 'Workplace',
+    'indexvue439912-67': 'Work Owner',
+    'indexvue311597-0': 'Monthly Report Title',
+    'indexvue311597-1': 'Please enter a monthly report title',
+    'indexvue311597-2': 'Creation Date',
+    'indexvue311597-3': 'Start Date',
+    'indexvue311597-4': 'End Date',
+    'indexvue311597-5': 'Search',
+    'indexvue311597-6': 'Reset',
+    'indexvue311597-7': 'Ticket Completed by',
+    'indexvue311597-8': 'Approval Status',
+    'indexvue311597-9': 'Rejection Reason',
+    'indexvue311597-10': 'Actions',
+    'indexvue311597-11': 'Approval',
+    'indexvue311597-12': 'Monthly Report Review',
+    'indexvue311597-13': 'Related department',
+    'indexvue311597-14': 'Reporter',
+    'indexvue311597-15': 'Remark',
+    'indexvue311597-16': 'Reporter Supplementary Note',
+    'indexvue311597-17': 'Close',
+    'indexvue311597-18': 'Approval failed',
+    'indexvue311597-19': 'Approved',
+    'indexvue311597-20': 'Fill Rejection Reason',
+    'indexvue311597-21': 'Rejection Reason',
+    'indexvue311597-22': 'Please enter rejection reason',
+    'indexvue311597-23': 'Cancel',
+    'indexvue311597-24': 'Confirm',
+    'indexvue525575-0': 'Monthly Report Session',
+    'indexvue525575-1': 'Search',
+    'indexvue525575-2': 'Reset',
+    'indexvue525575-3': 'Monthly Report Title',
+    'indexvue525575-4': 'Actions',
+    'indexvue525575-5': 'View',
+    'previewdra741169-0': 'Basic Information',
+    'previewdra741169-1': 'Unit',
+    'previewdra741169-2': 'Summary',
+    'previewdra741169-3': 'Close',
+    'indexvue287571-0': 'Address:',
+    'indexvue287571-1': 'Please enter address',
+    'indexvue287571-2': 'Inspection Subject',
+    'indexvue287571-3': 'Please select inspection subject',
+    'indexvue287571-4': 'Status',
+    'indexvue287571-5': 'Please select status',
+    'indexvue287571-6': 'Add',
+    'indexvue287571-7': 'Export',
+    'indexvue287571-8': 'Total Hidden Dangers',
+    'indexvue287571-9': 'Unrectified Count',
+    'indexvue287571-10': 'Rectification Rate',
+    'indexvue287571-11': 'Hidden Danger Source Distribution',
+    'indexvue287571-12': 'Unit',
+    'indexvue287571-13': '&Genre',
+    'indexvue287571-14': 'Inspection Type',
+    'indexvue287571-15': 'Inspector',
+    'indexvue287571-16': 'Troubleshooting time',
+    'indexvue287571-17': 'Investigation Location',
+    'indexvue287571-18': 'Problem',
+    'indexvue287571-19': 'Attachment',
+    'indexvue287571-20': 'View',
+    'indexvue287571-21': 'Rectifier',
+    'indexvue287571-22': 'Rectification requirements',
+    'indexvue287571-23': 'Rectification Deadline',
+    'indexvue287571-24': 'CAPA',
+    'indexvue287571-25': 'Rectification Attachment',
+    'indexvue287571-26': 'Remarks',
+    'indexvue287571-27': 'Rectify',
+    'indexvue287571-28': 'Edit',
+    'indexvue287571-29': 'Delete',
+    'indexvue287571-30': 'Please select inspection type',
+    'indexvue287571-31': 'Please enter inspector',
+    'indexvue287571-32': 'Your team',
+    'indexvue287571-33': 'Please select your team',
+    'indexvue287571-34': 'Hidden Danger Category',
+    'indexvue287571-35': 'Please select hidden danger category',
+    'indexvue287571-36': 'Please select investigation time',
+    'indexvue287571-37': 'Please enter location',
+    'indexvue287571-38': 'Please enter existing problems',
+    'indexvue287571-39': 'Please enter rectification requirements',
+    'indexvue287571-40': 'Please select rectification deadline',
+    'indexvue287571-41': 'Please select rectifier',
+    'indexvue287571-42': 'Photo',
+    'indexvue287571-43': 'Please enter remarks',
+    'indexvue287571-44': 'Cancel',
+    'indexvue287571-45': 'Confirm',
+    'indexvue287571-46': 'Rectification Description',
+    'indexvue287571-47': 'Please enter rectification description',
+    'indexvue287571-48': 'Download',
+    'indexvue287571-49': 'Confirm',
+    'indexvue854982-0': 'Category Name',
+    'indexvue854982-1': 'Please enter category name',
+    'indexvue854982-2': 'Classify status',
+    'indexvue854982-3': 'Please select category status',
+    'indexvue854982-4': 'Search',
+    'indexvue854982-5': 'Reset',
+    'indexvue854982-6': 'Add',
+    'indexvue854982-7': 'Sort',
+    'indexvue854982-8': 'Status',
+    'indexvue854982-9': 'Remarks',
+    'indexvue854982-10': 'Created Time',
+    'indexvue854982-11': 'Actions',
+    'indexvue854982-12': 'Edit',
+    'indexvue854982-13': 'Delete',
+    'socclassif766499-0': 'Parent category',
+    'socclassif766499-1': 'Please select a parent category',
+    'socclassif766499-2': 'Category Name',
+    'socclassif766499-3': 'Please enter category name',
+    'socclassif766499-4': 'Display Order',
+    'socclassif766499-5': 'Status',
+    'socclassif766499-6': 'Please select status',
+    'socclassif766499-7': 'Remarks',
+    'socclassif766499-8': 'Please enter remarks',
+    'socclassif766499-9': 'Confirm',
+    'socclassif766499-10': 'Cancel',
+    'indexvue274208-0': 'Back to Overview',
+    'indexvue274208-1': 'Name',
+    'indexvue274208-2': 'Please enter full name',
+    'indexvue274208-3': 'Team Name',
+    'indexvue274208-4': 'Please enter team name',
+    'indexvue274208-5': 'Observation date',
+    'indexvue274208-6': 'Start Date',
+    'indexvue274208-7': 'End Date',
+    'indexvue274208-8': 'Search',
+    'indexvue274208-9': 'Reset',
+    'indexvue274208-10': 'Add',
+    'indexvue274208-11': 'Export',
+    'indexvue274208-12': 'Project Dept',
+    'indexvue274208-13': 'Type Name',
+    'indexvue274208-14': 'Job position',
+    'indexvue274208-15': 'Elaboration',
+    'indexvue274208-16': 'Created Time',
+    'indexvue274208-17': 'Actions',
+    'indexvue274208-18': 'Download',
+    'indexvue274208-19': 'Edit',
+    'indexvue274208-20': 'Delete',
+    'indexvue274208-21': 'Document Preview',
+    'iotsocsumm123999-0': 'Team',
+    'iotsocsumm123999-1': 'Please select belonging team',
+    'iotsocsumm123999-2': 'Observation date',
+    'iotsocsumm123999-3': 'Select Observation Date',
+    'iotsocsumm123999-4': 'SOC Type',
+    'iotsocsumm123999-5': 'Please select SOC type',
+    'iotsocsumm123999-6': 'Name',
+    'iotsocsumm123999-7': 'Please enter full name',
+    'iotsocsumm123999-8': 'Job position',
+    'iotsocsumm123999-9': 'Please enter post',
+    'iotsocsumm123999-10': 'Elaboration',
+    'iotsocsumm123999-11': 'Please enter a detailed description',
+    'iotsocsumm123999-12': 'Confirm',
+    'iotsocsumm123999-13': 'Cancel'
+  },
+  videocenter: {
+    'indexvue061263-0': 'Search',
+    'indexvue061263-1': 'Reset',
+    'indexvue061263-2': 'Add',
+    'indexvue061263-3': 'Product Category Name',
+    'indexvue061263-4': 'Remarks',
+    'indexvue061263-5': 'System Defined',
+    'indexvue061263-6': 'Display Sequence',
+    'indexvue061263-7': 'Created Time',
+    'indexvue061263-8': 'Actions',
+    'indexvue061263-9': 'View',
+    'indexvue061263-10': 'Delete',
+    'indexvue061263-11': 'System defined, cannot be modified',
+    'indexvue061263-12': 'Product Category',
+    'indexvue061263-13': 'Category Name',
+    'indexvue061263-14': 'Please enter a product category name',
+    'indexvue061263-15': 'Please enter display sequence',
+    'indexvue061263-16': 'Please enter content',
+    'indexvue061263-17': 'Modify',
+    'indexvue061263-18': 'Add',
+    'indexvue061263-19': 'Cancel',
+    'baidumappi204970-0': 'Enter address to search',
+    'baidumappi204970-1': 'Search Address',
+    'baidumappi204970-2': "selectedPoint ? 'Pick Result' : 'Operation Hint'",
+    'baidumappi204970-3': 'Coordinate',
+    'baidumappi204970-4': 'Address',
+    'baidumappi204970-5': 'Operation Hint',
+    'baidumappi204970-6': 'Click the map to select a location, or enter an address to search',
+    'baidumappi204970-7': 'Cancel',
+    'baidumappi204970-8': 'Confirm',
+    'batchimpor032690-0': 'Products',
+    'batchimpor032690-1': 'Please, select a product.',
+    'batchimpor032690-2': 'Upload File',
+    'batchimpor032690-3': 'Drag file here,',
+    'batchimpor032690-4': 'click to upload.',
+    'batchimpor032690-5': 'Download Device Import Template',
+    'batchimpor032690-6': 'Confirm',
+    'batchimpor032690-7': 'Cancel',
+    'deviceedit461878-0': 'Department',
+    'deviceedit461878-1': 'Please select department',
+    'deviceedit461878-2': 'Link Device',
+    'deviceedit461878-3': 'Please select device to associate',
+    'deviceedit461878-4': 'Publish',
+    'deviceedit461878-5': 'Subscribe',
+    'deviceedit461878-6': 'Custom',
+    'deviceedit461878-7': 'Inisialisasi',
+    'deviceedit461878-8': 'Custom',
+    'deviceedit461878-9': 'Edit',
+    'deviceedit461878-10': "'Please select coordinate position'",
+    'indexvue471783-0': 'Device Name',
+    'indexvue471783-1': 'Please enter device name',
+    'indexvue471783-2': 'Department',
+    'indexvue471783-3': 'Please select department',
+    'indexvue471783-4': 'Device No.',
+    'indexvue471783-5': 'Please enter the device number',
+    'indexvue471783-6': 'Device Status',
+    'indexvue471783-7': 'Please select device status',
+    'indexvue471783-8': 'Query',
+    'indexvue471783-9': 'Reset',
+    'indexvue471783-10': 'Add',
+    'indexvue471783-11': 'Manual Addition',
+    'indexvue471783-12': 'Batch import',
+    'indexvue471783-13': 'Icons',
+    'indexvue471783-14': 'NO.',
+    'indexvue471783-15': 'product?',
+    'indexvue471783-16': 'Protocol',
+    'indexvue471783-17': 'Communications protocol',
+    'indexvue471783-18': 'Number of child devices',
+    'indexvue471783-19': 'device shadow',
+    'indexvue471783-20': 'Enable',
+    'indexvue471783-21': 'Disable',
+    'indexvue471783-22': 'Status',
+    'indexvue471783-23': 'Signal',
+    'indexvue471783-24': 'Positioning Method',
+    'indexvue471783-25': 'Firmware Version',
+    'indexvue471783-26': 'Activation Time',
+    'indexvue471783-27': 'Created Time',
+    'indexvue471783-28': 'Actions',
+    'indexvue471783-29': 'Delete',
+    'indexvue471783-30': 'View',
+    'indexvue471783-31': 'QR code',
+    'indexvue471783-32': 'Shared devices',
+    'indexvue471783-33': 'Products',
+    'indexvue471783-34': 'Link Device',
+    'indexvue471783-35': 'More',
+    'indexvue471783-36': 'Operating Status',
+    'indexvue471783-37': 'Device QR Code',
+    'productlis414263-0': 'Select Products',
+    'productlis414263-1': 'Please enter product name',
+    'productlis414263-2': 'Query',
+    'productlis414263-3': 'Reset',
+    'productlis414263-4': 'Category Name',
+    'productlis414263-5': 'Tenant name',
+    'productlis414263-6': 'Authentication',
+    'productlis414263-7': 'Network method',
+    'productlis414263-8': 'Created Time',
+    'productlis414263-9': 'Confirm',
+    'productlis414263-10': 'Cancel',
+    'indexvue555908-0': 'Monitoring Point Directory',
+    'indexvue555908-1': 'Enter monitoring point name and press Enter to search',
+    'indexvue555908-2':
+      "data.onlineStatus === true\n                    ? 'Online'\n                    : data.onlineStatus === false\n                      ? 'Offline'\n                      : 'Unknown Status'",
+    'indexvue555908-3': 'Search only filters currently loaded nodes',
+    'indexvue555908-4': 'Close Preview',
+    'indexvue555908-5': 'No Monitoring',
+    'indexvue555908-6': 'Capture Current Frame',
+    'indexvue555908-7': 'Open PTZ Control',
+    'indexvue555908-8': 'PTZ Control',
+    'indexvue555908-9': '`Viewport ${windowIndex + 1} PTZ Direction Control`',
+    'indexvue555908-10':
+      "sidebarCollapsed ? 'Expand Monitoring Point Directory' : 'Collapse Monitoring Point Directory'",
+    'indexvue555908-11': 'Close All Monitoring Frames',
+    'indexvue555908-12': 'Capture All',
+    'indexvue555908-13': 'Split Layout',
+    'indexvue555908-14': 'Select Split Layout',
+    'indexvue555908-15': '`Switch to ${option.count} Split Screen`',
+    'indexvue555908-16': '`${option.count} Split Screen`',
+    'indexvue555908-17': "stageFullscreen ? 'Exit Fullscreen' : 'Fullscreen'",
+    'indexvue579465-0': 'Refresh',
+    'indexvue579465-1': 'Delete',
+    'indexvue579465-2': 'View',
+    'indexvue579465-3': 'Edit',
+    'mediaserve100969-0': 'Streaming Server Node',
+    'mediaserve100969-1': 'Cancel',
+    'mediaserve100969-2': 'Test',
+    'mediaserve100969-3': 'Submit',
+    'userlistvu948695-0': 'Confirm',
+    'userlistvu948695-1': 'Cancel',
+    'dayvue606377-0': 'Do not specify',
+    'dayvue606377-1': 'Cycle from',
+    'dayvue606377-2': 'Harian',
+    'dayvue606377-3': 'FROM',
+    'dayvue606377-4': 'starts from No., every',
+    'dayvue606377-5': 'day execute once',
+    'dayvue606377-6': 'Monthly',
+    'dayvue606377-7': 'the nearest working day to No.',
+    'dayvue606377-8': 'Last day of this month',
+    'dayvue606377-9': 'Appoint',
+    'dayvue606377-10': 'Bisa memilih banyak',
+    'hourvue622439-0': 'Cycle from',
+    'hourvue622439-1': 'Jam',
+    'hourvue622439-2': 'FROM',
+    'hourvue622439-3': 'starts from hour, every',
+    'hourvue622439-4': 'hour execute once',
+    'hourvue622439-5': 'Appoint',
+    'hourvue622439-6': 'Bisa memilih banyak',
+    'indexvue617247-0': 'Detik',
+    'indexvue617247-1': 'Menit',
+    'indexvue617247-2': 'Jam',
+    'indexvue617247-3': 'Harian',
+    'indexvue617247-4': 'Month',
+    'indexvue617247-5': 'Week',
+    'indexvue617247-6': '&Year',
+    'indexvue617247-7': 'Time Expression',
+    'indexvue617247-8': 'Confirm',
+    'indexvue617247-9': 'Reset',
+    'indexvue617247-10': 'Cancel',
+    'minvue079391-0': 'Cycle from',
+    'minvue079391-1': 'Menit',
+    'minvue079391-2': 'FROM',
+    'minvue079391-3': 'starts from minute, every',
+    'minvue079391-4': 'minute execute once',
+    'minvue079391-5': 'Appoint',
+    'minvue079391-6': 'Bisa memilih banyak',
+    'monthvue307469-0': 'Cycle from',
+    'monthvue307469-1': 'Month',
+    'monthvue307469-2': 'FROM',
+    'monthvue307469-3': 'starts from month, every',
+    'monthvue307469-4': 'month execute once',
+    'monthvue307469-5': 'Appoint',
+    'monthvue307469-6': 'Bisa memilih banyak',
+    'secondvue980407-0': 'Cycle from',
+    'secondvue980407-1': 'Detik',
+    'secondvue980407-2': 'FROM',
+    'secondvue980407-3': 'starts from second, every',
+    'secondvue980407-4': 'second execute once',
+    'secondvue980407-5': 'Appoint',
+    'secondvue980407-6': 'Bisa memilih banyak',
+    'weekvue340407-0': 'Do not specify',
+    'weekvue340407-1': 'Period from weekday',
+    'weekvue340407-2': 'the',
+    'weekvue340407-3': 'weekday of the week',
+    'weekvue340407-4': 'last weekday of this month',
+    'weekvue340407-5': 'Appoint',
+    'weekvue340407-6': 'Monday',
+    'yearvue909120-0': 'Yearly',
+    'yearvue909120-1': 'Cycle from',
+    'yearvue909120-2': 'FROM',
+    'yearvue909120-3': 'starts from year, every',
+    'yearvue909120-4': 'year execute once',
+    'yearvue909120-5': 'Appoint',
+    'yearvue909120-6': 'Bisa memilih banyak',
+    'indexvue707732-0': 'Please upload',
+    'indexvue707732-1': 'Size not exceeding',
+    'indexvue707732-2': 'Format is',
+    'indexvue707732-3': ' file',
+    'indexvue707732-4': 'Sneak Peak',
+    'indexvue294717-0': "showSearch ? 'Hide Search' : 'Show Search'",
+    'indexvue294717-1': 'Refresh',
+    'indexvue294717-2': 'Show/Hide Columns',
+    'indexvue737876-0': 'Add',
+    'indexvue737876-1': 'Shared devices',
+    'indexvue737876-2': 'Published',
+    'indexvue737876-3': 'Unpublished',
+    'indexvue737876-4': 'Published in',
+    'indexvue737876-5': 'Product type',
+    'indexvue737876-6': 'Network method',
+    'indexvue737876-7': 'Device authorization',
+    'indexvue737876-8': 'Enabled',
+    'indexvue737876-9': 'Not enabled',
+    'indexvue737876-10': 'More',
+    'indexvue737876-11': 'Delete',
+    'indexvue737876-12': 'View devices',
+    'indexvue737876-13': 'Icons',
+    'indexvue737876-14': 'Name',
+    'indexvue737876-15': 'Belonging Type',
+    'indexvue737876-16': 'Publish Status',
+    'indexvue737876-17': 'Actions',
+    'productedi930070-0': 'Communications protocol',
+    'productedi930070-1': 'Please select an agreement',
+    'productedi930070-2': 'Acquisition Point Template',
+    'productedi930070-3': 'Delete',
+    'productedi930070-4': 'Choose Template',
+    'productedi930070-5': 'Please select a device type',
+    'productedi930070-6': 'User Login',
+    'productedi930070-7': 'Response Data Key',
+    'productedi930070-8': 'Request Interval',
+    'productedi930070-9': 'Please enter cron execution expression',
+    'productedi930070-10': 'Generate Expression',
+    'productedi930070-11': 'Request Method',
+    'productedi930070-12': 'Please select',
+    'productedi930070-13': 'Request URL',
+    'productedi930070-14': 'e.g.: http:127.0.0.1/',
+    'productedi930070-15': 'Request Parameters',
+    'productedi930070-16': 'Input',
+    'productedi930070-17': 'Actions',
+    'productedi930070-18': 'Please enter content',
+    'productedi930070-19': 'Device Address',
+    'productedi930070-20': 'Community Name',
+    'productedi930070-21': 'OID Info',
+    'productedi930070-22': 'Name',
+    'productedi930070-23': 'Template Name',
+    'productedi930070-24': 'Search',
+    'productedi930070-25': 'Reset',
+    'productedi930070-26': 'Select Acquisition Point Template',
+    'productedi930070-27': 'Object Model List',
+    'productedi930070-28': 'Object model name',
+    'productedi930070-29': 'Registers',
+    'productedi930070-30': 'Value Type',
+    'productedi930070-31': 'Cancel',
+    'productedi930070-32': 'Confirm',
+    'productedi930070-33': 'Login Info',
+    'productedi930070-34': 'Akun',
+    'productedi930070-35': 'Please input your account',
+    'productedi930070-36': 'Password',
+    'productedi930070-37': 'Password',
+    'productedi930070-38': 'Login URL',
+    'productedi930070-39': 'Please enter login URL, e.g.: http:127.0.0.1/',
+    'productedi930070-40': 'Cron Expression Builder',
+    'productthi249005-0': 'Device Slave:',
+    'productthi249005-1': 'Please select device slave',
+    'productthi249005-2': 'Gateway Object Model',
+    'productthi249005-3': 'Register address (decimal)',
+    'productthi249005-4': 'Real time monitoring',
+    'productthi249005-5': 'App showcase',
+    'productthi249005-6': 'Read-Only',
+    'productthi249005-7': 'Register Address',
+    'productthi249005-8': 'Control formula',
+    'productthi249005-9': 'Update',
+    'productthi249005-10': 'Tambah',
+    'productthi249005-11': 'Cancel',
+    'productthi249005-12': 'Import',
+    'productthi249005-13': 'Close',
+    'parameterv371458-0': 'Edit Parameter',
+    'parameterv371458-1': 'Please enter the object model name',
+    'parameterv371458-2': 'Search',
+    'parameterv371458-3': 'Click to Apply Template',
+    'parameterv371458-4': 'Select',
+    'parameterv371458-5': 'Name',
+    'parameterv371458-6': 'Identifier',
+    'parameterv371458-7': 'Data Type',
+    'parameterv371458-8': 'Parameter Name',
+    'parameterv371458-9': 'e.g.: Temperature',
+    'parameterv371458-10': 'Parameter ID',
+    'parameterv371458-11': 'e.g.: temperature',
+    'parameterv371458-12': 'Parameter Sort Order',
+    'parameterv371458-13': 'Please enter sort order',
+    'parameterv371458-14': 'Parameter Feature',
+    'parameterv371458-15': 'Please select a data type',
+    'parameterv371458-16': 'Integer number',
+    'parameterv371458-17': '(Decimal',
+    'parameterv371458-18': 'Boolean',
+    'parameterv371458-19': 'Enum',
+    'parameterv371458-20': 'String',
+    'parameterv371458-21': 'Value Range',
+    'parameterv371458-22': 'Minimum',
+    'parameterv371458-23': 'to',
+    'parameterv371458-24': 'Maximum',
+    'parameterv371458-25': 'Unit',
+    'parameterv371458-26': 'e.g.: ℃',
+    'parameterv371458-27': 'step?',
+    'parameterv371458-28': 'e.g.: 1',
+    'parameterv371458-29': 'Boolean',
+    'parameterv371458-30': 'Ex: Close',
+    'parameterv371458-31': 'Ex: Open',
+    'parameterv371458-32': 'Presentation',
+    'parameterv371458-33': 'Please select a display method',
+    'parameterv371458-34': 'Drop Down',
+    'parameterv371458-35': 'Buttons',
+    'parameterv371458-36': 'Enumerate items',
+    'parameterv371458-37': 'e.g.: 0',
+    'parameterv371458-38': 'e.g.: Medium speed gear',
+    'parameterv371458-39': 'Delete',
+    'parameterv371458-40': 'Add Enum',
+    'parameterv371458-41': 'Max Length',
+    'parameterv371458-42': 'Ex: 1024',
+    'parameterv371458-43': 'Submit',
+    'parameterv371458-44': 'Cancel',
+    'indexvue277993-0': 'Protocol Name',
+    'indexvue277993-1': 'Protocol Code',
+    'indexvue277993-2': 'Please enter protocol code',
+    'indexvue277993-3': 'Search',
+    'indexvue277993-4': 'Reset',
+    'indexvue277993-5': 'Protocol Summary',
+    'indexvue277993-6': 'Upload URL',
+    'indexvue277993-7': 'Protocol Type',
+    'indexvue277993-8': 'Please enter protocol name',
+    'indexvue277993-9': 'Please enter content',
+    'indexvue277993-10': 'Please enter protocol file summary (file md5)',
+    'indexvue277993-11': 'Confirm',
+    'indexvue277993-12': 'Cancel',
+    'channelvue472496-0': 'Refresh',
+    'channelvue472496-1': 'Actions',
+    'devicelive715034-0': 'Channel Name:',
+    'devicelive715034-1': 'Please select',
+    'devicetree219916-0': 'Devices list',
+    'devicetree219916-1': 'Online Device',
+    'devicetree219916-2': 'Offline Devices',
+    'devicetree219916-3': 'Online Channel',
+    'devicetree219916-4': 'Offline Channel',
+    'devicetree219916-5': 'Online Channel - PTZ',
+    'devicetree219916-6': 'Offline Channel - PTZ',
+    'devicetree219916-7': 'Online Channel - Dome',
+    'devicetree219916-8': 'Offline Channel - Dome',
+    'devicetree219916-9': 'Online Channel - Bullet',
+    'devicetree219916-10': 'Offline Channel - Bullet',
+    'devicevide505437-0': 'Channel:',
+    'devicevide505437-1': 'Please select',
+    'devicevide505437-2': 'Date:',
+    'devicevide505437-3': 'Select date',
+    'devicevide505437-4': 'View Recording',
+    'devicevide505437-5': 'View',
+    'devicevide505437-6': 'Time:',
+    'devicevide505437-7': 'Start Time',
+    'devicevide505437-8': 'End Time',
+    'devicevide505437-9': 'Select a time range',
+    'devicevide505437-10': 'Download Selected Recording',
+    'devicevide505437-11': 'Transfer',
+    'playervue826489-0': 'In',
+    'playervue826489-1': 'ZOOM&#10;OUT',
+    'indexvue478271-0': 'Search',
+    'indexvue478271-1': 'Reset',
+    'indexvue478271-2': 'Tambah',
+    'indexvue478271-3': 'Delete',
+    'indexvue478271-4': 'Device No.',
+    'indexvue478271-5': 'Actions',
+    'indexvue478271-6': 'Cancel',
+    'indexvue478271-7': 'Confirm',
+    'productlis738271-0': 'Product Name',
+    'productlis738271-1': 'Please enter product name',
+    'productlis738271-2': 'Select',
+    'productlis738271-3': 'Category Name',
+    'productlis738271-4': 'Confirm',
+    'productlis738271-5': 'Close',
+    'sipconfigv332553-0': 'Update',
+    'sipconfigv332553-1': 'Tambah',
+    'sipidgenvu260414-0': 'Cancel',
+    'indexvue453783-0': 'Device Name',
+    'indexvue453783-1': 'Please enter device name',
+    'indexvue453783-2': 'Channel',
+    'indexvue453783-3': 'Please select channel',
+    'indexvue453783-4': 'Alarm Type',
+    'indexvue453783-5': 'Please select alarm type',
+    'indexvue453783-6': 'Query',
+    'indexvue453783-7': 'Reset',
+    'indexvue453783-8': 'Channel Name',
+    'indexvue453783-9': 'Channel ID',
+    'indexvue453783-10': 'Alarm time',
+    'indexvue453783-11': 'Alarm Count',
+    'indexvue453783-12': 'Event State',
+    'indexvue453783-13': 'AI Algorithm',
+    'indexvue453783-14': 'Alarm Description',
+    'indexvue453783-15': 'Image',
+    'indexvue453783-16': 'View',
+    'indexvue453783-17': 'No Image',
+    'indexvue453783-18': 'Alarm Image'
+  },
+  yfclass: {
+    'indexvue328742-0': 'Code Category Name',
+    'indexvue328742-1': 'Please enter code category name',
+    'indexvue328742-2': 'Code Category Status',
+    'indexvue328742-3': 'Please select code category status',
+    'indexvue328742-4': 'Search',
+    'indexvue328742-5': 'Reset',
+    'indexvue328742-6': 'Add',
+    'indexvue328742-7': 'Code Category Code',
+    'indexvue328742-8': 'Sort',
+    'indexvue328742-9': 'Affiliated companies',
+    'indexvue328742-10': 'Ruiheng Xingyu',
+    'indexvue328742-11': 'Sichuan Ruidu',
+    'indexvue328742-12': 'Ruiying International',
+    'indexvue328742-13': 'Dongfang Petroleum',
+    'indexvue328742-14': 'Ruilin Technology',
+    'indexvue328742-15': 'Ruiqi Energy',
+    'indexvue328742-16': 'Status',
+    'indexvue328742-17': 'Remarks',
+    'indexvue328742-18': 'Created Time',
+    'indexvue328742-19': 'Actions',
+    'indexvue328742-20': 'Edit',
+    'indexvue328742-21': 'Delete',
+    'yfclassify716177-0': 'Parent Code Category',
+    'yfclassify716177-1': 'Please select parent code category',
+    'yfclassify716177-2': 'Category Name',
+    'yfclassify716177-3': 'Please enter category name',
+    'yfclassify716177-4': 'Code',
+    'yfclassify716177-5': 'Please enter code',
+    'yfclassify716177-6': 'Display Order',
+    'yfclassify716177-7': 'Status',
+    'yfclassify716177-8': 'Please select status',
+    'yfclassify716177-9': 'Remarks',
+    'yfclassify716177-10': 'Please enter remarks',
+    'yfclassify716177-11': 'Confirm',
+    'yfclassify716177-12': 'Cancel'
+  },
+
+  'report-stats': {
+    'device-report0': 'Device Number',
+    'device-report1': 'Device Status',
+    'col-category-top': 'Category TOP',
+    'col-device-code': 'Device Code',
+    'col-device-name': 'Device Name',
+    'btn-export': 'Export',
+    'col-company': 'Company',
+    'col-department': 'Department',
+    'col-manufacturer': 'Manufacturer',
+    'col-produce-date': 'Production Date',
+    'col-commission-date': 'Commissioning Date',
+    year: 'Year',
+    month: 'Month',
+    day: 'Day',
+    'device-report2': 'Work order',
+    'device-report3': 'Completed',
+    'device-report4': 'Uncompleted',
+    'device-report5': 'Ignored',
+    'device-report6': 'Abnormal device',
+    'device-report7': 'Company',
+    'device-report8': 'Project',
+    'device-report9': 'Details‌',
+    'device-report10': 'Outlier'
   }
 }

+ 1 - 1
src/locales/ru.ts

@@ -935,7 +935,7 @@ export default {
     search: '搜索',
     reset: '重置',
     add: '新增',
-    unfold: '展开/折叠',
+    unfold: 'Expand/Collapse',
     superiorBOM: '上级BOM',
     bomHolder: '请选择上级BOM',
     BOMNodeAttributes: 'BOM节点属性',

+ 7003 - 20
src/locales/zh-CN.ts

@@ -39,7 +39,283 @@ export default {
     daysToDate: '截至当前连续安全生产天数',
     drillingCompletion: '钻井完成情况',
     drillingWork: '钻井工作量情况',
-    wellWorkoverWorkload: '修井工作量情况'
+    wellWorkoverWorkload: '修井工作量情况',
+    'rhkbavue616875-0': '开始日期',
+    'rhkbavue616875-1': '结束日期',
+    'rhkbavue616875-2': '项目部',
+    'rhkbavue616875-3': '队伍数量',
+    'rhkbavue616875-4': '累计天数',
+    'rhkbavue616875-5': '施工天数',
+    'rhkbavue616875-6': '注气量(万方)',
+    'rhkbavue616875-7': '设备利用率',
+    'rhkbavue616875-8': '队伍名称',
+    'rykbavue662076-0': '开始日期',
+    'rykbavue662076-1': '结束日期',
+    'rykbavue662076-2': '项目部',
+    'rykbavue662076-3': '队伍数量',
+    'rykbavue662076-4': '累计天数',
+    'rykbavue662076-5': '施工天数',
+    'rykbavue662076-6': '设备利用率',
+    'rykbavue662076-7': '天',
+    'rykbavue662076-8': '队伍名称',
+    'inspectvue702065-0': '巡检统计',
+    'inspectvue702065-1': '所属部门',
+    'inspectvue702065-2': '请选择所在部门',
+    'inspectvue702065-3': '创建时间',
+    'inspectvue702065-4': '开始日期',
+    'inspectvue702065-5': '结束日期',
+    'inspectvue702065-6': '搜索',
+    'inspectvue702065-7': '重置',
+    'inspectvue702065-8': '昨日工单数量',
+    'inspectvue702065-9': '总数量',
+    'inspectvue702065-10': '未完成',
+    'inspectvue702065-11': '近一周工单数量',
+    'inspectvue702065-12': '近一月工单数量',
+    'inspectvue702065-13': '工单总数量',
+    'inspectvue702065-14': '工单状态统计',
+    'inspectvue702065-15': '已执行',
+    'inspectvue702065-16': '待执行',
+    'inspectvue702065-17': '忽略',
+    'inspectvue702065-18': '设备状态统计',
+    'inspectvue702065-19': '已填写',
+    'inspectvue702065-20': '未填写',
+    'inspectvue702065-21': '巡检项状态统计',
+    'inspectvue702065-22': '近一年数量统计',
+    'maintainvu872830-0': '维修统计',
+    'maintainvu872830-1': '平均解决时间',
+    'maintainvu872830-2': '近一周工单数量',
+    'maintainvu872830-3': '故障上报',
+    'maintainvu872830-4': '维修工单',
+    'maintainvu872830-5': '近一月工单数量',
+    'maintainvu872830-6': '工单总数量',
+    'maintainvu872830-7': '故障上报状态统计',
+    'maintainvu872830-8': '上报中',
+    'maintainvu872830-9': '处理完成',
+    'maintainvu872830-10': '转工单',
+    'maintainvu872830-11': '工单处理完成',
+    'maintainvu872830-12': '维修工单状态统计',
+    'maintainvu872830-13': '待填写',
+    'maintainvu872830-14': '已完成',
+    'maintainvu872830-15': '近一年数量统计',
+    'maintenanc557040-0': '保养统计',
+    'maintenanc557040-1': '昨日工单数量',
+    'maintenanc557040-2': '总数量',
+    'maintenanc557040-3': '未完成',
+    'maintenanc557040-4': '近一周工单数量',
+    'maintenanc557040-5': '近一月工单数量',
+    'maintenanc557040-6': '工单总数量',
+    'maintenanc557040-7': '保养工单状态统计',
+    'maintenanc557040-8': '待执行',
+    'maintenanc557040-9': '已执行',
+    'maintenanc557040-10': '工单类型统计',
+    'maintenanc557040-11': '今日工单状态统计',
+    'maintenanc557040-12': '近一年数量统计',
+    'availabili107902-0': '完好率',
+    'availabili107902-1': '台',
+    'constructi611004-0': '施工简报',
+    'constructi611004-1': '项目部',
+    'constructi611004-2': '队伍',
+    'constructi611004-3': '状态',
+    'constructi611004-4': '井号',
+    'constructi611004-5': '工艺',
+    'constructi611004-6': '使用设备',
+    'constructi611004-7': '当日施工层',
+    'constructi611004-8': '当日施工井',
+    'constructi611004-9': '当日施工简要',
+    'constructi611004-10': '上一天状态',
+    'constructi611004-11': '上一天施工层',
+    'constructi611004-12': '上一天施工井',
+    'constructi611004-13': '上一天施工简要',
+    'exceptionv686588-0': '异常统计看板',
+    'exceptionv686588-1': '生产异常',
+    'exceptionv686588-2': '巡检异常',
+    'rdcostvue544117-0': '运维成本',
+    'rddeviceca201693-0': '设备分类',
+    'rddevicest200401-0': '设备状态',
+    'rdexceptio920906-0': '异常警示',
+    'rdexceptio920906-1': '生产异常',
+    'rdexceptio920906-2': '个',
+    'rdexceptio920906-3': '暂无生产异常数据',
+    'rdexceptio920906-4': '设备异常',
+    'rdexceptio920906-5': '异常数量:',
+    'rdmaintena418068-0': '维保次数',
+    'rdratevue522056-0': '设备利用率',
+    'rdsafedayv252164-0': '安全生产天数',
+    'rdsafedayv252164-1': '连续安全生产',
+    'rdsafedayv252164-2': '天',
+    'rdusestatu895840-0': '设备使用状态',
+    'rdvaluevue936121-0': '价值分布',
+    'rdproducti350919-0': '生产日报',
+    'rdproducti350919-1': '选择日期',
+    'rdproducti350919-2': '项目',
+    'rdproducti350919-3': '队伍',
+    'rdproducti350919-4': '状态',
+    'rdproducti350919-5': '井号',
+    'rdproducti350919-6': '工艺',
+    'rdproducti350919-7': '使用设备',
+    'rdproducti350919-8': '压裂层数',
+    'rdproducti350919-9': '连油井数',
+    'rdproducti350919-10': '施工简要',
+    'rdsummaryv637921-0': '运行概况',
+    'utilizatio568079-0': '设备利用率',
+    'workloadvu435610-0': '工作量汇总',
+    'rdkb1vue290085-0': '月度工作量表',
+    'rdkb1vue290085-1': '月份',
+    'rdkb1vue290085-2': '2025年',
+    'rdkb1vue290085-3': '压裂井数',
+    'rdkb1vue290085-4': '压裂层数',
+    'rdkb1vue290085-5': '泵车台次',
+    'rdkb1vue290085-6': '连油井数',
+    'rdkb1vue290085-7': '2024年',
+    'rdkb1vue290085-8': '同比增长量',
+    'rdkb1vue290085-9': '队伍名称',
+    'rdkb1vue290085-10': '累计天数',
+    'rdkb1vue290085-11': '施工天数',
+    'rdkb1vue290085-12': '设备利用率',
+    'rdkb1vue290085-13': '序号',
+    'rdkb1vue290085-14': '项目部',
+    'rdkb1vue290085-15': '设备数量',
+    'rdkb1vue290085-16': '原值(万元)',
+    'rdkb1vue290085-17': '净值(万元)',
+    'rdkb1vue290085-18': '原值占比',
+    'rdkb1vue290085-19': '伊拉克设备分布及价值(美元)',
+    'rdkb1vue290085-20': '利比亚设备分布及价值(第纳尔)',
+    'rdkb1vue290085-21': '看板首页',
+    'rdkb1vue290085-22': '生产日报',
+    'rdkb1vue290085-23': '压裂层数',
+    'rdkb1vue290085-24': '总井数',
+    'rdkb1vue290085-25': '设备总数',
+    'rdkb1vue290085-26': '维修工单',
+    'rdkb1vue290085-27': '运行未填写',
+    'rdkb1vue290085-28': '待巡检',
+    'rdkb1vue290085-29': '待保养',
+    'rdkb1vue290085-30': '瑞都',
+    'rdkb1vue290085-31': '设备状态',
+    'rdkb1vue290085-32': '设备使用状态',
+    'rdkb1vue290085-33': '正常',
+    'rdkb1vue290085-34': '带病运行',
+    'rdkb1vue290085-35': '故障',
+    'rdkb1vue290085-36': '台',
+
+    'rdkb1vue290085-37': '公摊',
+    'rdkb1vue290085-38': '新疆',
+    'rdkb1vue290085-39': '青海',
+    'rdkb1vue290085-40': '东部',
+    'rdkb1vue290085-41': '西南连油',
+    'rdkb1vue290085-42': '西南压裂',
+    'rdkb1vue290085-43': '伊拉克',
+    'rdkb1vue290085-44': '利比亚',
+    'rdkb1vue290085-45': '原值',
+    'rdkb1vue290085-46': '净值',
+    'rdkb1vue290085-47': '价值(万元)',
+
+    'assetvalue502656-0': '资产价值',
+    'devicelist400115-0': '项目部统计',
+    'devicelist400115-1': '选择日期',
+    'devicelist400115-2': '导出',
+    'devicelist400115-3': '项目部',
+    'devicelist400115-4': '队伍总数',
+    'devicelist400115-5': '待命',
+    'devicelist400115-6': '施工准备',
+    'devicelist400115-7': '施工队伍',
+    'devicelist400115-8': '注入量(万方)',
+    'devicelist400115-9': '运行时效',
+    'devicelist400115-10': '生产动态概述',
+    'devicelist400115-11': "`${currentProjectDeptName || '项目部'}队伍明细`",
+    'devicelist400115-12': '队伍名称',
+    'devicelist400115-13': '累计天数',
+    'devicelist400115-14': '施工天数',
+    'devicelist400115-15': '设备利用率',
+    'devicelist400115-16': '日注气:',
+    'devicelist400115-17': '累注气:',
+    'devicelist400115-18': '日注水:',
+    'devicelist400115-19': '累注水:',
+    'devicelist400115-20': '当日运行时效:',
+    'devicelist400115-21': '平均运行时效:',
+    'devicestat409031-0': '设备状态统计',
+    'devicetype397647-0': '设备类别',
+    'equipmentr305758-0': '设备利用率',
+    'exceptionp726724-0': '异常警示',
+    'exceptionp726724-1': '生产异常',
+    'exceptionp726724-2': '个',
+    'exceptionp726724-3': '暂无生产异常数据',
+    'exceptionp726724-4': '设备异常',
+    'exceptionp726724-5': '异常数量:',
+    'historygas829380-0': '累计注气量统计',
+    'inventorys900385-0': '选择日期',
+    'inventorys900385-1': '存货及变动情况',
+    'inventorys900385-2': '年初存货',
+    'inventorys900385-3': '年初积压',
+    'inventorys900385-4': '期末库存',
+    'inventorys900385-5': '期末积压',
+    'inventorys900385-6': '账龄分析',
+    'inventorys900385-7': '1年以内',
+    'inventorys900385-8': '1-2年',
+    'inventorys900385-9': '2-3年',
+    'inventorys900385-10': '3年以上',
+    'inventorys900385-11': '积压比',
+    'operationv635736-0': '运维成本',
+    'ordertrend865934-0': '工单数量统计',
+    'rhsafedayv089834-0': '安全生产天数',
+    'rhsafedayv089834-1': '连续安全生产',
+    'rhsafedayv089834-2': '天',
+    'rhsummaryv272993-0': '运行概况',
+    'todaygasvu057079-0': '当日注气量统计',
+    'exceptionp321232-0': '异常警示',
+    'exceptionp321232-1': '生产异常',
+    'exceptionp321232-2': '个',
+    'exceptionp321232-3': '暂无生产异常数据',
+    'exceptionp321232-4': '设备异常',
+    'exceptionp321232-5': '异常数量:',
+    'exceptionp321232-6': '选择业务类型',
+    'exceptionp321232-7': '取消',
+    'exceptionp321232-8': '查看钻井',
+    'exceptionp321232-9': '查看修井',
+    'rydeviceli064265-0': '设备利用率',
+    'rydeviceli064265-1': '开始日期',
+    'rydeviceli064265-2': '结束日期',
+    'rydeviceli064265-3': '项目部',
+    'rydeviceli064265-4': '队伍数量',
+    'rydeviceli064265-5': '累计天数',
+    'rydeviceli064265-6': '施工天数',
+    'rydeviceli064265-7': "`${currentProjectDeptName || '项目部'}队伍明细`",
+    'rydeviceli064265-8': '队伍名称',
+    'rydevicest270813-0': '设备状态统计',
+    'ryordertre530084-0': '工单数量统计',
+    'ryproducti168743-0': '生产简报',
+    'ryproducti168743-1': '选择日期',
+    'ryproducti168743-2': '公司',
+    'ryproducti168743-3': '项目',
+    'ryproducti168743-4': '队伍',
+    'ryproducti168743-5': '生产任务',
+    'ryproducti168743-6': '运行状态',
+    'ryproducti168743-7': '下步任务',
+    'ryproducti168743-8': '当日生产简况',
+    'ryproducti168743-9': '当日进尺(m)/当日井次',
+    'ryproducti168743-10': '当日电耗(kwh)',
+    'ryproducti168743-11': '当日油耗(升)',
+    'ryproducti168743-12': '当日非生产时间',
+    'rysummaryv140289-0': '运行概况',
+    'safedayvue601265-0': '安全生产天数',
+    'safedayvue601265-1': '连续安全生产',
+    'safedayvue601265-2': '天',
+    'xjworkvue367665-0': '修井工作量情况',
+    'zjfinishvu943921-0': '钻井完成情况',
+    'zjworkvue340655-0': '钻井工作量情况',
+    'testvue814981-0': '设备数',
+    'testvue814981-1': '维修工单',
+    'testvue814981-2': '运行未填写',
+    'testvue814981-3': '运行已填写',
+    'testvue814981-4': '未执行保养',
+    'testvue814981-5': '已执行保养',
+    'testvue814981-6': '待填写巡检',
+    'testvue814981-7': '已填写巡检',
+    'testvue814981-8': '设备状态统计',
+    'testvue814981-9': '工单数量情况',
+    'testvue814981-10': '修井完成情况',
+    'testvue814981-11': '钻井完成情况',
+    'testvue814981-12': '钻井工作量情况(进尺(米))',
+    'testvue814981-13': '修井工作量情况(进尺(米))'
   },
   common: {
     sort: '排序',
@@ -99,7 +375,8 @@ export default {
     copySuccess: '复制成功',
     copyError: '复制失败',
     leftNode: '请选择左侧节点',
-    deptChoose: '请选择设备及目录'
+    deptChoose: '请选择设备及目录',
+    toggle: '展开/折叠'
   },
   lock: {
     lockScreen: '锁定屏幕',
@@ -112,14 +389,14 @@ export default {
     message: '锁屏密码错误'
   },
   error: {
-    noPermission: `抱歉,您无权访问此页面。`,
+    noPermission: '抱歉,您无权访问此页面。',
     pageError: '抱歉,您访问的页面不存在。',
     networkError: '抱歉,服务器报告错误。',
     returnToHome: '返回首页'
   },
   permission: {
-    hasPermission: `请设置操作权限标签值`,
-    hasRole: `请设置角色权限标签值`
+    hasPermission: '请设置操作权限标签值',
+    hasRole: '请设置角色权限标签值'
   },
   setting: {
     projectSetting: '项目配置',
@@ -442,16 +719,14 @@ export default {
       signInTitle: '开箱即用的中后台管理系统',
       signInDesc: '输入您的个人详细信息开始使用!',
       policy: '我同意xxx隐私政策',
-      scanSign: `扫码后点击"确认",即可完成登录`,
+      scanSign: '扫码后点击"确认",即可完成登录',
       loginButton: '登录',
       registerButton: '注册',
       rememberMe: '记住我',
       forgetPassword: '忘记密码?',
       otherSignIn: '其他登录方式',
-      // notify
       loginSuccessTitle: '登录成功',
       loginSuccessDesc: '欢迎回来',
-      // placeholder
       accountPlaceholder: '请输入账号',
       passwordPlaceholder: '请输入密码',
       smsPlaceholder: '请输入验证码',
@@ -695,7 +970,29 @@ export default {
     check: '查看',
     details: '详情',
     ifInline: '在线状态',
-    ifInlineHolder: '请选择状态'
+    ifInlineHolder: '请选择状态',
+    'indexvue448501-0': '成套名称',
+    'indexvue448501-1': '请输入成套名称',
+    'indexvue448501-2': '查看详情',
+    'kanbanvue914852-0': '返回',
+    'kanbanvue914852-1': '部门名称',
+    'kanbanvue914852-2': '井号',
+    'kanbanvue914852-3': '空气处理撬参数',
+    'kanbanvue914852-4': '中压机参数',
+    'kanbanvue914852-5': '空压机参数',
+    'kanbanvue914852-6': '液驱压缩机参数',
+    'kanban2vue728702-0': '返回',
+    'kanban2vue728702-1': '部门名称',
+    'kanban2vue728702-2': '井号',
+    'kanban2vue728702-3': '增压机参数',
+    'kanban2vue728702-4': '累计运行时间',
+    'kanban2vue728702-5': '状态参数',
+    'kanban2vue728702-6': '氮气参数',
+    'kanban2vue728702-7': '井口参数',
+    'kanban2vue728702-8': '成套类型',
+    'kanban2vue728702-9': '设备数量',
+    'kanban2vue728702-10': '在线状态',
+    'kanban2vue728702-11': '主设备'
   },
   deviceAllot: {
     setUp: '调拨设备',
@@ -868,7 +1165,179 @@ export default {
     methodDescription: '维修方式说明',
     record: '维修记录',
     phRepair: '配合维修人员',
-    phRepairHolder: '请选择配合维修人员'
+    phRepairHolder: '请选择配合维修人员',
+    'indexvue989094-0': '执行时间',
+    'indexvue989094-1': '开始日期',
+    'indexvue989094-2': '结束日期',
+    'indexvue989094-3': '创建时间',
+    'indexvue989094-4': '导出',
+    'indexvue989094-5': '维修方式',
+    'indexvue989094-6': '请选择维修方式',
+    'indexvue989094-7': '备注说明',
+    'indexvue989094-8': '请输入备注说明',
+    'indexvue989094-9': '取消',
+    'indexvue989094-10': '确定',
+    'iotmaintai791469-0': '请选择',
+    'iotmaintai802510-0': '填写设备故障、维修处理及物料使用信息',
+    'iotmaintai802510-1': '返回',
+    'iotmaintai802510-2': '工单信息',
+    'iotmaintai802510-3': '请选择',
+    'iotmaintai802510-4': '维修项目',
+    'iotmaintai802510-5': '物料明细',
+    'iotmaintai019102-0': '维修工单详情',
+    'iotmaintai019102-1': '查看设备故障、维修处理与关联物料信息',
+    'iotmaintai019102-2': '返回',
+    'iotmaintai019102-3': '基础信息',
+    'iotmaintai019102-4': '维修处理',
+    'iotmaintai019102-5': '外委信息',
+    'iotmaintai019102-6': '故障描述',
+    'iotmaintai019102-7': '关联物料',
+    'iotmaintai019102-8': '物料详情',
+    'iotmaintai309905-0': '故障编码',
+    'iotmaintai309905-1': '请输入故障编码',
+    'iotmaintai309905-2': '故障名称',
+    'iotmaintai309905-3': '请输入故障名称',
+    'iotmaintai309905-4': '状态',
+    'iotmaintai309905-5': '是否停机',
+    'iotmaintai309905-6': '请选择字典生成',
+    'iotmaintai309905-7': '故障时间',
+    'iotmaintai309905-8': '选择故障时间',
+    'iotmaintai309905-9': '故障影响',
+    'iotmaintai309905-10': '请输入故障影响',
+    'iotmaintai309905-11': '故障系统',
+    'iotmaintai309905-12': '请输入故障系统',
+    'iotmaintai309905-13': '故障描述',
+    'iotmaintai309905-14': '图片',
+    'iotmaintai309905-15': '请输入图片',
+    'iotmaintai309905-16': '解决办法',
+    'iotmaintai309905-17': '请输入解决办法',
+    'iotmaintai309905-18': '维修开始时间',
+    'iotmaintai309905-19': '选择维修开始时间',
+    'iotmaintai309905-20': '维修结束时间',
+    'iotmaintai309905-21': '选择维修结束时间',
+    'iotmaintai309905-22': '备注',
+    'iotmaintai309905-23': '请输入备注',
+    'iotmaintai309905-24': '设备名称',
+    'iotmaintai309905-25': '请输入设备名称',
+    'iotmaintai309905-26': '流程实例id',
+    'iotmaintai309905-27': '请输入流程实例id',
+    'iotmaintai309905-28': '审核状态',
+    'iotmaintai309905-29': '部门id',
+    'iotmaintai309905-30': '请输入部门id',
+    'iotmaintai309905-31': '确 定',
+    'iotmaintai309905-32': '取 消',
+    'iotmaintai216542-0': '查看设备维修信息并维护维修过程记录',
+    'iotmaintai216542-1': '返回',
+    'iotmaintai216542-2': '工单概览',
+    'iotmaintai216542-3': '油服编码',
+    'iotmaintai216542-4': '设备名称',
+    'iotmaintai216542-5': '维修类型',
+    'iotmaintai216542-6': '维修开始时间',
+    'iotmaintai216542-7': '维修结束日期',
+    'iotmaintai216542-8': '故障时间',
+    'iotmaintai216542-9': '维修人员',
+    'iotmaintai216542-10': '故障系统',
+    'iotmaintai216542-11': '维修记录',
+    'iotmaintai216542-12': '新增',
+    'iotmaintai216542-13': '时间线',
+    'iotmaintai216542-14': '维修时间',
+    'iotmaintai216542-15': '开始日期',
+    'iotmaintai216542-16': '结束日期',
+    'iotmaintai216542-17': '搜索',
+    'iotmaintai216542-18': '重置',
+    'iotmaintai216542-19': '维修项',
+    'iotmaintai216542-20': '维修内容',
+    'iotmaintai216542-21': '解决办法',
+    'iotmaintai216542-22': '图片',
+    'iotmaintai216542-23': '创建人',
+    'iotmaintai216542-24': '配合维修人员',
+    'iotmaintai216542-25': '备注',
+    'iotmaintai216542-26': '创建时间',
+    'iotmaintai216542-27': '操作',
+    'iotmaintai216542-28': '编辑',
+    'choosemate285050-0': '选择物料',
+    'choosemate285050-1': '物料编码',
+    'choosemate285050-2': '请输入物料编码',
+    'choosemate285050-3': '物料名称',
+    'choosemate285050-4': '请输入物料名称',
+    'choosemate285050-5': '搜索',
+    'choosemate285050-6': '重置',
+    'choosemate285050-7': '选择',
+    'choosemate285050-8': '单位',
+    'choosemate285050-9': '总库存数量',
+    'indexvue732422-0': '选择物料',
+    'indexvue732422-1': '新增物料',
+    'indexvue732422-2': '物料编码',
+    'indexvue732422-3': '物料名称',
+    'indexvue732422-4': '单位',
+    'indexvue732422-5': '单价',
+    'indexvue732422-6': '消耗数量',
+    'indexvue732422-7': '总库存数量',
+    'indexvue732422-8': '备注',
+    'indexvue732422-9': '物料来源',
+    'indexvue732422-10': '操作',
+    'indexvue732422-11': '移除',
+    'iotmaintai888632-0': '物料编码',
+    'iotmaintai888632-1': '请输入物料编码',
+    'iotmaintai888632-2': '物料名称',
+    'iotmaintai888632-3': '请输入物料名称',
+    'iotmaintai888632-4': '单位',
+    'iotmaintai888632-5': '请输入单位',
+    'iotmaintai888632-6': '单价',
+    'iotmaintai888632-7': '请输入单价',
+    'iotmaintai888632-8': '物料来源',
+    'iotmaintai888632-9': '请选择物料来源',
+    'iotmaintai888632-10': '请选择字典生成',
+    'iotmaintai888632-11': '备注',
+    'iotmaintai888632-12': '请输入备注',
+    'iotmaintai888632-13': '确 定',
+    'iotmaintai888632-14': '取 消',
+    'materialse565535-0': '选择物料',
+    'materialse565535-1': '物料名称',
+    'materialse565535-2': '请输入物料名称',
+    'materialse565535-3': '物料编码',
+    'materialse565535-4': '请输入物料编码',
+    'materialse565535-5': '搜索',
+    'materialse565535-6': '重置',
+    'materialse565535-7': '选择',
+    'materialse565535-8': '规格型号',
+    'materialse565535-9': '单位',
+    'materialse565535-10': '状态',
+    'materialse565535-11': '创建时间',
+    'indexvue857264-0': '设备id',
+    'indexvue857264-1': '请输入设备id',
+    'indexvue857264-2': '维修日期时间',
+    'indexvue857264-3': '开始日期',
+    'indexvue857264-4': '结束日期',
+    'indexvue857264-5': '图片',
+    'indexvue857264-6': '请输入图片',
+    'indexvue857264-7': '解决办法',
+    'indexvue857264-8': '请输入解决办法',
+    'indexvue857264-9': '备注',
+    'indexvue857264-10': '请输入备注',
+    'indexvue857264-11': '创建时间',
+    'indexvue857264-12': '设备名称',
+    'indexvue857264-13': '请输入设备名称',
+    'indexvue857264-14': '搜索',
+    'indexvue857264-15': '重置',
+    'indexvue857264-16': '新增',
+    'indexvue857264-17': '导出',
+    'indexvue857264-18': '主键id',
+    'indexvue857264-19': '维修内容',
+    'indexvue857264-20': '操作',
+    'indexvue857264-21': '编辑',
+    'indexvue857264-22': '删除',
+    'iotjdrecor921659-0': '维修时间',
+    'iotjdrecor921659-1': '选择维修时间',
+    'iotjdrecor921659-2': '维修项',
+    'iotjdrecor921659-3': '图片',
+    'iotjdrecor921659-4': '维修内容',
+    'iotjdrecor921659-5': '解决办法',
+    'iotjdrecor921659-6': '请输入解决办法',
+    'iotjdrecor921659-7': '备注',
+    'iotjdrecor921659-8': '请输入备注',
+    'iotjdrecor921659-9': '确 定',
+    'iotjdrecor921659-10': '取 消'
   },
   iotMaintain: {
     device: '设备',
@@ -990,7 +1459,32 @@ export default {
     edit: '编辑',
     classHolder1: '设备分类不能为空',
     faultyImpact: '故障影响不能为空',
-    solution: '解决办法不能为空'
+    solution: '解决办法不能为空',
+    'indexvue917001-0': '资料分类名称',
+    'indexvue917001-1': '请输入资料分类名称',
+    'indexvue917001-2': '资料分类状态',
+    'indexvue917001-3': '请选择资料分类状态',
+    'indexvue917001-4': '搜索',
+    'indexvue917001-5': '重置',
+    'indexvue917001-6': '新增',
+    'indexvue917001-7': '排序',
+    'indexvue917001-8': '状态',
+    'indexvue917001-9': '备注',
+    'indexvue917001-10': '创建时间',
+    'indexvue917001-11': '操作',
+    'indexvue917001-12': '修改',
+    'indexvue917001-13': '删除',
+    'infoclassi396975-0': '上级资料分类',
+    'infoclassi396975-1': '请选择上级资料分类',
+    'infoclassi396975-2': '资料分类名称',
+    'infoclassi396975-3': '请输入资料分类名称',
+    'infoclassi396975-4': '显示排序',
+    'infoclassi396975-5': '状态',
+    'infoclassi396975-6': '请选择状态',
+    'infoclassi396975-7': '备注',
+    'infoclassi396975-8': '请输入备注',
+    'infoclassi396975-9': '确 定',
+    'infoclassi396975-10': '取 消'
   },
   calender: {
     loading: '加载中',
@@ -1014,13 +1508,9 @@ export default {
     yd: '已提折旧月数:',
     yy: '已提折旧金额:',
     sy: '剩余金额:',
-    // 每月折旧金额
     my: '每月折旧金额:',
-    // 总折旧月份
     mmy: '总折旧月份:',
-    // 币种
     currency: '币种:',
-
     fileLibrary: '资料库',
     deviceBOM: '设备BOM',
     operationRecords: '运行记录',
@@ -1142,7 +1632,152 @@ export default {
     generateTime: '生成时间',
     executeTime: '执行时间',
     ignore: '忽略',
-    reason: '忽略理由'
+    reason: '忽略理由',
+    'indexvue505289-0': '导出',
+    'iotinspect481654-0': '维护巡检设备、巡检项目与执行标准',
+    'iotinspect481654-1': '基础信息',
+    'iotinspect481654-2': '巡检内容',
+    'indexvue220200-0': '工单id',
+    'indexvue220200-1': '请输入工单id',
+    'indexvue220200-2': '设备id',
+    'indexvue220200-3': '请输入设备id',
+    'indexvue220200-4': '巡检项id',
+    'indexvue220200-5': '请输入巡检项id',
+    'indexvue220200-6': '是否正常',
+    'indexvue220200-7': '请选择是否正常',
+    'indexvue220200-8': '请选择字典生成',
+    'indexvue220200-9': '图片',
+    'indexvue220200-10': '请输入图片',
+    'indexvue220200-11': '备注',
+    'indexvue220200-12': '请输入备注',
+    'indexvue220200-13': '创建时间',
+    'indexvue220200-14': '开始日期',
+    'indexvue220200-15': '结束日期',
+    'indexvue220200-16': '部门id',
+    'indexvue220200-17': '请输入部门id',
+    'indexvue220200-18': '搜索',
+    'indexvue220200-19': '重置',
+    'indexvue220200-20': '新增',
+    'indexvue220200-21': '导出',
+    'indexvue220200-22': '主键id',
+    'indexvue220200-23': '异常描述',
+    'indexvue220200-24': '操作',
+    'indexvue220200-25': '编辑',
+    'indexvue220200-26': '删除',
+    'iotinspect796627-0': '工单id',
+    'iotinspect796627-1': '请输入工单id',
+    'iotinspect796627-2': '设备id',
+    'iotinspect796627-3': '请输入设备id',
+    'iotinspect796627-4': '巡检项id',
+    'iotinspect796627-5': '请输入巡检项id',
+    'iotinspect796627-6': '是否正常',
+    'iotinspect796627-7': '请选择字典生成',
+    'iotinspect796627-8': '异常描述',
+    'iotinspect796627-9': '图片',
+    'iotinspect796627-10': '请输入图片',
+    'iotinspect796627-11': '备注',
+    'iotinspect796627-12': '请输入备注',
+    'iotinspect796627-13': '部门id',
+    'iotinspect796627-14': '请输入部门id',
+    'iotinspect796627-15': '确 定',
+    'iotinspect796627-16': '取 消',
+    'iotinspect089765-0': '正常',
+    'iotinspect089765-1': '待填写',
+    'iotinspect089765-2': '异常',
+    'indexvue317870-0': '导出',
+    'indexvue317870-1': '忽略理由',
+    'indexvue317870-2': '理由',
+    'indexvue317870-3': '请输入忽略理由',
+    'indexvue317870-4': '取消',
+    'indexvue317870-5': '确定',
+    'inspectord373631-0': '查看工单基础信息及设备巡检结果统计',
+    'inspectord373631-1': '返回',
+    'inspectord373631-2': '工单信息',
+    'inspectord373631-3': '巡检设备',
+    'iotinspect143656-0': '巡检工单名',
+    'iotinspect143656-1': '请输入巡检工单名',
+    'iotinspect143656-2': '巡检工单编码',
+    'iotinspect143656-3': '请输入巡检工单编码',
+    'iotinspect143656-4': '巡检工单状态',
+    'iotinspect143656-5': '请选择字典生成',
+    'iotinspect143656-6': '备注',
+    'iotinspect143656-7': '请输入备注',
+    'iotinspect143656-8': '部门id',
+    'iotinspect143656-9': '请输入部门id',
+    'iotinspect143656-10': '设备id',
+    'iotinspect143656-11': '请输入设备id',
+    'iotinspect143656-12': '确 定',
+    'iotinspect143656-13': '取 消',
+    'ordercompo248259-0': '`步骤 ${index + 1}`',
+    'ordercompo248259-1': '姓名',
+    'ordercompo248259-2': '邮箱',
+    'ordercompo248259-3': '验证码',
+    'ordercompo248259-4': '上一步',
+    'writeorder085539-0': '填写巡检工单',
+    'writeorder085539-1': '按设备和巡检项顺序填写检查结果与异常信息',
+    'writeorder085539-2': '返回',
+    'writeorder085539-3': '巡检设备',
+    'writeorder085539-4': '设备id',
+    'writeorder085539-5': '上一步',
+    'writeorder099381-0': '是否异常',
+    'writeorder099381-1': '请选择是否异常',
+    'writeorder099381-2': '异常描述',
+    'writeorder099381-3': '请填写异常描述',
+    'writeorder099381-4': '图片',
+    'writeorder099381-5': '上一步',
+    'indexvue536735-0': '导出',
+    'inspectrou344758-0': '筛选并选择需要加入计划的巡检设备路线',
+    'inspectrou344758-1': '请选择部门',
+    'inspectrou344758-2': '取消',
+    'iotinspect197586-0': '配置巡检周期、首次执行时间及设备路线顺序',
+    'iotinspect197586-1': '返回',
+    'iotinspect197586-2': '计划信息',
+    'iotinspect197586-3': '请选择首次执行时间',
+    'iotinspect197586-4': '请输入备注',
+    'iotinspect197586-5': '巡检设备路线',
+    'iotinspect470326-0': '巡检计划标题',
+    'iotinspect470326-1': '请输入巡检计划标题',
+    'iotinspect470326-2': '巡检计划编号',
+    'iotinspect470326-3': '请输入巡检计划编号',
+    'iotinspect470326-4': '周期',
+    'iotinspect470326-5': '请输入周期',
+    'iotinspect470326-6': '单位',
+    'iotinspect470326-7': '请输入单位',
+    'iotinspect470326-8': '负责人',
+    'iotinspect470326-9': '请输入负责人',
+    'iotinspect470326-10': '设备',
+    'iotinspect470326-11': '请输入设备',
+    'iotinspect470326-12': '备注',
+    'iotinspect470326-13': '请输入备注',
+    'iotinspect470326-14': '部门id',
+    'iotinspect470326-15': '请输入部门id',
+    'iotinspect470326-16': '确 定',
+    'iotinspect470326-17': '取 消',
+    'indexvue602729-0': '导出',
+    'inspectite276348-0': '筛选并选择需要加入路线的巡检项目',
+    'inspectite276348-1': '取消',
+    'iotinspect599866-0': '配置巡检设备、路线说明及巡检项执行顺序',
+    'iotinspect599866-1': '返回',
+    'iotinspect599866-2': '路线信息',
+    'iotinspect599866-3': '巡检项顺序',
+    'iotinspect952030-0': '路线名称',
+    'iotinspect952030-1': '请输入路线名称',
+    'iotinspect952030-2': '设备分类',
+    'iotinspect952030-3': '请输入设备分类',
+    'iotinspect952030-4': '设备id',
+    'iotinspect952030-5': '请输入设备id',
+    'iotinspect952030-6': '设备分类名称',
+    'iotinspect952030-7': '请输入设备分类名称',
+    'iotinspect952030-8': '设备名称',
+    'iotinspect952030-9': '请输入设备名称',
+    'iotinspect952030-10': '巡检项',
+    'iotinspect952030-11': '请输入巡检项',
+    'iotinspect952030-12': '备注',
+    'iotinspect952030-13': '请输入备注',
+    'iotinspect952030-14': '部门id',
+    'iotinspect952030-15': '请输入部门id',
+    'iotinspect952030-16': '确 定',
+    'iotinspect952030-17': '取 消'
   },
   route: {
     RouteName: '路线名称',
@@ -1188,7 +1823,35 @@ export default {
   map: {
     amplify: '放大',
     reduce: '缩小',
-    SwitchMapType: '切换地图类型'
+    SwitchMapType: '切换地图类型',
+    'devicemoni427770-0': '起始日期时间',
+    'devicemoni427770-1': '结束日期时间',
+    'mapvue383073-0': '历史编码',
+    'mapvue383073-1': '设备名称',
+    'mapvue383073-2': '所在部门',
+    'mapvue383073-3': '位置',
+    'mapvue383073-4': '状态',
+    'mapvue383073-5': '在线状态',
+    'mapvue383073-6': '最后在线时间',
+    'mapvue383073-7': '查看监测详情',
+    'mapvue383073-8': '设备智览地图',
+    'mapvue383073-9': '设备位置、在线状态与监测入口,支持部门筛选、聚合放大和一键追踪。',
+    'mapvue383073-10': '地图',
+    'mapvue383073-11': '卫星',
+    'mapvue383073-12': '设备总数',
+    'mapvue383073-13': '在线设备',
+    'mapvue383073-14': '离线设备',
+    'mapvue383073-15': '筛选结果',
+    'mapvue383073-16': '关键词',
+    'mapvue383073-17': '设备名称 / 编码 / 位置',
+    'mapvue383073-18': '部门筛选',
+    'mapvue383073-19': '设备状态',
+    'mapvue383073-20': '图例说明',
+    'mapvue383073-21': '聚合点位',
+    'mapvue383073-22': '在线',
+    'mapvue383073-23': '离线',
+    'mapvue383073-24': '全部',
+    'mapvue383073-25': '缩放'
   },
   rem: {
     AttrTemplates: '属性模板列表',
@@ -1387,7 +2050,6 @@ export default {
     'record239091-5': '请先选择服务器标识',
     'record239091-6': '请选择日期'
   },
-
   product: {
     'index091251-0': '产品名称',
     'index091251-1': '请输入产品名称',
@@ -1847,6 +2509,7 @@ export default {
     'product-scada034908-0': '创建组态'
   },
   device: {
+    tip: '请从左侧选择一个设备或分类',
     'allot-import-dialog060657-0': '产品',
     'allot-import-dialog060657-1': '请选择产品',
     'allot-import-dialog060657-2': '目标机构',
@@ -2695,8 +3358,6328 @@ export default {
     'realTime-status845353-3': '下发指令',
     'realTime-status845353-4': '取消',
     'realTime-status845353-5': '确定',
-    'realTime-status845353-6': '下发成功'
+    'realTime-status845353-6': '下发成功',
+    'configdevi641838-0': '调拨部门',
+    'configdevi641838-1': '选择目标部门后会加载该部门人员,调拨记录会按设备逐条生成预览。',
+    'configdevi641838-2': '原部门',
+    'deviceallo663824-0': '创建时间',
+    'deviceallo663824-1': '开始日期',
+    'deviceallo663824-2': '结束日期',
+    'deviceallo663824-3': '导出',
+    'deviceallo873237-0': '查看设备调拨前后的部门变化记录',
+    'bominfovue772542-0': '物料名称',
+    'bominfovue772542-1': '请输入物料名称',
+    'bominfovue772542-2': '搜索',
+    'bominfovue772542-3': '重置',
+    'bominfovue772542-4': '物料编码',
+    'bominfovue772542-5': '规格型号',
+    'bominfovue772542-6': '单位',
+    'bominfovue772542-7': '备注',
+    'bominfovue772542-8': '创建时间',
+    'bomlistvue481710-0': '用户体系',
+    'bomlistvue481710-1': '三方登陆',
+    'bomlistvue481710-2': 'Excel 导入导出',
+    'bomlistvue481710-3': "`设备分类:${scope.row.deviceCategoryName || '暂无'}`",
+    'bomlistvue481710-4': '维修',
+    'bomlistvue481710-5': '保养',
+    'bomtreevue000110-0': '请输入BOM名称',
+    'bomtreevue000110-1': '新增子节点',
+    'bomtreevue000110-2': '编辑节点',
+    'bomtreevue000110-3': '删除节点',
+    'bomtreevue000110-4': '复制',
+    'bomtreevue000110-5': '资料分类名称',
+    'bomtreevue000110-6': '请输入资料分类名称',
+    'bomtreevue000110-7': '显示排序',
+    'bomtreevue000110-8': '备注',
+    'bomtreevue000110-9': '请输入备注',
+    'bomtreevue000110-10': '确 定',
+    'bomtreevue000110-11': '取 消',
+    'brandlistv210116-0': '选择品牌',
+    'brandlistv210116-1': '字典标签',
+    'brandlistv210116-2': '请输入字典标签',
+    'brandlistv210116-3': '状态',
+    'brandlistv210116-4': '数据状态',
+    'brandlistv210116-5': '搜索',
+    'brandlistv210116-6': '重置',
+    'brandlistv210116-7': '选择',
+    'brandlistv210116-8': '字典编码',
+    'brandlistv210116-9': '字典键值',
+    'brandlistv210116-10': '备注',
+    'brandlistv210116-11': '创建时间',
+    'checkcerti853760-0': '设备名称',
+    'checkcerti853760-1': '请输入设备名称',
+    'checkcerti853760-2': '检测类型',
+    'checkcerti853760-3': '请选择检测类型',
+    'checkcerti853760-4': '序列号',
+    'checkcerti853760-5': '请输入证书编号',
+    'checkcerti853760-6': '检测日期',
+    'checkcerti853760-7': '开始日期',
+    'checkcerti853760-8': '结束日期',
+    'checkcerti853760-9': '检测单位',
+    'checkcerti853760-10': '请输入检测单位',
+    'checkcerti853760-11': '有效期',
+    'checkcerti853760-12': '搜索',
+    'checkcerti853760-13': '重置',
+    'checkcerti853760-14': '导出',
+    'checkcerti853760-15': '设备编码',
+    'checkcerti853760-16': '部门名称',
+    'checkcerti853760-17': '备注',
+    'checkcerti853760-18': '附件',
+    'checkcerti853760-19': '查看',
+    'checkcerti853760-20': '应检设备证书已过期红色预警',
+    'checkcerti853760-21': '下载',
+    'checkcerti853760-22': '确认',
+    'indexvue257540-0': '氧气压力',
+    'indexvue257540-1': '氧气瞬时流量',
+    'indexvue257540-2': '氧气累计流量',
+    'indexvue257540-3': '运行状态',
+    'indexvue257540-4': '空气处理参数',
+    'indexvue257540-5': '出口压力',
+    'indexvue257540-6': '冷干机运行状态',
+    'indexvue257540-7': '风机运行状态',
+    'indexvue257540-8': '排气温度',
+    'indexvue257540-9': '总用电能',
+    'indexvue257540-10': '排气压力',
+    'indexvue257540-11': '液驱压缩机参数',
+    'indexvue257540-12': '入口压力',
+    'indexvue257540-13': '一级入口压力',
+    'indexvue257540-14': 'A级一级出口温度',
+    'indexvue257540-15': 'A级一级冷却后温度',
+    'indexvue257540-16': 'A级二级入口压力',
+    'indexvue257540-17': 'A级二级出口温度',
+    'indexvue257540-18': 'A级二级冷却后温度',
+    'indexvue257540-19': 'A级三级入口压力',
+    'indexvue257540-20': 'B级一级出口温度',
+    'indexvue257540-21': 'B级一级冷却后温度',
+    'indexvue257540-22': 'B级二级入口压力',
+    'indexvue257540-23': 'B级二级出口温度',
+    'indexvue257540-24': 'B级二级冷却后温度',
+    'indexvue257540-25': 'B级三级入口压力',
+    'indexvue257540-26': '三级出口温度',
+    'indexvue257540-27': '总出口温度',
+    'indexvue257540-28': '总出口压力',
+    'associatio458387-0': '设备编码',
+    'associatio458387-1': '请输入设备编码',
+    'associatio458387-2': '成套名称',
+    'associatio458387-3': '是否主设备',
+    'associatio458387-4': '是',
+    'associatio458387-5': '否',
+    'associatio458387-6': '创建时间',
+    'devicecomp596172-0': '成套名称',
+    'devicecomp596172-1': '请输入成套名称',
+    'devicecomp596172-2': '新增成套',
+    'devicecomp596172-3': '部门名称',
+    'devicecomp596172-4': '成套类型',
+    'devicecomp596172-5': '在线状态',
+    'devicecomp596172-6': '在线',
+    'devicecomp596172-7': '离线',
+    'devicecomp596172-8': '描述',
+    'devicecomp596172-9': '设备数量',
+    'devicecomp596172-10': '主设备',
+    'devicecomp596172-11': '编辑',
+    'devicecomp596172-12': '删除',
+    'devicecomp596172-13': '请选择成套类型',
+    'devicecomp596172-14': '请选择所在部门',
+    'devicecomp596172-15': '请输入描述',
+    'devicecomp596172-16': '选择设备',
+    'devicecomp596172-17': '请输入设备名称',
+    'devicecomp596172-18': '设置主设备',
+    'devicecomp596172-19': '请选择主设备',
+    'devicecomp596172-20': '取 消',
+    'devicecomp596172-21': '确 定',
+    'devicestat181259-0': '设备状态',
+    'devicestat181259-1': '合计',
+    'devicetota735835-0': '设备总览',
+    'devicetota735835-1': '设备总数',
+    'devicetota735835-2': '设备台账',
+    'brandlistv345436-0': '选择品牌',
+    'brandlistv345436-1': '字典标签',
+    'brandlistv345436-2': '请输入字典标签',
+    'brandlistv345436-3': '状态',
+    'brandlistv345436-4': '数据状态',
+    'brandlistv345436-5': '搜索',
+    'brandlistv345436-6': '重置',
+    'brandlistv345436-7': '选择',
+    'brandlistv345436-8': '字典编码',
+    'brandlistv345436-9': '字典键值',
+    'brandlistv345436-10': '备注',
+    'brandlistv345436-11': '创建时间',
+    'brandlistv345436-12': '取消',
+    'brandlistv345436-13': '确定',
+    'customerli184037-0': '客商名称',
+    'customerli184037-1': '请输入客商名称',
+    'customerli184037-2': '客商编号',
+    'customerli184037-3': '请输入客商编号',
+    'customerli184037-4': '搜索',
+    'customerli184037-5': '重置',
+    'customerli184037-6': '选择',
+    'customerli184037-7': '客商分类',
+    'customerli184037-8': '状态',
+    'customerli184037-9': '创建时间',
+    'customerli184037-10': '取消',
+    'customerli184037-11': '确定',
+    'modellistv210042-0': '选择规格型号',
+    'modellistv210042-1': '型号名称',
+    'modellistv210042-2': '请输入型号名称',
+    'modellistv210042-3': '状态',
+    'modellistv210042-4': '数据状态',
+    'modellistv210042-5': '搜索',
+    'modellistv210042-6': '重置',
+    'modellistv210042-7': '选择',
+    'modellistv210042-8': '符合标准',
+    'modellistv210042-9': '创建时间',
+    'modellistv210042-10': '取消',
+    'modellistv210042-11': '确定',
+    'customerli510445-0': '选择客户',
+    'customerli510445-1': '查询并选择需要关联的客户信息',
+    'customerli510445-2': '客商名称',
+    'customerli510445-3': '请输入客商名称',
+    'customerli510445-4': '客商编号',
+    'customerli510445-5': '请输入客商编号',
+    'customerli510445-6': '搜索',
+    'customerli510445-7': '重置',
+    'customerli510445-8': '客户列表',
+    'customerli510445-9': '选择',
+    'customerli510445-10': '客商分类',
+    'customerli510445-11': '状态',
+    'customerli510445-12': '创建时间',
+    'customerli510445-13': '关闭',
+    'depttree2v724110-0': '请输入部门名称',
+    'depttree2v724110-1': '新增子节点',
+    'depttree2v724110-2': '重命名',
+    'depttree2v724110-3': '删除',
+    'deviceallo305472-0': '调拨记录',
+    'deviceallo305472-1': '设备名称',
+    'deviceallo305472-2': '设备编码',
+    'deviceallo305472-3': '调拨前部门',
+    'deviceallo305472-4': '调拨后部门',
+    'deviceallo305472-5': '调拨原因',
+    'deviceallo305472-6': '调整人',
+    'deviceallo305472-7': '调整时间',
+    'deviceasso162747-0': '关联设备',
+    'deviceasso162747-1': '设备编码',
+    'deviceasso162747-2': '请输入设备编码',
+    'deviceasso162747-3': '搜索',
+    'deviceasso162747-4': '重置',
+    'deviceasso162747-5': '序号',
+    'deviceasso162747-6': '成套名称',
+    'deviceasso162747-7': '设备名称',
+    'deviceasso162747-8': '是否主设备',
+    'deviceasso162747-9': '是',
+    'deviceasso162747-10': '否',
+    'deviceasso162747-11': '创建时间',
+    'devicebasi313029-0': '制造信息',
+    'devicebasi313029-1': '设备生产、供应、质保及启用信息',
+    'devicebasi313029-2': '财务信息',
+    'devicebasi313029-3': '其他信息',
+    'devicebasi313029-4': '设备分类模板补充信息',
+    'deviceboml064738-0': 'BOM节点名称',
+    'deviceboml064738-1': '请输入BOM节点名称',
+    'deviceboml064738-2': 'BOM节点',
+    'deviceboml064738-3': '请选择BOM节点',
+    'deviceboml064738-4': '搜索',
+    'deviceboml064738-5': '重置',
+    'deviceboml064738-6': '新增',
+    'deviceboml064738-7':
+      "`设备分类:${row.deviceCategoryName || props.deviceCategoryName || '暂无'}`",
+    'deviceboml064738-8': '设备分类',
+    'deviceboml064738-9': '排序',
+    'deviceboml064738-10': '维修',
+    'deviceboml064738-11': '保养',
+    'deviceboml064738-12': '物料数量',
+    'deviceboml064738-13': '操作',
+    'deviceboml064738-14': '修改',
+    'deviceboml064738-15': '添加物料',
+    'deviceboml064738-16': '物料详情',
+    'deviceboml064738-17': '删除',
+    'devicefail620996-0': '故障记录',
+    'devicefail620996-1': '故障编码',
+    'devicefail620996-2': '请输入故障编码',
+    'devicefail620996-3': '故障名称',
+    'devicefail620996-4': '请输入故障名称',
+    'devicefail620996-5': '状态',
+    'devicefail620996-6': '请选择状态',
+    'devicefail620996-7': '搜索',
+    'devicefail620996-8': '重置',
+    'devicefail620996-9': '是否停机',
+    'devicefail620996-10': '请选择',
+    'devicefail620996-11': '故障时间',
+    'devicefail620996-12': '开始时间',
+    'devicefail620996-13': '结束时间',
+    'devicefail620996-14': '是否解决',
+    'devicefail620996-15': '是否协助',
+    'devicefail620996-16': '创建时间',
+    'devicefail620996-17': '故障系统',
+    'devicefail620996-18': '请输入故障系统',
+    'devicefail620996-19': '故障影响',
+    'devicefail620996-20': '请输入故障影响',
+    'devicefail620996-21': '描述',
+    'devicefail620996-22': '请输入描述',
+    'devicefail620996-23': '设备',
+    'devicefail620996-24': '审核状态',
+    'devicefile737256-0': '资料列表',
+    'devicefile737256-1': '请输入文件名称',
+    'devicefile737256-2': '搜索',
+    'devicefile737256-3': '重置',
+    'devicefile737256-4': '文件名称',
+    'devicefile737256-5': '双击进入文件夹',
+    'devicefile737256-6': '文件类型',
+    'devicefile737256-7': '文件夹',
+    'devicefile737256-8': '文件大小',
+    'devicefile737256-9': '所在部门',
+    'devicefile737256-10': '所属设备',
+    'devicefile737256-11': '操作',
+    'devicefile737256-12': '预览',
+    'devicefile737256-13': '下载',
+    'devicefile737256-14': '双击进入',
+    'deviceinfo661964-0': '制造档案',
+    'deviceinfo661964-1': '设备生产、供应及质保信息',
+    'deviceinfo661964-2': '资产折旧',
+    'deviceinfo661964-3': '采购成本及折旧执行信息',
+    'deviceinfo661964-4': '扩展属性',
+    'deviceinfo661964-5': '设备分类模板补充信息',
+    'deviceinsp728206-0': '巡检记录',
+    'deviceinsp728206-1': '工单名称',
+    'deviceinsp728206-2': '请输入工单名称',
+    'deviceinsp728206-3': '工单编码',
+    'deviceinsp728206-4': '请输入工单编码',
+    'deviceinsp728206-5': '状态',
+    'deviceinsp728206-6': '请选择状态',
+    'deviceinsp728206-7': '创建时间',
+    'deviceinsp728206-8': '开始时间',
+    'deviceinsp728206-9': '结束时间',
+    'deviceinsp728206-10': '搜索',
+    'deviceinsp728206-11': '重置',
+    'deviceinsp728206-12': '序号',
+    'deviceinsp728206-13': '类型',
+    'deviceinsp728206-14': '负责人',
+    'deviceinsp728206-15': '备注',
+    'deviceinsp728206-16': '操作',
+    'deviceinsp728206-17': '查看',
+    'devicemain901827-0': '维修记录',
+    'devicemain901827-1': '故障编码',
+    'devicemain901827-2': '请输入故障编码',
+    'devicemain901827-3': '故障名称',
+    'devicemain901827-4': '请输入故障名称',
+    'devicemain901827-5': '状态',
+    'devicemain901827-6': '请选择状态',
+    'devicemain901827-7': '搜索',
+    'devicemain901827-8': '重置',
+    'devicemain901827-9': '是否停机',
+    'devicemain901827-10': '请选择',
+    'devicemain901827-11': '故障时间',
+    'devicemain901827-12': '开始时间',
+    'devicemain901827-13': '结束时间',
+    'devicemain901827-14': '维修开始',
+    'devicemain901827-15': '维修结束',
+    'devicemain901827-16': '创建时间',
+    'devicemain901827-17': '故障系统',
+    'devicemain901827-18': '请输入故障系统',
+    'devicemain901827-19': '故障影响',
+    'devicemain901827-20': '请输入故障影响',
+    'devicemain901827-21': '描述',
+    'devicemain901827-22': '请输入描述',
+    'devicemain901827-23': '设备',
+    'devicemain901827-24': '审核状态',
+    'devicemain901827-25': '维修开始时间',
+    'devicemain901827-26': '操作',
+    'devicemain901827-27': '查看',
+    'devicemain398413-0': '保养记录',
+    'devicemain398413-1': '工单名称',
+    'devicemain398413-2': '请输入工单名称',
+    'devicemain398413-3': '状态',
+    'devicemain398413-4': '请选择状态',
+    'devicemain398413-5': '创建时间',
+    'devicemain398413-6': '开始时间',
+    'devicemain398413-7': '结束时间',
+    'devicemain398413-8': '搜索',
+    'devicemain398413-9': '重置',
+    'devicemain398413-10': '序号',
+    'devicemain398413-11': '保养周期',
+    'devicemain398413-12': '工单类型',
+    'devicemain398413-13': '负责人',
+    'devicemain398413-14': '操作',
+    'devicemain398413-15': '查看',
+    'deviceoper817057-0': '运行记录',
+    'deviceoper817057-1': '运行名称',
+    'deviceoper817057-2': '请输入运行名称',
+    'deviceoper817057-3': '状态',
+    'deviceoper817057-4': '请选择状态',
+    'deviceoper817057-5': '搜索',
+    'deviceoper817057-6': '重置',
+    'deviceoper817057-7': '序号',
+    'deviceoper817057-8': '负责人',
+    'deviceoper817057-9': '操作',
+    'deviceoper817057-10': '查看',
+    'devicepers660941-0': '责任人调整记录',
+    'devicepers660941-1': '设备名称',
+    'devicepers660941-2': '设备编码',
+    'devicepers660941-3': '调整前责任人',
+    'devicepers660941-4': '调整后责任人',
+    'devicepers660941-5': '调整原因',
+    'devicepers660941-6': '调整人',
+    'devicepers660941-7': '调整时间',
+    'devicestat332202-0': '状态变更记录',
+    'devicestat332202-1': '设备名称',
+    'devicestat332202-2': '设备编码',
+    'devicestat332202-3': '变更前状态',
+    'devicestat332202-4': '变更后状态',
+    'devicestat332202-5': '变更原因',
+    'devicestat332202-6': '调整人',
+    'devicestat332202-7': '调整时间',
+    'filetreevu579915-0': '请输入资料分类名称',
+    'filetreevu579915-1': '新增子节点',
+    'filetreevu579915-2': '编辑节点',
+    'filetreevu579915-3': '删除节点',
+    'filetreevu579915-4': '资料分类名称',
+    'filetreevu579915-5': '显示排序',
+    'filetreevu579915-6': '备注',
+    'filetreevu579915-7': '请输入备注',
+    'filetreevu579915-8': '确 定',
+    'filetreevu579915-9': '取 消',
+    'indexvue100657-0': '车牌号',
+    'indexvue100657-1': '请输入车牌号',
+    'indexvue100657-2': '设备号',
+    'indexvue100657-3': '请输入设备号',
+    'indexvue100657-4': '导出',
+    'indexvue100657-5': '请输入油服编码',
+    'indexvue100657-6': '清空',
+    'indexvue100657-7': '搜索',
+    'indexvue100657-8': '请输入历史编码',
+    'indexvue100657-9': '请输入设备名称',
+    'indexvue100657-10': '请选择所在部门',
+    'indexvue100657-11': '请选择设备状态',
+    'indexvue100657-12': '请输入规格型号',
+    'indexvue100657-13': '请选择制造厂家',
+    'indexvue100657-14': '请输入品牌',
+    'indexvue100657-15': '请输入责任人',
+    'indexvue100657-16': '请输入使用项目',
+    'indexvue100657-17': '请输入资产归属',
+    'indexvue100657-18': '所在地点',
+    'indexvue100657-19': '请输入所在地点',
+    'iotdevicef293671-0': '设备台账信息维护',
+    'iotdevicef293671-1': '基本信息',
+    'iotdevicef293671-2': '请输入编码分类',
+    'iotdevicef293671-3': '系统生成',
+    'iotdevicef293671-4': '请输入历史编码',
+    'iotdevicef293671-5': '请输入设备名称',
+    'iotdevicef293671-6': '请选择所在部门',
+    'iotdevicef293671-7': '请选择设备类别',
+    'iotdevicef293671-8': '请选择设备状态',
+    'iotdevicef293671-9': '请选择资产性质',
+    'iotdevicef293671-10': '请选择品牌',
+    'iotdevicef293671-11': '选择',
+    'iotdevicef293671-12': '车牌号',
+    'iotdevicef293671-13': '请输入车牌号',
+    'iotdevicef293671-14': '设备号',
+    'iotdevicef293671-15': '请输入设备号',
+    'iotdevicef293671-16': '请输入或选择规格型号',
+    'iotdevicef293671-17': '请输入使用项目',
+    'iotdevicef293671-18': '资产归属',
+    'iotdevicef293671-19': '请输入资产归属',
+    'iotdevicef293671-20': '所在地点',
+    'iotdevicef293671-21': '请输入所在地点',
+    'iotdevicef293671-22': '备注',
+    'iotdevicef293671-23': '请输入备注信息',
+    'iotdevicef293671-24': '制造信息',
+    'iotdevicef293671-25': '财务信息',
+    'iotdevicef293671-26': "form.assetProperty === 'zy' ? '采购价格' : '租赁价格'",
+    'iotdevicef293671-27': "form.assetProperty === 'zy' ? '请输入采购价格' : '请输入租赁价格'",
+    'iotdevicef293671-28': "form.assetProperty === 'zy' ? '采购日期' : '租赁日期'",
+    'iotdevicef293671-29': "form.assetProperty === 'zy' ? '请选择采购日期' : '请选择租赁日期'",
+    'iotdevicef293671-30': "form.assetProperty === 'zy' ? '折旧年限' : '租赁年限'",
+    'iotdevicef293671-31': "form.assetProperty === 'zy' ? '请输入折旧年限' : '请输入租赁年限'",
+    'iotdevicef293671-32': "form.assetProperty === 'zy' ? '折旧开始日期' : '租赁开始日期'",
+    'iotdevicef293671-33':
+      "form.assetProperty === 'zy' ? '请选择折旧开始日期' : '请选择租赁开始日期'",
+    'iotdevicef293671-34': "form.assetProperty === 'zy' ? '已提折旧月数' : '已租赁月数'",
+    'iotdevicef293671-35':
+      "form.assetProperty === 'zy' ? '请输入已提折旧月数' : '请输入已租赁月数'",
+    'iotdevicef293671-36': "form.assetProperty === 'zy' ? '已提折旧金额' : '已租赁金额'",
+    'iotdevicef293671-37':
+      "form.assetProperty === 'zy' ? '请输入已提折旧金额' : '请输入已租赁金额'",
+    'iotdevicef293671-38': '剩余金额',
+    'iotdevicef293671-39': '请输入剩余金额',
+    'iotdevicef293671-40': '每月折旧金额',
+    'iotdevicef293671-41': '请输入每月折旧金额',
+    'iotdevicef293671-42': '总折旧月份',
+    'iotdevicef293671-43': '请输入总折旧月份',
+    'iotdevicef293671-44': '币种',
+    'iotdevicef293671-45': '请输入币种',
+    'iotdevicef293671-46': '其他信息',
+    'iotdevicef293671-47': '`请输入${field.name}`',
+    'iotdevicef293671-48': '`请选择${field.name}`',
+    'iotdevicef293671-49': '一键展开',
+    'iotdevicef293671-50': '一键收起',
+    'iotdevicef293671-51': '取消',
+    'iotdevicef293671-52': '保存',
+    'iotdevicef730970-0': '请输入油服设备编码',
+    'iotdevicef730970-1': '请输入设备编码',
+    'iotdevicef730970-2': '请输入设备名称',
+    'iotdevicef730970-3': '请选择所在部门',
+    'iotdevicef730970-4': '请选择',
+    'iotdevicef730970-5': '车牌号',
+    'iotdevicef730970-6': '请输入车牌号',
+    'iotdevicef730970-7': '设备号',
+    'iotdevicef730970-8': '请输入设备号',
+    'iotdevicef730970-9': '所在地点',
+    'iotdevicef730970-10': "formData.assetProperty === 'zy' ? '采购价格' : '租赁价格'",
+    'iotdevicef730970-11': "formData.assetProperty === 'zy' ? '请输入采购价格' : '请输入租赁价格'",
+    'iotdevicef730970-12': "formData.assetProperty === 'zy' ? '采购日期' : '租赁日期'",
+    'iotdevicef730970-13': "formData.assetProperty === 'zy' ? '请输入采购日期' : '请输入租赁日期'",
+    'iotdevicef730970-14': "formData.assetProperty === 'zy' ? '折旧年限' : '租赁年限'",
+    'iotdevicef730970-15': "formData.assetProperty === 'zy' ? '请输入折旧年限' : '请输入租赁年限'",
+    'iotdevicef730970-16': "formData.assetProperty === 'zy' ? '折旧开始日期' : '租赁开始日期'",
+    'iotdevicef730970-17':
+      "formData.assetProperty === 'zy' ? '请选择折旧开始日期' : '请选择租赁开始日期'",
+    'iotdevicef730970-18': "formData.assetProperty === 'zy' ? '已提折旧月数' : '已租赁月数'",
+    'iotdevicef730970-19':
+      "formData.assetProperty === 'zy' ? '请输入已提折旧月数' : '请输入已租赁月数'",
+    'iotdevicef730970-20': "formData.assetProperty === 'zy' ? '已提折旧金额' : '已租赁金额'",
+    'iotdevicef730970-21': "formData.assetProperty === 'zy' ? '请输入已提折旧金额' : '已租赁金额'",
+    'iotdevicef730970-22': '剩余金额',
+    'iotdevicef730970-23': '请输入剩余金额',
+    'iotdevicef730970-24': '每月折旧金额',
+    'iotdevicef730970-25': '请输入每月折旧金额',
+    'iotdevicef730970-26': '总折旧月份',
+    'iotdevicef730970-27': '请输入总折旧月份',
+    'iotdevicef730970-28': '币种',
+    'iotdevicef730970-29': '请输入币种',
+    'iotdevicef730970-30': "'请输入' + field.name",
+    'iotdevicef777770-0': '请输入油服设备编码',
+    'iotdevicef777770-1': '请输入设备编码',
+    'iotdevicef777770-2': '请输入设备名称',
+    'iotdevicef777770-3': '请选择所在部门',
+    'iotdevicef777770-4': '请选择',
+    'iotdevicef777770-5': '车牌号',
+    'iotdevicef777770-6': '请输入车牌号',
+    'iotdevicef777770-7': '设备号',
+    'iotdevicef777770-8': '请输入设备号',
+    'iotdevicef777770-9': '所在地点',
+    'iotdevicef777770-10': "formData.assetProperty === 'zy' ? '采购价格' : '租赁价格'",
+    'iotdevicef777770-11': "formData.assetProperty === 'zy' ? '请输入采购价格' : '请输入租赁价格'",
+    'iotdevicef777770-12': "formData.assetProperty === 'zy' ? '采购日期' : '租赁日期'",
+    'iotdevicef777770-13': "formData.assetProperty === 'zy' ? '请输入采购日期' : '请输入租赁日期'",
+    'iotdevicef777770-14': "formData.assetProperty === 'zy' ? '折旧年限' : '租赁年限'",
+    'iotdevicef777770-15': "formData.assetProperty === 'zy' ? '请输入折旧年限' : '请输入租赁年限'",
+    'iotdevicef777770-16': "formData.assetProperty === 'zy' ? '折旧开始日期' : '租赁开始日期'",
+    'iotdevicef777770-17':
+      "formData.assetProperty === 'zy' ? '请选择折旧开始日期' : '请选择租赁开始日期'",
+    'iotdevicef777770-18': "formData.assetProperty === 'zy' ? '已提折旧月数' : '已租赁月数'",
+    'iotdevicef777770-19':
+      "formData.assetProperty === 'zy' ? '请输入已提折旧月数' : '请输入已租赁月数'",
+    'iotdevicef777770-20': "formData.assetProperty === 'zy' ? '已提折旧金额' : '已租赁金额'",
+    'iotdevicef777770-21': "formData.assetProperty === 'zy' ? '请输入已提折旧金额' : '已租赁金额'",
+    'iotdevicef777770-22': '剩余金额',
+    'iotdevicef777770-23': '请输入剩余金额',
+    'iotdevicef777770-24': '每月折旧金额',
+    'iotdevicef777770-25': '请输入每月折旧金额',
+    'iotdevicef777770-26': '总折旧月份',
+    'iotdevicef777770-27': '请输入总折旧月份',
+    'iotdevicef777770-28': '币种',
+    'iotdevicef777770-29': '请输入币种',
+    'iotdevicef777770-30': "'请输入' + field.name",
+    'maintenanc595783-0': '工单名称',
+    'maintenanc595783-1': '工单编号',
+    'maintenanc595783-2': '责任人',
+    'maintenanc595783-3': '工单类型',
+    'maintenanc595783-4': '保养结果',
+    'maintenanc595783-5': '保养费用(元)',
+    'maintenanc595783-6': '实际保养开始时间',
+    'maintenanc595783-7': '实际保养结束时间',
+    'maintenanc595783-8': '其他费用(元)',
+    'maintenanc595783-9': '备注',
+    'maintenanc595783-10': '请输入备注',
+    'maintenanc595783-11': '序号',
+    'maintenanc595783-12': 'bom节点',
+    'maintenanc595783-13': '设备编码',
+    'maintenanc595783-14': '设备名称',
+    'maintenanc595783-15': '累计运行时间(H)',
+    'maintenanc595783-16': '累计运行公里数(KM)',
+    'maintenanc595783-17': '保养项',
+    'maintenanc595783-18': '运行里程',
+    'maintenanc595783-19': '运行时间',
+    'maintenanc595783-20': '自然日期',
+    'maintenanc595783-21': '已选物料',
+    'maintenanc595783-22': '操作',
+    'maintenanc595783-23': '配置',
+    'maintenanc595783-24': '物料详情',
+    'maintenanc595783-25': '物料编码',
+    'maintenanc595783-26': '物料名称',
+    'maintenanc595783-27': '单位',
+    'maintenanc595783-28': '单价(CNY/元)',
+    'maintenanc595783-29': '消耗数量',
+    'maintenanc595783-30': '总库存数量',
+    'maintenanc595783-31': '取 消',
+    'maintenanc595783-32':
+      "`设备 ${configDialog.current?.deviceCode + '-' + configDialog.current?.name} 保养配置`",
+    'maintenanc595783-33': '上次保养里程数(KM)',
+    'maintenanc595783-34': '推迟公里数(KM)',
+    'maintenanc595783-35': '上次保养运行时间(H)',
+    'maintenanc595783-36': '推迟时长(H)',
+    'maintenanc595783-37': '上次保养自然日期(D)',
+    'maintenanc595783-38': '选择日期',
+    'maintenanc595783-39': '推迟自然日期(D)',
+    'maintenanc595783-40': '运行里程周期(KM)',
+    'maintenanc595783-41': '运行里程周期-提前量(KM)',
+    'maintenanc595783-42': '运行时间周期(H)',
+    'maintenanc595783-43': '运行时间周期-提前量(H)',
+    'maintenanc595783-44': '自然日周期(D)',
+    'maintenanc595783-45': '自然日周期-提前量(D)',
+    'maintenanc595783-46': '取消',
+    'materialli127293-0': '设备分类:',
+    'materialli127293-1': '请输入数量',
+    'modellistv464422-0': '选择规格型号',
+    'modellistv464422-1': '型号名称',
+    'modellistv464422-2': '请输入型号名称',
+    'modellistv464422-3': '搜索',
+    'modellistv464422-4': '重置',
+    'modellistv464422-5': '选择',
+    'modellistv464422-6': '符合标准',
+    'modellistv464422-7': '状态',
+    'modellistv464422-8': '创建时间',
+    'indexvue471356-0': '数采查询',
+    'indexvue471356-1': '请选择数采来源',
+    'indexvue471356-2': '全部',
+    'indexvue471356-3': '网关设备',
+    'indexvue471356-4': '中航北斗',
+    'indexvue471356-5': '导出',
+    'iotalarmse931035-0': '分类名称',
+    'iotalarmse931035-1': '设备编码',
+    'iotalarmse931035-2': '告警属性',
+    'iotalarmse931035-3': '请选择告警属性',
+    'iotalarmse931035-4': '属性标识',
+    'iotalarmse931035-5': '请输入属性标识',
+    'iotalarmse931035-6': '上限值',
+    'iotalarmse931035-7': '请输入上限',
+    'iotalarmse931035-8': '下限值',
+    'iotalarmse931035-9': '请输入下限',
+    'iotalarmse931035-10': '确 定',
+    'iotalarmse931035-11': '取 消',
+    'rangesetvu328011-0': '分类告警区间设置',
+    'rangesetvu328011-1': '设备告警区间设置',
+    'rangesetvu328011-2': '查询',
+    'rangesetvu328011-3': '添加属性',
+    'rangesetvu328011-4': '保存配置',
+    'rangesetvu328011-5': '设备名称',
+    'rangesetvu328011-6': '上限数值',
+    'rangesetvu328011-7': '下限数值',
+    'rangesetvu328011-8': '编辑',
+    'rangesetvu328011-9': '删除',
+    'rangesetvu328011-10': '添加第一个属性',
+    'rangesetti238585-0': '设备属性管理',
+    'rangesetti238585-1': '首页',
+    'rangesetti238585-2': '设备管理',
+    'rangesetti238585-3': '属性配置',
+    'rangesetti238585-4': '设备与分类',
+    'rangesetti238585-5': '搜索设备或分类...',
+    'rangesetti238585-6': '添加属性',
+    'rangesetti238585-7': '保存配置',
+    'rangesetti238585-8': '查看历史记录',
+    'rangesetti238585-9': '添加第一个属性',
+    'rangesetti238585-10': "isEditing ? '编辑属性' : '添加新属性'",
+    'rangesetti238585-11': '属性名称',
+    'rangesetti238585-12': '请输入属性名称',
+    'rangesetti238585-13': '属性标识',
+    'rangesetti238585-14': '请输入属性唯一标识',
+    'rangesetti238585-15': '标识用于系统内部识别,添加后不可修改',
+    'rangesetti238585-16': '数据类型',
+    'rangesetti238585-17': '请选择数据类型',
+    'rangesetti238585-18': '整数',
+    'rangesetti238585-19': '浮点数',
+    'rangesetti238585-20': '布尔值',
+    'rangesetti238585-21': '单位',
+    'rangesetti238585-22': '例如:℃、%、m',
+    'rangesetti238585-23': '最小值',
+    'rangesetti238585-24': '请输入最小值',
+    'rangesetti238585-25': '最大值',
+    'rangesetti238585-26': '请输入最大值',
+    'rangesetti238585-27': '描述信息',
+    'rangesetti238585-28': '请输入属性描述(可选)',
+    'rangesetti238585-29': '设为必填属性',
+    'rangesetti238585-30': '取消',
+    'tddevicein208875-0': '设备基础信息',
+    'tddevicein208875-1': '资产编码',
+    'tddevicein208875-2': '设备类别',
+    'tddevicein208875-3': '所在部门',
+    'tddevicein208875-4': '网关状态',
+    'tddevicein208875-5': '在线',
+    'tddevicein208875-6': '离线',
+    'tddevicein208875-7': '中航北斗',
+    'tddevicein208875-8': '最后数据时间',
+    'tddevicein208875-9': '车牌号码',
+    'tddevicein208875-10': '网关数采',
+    'tddevicein208875-11': '数据趋势',
+    'tddevicein208875-12': '导出为图片',
+    'tddevicein208875-13': '重置',
+    'tddevicein208875-14': '开始日期',
+    'tddevicein208875-15': '结束日期',
+    'tddevicein018010-0': '资产编码',
+    'tddevicein018010-1': '在线',
+    'tddevicein018010-2': '离线',
+    'tddevicein018010-3': '数据趋势',
+    'tddevicein018010-4': '导出为图片',
+    'tddevicein018010-5': '重置',
+    'tddevicein018010-6': '开始日期',
+    'tddevicein018010-7': '结束日期',
+    'devicepers811612-0': '创建时间',
+    'devicepers811612-1': '开始日期',
+    'devicepers811612-2': '结束日期',
+    'devicepers811612-3': '导出',
+    'devicepers798281-0': '查看设备责任人调整前后的变化记录',
+    'devicestat037846-0': '创建时间',
+    'devicestat037846-1': '开始日期',
+    'devicestat037846-2': '结束日期',
+    'devicestat037846-3': '导出',
+    'devicestat786447-0': '查看设备状态调整前后的变化记录',
+    'devicestat786447-1': '分类 Top‌'
+  },
+  'OAuth 2.0': 'OAuth 2.0',
+  app: {
+    'indexvue112700-0': '创建时间',
+    'indexvue112700-1': '开始日期',
+    'indexvue112700-2': '结束日期',
+    'indexvue112700-3': '搜索',
+    'indexvue112700-4': '重置',
+    'indexvue112700-5': '新增',
+    'indexvue112700-6': 'app版本号',
+    'indexvue112700-7': 'app包名称',
+    'indexvue112700-8': 'app的apk路径',
+    'indexvue112700-9': '备注',
+    'iotappform295229-0': '版本号',
+    'iotappform295229-1': '请输入版本号',
+    'iotappform295229-2': 'app名称',
+    'iotappform295229-3': '请输入包名称',
+    'iotappform295229-4': '确 定',
+    'iotappform295229-5': '取 消'
+  },
+  bom: {
+    'bomformvue818829-0': '设备分类',
+    'bomformvue818829-1': '请选择设备分类',
+    'bomformvue818829-2': '上级BOM',
+    'bomformvue818829-3': '请选择上级BOM',
+    'bomformvue818829-4': 'BOM节点名称',
+    'bomformvue818829-5': '请输入BOM节点名称',
+    'bomformvue818829-6': 'BOM节点属性',
+    'bomformvue818829-7': '显示排序',
+    'bomformvue818829-8': '状态',
+    'bomformvue818829-9': '请选择状态',
+    'bomformvue818829-10': '确 定',
+    'bomformvue818829-11': '取 消',
+    'devicecate054617-0': '请输入设备分类名称',
+    'devicecate054617-1': '新增子节点',
+    'devicecate054617-2': '重命名',
+    'devicecate054617-3': '删除',
+    'indexvue513755-0': 'BOM节点名称',
+    'indexvue513755-1': '请输入BOM节点名称',
+    'indexvue513755-2': 'BOM节点',
+    'indexvue513755-3': '请选择BOM节点',
+    'indexvue513755-4': '搜索',
+    'indexvue513755-5': '重置',
+    'indexvue513755-6': '新增',
+    'indexvue513755-7': "`设备分类:${row.deviceCategoryName || '暂无'}`",
+    'indexvue513755-8': '设备分类',
+    'indexvue513755-9': '维修',
+    'indexvue513755-10': '保养',
+    'indexvue513755-11': '排序',
+    'indexvue513755-12': '物料数量',
+    'indexvue513755-13': '操作',
+    'indexvue513755-14': '修改',
+    'indexvue513755-15': '添加物料',
+    'indexvue513755-16': '物料详情',
+    'indexvue513755-17': '删除',
+    'materialli039948-0': '设备分类',
+    'materialli002525-0': '物料详情',
+    'materialli002525-1': '设备分类',
+    'materialli002525-2': '关联物料',
+    'materialli002525-3': '请输入数量',
+    'materialli002525-4': '操作',
+    'materialli002525-5': '修改',
+    'materialli002525-6': '删除'
+  },
+  constructiondailyreport: {
+    'constructi275711-0': '取消',
+    'constructi275711-1': '保存',
+    'constructi429667-0': '请选择',
+    'constructi153072-0': '序号',
+    'constructi153072-1': '操作',
+    'indexvue914679-0': '项目',
+    'indexvue914679-1': '请输入项目名称',
+    'indexvue914679-2': '生产任务',
+    'indexvue914679-3': '请输入生产任务',
+    'indexvue914679-4': '创建时间',
+    'indexvue914679-5': '开始日期',
+    'indexvue914679-6': '结束日期',
+    'indexvue914679-7': '搜索',
+    'indexvue914679-8': '重置',
+    'indexvue914679-9': '填报',
+    'indexvue914679-10': '查看'
+  },
+  devicetemplate: {
+    'attrtempla702033-0': '属性名称',
+    'attrtempla702033-1': '请输入属性名称',
+    'attrtempla702033-2': '默认值',
+    'attrtempla702033-3': '请输入默认值',
+    'attrtempla702033-4': '描述',
+    'attrtempla702033-5': '请输入属性描述',
+    'attrtempla702033-6': '确 定',
+    'attrtempla702033-7': '取 消',
+    'attrtempla277474-0': '数据类型',
+    'attrtempla277474-1': '请选择数据类型',
+    'attrtempla277474-2': '布尔值',
+    'attrtempla277474-3': "`如:${item.value === 0 ? '关' : '开'}`",
+    'attrtempla277474-4': '时间格式',
+    'attrtempla277474-5': 'String 类型的 UTC 时间戳(毫秒)',
+    'attrtempla277474-6': '是否必填',
+    'indexvue690177-0': '模板名称',
+    'indexvue690177-1': '设备分类名称',
+    'indexvue690177-2': '添加属性',
+    'indexvue690177-3': '属性名称',
+    'indexvue690177-4': '标识符',
+    'indexvue690177-5': '数据类型',
+    'indexvue690177-6': '操作',
+    'indexvue690177-7': '编辑',
+    'indexvue690177-8': '删除',
+    'deviceattr164527-0': '元素类型',
+    'deviceattr164527-1': '元素个数',
+    'deviceattr164527-2': '请输入数组中的元素个数',
+    'deviceattr327235-0': '下拉选项',
+    'deviceattr327235-1': '对该下拉选项的描述',
+    'deviceattr327235-2': '删除',
+    'deviceattr135995-0': '单位',
+    'deviceattr135995-1': '请选择单位',
+    'deviceattr961839-0': 'JSON 对象',
+    'deviceattr961839-1': '编辑',
+    'deviceattr961839-2': '删除',
+    'deviceattr961839-3': '属性名称',
+    'deviceattr961839-4': '请输入属性名称',
+    'deviceattr961839-5': '标识符',
+    'deviceattr961839-6': '请输入标识符',
+    'deviceattr961839-7': '确 定',
+    'deviceattr961839-8': '取 消',
+    'indexvue815883-0': '属性模板',
+    'templatede588206-0': '设备编码:',
+    'templatede588206-1': '备注:',
+    'devicecate795273-0': '请输入设备分类名称',
+    'devicecate795273-1': '新增子节点',
+    'devicecate795273-2': '重命名',
+    'devicecate795273-3': '删除',
+    'indexvue576171-0': '模板名称',
+    'indexvue576171-1': '请输入模板名称',
+    'indexvue576171-2': '模板编码',
+    'indexvue576171-3': '请输入模板编码',
+    'indexvue576171-4': '状态',
+    'indexvue576171-5': '请选择状态',
+    'indexvue576171-6': '创建时间',
+    'indexvue576171-7': '开始日期',
+    'indexvue576171-8': '结束日期',
+    'indexvue576171-9': '搜索',
+    'indexvue576171-10': '重置',
+    'indexvue576171-11': '新增',
+    'indexvue576171-12': '序号',
+    'indexvue576171-13': '设备分类名称',
+    'indexvue576171-14': '未知',
+    'indexvue576171-15': '操作',
+    'indexvue576171-16': '查看',
+    'indexvue576171-17': '修改',
+    'indexvue576171-18': '更多',
+    'indexvue576171-19': '删除',
+    'templatefo180085-0': '设备分类',
+    'templatefo180085-1': '请选择设备分类',
+    'templatefo180085-2': '模板名称',
+    'templatefo180085-3': '请输入模板名称',
+    'templatefo180085-4': '模板编码',
+    'templatefo180085-5': '请输入模板编码',
+    'templatefo180085-6': '备注',
+    'templatefo180085-7': '请输入内容',
+    'templatefo180085-8': '确 定',
+    'templatefo180085-9': '取 消'
+  },
+  failure: {
+    'failureinf485899-0': '选择故障解决时间',
+    'failureinf485899-1': '解决办法',
+    'failureinf485899-2': '请输入解决办法',
+    'indexvue635109-0': '开始日期',
+    'indexvue635109-1': '结束日期',
+    'indexvue635109-2': '创建时间',
+    'indexvue635109-3': '导出',
+    'iotfailure322545-0': '维护故障基础信息、处理状态与现场描述',
+    'iotfailure322545-1': '基础信息',
+    'iotfailure322545-2': '其他故障描述',
+    'iotfailure322545-3': '请输入其他故障描述',
+    'iotfailure322545-4': '处理信息',
+    'iotfailure322545-5': '选择故障解决时间',
+    'iotfailure322545-6': '故障描述',
+    'iotfailure322545-7': '解决办法',
+    'iotfailure322545-8': '请输入解决办法'
+  },
+  fivedailyreportsummary: {
+    'indexvue544038-0': '创建时间',
+    'indexvue544038-1': '开始日期',
+    'indexvue544038-2': '结束日期',
+    'indexvue544038-3': '搜索',
+    'indexvue544038-4': '重置',
+    'indexvue544038-5': '序号'
+  },
+  information: {
+    'indexvue303943-0': '导出',
+    'iotinforma670843-0': '维护设备故障现象、影响及解决方案',
+    'iotinforma670843-1': '基础信息',
+    'iotinforma670843-2': '补充说明'
+  },
+  iotcargolocation: {
+    'indexvue542846-0': '库存地点',
+    'indexvue542846-1': '请选择',
+    'indexvue542846-2': '库区',
+    'indexvue542846-3': '货架',
+    'indexvue542846-4': '货位名称',
+    'indexvue542846-5': '请输入货位名称',
+    'indexvue542846-6': '搜索',
+    'indexvue542846-7': '重置',
+    'indexvue542846-8': '新增',
+    'indexvue542846-9': '导出',
+    'indexvue542846-10': '仓库区域',
+    'indexvue542846-11': '货位编码',
+    'indexvue542846-12': '创建时间',
+    'indexvue542846-13': '操作',
+    'indexvue542846-14': '编辑',
+    'indexvue542846-15': '删除',
+    'iotcargolo432811-0': '库存地点',
+    'iotcargolo432811-1': '请选择',
+    'iotcargolo432811-2': '库区',
+    'iotcargolo432811-3': '货架',
+    'iotcargolo432811-4': '货位编码',
+    'iotcargolo432811-5': '请输入货位编码',
+    'iotcargolo432811-6': '货位名称',
+    'iotcargolo432811-7': '请输入货位名称',
+    'iotcargolo432811-8': '显示顺序',
+    'iotcargolo432811-9': '备注',
+    'iotcargolo432811-10': '请输入备注',
+    'iotcargolo432811-11': '确 定',
+    'iotcargolo432811-12': '取 消'
+  },
+  iotdailyreportattrs: {
+    'indexvue972958-0': '日报扩展模板id',
+    'indexvue972958-1': '请输入日报扩展模板id',
+    'indexvue972958-2': '公司id',
+    'indexvue972958-3': '请输入公司id',
+    'indexvue972958-4': '项目id',
+    'indexvue972958-5': '请输入项目id',
+    'indexvue972958-6': '项目类别(钻井 修井 注氮 酸化压裂 ...)',
+    'indexvue972958-7': '请输入项目类别(钻井 修井 注氮 酸化压裂 ...)',
+    'indexvue972958-8': '井型',
+    'indexvue972958-9': '请选择井型',
+    'indexvue972958-10': '请选择字典生成',
+    'indexvue972958-11': '井别',
+    'indexvue972958-12': '请输入井别',
+    'indexvue972958-13': '施工工艺',
+    'indexvue972958-14': '请输入施工工艺',
+    'indexvue972958-15': '属性名称',
+    'indexvue972958-16': '请输入属性名称',
+    'indexvue972958-17': '属性标识符',
+    'indexvue972958-18': '请输入属性标识符',
+    'indexvue972958-19': '数据类型(double text textarea date dropdown)',
+    'indexvue972958-20': '请选择数据类型(double text textarea date dropdown)',
+    'indexvue972958-21': '是否必填(0非必填 1必填)',
+    'indexvue972958-22': '请输入是否必填(0非必填 1必填)',
+    'indexvue972958-23': '单位(MPa)',
+    'indexvue972958-24': '请输入单位(MPa)',
+    'indexvue972958-25': '访问模式(r读  w写)',
+    'indexvue972958-26': '请输入访问模式(r读  w写)',
+    'indexvue972958-27': '默认值',
+    'indexvue972958-28': '请输入默认值',
+    'indexvue972958-29': '最大值',
+    'indexvue972958-30': '请输入最大值',
+    'indexvue972958-31': '最小值',
+    'indexvue972958-32': '请输入最小值',
+    'indexvue972958-33': '不同专业公司的扩展属性',
+    'indexvue972958-34': '请输入不同专业公司的扩展属性',
+    'indexvue972958-35': '排序值',
+    'indexvue972958-36': '请输入排序值',
+    'indexvue972958-37': '备注',
+    'indexvue972958-38': '请输入备注',
+    'indexvue972958-39': '状态(0启用 1禁用)',
+    'indexvue972958-40': '请选择状态(0启用 1禁用)',
+    'indexvue972958-41': '创建时间',
+    'indexvue972958-42': '开始日期',
+    'indexvue972958-43': '结束日期',
+    'indexvue972958-44': '搜索',
+    'indexvue972958-45': '重置',
+    'indexvue972958-46': '新增',
+    'indexvue972958-47': '导出',
+    'indexvue972958-48': '主键id',
+    'indexvue972958-49': '操作',
+    'indexvue972958-50': '编辑',
+    'indexvue972958-51': '删除',
+    'iotdailyre624435-0': '日报扩展模板id',
+    'iotdailyre624435-1': '请输入日报扩展模板id',
+    'iotdailyre624435-2': '公司id',
+    'iotdailyre624435-3': '请输入公司id',
+    'iotdailyre624435-4': '项目id',
+    'iotdailyre624435-5': '请输入项目id',
+    'iotdailyre624435-6': '项目类别(钻井 修井 注氮 酸化压裂 ...)',
+    'iotdailyre624435-7': '请输入项目类别(钻井 修井 注氮 酸化压裂 ...)',
+    'iotdailyre624435-8': '井型',
+    'iotdailyre624435-9': '请选择井型',
+    'iotdailyre624435-10': '请选择字典生成',
+    'iotdailyre624435-11': '井别',
+    'iotdailyre624435-12': '请输入井别',
+    'iotdailyre624435-13': '施工工艺',
+    'iotdailyre624435-14': '请输入施工工艺',
+    'iotdailyre624435-15': '属性名称',
+    'iotdailyre624435-16': '请输入属性名称',
+    'iotdailyre624435-17': '属性标识符',
+    'iotdailyre624435-18': '请输入属性标识符',
+    'iotdailyre624435-19': '数据类型(double text textarea date dropdown)',
+    'iotdailyre624435-20': '请选择数据类型(double text textarea date dropdown)',
+    'iotdailyre624435-21': '是否必填(0非必填 1必填)',
+    'iotdailyre624435-22': '请输入是否必填(0非必填 1必填)',
+    'iotdailyre624435-23': '单位(MPa)',
+    'iotdailyre624435-24': '请输入单位(MPa)',
+    'iotdailyre624435-25': '访问模式(r读  w写)',
+    'iotdailyre624435-26': '请输入访问模式(r读  w写)',
+    'iotdailyre624435-27': '默认值',
+    'iotdailyre624435-28': '请输入默认值',
+    'iotdailyre624435-29': '最大值',
+    'iotdailyre624435-30': '请输入最大值',
+    'iotdailyre624435-31': '最小值',
+    'iotdailyre624435-32': '请输入最小值',
+    'iotdailyre624435-33': '不同专业公司的扩展属性',
+    'iotdailyre624435-34': '请输入不同专业公司的扩展属性',
+    'iotdailyre624435-35': '排序值',
+    'iotdailyre624435-36': '请输入排序值',
+    'iotdailyre624435-37': '备注',
+    'iotdailyre624435-38': '请输入备注',
+    'iotdailyre624435-39': '状态(0启用 1禁用)',
+    'iotdailyre624435-40': '确 定',
+    'iotdailyre624435-41': '取 消'
+  },
+  iotdailyreporttemplate: {
+    'indexvue923348-0': '公司id',
+    'indexvue923348-1': '请输入公司id',
+    'indexvue923348-2': '项目id',
+    'indexvue923348-3': '请输入项目id',
+    'indexvue923348-4': '项目类别(钻井 修井 注氮 酸化压裂...)',
+    'indexvue923348-5': '请输入项目类别(钻井 修井 注氮 酸化压裂...)',
+    'indexvue923348-6': '井型',
+    'indexvue923348-7': '请选择井型',
+    'indexvue923348-8': '请选择字典生成',
+    'indexvue923348-9': '井别',
+    'indexvue923348-10': '请输入井别',
+    'indexvue923348-11': '施工工艺',
+    'indexvue923348-12': '请输入施工工艺',
+    'indexvue923348-13': '模板名称',
+    'indexvue923348-14': '请输入模板名称',
+    'indexvue923348-15': '模板标识符',
+    'indexvue923348-16': '请输入模板标识符',
+    'indexvue923348-17': '备注',
+    'indexvue923348-18': '请输入备注',
+    'indexvue923348-19': '状态(0启用 1禁用)',
+    'indexvue923348-20': '请选择状态(0启用 1禁用)',
+    'indexvue923348-21': '创建时间',
+    'indexvue923348-22': '开始日期',
+    'indexvue923348-23': '结束日期',
+    'indexvue923348-24': '搜索',
+    'indexvue923348-25': '重置',
+    'indexvue923348-26': '新增',
+    'indexvue923348-27': '导出',
+    'indexvue923348-28': '主键id',
+    'indexvue923348-29': '操作',
+    'indexvue923348-30': '编辑',
+    'indexvue923348-31': '删除',
+    'iotdailyre409995-0': '公司id',
+    'iotdailyre409995-1': '请输入公司id',
+    'iotdailyre409995-2': '项目id',
+    'iotdailyre409995-3': '请输入项目id',
+    'iotdailyre409995-4': '项目类别(钻井 修井 注氮 酸化压裂...)',
+    'iotdailyre409995-5': '请输入项目类别(钻井 修井 注氮 酸化压裂...)',
+    'iotdailyre409995-6': '井型',
+    'iotdailyre409995-7': '请选择井型',
+    'iotdailyre409995-8': '请选择字典生成',
+    'iotdailyre409995-9': '井别',
+    'iotdailyre409995-10': '请输入井别',
+    'iotdailyre409995-11': '施工工艺',
+    'iotdailyre409995-12': '请输入施工工艺',
+    'iotdailyre409995-13': '模板名称',
+    'iotdailyre409995-14': '请输入模板名称',
+    'iotdailyre409995-15': '模板标识符',
+    'iotdailyre409995-16': '请输入模板标识符',
+    'iotdailyre409995-17': '备注',
+    'iotdailyre409995-18': '请输入备注',
+    'iotdailyre409995-19': '状态(0启用 1禁用)',
+    'iotdailyre409995-20': '确 定',
+    'iotdailyre409995-21': '取 消'
+  },
+  iotdeviceallotlog: {
+    'indexvue353597-0': '设备id',
+    'indexvue353597-1': '请输入设备id',
+    'indexvue353597-2': '设备调拨前部门',
+    'indexvue353597-3': '请输入设备调拨前部门',
+    'indexvue353597-4': '设备调拨后部门',
+    'indexvue353597-5': '请输入设备调拨后部门',
+    'indexvue353597-6': '设备调拨原因',
+    'indexvue353597-7': '请输入设备调拨原因',
+    'indexvue353597-8': '备注',
+    'indexvue353597-9': '请输入备注',
+    'indexvue353597-10': '创建时间',
+    'indexvue353597-11': '开始日期',
+    'indexvue353597-12': '结束日期',
+    'indexvue353597-13': '搜索',
+    'indexvue353597-14': '重置',
+    'indexvue353597-15': '新增',
+    'indexvue353597-16': '导出',
+    'indexvue353597-17': '主键id',
+    'indexvue353597-18': '操作',
+    'indexvue353597-19': '编辑',
+    'indexvue353597-20': '删除',
+    'iotdevicea003569-0': '设备id',
+    'iotdevicea003569-1': '请输入设备id',
+    'iotdevicea003569-2': '设备调拨前部门',
+    'iotdevicea003569-3': '请输入设备调拨前部门',
+    'iotdevicea003569-4': '设备调拨后部门',
+    'iotdevicea003569-5': '请输入设备调拨后部门',
+    'iotdevicea003569-6': '设备调拨原因',
+    'iotdevicea003569-7': '请输入设备调拨原因',
+    'iotdevicea003569-8': '备注',
+    'iotdevicea003569-9': '请输入备注',
+    'iotdevicea003569-10': '确 定',
+    'iotdevicea003569-11': '取 消'
+  },
+  iotdevicematerial: {
+    'indexvue273446-0': '所属设备分类',
+    'indexvue273446-1': '请输入所属设备分类',
+    'indexvue273446-2': '所属设备',
+    'indexvue273446-3': '请输入所属设备',
+    'indexvue273446-4': '设备BOM节点名称',
+    'indexvue273446-5': '请输入设备BOM节点名称',
+    'indexvue273446-6': '设备BOM节点id',
+    'indexvue273446-7': '请输入设备BOM节点id',
+    'indexvue273446-8': '设备BOM节点编码',
+    'indexvue273446-9': '请输入设备BOM节点编码',
+    'indexvue273446-10': '物料id',
+    'indexvue273446-11': '请输入物料id',
+    'indexvue273446-12': '数量',
+    'indexvue273446-13': '请输入数量',
+    'indexvue273446-14': '状态 0启用  1停用',
+    'indexvue273446-15': '请选择状态 0启用  1停用',
+    'indexvue273446-16': '请选择字典生成',
+    'indexvue273446-17': '备注',
+    'indexvue273446-18': '请输入备注',
+    'indexvue273446-19': '创建时间',
+    'indexvue273446-20': '开始日期',
+    'indexvue273446-21': '结束日期',
+    'indexvue273446-22': '搜索',
+    'indexvue273446-23': '重置',
+    'indexvue273446-24': '新增',
+    'indexvue273446-25': '导出',
+    'indexvue273446-26': '主键',
+    'indexvue273446-27': '操作',
+    'indexvue273446-28': '编辑',
+    'indexvue273446-29': '删除',
+    'iotdevicem753123-0': '所属设备分类',
+    'iotdevicem753123-1': '请输入所属设备分类',
+    'iotdevicem753123-2': '所属设备',
+    'iotdevicem753123-3': '请输入所属设备',
+    'iotdevicem753123-4': '设备BOM节点名称',
+    'iotdevicem753123-5': '请输入设备BOM节点名称',
+    'iotdevicem753123-6': '设备BOM节点id',
+    'iotdevicem753123-7': '请输入设备BOM节点id',
+    'iotdevicem753123-8': '设备BOM节点编码',
+    'iotdevicem753123-9': '请输入设备BOM节点编码',
+    'iotdevicem753123-10': '物料id',
+    'iotdevicem753123-11': '请输入物料id',
+    'iotdevicem753123-12': '数量',
+    'iotdevicem753123-13': '请输入数量',
+    'iotdevicem753123-14': '状态 0启用  1停用',
+    'iotdevicem753123-15': '请选择字典生成',
+    'iotdevicem753123-16': '备注',
+    'iotdevicem753123-17': '请输入备注',
+    'iotdevicem753123-18': '确 定',
+    'iotdevicem753123-19': '取 消'
+  },
+  iotdeviceperson: {
+    'indexvue488660-0': '设备id',
+    'indexvue488660-1': '请输入设备id',
+    'indexvue488660-2': '负责人id',
+    'indexvue488660-3': '请输入负责人id',
+    'indexvue488660-4': '开启状态 0启用  1停用',
+    'indexvue488660-5': '请选择开启状态 0启用  1停用',
+    'indexvue488660-6': '请选择字典生成',
+    'indexvue488660-7': '备注',
+    'indexvue488660-8': '请输入备注',
+    'indexvue488660-9': '创建时间',
+    'indexvue488660-10': '开始日期',
+    'indexvue488660-11': '结束日期',
+    'indexvue488660-12': '搜索',
+    'indexvue488660-13': '重置',
+    'indexvue488660-14': '新增',
+    'indexvue488660-15': '导出',
+    'indexvue488660-16': '主键id',
+    'indexvue488660-17': '操作',
+    'indexvue488660-18': '编辑',
+    'indexvue488660-19': '删除',
+    'iotdevicep460607-0': '设备id',
+    'iotdevicep460607-1': '请输入设备id',
+    'iotdevicep460607-2': '负责人id',
+    'iotdevicep460607-3': '请输入负责人id',
+    'iotdevicep460607-4': '开启状态 0启用  1停用',
+    'iotdevicep460607-5': '请选择字典生成',
+    'iotdevicep460607-6': '备注',
+    'iotdevicep460607-7': '请输入备注',
+    'iotdevicep460607-8': '确 定',
+    'iotdevicep460607-9': '取 消'
+  },
+  iotdevicepersonlog: {
+    'indexvue499398-0': '设备id',
+    'indexvue499398-1': '请输入设备id',
+    'indexvue499398-2': '设备调整前责任人',
+    'indexvue499398-3': '请输入设备调整前责任人',
+    'indexvue499398-4': '设备调整前责任人id集合',
+    'indexvue499398-5': '请输入设备调整前责任人id集合',
+    'indexvue499398-6': '设备调整后责任人',
+    'indexvue499398-7': '请输入设备调整后责任人',
+    'indexvue499398-8': '设备调整后责任人id集合',
+    'indexvue499398-9': '请输入设备调整后责任人id集合',
+    'indexvue499398-10': '调整原因',
+    'indexvue499398-11': '请输入调整原因',
+    'indexvue499398-12': '备注',
+    'indexvue499398-13': '请输入备注',
+    'indexvue499398-14': '创建时间',
+    'indexvue499398-15': '开始日期',
+    'indexvue499398-16': '结束日期',
+    'indexvue499398-17': '搜索',
+    'indexvue499398-18': '重置',
+    'indexvue499398-19': '新增',
+    'indexvue499398-20': '导出',
+    'indexvue499398-21': '主键id',
+    'indexvue499398-22': '操作',
+    'indexvue499398-23': '编辑',
+    'indexvue499398-24': '删除',
+    'iotdevicep121035-0': '设备id',
+    'iotdevicep121035-1': '请输入设备id',
+    'iotdevicep121035-2': '设备调整前责任人',
+    'iotdevicep121035-3': '请输入设备调整前责任人',
+    'iotdevicep121035-4': '设备调整前责任人id集合',
+    'iotdevicep121035-5': '请输入设备调整前责任人id集合',
+    'iotdevicep121035-6': '设备调整后责任人',
+    'iotdevicep121035-7': '请输入设备调整后责任人',
+    'iotdevicep121035-8': '设备调整后责任人id集合',
+    'iotdevicep121035-9': '请输入设备调整后责任人id集合',
+    'iotdevicep121035-10': '调整原因',
+    'iotdevicep121035-11': '请输入调整原因',
+    'iotdevicep121035-12': '备注',
+    'iotdevicep121035-13': '请输入备注',
+    'iotdevicep121035-14': '确 定',
+    'iotdevicep121035-15': '取 消'
+  },
+  iotdevicestatuslog: {
+    'indexvue455561-0': '设备id',
+    'indexvue455561-1': '请输入设备id',
+    'indexvue455561-2': '设备修改前状态',
+    'indexvue455561-3': '请选择设备修改前状态',
+    'indexvue455561-4': '请选择字典生成',
+    'indexvue455561-5': '设备修改后状态',
+    'indexvue455561-6': '请选择设备修改后状态',
+    'indexvue455561-7': '设备状态调整原因',
+    'indexvue455561-8': '请输入设备状态调整原因',
+    'indexvue455561-9': '备注',
+    'indexvue455561-10': '请输入备注',
+    'indexvue455561-11': '创建时间',
+    'indexvue455561-12': '开始日期',
+    'indexvue455561-13': '结束日期',
+    'indexvue455561-14': '搜索',
+    'indexvue455561-15': '重置',
+    'indexvue455561-16': '新增',
+    'indexvue455561-17': '导出',
+    'indexvue455561-18': '主键id',
+    'indexvue455561-19': '操作',
+    'indexvue455561-20': '编辑',
+    'indexvue455561-21': '删除',
+    'iotdevices314667-0': '设备id',
+    'iotdevices314667-1': '请输入设备id',
+    'iotdevices314667-2': '设备修改前状态',
+    'iotdevices314667-3': '请选择字典生成',
+    'iotdevices314667-4': '设备修改后状态',
+    'iotdevices314667-5': '设备状态调整原因',
+    'iotdevices314667-6': '请输入设备状态调整原因',
+    'iotdevices314667-7': '备注',
+    'iotdevices314667-8': '请输入备注',
+    'iotdevices314667-9': '确 定',
+    'iotdevices314667-10': '取 消'
+  },
+  iotinfo: {
+    'indexvue146327-0': '设备id',
+    'indexvue146327-1': '请输入设备id',
+    'indexvue146327-2': '部门id',
+    'indexvue146327-3': '请输入部门id',
+    'indexvue146327-4': '文件名称',
+    'indexvue146327-5': '请输入文件名称',
+    'indexvue146327-6': '文件类型',
+    'indexvue146327-7': '请选择文件类型',
+    'indexvue146327-8': '请选择字典生成',
+    'indexvue146327-9': '文件路径',
+    'indexvue146327-10': '请输入文件路径',
+    'indexvue146327-11': '备注',
+    'indexvue146327-12': '请输入备注',
+    'indexvue146327-13': '创建时间',
+    'indexvue146327-14': '开始日期',
+    'indexvue146327-15': '结束日期',
+    'indexvue146327-16': '搜索',
+    'indexvue146327-17': '重置',
+    'indexvue146327-18': '新增',
+    'indexvue146327-19': '导出',
+    'indexvue146327-20': '主键id',
+    'indexvue146327-21': '操作',
+    'indexvue146327-22': '编辑',
+    'indexvue146327-23': '删除',
+    'iotinfofor118437-0': '请选择文件目录',
+    'iotinfofor118437-1': '请选择',
+    'iotinfofor971619-0': '请选择文件目录',
+    'iotinfofor971619-1': '请选择'
+  },
+  iotlockstock: {
+    'indexvue918872-0': '导出',
+    'iotaddtost594062-0': '工厂id',
+    'iotaddtost594062-1': '成本中心id',
+    'iotlocksto809451-0': '工厂',
+    'iotlocksto809451-1': '请输入工厂',
+    'iotlocksto809451-2': '成本中心',
+    'iotlocksto809451-3': '请输入成本中心',
+    'iotlocksto809451-4': '物料编码',
+    'iotlocksto809451-5': '请输入物料编码',
+    'iotlocksto809451-6': '物料名称',
+    'iotlocksto809451-7': '请输入物料名称',
+    'iotlocksto809451-8': '数量',
+    'iotlocksto809451-9': '请输入数量',
+    'iotlocksto809451-10': '单价',
+    'iotlocksto809451-11': '请输入单价',
+    'iotlocksto809451-12': '单位',
+    'iotlocksto809451-13': '请输入单位',
+    'iotlocksto809451-14': '入库时间',
+    'iotlocksto809451-15': '选择入库时间',
+    'iotlocksto809451-16': '备注',
+    'iotlocksto809451-17': '请输入备注',
+    'iotlocksto809451-18': '确 定',
+    'iotlocksto809451-19': '取 消',
+    'stockmater320404-0': '新增物料',
+    'stockmater320404-1': '物料主数据',
+    'stockmater320404-2': '请输入物料主数据',
+    'stockmater320404-3': '数量',
+    'stockmater320404-4': '请输入数量',
+    'stockmater320404-5': '单位',
+    'stockmater320404-6': '请输入单位',
+    'stockmater320404-7': '单价',
+    'stockmater320404-8': '请输入单价',
+    'stockmater320404-9': '备注',
+    'stockmater320404-10': '请输入备注',
+    'stockmater320404-11': '确 定',
+    'stockmater320404-12': '取 消'
+  },
+  iotmainplanbommaterial: {
+    'indexvue624850-0': '保养计划id',
+    'indexvue624850-1': '请输入保养计划id',
+    'indexvue624850-2': '保养计划明细id',
+    'indexvue624850-3': '请输入保养计划明细id',
+    'indexvue624850-4': '所属设备分类',
+    'indexvue624850-5': '请输入所属设备分类',
+    'indexvue624850-6': '保养计划明细设备BOM节点id',
+    'indexvue624850-7': '请输入保养计划明细设备BOM节点id',
+    'indexvue624850-8': '设备分类公共BOM节点名称',
+    'indexvue624850-9': '请输入设备分类公共BOM节点名称',
+    'indexvue624850-10': '设备分类公共BOM节点编码',
+    'indexvue624850-11': '请输入设备分类公共BOM节点编码',
+    'indexvue624850-12': '物料id',
+    'indexvue624850-13': '请输入物料id',
+    'indexvue624850-14': '数量',
+    'indexvue624850-15': '请输入数量',
+    'indexvue624850-16': '单价(元)',
+    'indexvue624850-17': '请输入单价(元)',
+    'indexvue624850-18': '公里数周期(千米)',
+    'indexvue624850-19': '请输入公里数周期(千米)',
+    'indexvue624850-20': '公里数周期-提前量(千米)',
+    'indexvue624850-21': '请输入公里数周期-提前量(千米)',
+    'indexvue624850-22': '时间周期(小时)',
+    'indexvue624850-23': '请输入时间周期(小时)',
+    'indexvue624850-24': '时间周期-提前量(小时)',
+    'indexvue624850-25': '请输入时间周期-提前量(小时)',
+    'indexvue624850-26': '自然日周期(天)',
+    'indexvue624850-27': '请输入自然日周期(天)',
+    'indexvue624850-28': '自然日周期-提前量(天)',
+    'indexvue624850-29': '请输入自然日周期-提前量(天)',
+    'indexvue624850-30': '排序',
+    'indexvue624850-31': '请输入排序',
+    'indexvue624850-32': '状态 0启用  1停用',
+    'indexvue624850-33': '请选择状态 0启用  1停用',
+    'indexvue624850-34': '请选择字典生成',
+    'indexvue624850-35': '备注',
+    'indexvue624850-36': '请输入备注',
+    'indexvue624850-37': '创建时间',
+    'indexvue624850-38': '开始日期',
+    'indexvue624850-39': '结束日期',
+    'indexvue624850-40': '搜索',
+    'indexvue624850-41': '重置',
+    'indexvue624850-42': '新增',
+    'indexvue624850-43': '导出',
+    'indexvue624850-44': '主键',
+    'indexvue624850-45': '操作',
+    'indexvue624850-46': '编辑',
+    'indexvue624850-47': '删除',
+    'iotmainpla138667-0': '保养计划id',
+    'iotmainpla138667-1': '请输入保养计划id',
+    'iotmainpla138667-2': '保养计划明细id',
+    'iotmainpla138667-3': '请输入保养计划明细id',
+    'iotmainpla138667-4': '所属设备分类',
+    'iotmainpla138667-5': '请输入所属设备分类',
+    'iotmainpla138667-6': '保养计划明细设备BOM节点id',
+    'iotmainpla138667-7': '请输入保养计划明细设备BOM节点id',
+    'iotmainpla138667-8': '设备分类公共BOM节点名称',
+    'iotmainpla138667-9': '请输入设备分类公共BOM节点名称',
+    'iotmainpla138667-10': '设备分类公共BOM节点编码',
+    'iotmainpla138667-11': '请输入设备分类公共BOM节点编码',
+    'iotmainpla138667-12': '物料id',
+    'iotmainpla138667-13': '请输入物料id',
+    'iotmainpla138667-14': '数量',
+    'iotmainpla138667-15': '请输入数量',
+    'iotmainpla138667-16': '单价(元)',
+    'iotmainpla138667-17': '请输入单价(元)',
+    'iotmainpla138667-18': '公里数周期(千米)',
+    'iotmainpla138667-19': '请输入公里数周期(千米)',
+    'iotmainpla138667-20': '公里数周期-提前量(千米)',
+    'iotmainpla138667-21': '请输入公里数周期-提前量(千米)',
+    'iotmainpla138667-22': '时间周期(小时)',
+    'iotmainpla138667-23': '请输入时间周期(小时)',
+    'iotmainpla138667-24': '时间周期-提前量(小时)',
+    'iotmainpla138667-25': '请输入时间周期-提前量(小时)',
+    'iotmainpla138667-26': '自然日周期(天)',
+    'iotmainpla138667-27': '请输入自然日周期(天)',
+    'iotmainpla138667-28': '自然日周期-提前量(天)',
+    'iotmainpla138667-29': '请输入自然日周期-提前量(天)',
+    'iotmainpla138667-30': '排序',
+    'iotmainpla138667-31': '请输入排序',
+    'iotmainpla138667-32': '状态 0启用  1停用',
+    'iotmainpla138667-33': '请选择字典生成',
+    'iotmainpla138667-34': '备注',
+    'iotmainpla138667-35': '请输入备注',
+    'iotmainpla138667-36': '确 定',
+    'iotmainpla138667-37': '取 消'
+  },
+  iotmaintenancebom: {
+    'indexvue111734-0': '保养计划id',
+    'indexvue111734-1': '请输入保养计划id',
+    'indexvue111734-2': '保养计划明细id',
+    'indexvue111734-3': '请输入保养计划明细id',
+    'indexvue111734-4': '所属设备分类',
+    'indexvue111734-5': '请输入所属设备分类',
+    'indexvue111734-6': '设备id',
+    'indexvue111734-7': '请输入设备id',
+    'indexvue111734-8': '保养规则(量程 运行时间 自然日期) 可多选',
+    'indexvue111734-9': '请输入保养规则(量程 运行时间 自然日期) 可多选',
+    'indexvue111734-10': '上次保养运行时长(小时)',
+    'indexvue111734-11': '开始日期',
+    'indexvue111734-12': '结束日期',
+    'indexvue111734-13': '下次保养运行时长(小时)',
+    'indexvue111734-14': '上次保养运行公里数(千米)',
+    'indexvue111734-15': '请输入上次保养运行公里数(千米)',
+    'indexvue111734-16': '下次保养运行公里数(千米)',
+    'indexvue111734-17': '请输入下次保养运行公里数(千米)',
+    'indexvue111734-18': '上次保养自然日期(天)',
+    'indexvue111734-19': '下次保养自然日期(天)',
+    'indexvue111734-20': 'BOM名称',
+    'indexvue111734-21': '请输入BOM名称',
+    'indexvue111734-22': 'BOM编码',
+    'indexvue111734-23': '请输入BOM编码',
+    'indexvue111734-24': '父BOM id 顶级为0',
+    'indexvue111734-25': '请输入父BOM id 顶级为0',
+    'indexvue111734-26': '子节点id 逗号分隔',
+    'indexvue111734-27': '请输入子节点id 逗号分隔',
+    'indexvue111734-28': '层级',
+    'indexvue111734-29': '请输入层级',
+    'indexvue111734-30': '是否叶子节点 0是 1否',
+    'indexvue111734-31': '请输入是否叶子节点 0是 1否',
+    'indexvue111734-32': '显示顺序',
+    'indexvue111734-33': '请输入显示顺序',
+    'indexvue111734-34': 'M维修 S保养 维修+保养',
+    'indexvue111734-35': '请选择M维修 S保养 维修+保养',
+    'indexvue111734-36': '请选择字典生成',
+    'indexvue111734-37': '状态 0启用  1停用',
+    'indexvue111734-38': '请选择状态 0启用  1停用',
+    'indexvue111734-39': '备注',
+    'indexvue111734-40': '请输入备注',
+    'indexvue111734-41': '版本',
+    'indexvue111734-42': '请输入版本',
+    'indexvue111734-43': '创建时间',
+    'indexvue111734-44': '搜索',
+    'indexvue111734-45': '重置',
+    'indexvue111734-46': '新增',
+    'indexvue111734-47': '导出',
+    'indexvue111734-48': '主键',
+    'indexvue111734-49': '操作',
+    'indexvue111734-50': '编辑',
+    'indexvue111734-51': '删除',
+    'iotmainten706435-0': '保养计划id',
+    'iotmainten706435-1': '请输入保养计划id',
+    'iotmainten706435-2': '保养计划明细id',
+    'iotmainten706435-3': '请输入保养计划明细id',
+    'iotmainten706435-4': '所属设备分类',
+    'iotmainten706435-5': '请输入所属设备分类',
+    'iotmainten706435-6': '设备id',
+    'iotmainten706435-7': '请输入设备id',
+    'iotmainten706435-8': '保养规则(量程 运行时间 自然日期) 可多选',
+    'iotmainten706435-9': '请输入保养规则(量程 运行时间 自然日期) 可多选',
+    'iotmainten706435-10': '上次保养运行时长(小时)',
+    'iotmainten706435-11': '选择上次保养运行时长(小时)',
+    'iotmainten706435-12': '下次保养运行时长(小时)',
+    'iotmainten706435-13': '选择下次保养运行时长(小时)',
+    'iotmainten706435-14': '上次保养运行公里数(千米)',
+    'iotmainten706435-15': '请输入上次保养运行公里数(千米)',
+    'iotmainten706435-16': '下次保养运行公里数(千米)',
+    'iotmainten706435-17': '请输入下次保养运行公里数(千米)',
+    'iotmainten706435-18': '上次保养自然日期(天)',
+    'iotmainten706435-19': '选择上次保养自然日期(天)',
+    'iotmainten706435-20': '下次保养自然日期(天)',
+    'iotmainten706435-21': '选择下次保养自然日期(天)',
+    'iotmainten706435-22': 'BOM名称',
+    'iotmainten706435-23': '请输入BOM名称',
+    'iotmainten706435-24': 'BOM编码',
+    'iotmainten706435-25': '请输入BOM编码',
+    'iotmainten706435-26': '父BOM id 顶级为0',
+    'iotmainten706435-27': '请输入父BOM id 顶级为0',
+    'iotmainten706435-28': '子节点id 逗号分隔',
+    'iotmainten706435-29': '请输入子节点id 逗号分隔',
+    'iotmainten706435-30': '层级',
+    'iotmainten706435-31': '请输入层级',
+    'iotmainten706435-32': '是否叶子节点 0是 1否',
+    'iotmainten706435-33': '请输入是否叶子节点 0是 1否',
+    'iotmainten706435-34': '显示顺序',
+    'iotmainten706435-35': '请输入显示顺序',
+    'iotmainten706435-36': 'M维修 S保养 维修+保养',
+    'iotmainten706435-37': '请选择M维修 S保养 维修+保养',
+    'iotmainten706435-38': '请选择字典生成',
+    'iotmainten706435-39': '状态 0启用  1停用',
+    'iotmainten706435-40': '备注',
+    'iotmainten706435-41': '请输入备注',
+    'iotmainten706435-42': '版本',
+    'iotmainten706435-43': '请输入版本',
+    'iotmainten706435-44': '确 定',
+    'iotmainten706435-45': '取 消'
+  },
+  iotmainworkorder: {
+    'devicealar546324-0': '查看设备保养项目及各维度保养里程',
+    'devicealar546324-1': '设备信息',
+    'devicealar546324-2': '保养项目',
+    'devicealar546324-3': '保养时长',
+    'devicealar546324-4': '保养里程',
+    'devicealar546324-5': '保养日期',
+    'devicealar546324-6': '选择日期',
+    'devicebomm960435-0': '保养项物料',
+    'devicebomm960435-1': '设备编码:',
+    'devicebomm960435-2': '设备名称:',
+    'indexvue246609-0': '导出',
+    'indexvue246609-1': '填报人',
+    'indexvue246609-2': "t('workOrderMaterial.delayReason') || '延时原因'",
+    'indexvue246609-3': "t('workOrderMaterial.inputDelayReason') || '请输入延时原因'",
+    'iotdevicem155621-0': '导出',
+    'iotdevicem155621-1': '无保养计划',
+    'iotdevicem155621-2': '累计运行时长H',
+    'iotdevicem155621-3': '累计运行里程KM',
+    'iotdevicem155621-4': '多属性累计值',
+    'iotmainten470046-0': '导出',
+    'iotmainten470046-1': '无保养计划',
+    'iotmainwor248071-0': '根据物料消耗自动生成',
+    'iotmainwor248071-1': '其他费用',
+    'iotmainwor248071-2': '保养里程',
+    'iotmainwor248071-3': '保养时长',
+    'iotmainwor248071-4': '保养日期',
+    'iotmainwor248071-5': '工厂id',
+    'iotmainwor248071-6': '工厂名称',
+    'iotmainwor248071-7': '成本中心id',
+    'iotmainwor248071-8': '成本中心名称',
+    'iotmainwor248071-9': '库存地点id',
+    'iotmainwor248071-10': '库存地点名称',
+    'iotmainwor248071-11': '物料编码',
+    'iotmainwor248071-12': '物料名称',
+    'iotmainwor248071-13': '单位',
+    'iotmainwor248071-14': '单价(CNY/元)',
+    'iotmainwor248071-15': '消耗数量',
+    'iotmainwor248071-16': '总库存数量',
+    'iotmainwor248071-17':
+      "`设备 ${configDialog.current?.deviceCode+'-'+configDialog.current?.name} 保养配置`",
+    'iotmainwor248071-18': '设备',
+    'iotmainwor248071-19': '保养项配置',
+    'iotmainwor248071-20': '选择日期',
+    'iotmainwor685578-0': '填报人',
+    'iotmainwor685578-1': '请输入填报人',
+    'iotmainwor685578-2': '根据物料消耗自动生成',
+    'iotmainwor685578-3': '其他费用',
+    'iotmainwor685578-4': '附件',
+    'iotmainwor685578-5': '删除',
+    'iotmainwor685578-6': '无附件',
+    'iotmainwor685578-7':
+      "`设备 ${configDialog.current?.deviceCode + '-' + configDialog.current?.name} 保养配置`",
+    'iotmainwor685578-8': '设备',
+    'iotmainwor685578-9': '保养项配置',
+    'iotmainwor685578-10': '上次保养里程数(KM)',
+    'iotmainwor685578-11': '推迟公里数(KM)',
+    'iotmainwor685578-12': '上次保养运行时间(H)',
+    'iotmainwor685578-13': '推迟时长(H)',
+    'iotmainwor685578-14': '上次保养自然日期(D)',
+    'iotmainwor685578-15': '选择日期',
+    'iotmainwor685578-16': '推迟自然日期(D)',
+    'iotmainwor685578-17': '运行里程周期(KM)',
+    'iotmainwor685578-18': '运行里程周期-提前量(KM)',
+    'iotmainwor685578-19': '运行时间周期(H)',
+    'iotmainwor685578-20': '运行时间周期-提前量(H)',
+    'iotmainwor685578-21': '自然日周期(D)',
+    'iotmainwor685578-22': '自然日周期-提前量(D)',
+    'iotmainwor685578-23': '取消',
+    'iotmainwor685578-24': '保存',
+    'iotmainwor950328-0': '填报人',
+    'iotmainwor950328-1': '请输入填报人',
+    'iotmainwor950328-2': '附件',
+    'iotmainwor950328-3': '删除',
+    'iotmainwor950328-4': '无附件',
+    'iotmainwor950328-5': '保养项',
+    'iotmainwor950328-6': 'bom节点',
+    'iotmainwor950328-7': '物料编码',
+    'iotmainwor950328-8': '物料名称',
+    'iotmainwor950328-9': '单位',
+    'iotmainwor950328-10': '单价(CNY/元)',
+    'iotmainwor950328-11': '消耗数量',
+    'iotmainwor950328-12': '总库存数量',
+    'iotmainwor950328-13':
+      "`设备 ${configDialog.current?.deviceCode + '-' + configDialog.current?.name} 保养配置`",
+    'iotmainwor950328-14': '设备',
+    'iotmainwor950328-15': '保养项配置',
+    'iotmainwor950328-16': '选择日期',
+    'iotmainwor950328-17': '推迟原因',
+    'iotmainwor149483-0': '保养计划id',
+    'iotmainwor149483-1': '请输入保养计划id',
+    'iotmainwor149483-2': '保养计划编号',
+    'iotmainwor149483-3': '请输入保养计划编号',
+    'iotmainwor149483-4': '组织id',
+    'iotmainwor149483-5': '请输入组织id',
+    'iotmainwor149483-6': '工单号',
+    'iotmainwor149483-7': '请输入工单号',
+    'iotmainwor149483-8': '工单名称 (吐哈-C14-保养计划)',
+    'iotmainwor149483-9': '请输入工单名称 (吐哈-C14-保养计划)',
+    'iotmainwor149483-10': '工单类型(1计划生成  2临时新建)',
+    'iotmainwor149483-11': '请选择工单类型(1计划生成  2临时新建)',
+    'iotmainwor149483-12': '请选择字典生成',
+    'iotmainwor149483-13': '负责人id 多个以逗号分隔',
+    'iotmainwor149483-14': '请输入负责人id 多个以逗号分隔',
+    'iotmainwor149483-15': '保养费用',
+    'iotmainwor149483-16': '请输入保养费用',
+    'iotmainwor149483-17': '保养结果(1待执行 2已执行)',
+    'iotmainwor149483-18': '请输入保养结果(1待执行 2已执行)',
+    'iotmainwor149483-19': '其他费用',
+    'iotmainwor149483-20': '请输入其他费用',
+    'iotmainwor149483-21': '人工费用',
+    'iotmainwor149483-22': '请输入人工费用',
+    'iotmainwor149483-23': '是否委外 0否  1是',
+    'iotmainwor149483-24': '请输入是否委外 0否  1是',
+    'iotmainwor149483-25': '实际保养开始时间',
+    'iotmainwor149483-26': '选择实际保养开始时间',
+    'iotmainwor149483-27': '实际保养结束时间',
+    'iotmainwor149483-28': '选择实际保养结束时间',
+    'iotmainwor149483-29': '备注',
+    'iotmainwor149483-30': '请输入备注',
+    'iotmainwor149483-31': '状态 0启用  1停用',
+    'iotmainwor149483-32': '流程实例id',
+    'iotmainwor149483-33': '请输入流程实例id',
+    'iotmainwor149483-34': '审批状态 未提交、审批中、审批通过、审批不通过、已取消',
+    'iotmainwor149483-35': '确 定',
+    'iotmainwor149483-36': '取 消',
+    'iotmainwor639521-0': '根据物料消耗自动生成',
+    'iotmainwor639521-1': '其他费用',
+    'iotmainwor639521-2': '保养里程',
+    'iotmainwor639521-3': '保养时长',
+    'iotmainwor639521-4': '保养日期',
+    'iotmainwor639521-5': '新增物料',
+    'iotmainwor639521-6': '工厂id',
+    'iotmainwor639521-7': '工厂名称',
+    'iotmainwor639521-8': '成本中心id',
+    'iotmainwor639521-9': '成本中心名称',
+    'iotmainwor639521-10': '库存地点id',
+    'iotmainwor639521-11': '库存地点名称',
+    'iotmainwor639521-12': '物料编码',
+    'iotmainwor639521-13': '请输入物料编码',
+    'iotmainwor639521-14': '物料名称',
+    'iotmainwor639521-15': '请输入物料名称(必填)',
+    'iotmainwor639521-16': '单位',
+    'iotmainwor639521-17': '单位(必填)',
+    'iotmainwor639521-18': '单价(CNY/元)',
+    'iotmainwor639521-19': '消耗数量',
+    'iotmainwor639521-20': '请输入(必填)',
+    'iotmainwor639521-21': '库存数量',
+    'iotmainwor639521-22': '来源',
+    'iotmainwor639521-23': '操作',
+    'iotmainwor639521-24': '删除物料',
+    'iotmainwor639521-25':
+      "`设备 ${configDialog.current?.deviceCode+'-'+configDialog.current?.name} 保养配置`",
+    'iotmainwor639521-26': '设备',
+    'iotmainwor639521-27': '保养项配置',
+    'iotmainwor639521-28': '选择日期',
+    'iotmainwor605124-0': '填报人',
+    'iotmainwor605124-1': '请输入填报人',
+    'iotmainwor605124-2': '根据物料消耗自动生成',
+    'iotmainwor605124-3': '其他费用',
+    'iotmainwor605124-4': '附件',
+    'iotmainwor605124-5': '删除',
+    'iotmainwor605124-6': '无附件',
+    'iotmainwor605124-7': '保养里程',
+    'iotmainwor605124-8': '保养时长',
+    'iotmainwor605124-9': '保养日期',
+    'iotmainwor605124-10': '新增物料',
+    'iotmainwor605124-11': '工厂id',
+    'iotmainwor605124-12': '工厂名称',
+    'iotmainwor605124-13': '成本中心id',
+    'iotmainwor605124-14': '成本中心名称',
+    'iotmainwor605124-15': '库存地点id',
+    'iotmainwor605124-16': '库存地点名称',
+    'iotmainwor605124-17': '物料编码',
+    'iotmainwor605124-18': '请输入物料编码',
+    'iotmainwor605124-19': '物料名称',
+    'iotmainwor605124-20': '请输入物料名称(必填)',
+    'iotmainwor605124-21': '单位',
+    'iotmainwor605124-22': '单位(必填)',
+    'iotmainwor605124-23': '单价(CNY/元)',
+    'iotmainwor605124-24': '消耗数量',
+    'iotmainwor605124-25': '请输入(必填)',
+    'iotmainwor605124-26': '库存数量',
+    'iotmainwor605124-27': '来源',
+    'iotmainwor605124-28': '操作',
+    'iotmainwor605124-29': '删除物料',
+    'iotmainwor605124-30':
+      "`设备 ${configDialog.current?.deviceCode + '-' + configDialog.current?.name} 保养配置`",
+    'iotmainwor605124-31': '设备',
+    'iotmainwor605124-32': '保养项配置',
+    'iotmainwor605124-33': '选择日期',
+    'selectedma757732-0': '查看当前维修项目关联的物料明细',
+    'selectedma757732-1': '关联物料',
+    'selectedma757732-2': '关闭',
+    'workorderm174883-0': '选择物料',
+    'workorderm174883-1': '设备编码:',
+    'workorderm174883-2': '设备名称:',
+    'workorderm174883-3': '无绑定物料',
+    'workorderm174883-4': '物料编码',
+    'workorderm174883-5': '物料名称',
+    'workorderm174883-6': '数量',
+    'workorderm174883-7': '单位'
+  },
+  iotmainworkorderbom: {
+    'indexvue231525-0': '保养计划id',
+    'indexvue231525-1': '请输入保养计划id',
+    'indexvue231525-2': '保养计划明细id',
+    'indexvue231525-3': '请输入保养计划明细id',
+    'indexvue231525-4': '保养工单id',
+    'indexvue231525-5': '请输入保养工单id',
+    'indexvue231525-6': '所属设备分类',
+    'indexvue231525-7': '请输入所属设备分类',
+    'indexvue231525-8': '设备id',
+    'indexvue231525-9': '请输入设备id',
+    'indexvue231525-10': '保养规则(量程 运行时间 自然日期) 可多选',
+    'indexvue231525-11': '请输入保养规则(量程 运行时间 自然日期) 可多选',
+    'indexvue231525-12': '保养规则-里程(0启用 1停用)',
+    'indexvue231525-13': '请输入保养规则-里程(0启用 1停用)',
+    'indexvue231525-14': '保养规则-自然日期(0启用 1停用)',
+    'indexvue231525-15': '请输入保养规则-自然日期(0启用 1停用)',
+    'indexvue231525-16': '保养规则-运行时间(0启用 1停用)',
+    'indexvue231525-17': '请输入保养规则-运行时间(0启用 1停用)',
+    'indexvue231525-18': '上次保养运行时长(小时)',
+    'indexvue231525-19': '开始日期',
+    'indexvue231525-20': '结束日期',
+    'indexvue231525-21': '下次保养运行时长(小时)',
+    'indexvue231525-22': '推迟运行时长(小时)',
+    'indexvue231525-23': '请输入推迟运行时长(小时)',
+    'indexvue231525-24': '上次保养运行公里数(千米)',
+    'indexvue231525-25': '请输入上次保养运行公里数(千米)',
+    'indexvue231525-26': '下次保养运行公里数(千米)',
+    'indexvue231525-27': '请输入下次保养运行公里数(千米)',
+    'indexvue231525-28': '推迟运行公里数(千米)',
+    'indexvue231525-29': '请输入推迟运行公里数(千米)',
+    'indexvue231525-30': '上次保养自然日期(天)',
+    'indexvue231525-31': '下次保养自然日期(天)',
+    'indexvue231525-32': '推迟自然日期(天)',
+    'indexvue231525-33': '推迟原因',
+    'indexvue231525-34': '请输入推迟原因',
+    'indexvue231525-35': '上次保养日期',
+    'indexvue231525-36': '时间周期(小时)',
+    'indexvue231525-37': '请输入时间周期(小时)',
+    'indexvue231525-38': '时间周期-提前量(小时)',
+    'indexvue231525-39': '请输入时间周期-提前量(小时)',
+    'indexvue231525-40': '公里数周期(千米)',
+    'indexvue231525-41': '请输入公里数周期(千米)',
+    'indexvue231525-42': '公里数周期-提前量(千米)',
+    'indexvue231525-43': '请输入公里数周期-提前量(千米)',
+    'indexvue231525-44': '自然日周期(天)',
+    'indexvue231525-45': '请输入自然日周期(天)',
+    'indexvue231525-46': '自然日周期-提前量(天)',
+    'indexvue231525-47': '请输入自然日周期-提前量(天)',
+    'indexvue231525-48': 'BOM节点id',
+    'indexvue231525-49': '请输入BOM节点id',
+    'indexvue231525-50': 'BOM名称',
+    'indexvue231525-51': '请输入BOM名称',
+    'indexvue231525-52': 'BOM编码',
+    'indexvue231525-53': '请输入BOM编码',
+    'indexvue231525-54': '父BOM id 顶级为0',
+    'indexvue231525-55': '请输入父BOM id 顶级为0',
+    'indexvue231525-56': '子节点id 逗号分隔',
+    'indexvue231525-57': '请输入子节点id 逗号分隔',
+    'indexvue231525-58': '层级',
+    'indexvue231525-59': '请输入层级',
+    'indexvue231525-60': '是否叶子节点 0是 1否',
+    'indexvue231525-61': '请输入是否叶子节点 0是 1否',
+    'indexvue231525-62': '显示顺序',
+    'indexvue231525-63': '请输入显示顺序',
+    'indexvue231525-64': '1维修 2保养 维修+保养 (1,2)',
+    'indexvue231525-65': '请选择1维修 2保养 维修+保养 (1,2)',
+    'indexvue231525-66': '请选择字典生成',
+    'indexvue231525-67': '保养类型(1临时保养  2计划保养)',
+    'indexvue231525-68': '请选择保养类型(1临时保养  2计划保养)',
+    'indexvue231525-69': '状态 0启用  1停用',
+    'indexvue231525-70': '请选择状态 0启用  1停用',
+    'indexvue231525-71': '备注',
+    'indexvue231525-72': '请输入备注',
+    'indexvue231525-73': '版本',
+    'indexvue231525-74': '请输入版本',
+    'indexvue231525-75': '创建时间',
+    'indexvue231525-76': '搜索',
+    'indexvue231525-77': '重置',
+    'indexvue231525-78': '新增',
+    'indexvue231525-79': '导出',
+    'indexvue231525-80': '主键',
+    'indexvue231525-81': '操作',
+    'indexvue231525-82': '编辑',
+    'indexvue231525-83': '删除',
+    'iotmainwor385505-0': '保养计划id',
+    'iotmainwor385505-1': '请输入保养计划id',
+    'iotmainwor385505-2': '保养计划明细id',
+    'iotmainwor385505-3': '请输入保养计划明细id',
+    'iotmainwor385505-4': '保养工单id',
+    'iotmainwor385505-5': '请输入保养工单id',
+    'iotmainwor385505-6': '所属设备分类',
+    'iotmainwor385505-7': '请输入所属设备分类',
+    'iotmainwor385505-8': '设备id',
+    'iotmainwor385505-9': '请输入设备id',
+    'iotmainwor385505-10': '保养规则(量程 运行时间 自然日期) 可多选',
+    'iotmainwor385505-11': '请输入保养规则(量程 运行时间 自然日期) 可多选',
+    'iotmainwor385505-12': '保养规则-里程(0启用 1停用)',
+    'iotmainwor385505-13': '请输入保养规则-里程(0启用 1停用)',
+    'iotmainwor385505-14': '保养规则-自然日期(0启用 1停用)',
+    'iotmainwor385505-15': '请输入保养规则-自然日期(0启用 1停用)',
+    'iotmainwor385505-16': '保养规则-运行时间(0启用 1停用)',
+    'iotmainwor385505-17': '请输入保养规则-运行时间(0启用 1停用)',
+    'iotmainwor385505-18': '上次保养运行时长(小时)',
+    'iotmainwor385505-19': '选择上次保养运行时长(小时)',
+    'iotmainwor385505-20': '下次保养运行时长(小时)',
+    'iotmainwor385505-21': '选择下次保养运行时长(小时)',
+    'iotmainwor385505-22': '推迟运行时长(小时)',
+    'iotmainwor385505-23': '请输入推迟运行时长(小时)',
+    'iotmainwor385505-24': '上次保养运行公里数(千米)',
+    'iotmainwor385505-25': '请输入上次保养运行公里数(千米)',
+    'iotmainwor385505-26': '下次保养运行公里数(千米)',
+    'iotmainwor385505-27': '请输入下次保养运行公里数(千米)',
+    'iotmainwor385505-28': '推迟运行公里数(千米)',
+    'iotmainwor385505-29': '请输入推迟运行公里数(千米)',
+    'iotmainwor385505-30': '上次保养自然日期(天)',
+    'iotmainwor385505-31': '选择上次保养自然日期(天)',
+    'iotmainwor385505-32': '下次保养自然日期(天)',
+    'iotmainwor385505-33': '选择下次保养自然日期(天)',
+    'iotmainwor385505-34': '推迟自然日期(天)',
+    'iotmainwor385505-35': '选择推迟自然日期(天)',
+    'iotmainwor385505-36': '推迟原因',
+    'iotmainwor385505-37': '请输入推迟原因',
+    'iotmainwor385505-38': '上次保养日期',
+    'iotmainwor385505-39': '选择上次保养日期',
+    'iotmainwor385505-40': '时间周期(小时)',
+    'iotmainwor385505-41': '请输入时间周期(小时)',
+    'iotmainwor385505-42': '时间周期-提前量(小时)',
+    'iotmainwor385505-43': '请输入时间周期-提前量(小时)',
+    'iotmainwor385505-44': '公里数周期(千米)',
+    'iotmainwor385505-45': '请输入公里数周期(千米)',
+    'iotmainwor385505-46': '公里数周期-提前量(千米)',
+    'iotmainwor385505-47': '请输入公里数周期-提前量(千米)',
+    'iotmainwor385505-48': '自然日周期(天)',
+    'iotmainwor385505-49': '请输入自然日周期(天)',
+    'iotmainwor385505-50': '自然日周期-提前量(天)',
+    'iotmainwor385505-51': '请输入自然日周期-提前量(天)',
+    'iotmainwor385505-52': 'BOM节点id',
+    'iotmainwor385505-53': '请输入BOM节点id',
+    'iotmainwor385505-54': 'BOM名称',
+    'iotmainwor385505-55': '请输入BOM名称',
+    'iotmainwor385505-56': 'BOM编码',
+    'iotmainwor385505-57': '请输入BOM编码',
+    'iotmainwor385505-58': '父BOM id 顶级为0',
+    'iotmainwor385505-59': '请输入父BOM id 顶级为0',
+    'iotmainwor385505-60': '子节点id 逗号分隔',
+    'iotmainwor385505-61': '请输入子节点id 逗号分隔',
+    'iotmainwor385505-62': '层级',
+    'iotmainwor385505-63': '请输入层级',
+    'iotmainwor385505-64': '是否叶子节点 0是 1否',
+    'iotmainwor385505-65': '请输入是否叶子节点 0是 1否',
+    'iotmainwor385505-66': '显示顺序',
+    'iotmainwor385505-67': '请输入显示顺序',
+    'iotmainwor385505-68': '1维修 2保养 维修+保养 (1,2)',
+    'iotmainwor385505-69': '请选择1维修 2保养 维修+保养 (1,2)',
+    'iotmainwor385505-70': '请选择字典生成',
+    'iotmainwor385505-71': '保养类型(1临时保养  2计划保养)',
+    'iotmainwor385505-72': '请选择保养类型(1临时保养  2计划保养)',
+    'iotmainwor385505-73': '状态 0启用  1停用',
+    'iotmainwor385505-74': '备注',
+    'iotmainwor385505-75': '请输入备注',
+    'iotmainwor385505-76': '版本',
+    'iotmainwor385505-77': '请输入版本',
+    'iotmainwor385505-78': '确 定',
+    'iotmainwor385505-79': '取 消'
+  },
+  iotmainworkorderbommaterial: {
+    'indexvue270924-0': '保养计划id',
+    'indexvue270924-1': '请输入保养计划id',
+    'indexvue270924-2': '保养工单id',
+    'indexvue270924-3': '请输入保养工单id',
+    'indexvue270924-4': '保养工单明细id',
+    'indexvue270924-5': '请输入保养工单明细id',
+    'indexvue270924-6': '物料所属设备分类',
+    'indexvue270924-7': '请输入物料所属设备分类',
+    'indexvue270924-8': '保养工单明细设备BOM节点id',
+    'indexvue270924-9': '请输入保养工单明细设备BOM节点id',
+    'indexvue270924-10': '设备分类公共BOM节点名称',
+    'indexvue270924-11': '请输入设备分类公共BOM节点名称',
+    'indexvue270924-12': '设备分类公共BOM节点编码',
+    'indexvue270924-13': '请输入设备分类公共BOM节点编码',
+    'indexvue270924-14': '物料id',
+    'indexvue270924-15': '请输入物料id',
+    'indexvue270924-16': '物料编码',
+    'indexvue270924-17': '请输入物料编码',
+    'indexvue270924-18': '物料名称',
+    'indexvue270924-19': '请输入物料名称',
+    'indexvue270924-20': '消耗数量',
+    'indexvue270924-21': '请输入消耗数量',
+    'indexvue270924-22': '单价(元)',
+    'indexvue270924-23': '请输入单价(元)',
+    'indexvue270924-24': '总金额(元)',
+    'indexvue270924-25': '请输入总金额(元)',
+    'indexvue270924-26': '公里数周期(千米)',
+    'indexvue270924-27': '请输入公里数周期(千米)',
+    'indexvue270924-28': '公里数周期-提前量(千米)',
+    'indexvue270924-29': '请输入公里数周期-提前量(千米)',
+    'indexvue270924-30': '时间周期(小时)',
+    'indexvue270924-31': '请输入时间周期(小时)',
+    'indexvue270924-32': '时间周期-提前量(小时)',
+    'indexvue270924-33': '请输入时间周期-提前量(小时)',
+    'indexvue270924-34': '自然日周期(天)',
+    'indexvue270924-35': '请输入自然日周期(天)',
+    'indexvue270924-36': '自然日周期-提前量(天)',
+    'indexvue270924-37': '请输入自然日周期-提前量(天)',
+    'indexvue270924-38': '物料来源 (SAP库存 本地库存...)',
+    'indexvue270924-39': '请输入物料来源 (SAP库存 本地库存...)',
+    'indexvue270924-40': '库存地点',
+    'indexvue270924-41': '请输入库存地点',
+    'indexvue270924-42': '排序',
+    'indexvue270924-43': '请输入排序',
+    'indexvue270924-44': '状态 0启用  1停用',
+    'indexvue270924-45': '请选择状态 0启用  1停用',
+    'indexvue270924-46': '请选择字典生成',
+    'indexvue270924-47': '备注',
+    'indexvue270924-48': '请输入备注',
+    'indexvue270924-49': '创建时间',
+    'indexvue270924-50': '开始日期',
+    'indexvue270924-51': '结束日期',
+    'indexvue270924-52': '搜索',
+    'indexvue270924-53': '重置',
+    'indexvue270924-54': '新增',
+    'indexvue270924-55': '导出',
+    'indexvue270924-56': '主键',
+    'indexvue270924-57': '操作',
+    'indexvue270924-58': '编辑',
+    'indexvue270924-59': '删除',
+    'iotmainwor262735-0': '保养计划id',
+    'iotmainwor262735-1': '请输入保养计划id',
+    'iotmainwor262735-2': '保养工单id',
+    'iotmainwor262735-3': '请输入保养工单id',
+    'iotmainwor262735-4': '保养工单明细id',
+    'iotmainwor262735-5': '请输入保养工单明细id',
+    'iotmainwor262735-6': '物料所属设备分类',
+    'iotmainwor262735-7': '请输入物料所属设备分类',
+    'iotmainwor262735-8': '保养工单明细设备BOM节点id',
+    'iotmainwor262735-9': '请输入保养工单明细设备BOM节点id',
+    'iotmainwor262735-10': '设备分类公共BOM节点名称',
+    'iotmainwor262735-11': '请输入设备分类公共BOM节点名称',
+    'iotmainwor262735-12': '设备分类公共BOM节点编码',
+    'iotmainwor262735-13': '请输入设备分类公共BOM节点编码',
+    'iotmainwor262735-14': '物料id',
+    'iotmainwor262735-15': '请输入物料id',
+    'iotmainwor262735-16': '物料编码',
+    'iotmainwor262735-17': '请输入物料编码',
+    'iotmainwor262735-18': '物料名称',
+    'iotmainwor262735-19': '请输入物料名称',
+    'iotmainwor262735-20': '消耗数量',
+    'iotmainwor262735-21': '请输入消耗数量',
+    'iotmainwor262735-22': '单价(元)',
+    'iotmainwor262735-23': '请输入单价(元)',
+    'iotmainwor262735-24': '总金额(元)',
+    'iotmainwor262735-25': '请输入总金额(元)',
+    'iotmainwor262735-26': '公里数周期(千米)',
+    'iotmainwor262735-27': '请输入公里数周期(千米)',
+    'iotmainwor262735-28': '公里数周期-提前量(千米)',
+    'iotmainwor262735-29': '请输入公里数周期-提前量(千米)',
+    'iotmainwor262735-30': '时间周期(小时)',
+    'iotmainwor262735-31': '请输入时间周期(小时)',
+    'iotmainwor262735-32': '时间周期-提前量(小时)',
+    'iotmainwor262735-33': '请输入时间周期-提前量(小时)',
+    'iotmainwor262735-34': '自然日周期(天)',
+    'iotmainwor262735-35': '请输入自然日周期(天)',
+    'iotmainwor262735-36': '自然日周期-提前量(天)',
+    'iotmainwor262735-37': '请输入自然日周期-提前量(天)',
+    'iotmainwor262735-38': '物料来源 (SAP库存 本地库存...)',
+    'iotmainwor262735-39': '请输入物料来源 (SAP库存 本地库存...)',
+    'iotmainwor262735-40': '库存地点',
+    'iotmainwor262735-41': '请输入库存地点',
+    'iotmainwor262735-42': '排序',
+    'iotmainwor262735-43': '请输入排序',
+    'iotmainwor262735-44': '状态 0启用  1停用',
+    'iotmainwor262735-45': '请选择字典生成',
+    'iotmainwor262735-46': '备注',
+    'iotmainwor262735-47': '请输入备注',
+    'iotmainwor262735-48': '确 定',
+    'iotmainwor262735-49': '取 消'
+  },
+  iotmainworkorderdetails: {
+    'indexvue225447-0': '保养计划id',
+    'indexvue225447-1': '请输入保养计划id',
+    'indexvue225447-2': '保养工单id',
+    'indexvue225447-3': '请输入保养工单id',
+    'indexvue225447-4': '设备id',
+    'indexvue225447-5': '请输入设备id',
+    'indexvue225447-6': '设备资产编号',
+    'indexvue225447-7': '请输入设备资产编号',
+    'indexvue225447-8': '设备名称',
+    'indexvue225447-9': '请输入设备名称',
+    'indexvue225447-10': '设备类别',
+    'indexvue225447-11': '请输入设备类别',
+    'indexvue225447-12': '设备品牌',
+    'indexvue225447-13': '请输入设备品牌',
+    'indexvue225447-14': '当前运行公里数(km)',
+    'indexvue225447-15': '请输入当前运行公里数(km)',
+    'indexvue225447-16': '当前运行时间(小时)',
+    'indexvue225447-17': '开始日期',
+    'indexvue225447-18': '结束日期',
+    'indexvue225447-19': '自然日期(天)',
+    'indexvue225447-20': '备注',
+    'indexvue225447-21': '请输入备注',
+    'indexvue225447-22': '排序',
+    'indexvue225447-23': '请输入排序',
+    'indexvue225447-24': '状态 0启用  1停用',
+    'indexvue225447-25': '请选择状态 0启用  1停用',
+    'indexvue225447-26': '请选择字典生成',
+    'indexvue225447-27': '创建时间',
+    'indexvue225447-28': '搜索',
+    'indexvue225447-29': '重置',
+    'indexvue225447-30': '新增',
+    'indexvue225447-31': '导出',
+    'indexvue225447-32': '主键id',
+    'indexvue225447-33': '操作',
+    'indexvue225447-34': '编辑',
+    'indexvue225447-35': '删除',
+    'iotmainwor713573-0': '保养计划id',
+    'iotmainwor713573-1': '请输入保养计划id',
+    'iotmainwor713573-2': '保养工单id',
+    'iotmainwor713573-3': '请输入保养工单id',
+    'iotmainwor713573-4': '设备id',
+    'iotmainwor713573-5': '请输入设备id',
+    'iotmainwor713573-6': '设备资产编号',
+    'iotmainwor713573-7': '请输入设备资产编号',
+    'iotmainwor713573-8': '设备名称',
+    'iotmainwor713573-9': '请输入设备名称',
+    'iotmainwor713573-10': '设备类别',
+    'iotmainwor713573-11': '请输入设备类别',
+    'iotmainwor713573-12': '设备品牌',
+    'iotmainwor713573-13': '请输入设备品牌',
+    'iotmainwor713573-14': '当前运行公里数(km)',
+    'iotmainwor713573-15': '请输入当前运行公里数(km)',
+    'iotmainwor713573-16': '当前运行时间(小时)',
+    'iotmainwor713573-17': '选择当前运行时间(小时)',
+    'iotmainwor713573-18': '自然日期(天)',
+    'iotmainwor713573-19': '选择自然日期(天)',
+    'iotmainwor713573-20': '备注',
+    'iotmainwor713573-21': '请输入备注',
+    'iotmainwor713573-22': '排序',
+    'iotmainwor713573-23': '请输入排序',
+    'iotmainwor713573-24': '状态 0启用  1停用',
+    'iotmainwor713573-25': '请选择字典生成',
+    'iotmainwor713573-26': '确 定',
+    'iotmainwor713573-27': '取 消'
+  },
+  iotmaterialrequisition: {
+    'indexvue826082-0': '领用单编号',
+    'indexvue826082-1': '请输入物料领用单编号',
+    'indexvue826082-2': '领用日期',
+    'indexvue826082-3': '开始日期',
+    'indexvue826082-4': '结束日期',
+    'indexvue826082-5': '搜索',
+    'indexvue826082-6': '重置',
+    'indexvue826082-7': '新增',
+    'indexvue826082-8': '导出',
+    'indexvue826082-9': '领用单名称',
+    'indexvue826082-10': '领用人姓名',
+    'indexvue826082-11': '总费用',
+    'indexvue826082-12': '操作',
+    'indexvue826082-13': '编辑',
+    'indexvue826082-14': '删除',
+    'iotmateria405434-0': '领料单名称',
+    'iotmateria405434-1': '费用',
+    'iotmateria405434-2': '根据领用物料自动生成',
+    'iotmateria405434-3': '领用日期',
+    'iotmateria405434-4': '实际保养开始时间',
+    'iotmateria405434-5': '领用人',
+    'iotmateria405434-6': '请输入领用人',
+    'iotmateria405434-7': '领用原因',
+    'iotmateria405434-8': '请输入领用原因',
+    'iotmateria405434-9': '备注',
+    'iotmateria405434-10': '请输入备注',
+    'iotmateria405434-11': '序号',
+    'iotmateria405434-12': '工厂',
+    'iotmateria405434-13': '成本中心',
+    'iotmateria405434-14': '物料编码',
+    'iotmateria405434-15': '物料名称',
+    'iotmateria405434-16': '单价',
+    'iotmateria405434-17': '库存数量',
+    'iotmateria405434-18': '领用数量',
+    'iotmateria405434-19': '单位',
+    'iotmateria405434-20': '确 定',
+    'iotmateria768138-0': '领料单名称',
+    'iotmateria768138-1': '费用',
+    'iotmateria768138-2': '根据领用物料自动生成',
+    'iotmateria768138-3': '领用日期',
+    'iotmateria768138-4': '实际保养开始时间',
+    'iotmateria768138-5': '领用人',
+    'iotmateria768138-6': '请输入领用人',
+    'iotmateria768138-7': '领用原因',
+    'iotmateria768138-8': '请输入领用原因',
+    'iotmateria768138-9': '备注',
+    'iotmateria768138-10': '请输入备注',
+    'iotmateria768138-11': '选择物料',
+    'iotmateria768138-12': '序号',
+    'iotmateria768138-13': '工厂id',
+    'iotmateria768138-14': '成本中心id',
+    'iotmateria768138-15': '工厂',
+    'iotmateria768138-16': '成本中心',
+    'iotmateria768138-17': '物料编码',
+    'iotmateria768138-18': '物料名称',
+    'iotmateria768138-19': '单价',
+    'iotmateria768138-20': '库存数量',
+    'iotmateria768138-21': '领用数量',
+    'iotmateria768138-22': '单位',
+    'iotmateria768138-23': '操作',
+    'iotmateria768138-24': '移除',
+    'iotmateria768138-25': '保 存',
+    'iotmateria768138-26': '取 消',
+    'iotmateria970475-0': '部门id',
+    'iotmateria970475-1': '请输入部门id',
+    'iotmateria970475-2': '物料领用单编号',
+    'iotmateria970475-3': '请输入物料领用单编号',
+    'iotmateria970475-4': '物料领用单名称',
+    'iotmateria970475-5': '请输入物料领用单名称',
+    'iotmateria970475-6': '领用用途(1维修  2保养 3其它)',
+    'iotmateria970475-7': '请选择领用用途(1维修  2保养 3其它)',
+    'iotmateria970475-8': '请选择字典生成',
+    'iotmateria970475-9': '领用人姓名',
+    'iotmateria970475-10': '请输入领用人姓名',
+    'iotmateria970475-11': '物料总费用',
+    'iotmateria970475-12': '请输入物料总费用',
+    'iotmateria970475-13': '领用结果(1待执行 2已执行)',
+    'iotmateria970475-14': '请输入领用结果(1待执行 2已执行)',
+    'iotmateria970475-15': '其他费用',
+    'iotmateria970475-16': '请输入其他费用',
+    'iotmateria970475-17': '人工费用',
+    'iotmateria970475-18': '请输入人工费用',
+    'iotmateria970475-19': '领用日期',
+    'iotmateria970475-20': '选择领用日期',
+    'iotmateria970475-21': '领用原因',
+    'iotmateria970475-22': '请输入领用原因',
+    'iotmateria970475-23': '备注(如特殊要求、紧急程度)',
+    'iotmateria970475-24': '请输入备注(如特殊要求、紧急程度)',
+    'iotmateria970475-25': '状态 0=未出库 1=已出库 2=已关闭',
+    'iotmateria970475-26': '流程实例id',
+    'iotmateria970475-27': '请输入流程实例id',
+    'iotmateria970475-28': '审批状态 未提交、审批中、审批通过、审批不通过、已取消',
+    'iotmateria970475-29': '确 定',
+    'iotmateria970475-30': '取 消'
+  },
+  iotmaterialrequisitiondetail: {
+    'indexvue665395-0': '物料领用单id',
+    'indexvue665395-1': '请输入物料领用单id',
+    'indexvue665395-2': '物料id',
+    'indexvue665395-3': '请输入物料id',
+    'indexvue665395-4': '物料编码',
+    'indexvue665395-5': '请输入物料编码',
+    'indexvue665395-6': '物料名称',
+    'indexvue665395-7': '请输入物料名称',
+    'indexvue665395-8': '领用数量',
+    'indexvue665395-9': '请输入领用数量',
+    'indexvue665395-10': '基本单位',
+    'indexvue665395-11': '请输入基本单位',
+    'indexvue665395-12': '单价(元)',
+    'indexvue665395-13': '请输入单价(元)',
+    'indexvue665395-14': '总金额(元)',
+    'indexvue665395-15': '请输入总金额(元)',
+    'indexvue665395-16': '规格型号',
+    'indexvue665395-17': '请输入规格型号',
+    'indexvue665395-18': '排序',
+    'indexvue665395-19': '请输入排序',
+    'indexvue665395-20': '状态 0启用  1停用',
+    'indexvue665395-21': '请选择状态 0启用  1停用',
+    'indexvue665395-22': '请选择字典生成',
+    'indexvue665395-23': '备注',
+    'indexvue665395-24': '请输入备注',
+    'indexvue665395-25': '创建时间',
+    'indexvue665395-26': '开始日期',
+    'indexvue665395-27': '结束日期',
+    'indexvue665395-28': '搜索',
+    'indexvue665395-29': '重置',
+    'indexvue665395-30': '新增',
+    'indexvue665395-31': '导出',
+    'indexvue665395-32': '主键',
+    'indexvue665395-33': '操作',
+    'indexvue665395-34': '编辑',
+    'indexvue665395-35': '删除',
+    'iotmateria282731-0': '物料领用单id',
+    'iotmateria282731-1': '请输入物料领用单id',
+    'iotmateria282731-2': '物料id',
+    'iotmateria282731-3': '请输入物料id',
+    'iotmateria282731-4': '物料编码',
+    'iotmateria282731-5': '请输入物料编码',
+    'iotmateria282731-6': '物料名称',
+    'iotmateria282731-7': '请输入物料名称',
+    'iotmateria282731-8': '领用数量',
+    'iotmateria282731-9': '请输入领用数量',
+    'iotmateria282731-10': '基本单位',
+    'iotmateria282731-11': '请输入基本单位',
+    'iotmateria282731-12': '单价(元)',
+    'iotmateria282731-13': '请输入单价(元)',
+    'iotmateria282731-14': '总金额(元)',
+    'iotmateria282731-15': '请输入总金额(元)',
+    'iotmateria282731-16': '规格型号',
+    'iotmateria282731-17': '请输入规格型号',
+    'iotmateria282731-18': '排序',
+    'iotmateria282731-19': '请输入排序',
+    'iotmateria282731-20': '状态 0启用  1停用',
+    'iotmateria282731-21': '请选择字典生成',
+    'iotmateria282731-22': '备注',
+    'iotmateria282731-23': '请输入备注',
+    'iotmateria282731-24': '确 定',
+    'iotmateria282731-25': '取 消'
+  },
+  iotopeationfill: {
+    'indexvue479101-0': '忽略理由',
+    'indexvue479101-1': '理由',
+    'indexvue479101-2': '请输入忽略理由',
+    'indexvue479101-3': '取消',
+    'indexvue479101-4': '确定',
+    'index1vue839044-0': '井号',
+    'index1vue839044-1': '请选择井号',
+    'index1vue839044-2': '非生产时间',
+    'index1vue839044-3': '请输入数字',
+    'index1vue839044-4': '请输入其他非生产原因',
+    'index1vue839044-5': '生产动态',
+    'index1vue839044-6': '添加一行',
+    'index1vue839044-7': '日期',
+    'index1vue839044-8': '选择日期',
+    'index1vue839044-9': '开始时间',
+    'index1vue839044-10': '选择开始时间',
+    'index1vue839044-11': '结束时间',
+    'index1vue839044-12': '选择结束时间',
+    'index1vue839044-13': '时长(H)',
+    'index1vue839044-14': '工况',
+    'index1vue839044-15': '请输入工况',
+    'index1vue839044-16': '结束井深(m)',
+    'index1vue839044-17': '请输入结束井深',
+    'index1vue839044-18': '详细描述',
+    'index1vue839044-19': '请输入详细描述',
+    'index1vue839044-20': '操作',
+    'index1vue839044-21': '删除',
+    'indexvue614225-0': '导出',
+    'indexvue614225-1': '未知',
+    'iotoperati342067-0': '基础信息',
+    'iotoperati342067-1': '日报填报',
+    'iotoperati342067-2': '设备列表',
+    'iotoperati574167-0': '巡检计划标题',
+    'iotoperati574167-1': '请输入巡检计划标题',
+    'iotoperati574167-2': '巡检计划编号',
+    'iotoperati574167-3': '请输入巡检计划编号',
+    'iotoperati574167-4': '周期',
+    'iotoperati574167-5': '请输入周期',
+    'iotoperati574167-6': '单位',
+    'iotoperati574167-7': '请输入单位',
+    'iotoperati574167-8': '负责人',
+    'iotoperati574167-9': '请输入负责人',
+    'iotoperati574167-10': '设备',
+    'iotoperati574167-11': '请输入设备',
+    'iotoperati574167-12': '备注',
+    'iotoperati574167-13': '请输入备注',
+    'iotoperati574167-14': '部门id',
+    'iotoperati574167-15': '请输入部门id',
+    'iotoperati574167-16': '确 定',
+    'iotoperati574167-17': '取 消',
+    'plandevice327246-0': '请选择部门',
+    'plandevice327246-1': '已选路线设备:',
+    'statistics953800-0': '运行记录填报统计',
+    'statistics953800-1': '筛选条件',
+    'statistics953800-2': '所属部门',
+    'statistics953800-3': '请选择所在部门',
+    'statistics953800-4': '创建时间',
+    'statistics953800-5': '开始日期',
+    'statistics953800-6': '结束日期',
+    'statistics953800-7': '搜索',
+    'statistics953800-8': '重置',
+    'statistics953800-9': '运行记录工单统计',
+    'statistics953800-10': '运行记录设备统计',
+    'statistics953800-11': '部门运行记录工单统计',
+    'statistics110540-0': '查询条件',
+    'statistics110540-1': '请输入查询条件',
+    'statistics110540-2': '创建时间',
+    'statistics110540-3': '开始日期',
+    'statistics110540-4': '结束日期',
+    'statistics110540-5': '搜索',
+    'statistics110540-6': '重置',
+    'statistics110540-7': '导出',
+    'statistics110540-8': '工单名称',
+    'statistics110540-9': '所属组织',
+    'statistics110540-10': '设备负责人',
+    'statistics110540-11': '设备编号',
+    'statistics110540-12': '设备名称',
+    'statistics110540-13': '是否填写'
+  },
+  iotoutbound: {
+    'indexvue035801-0': '入库id',
+    'indexvue035801-1': '请输入入库id',
+    'indexvue035801-2': '组织部门id',
+    'indexvue035801-3': '请输入组织部门id',
+    'indexvue035801-4': '工厂(SAP) 专业公司',
+    'indexvue035801-5': '请输入工厂(SAP) 专业公司',
+    'indexvue035801-6': '库存地点 - SAP 部门 项目部级',
+    'indexvue035801-7': '请输入库存地点 - SAP 部门 项目部级',
+    'indexvue035801-8': '成本中心(SAP) 库存地点 小队',
+    'indexvue035801-9': '请输入成本中心(SAP) 库存地点 小队',
+    'indexvue035801-10': '物料编码',
+    'indexvue035801-11': '请输入物料编码',
+    'indexvue035801-12': '物料名称',
+    'indexvue035801-13': '请输入物料名称',
+    'indexvue035801-14': '物料组',
+    'indexvue035801-15': '请输入物料组',
+    'indexvue035801-16': '物料组id',
+    'indexvue035801-17': '请输入物料组id',
+    'indexvue035801-18': '出库数量',
+    'indexvue035801-19': '请输入出库数量',
+    'indexvue035801-20': '单价',
+    'indexvue035801-21': '请输入单价',
+    'indexvue035801-22': '单位',
+    'indexvue035801-23': '请输入单位',
+    'indexvue035801-24': '使用方向 对应BOM节点',
+    'indexvue035801-25': '请输入使用方向 对应BOM节点',
+    'indexvue035801-26': '使用类型(1维修 2保养 3临时)',
+    'indexvue035801-27': '请选择使用类型(1维修 2保养 3临时)',
+    'indexvue035801-28': '请选择字典生成',
+    'indexvue035801-29': '出库时间',
+    'indexvue035801-30': '开始日期',
+    'indexvue035801-31': '结束日期',
+    'indexvue035801-32': '出库原因',
+    'indexvue035801-33': '请输入出库原因',
+    'indexvue035801-34': '排序',
+    'indexvue035801-35': '请输入排序',
+    'indexvue035801-36': '状态 0启用  1停用',
+    'indexvue035801-37': '请选择状态 0启用  1停用',
+    'indexvue035801-38': '备注',
+    'indexvue035801-39': '请输入备注',
+    'indexvue035801-40': '流程实例id',
+    'indexvue035801-41': '请输入流程实例id',
+    'indexvue035801-42': '审批状态 未提交、审批中、审批通过、审批不通过、已取消',
+    'indexvue035801-43': '请选择审批状态 未提交、审批中、审批通过、审批不通过、已取消',
+    'indexvue035801-44': '创建时间',
+    'indexvue035801-45': '搜索',
+    'indexvue035801-46': '重置',
+    'indexvue035801-47': '新增',
+    'indexvue035801-48': '导出',
+    'indexvue035801-49': '主键',
+    'indexvue035801-50': '操作',
+    'indexvue035801-51': '编辑',
+    'indexvue035801-52': '删除',
+    'iotoutboun861929-0': '入库id',
+    'iotoutboun861929-1': '请输入入库id',
+    'iotoutboun861929-2': '组织部门id',
+    'iotoutboun861929-3': '请输入组织部门id',
+    'iotoutboun861929-4': '工厂(SAP) 专业公司',
+    'iotoutboun861929-5': '请输入工厂(SAP) 专业公司',
+    'iotoutboun861929-6': '库存地点 - SAP 部门 项目部级',
+    'iotoutboun861929-7': '请输入库存地点 - SAP 部门 项目部级',
+    'iotoutboun861929-8': '成本中心(SAP) 库存地点 小队',
+    'iotoutboun861929-9': '请输入成本中心(SAP) 库存地点 小队',
+    'iotoutboun861929-10': '物料编码',
+    'iotoutboun861929-11': '请输入物料编码',
+    'iotoutboun861929-12': '物料名称',
+    'iotoutboun861929-13': '请输入物料名称',
+    'iotoutboun861929-14': '物料组',
+    'iotoutboun861929-15': '请输入物料组',
+    'iotoutboun861929-16': '物料组id',
+    'iotoutboun861929-17': '请输入物料组id',
+    'iotoutboun861929-18': '出库数量',
+    'iotoutboun861929-19': '请输入出库数量',
+    'iotoutboun861929-20': '单价',
+    'iotoutboun861929-21': '请输入单价',
+    'iotoutboun861929-22': '单位',
+    'iotoutboun861929-23': '请输入单位',
+    'iotoutboun861929-24': '使用方向 对应BOM节点',
+    'iotoutboun861929-25': '请输入使用方向 对应BOM节点',
+    'iotoutboun861929-26': '使用类型(1维修 2保养 3临时)',
+    'iotoutboun861929-27': '请选择使用类型(1维修 2保养 3临时)',
+    'iotoutboun861929-28': '请选择字典生成',
+    'iotoutboun861929-29': '出库时间',
+    'iotoutboun861929-30': '选择出库时间',
+    'iotoutboun861929-31': '出库原因',
+    'iotoutboun861929-32': '请输入出库原因',
+    'iotoutboun861929-33': '排序',
+    'iotoutboun861929-34': '请输入排序',
+    'iotoutboun861929-35': '状态 0启用  1停用',
+    'iotoutboun861929-36': '备注',
+    'iotoutboun861929-37': '请输入备注',
+    'iotoutboun861929-38': '流程实例id',
+    'iotoutboun861929-39': '请输入流程实例id',
+    'iotoutboun861929-40': '审批状态 未提交、审批中、审批通过、审批不通过、已取消',
+    'iotoutboun861929-41': '确 定',
+    'iotoutboun861929-42': '取 消'
+  },
+  iotprojectdailyreport: {
+    'indexvue978109-0': '施工队伍id',
+    'indexvue978109-1': '请输入施工队伍id',
+    'indexvue978109-2': '项目id',
+    'indexvue978109-3': '请输入项目id',
+    'indexvue978109-4': '任务id',
+    'indexvue978109-5': '请输入任务id',
+    'indexvue978109-6': '项目类别(钻井 修井 注氮 酸化压裂... )',
+    'indexvue978109-7': '请输入项目类别(钻井 修井 注氮 酸化压裂... )',
+    'indexvue978109-8': '施工开始日期',
+    'indexvue978109-9': '开始日期',
+    'indexvue978109-10': '结束日期',
+    'indexvue978109-11': '施工结束日期',
+    'indexvue978109-12': '下步工作计划',
+    'indexvue978109-13': '请输入下步工作计划',
+    'indexvue978109-14': '当日生产情况生产动态',
+    'indexvue978109-15': '请选择当日生产情况生产动态',
+    'indexvue978109-16': '请选择字典生成',
+    'indexvue978109-17': '施工状态(数据字典)',
+    'indexvue978109-18': '请选择施工状态(数据字典)',
+    'indexvue978109-19': '人员情况',
+    'indexvue978109-20': '请输入人员情况',
+    'indexvue978109-21': '不同专业公司的扩展属性值',
+    'indexvue978109-22': '请输入不同专业公司的扩展属性值',
+    'indexvue978109-23': '排序值',
+    'indexvue978109-24': '请输入排序值',
+    'indexvue978109-25': '备注',
+    'indexvue978109-26': '请输入备注',
+    'indexvue978109-27': '状态(0启用 1禁用)',
+    'indexvue978109-28': '请选择状态(0启用 1禁用)',
+    'indexvue978109-29': '流程实例id',
+    'indexvue978109-30': '请输入流程实例id',
+    'indexvue978109-31': '审批状态 未提交、审批中、审批通过、审批不通过、已取消',
+    'indexvue978109-32': '请选择审批状态 未提交、审批中、审批通过、审批不通过、已取消',
+    'indexvue978109-33': '创建时间',
+    'indexvue978109-34': '搜索',
+    'indexvue978109-35': '重置',
+    'indexvue978109-36': '新增',
+    'indexvue978109-37': '导出',
+    'indexvue978109-38': '主键id',
+    'indexvue978109-39': '操作',
+    'indexvue978109-40': '编辑',
+    'indexvue978109-41': '删除',
+    'iotproject538801-0': '施工队伍id',
+    'iotproject538801-1': '请输入施工队伍id',
+    'iotproject538801-2': '项目id',
+    'iotproject538801-3': '请输入项目id',
+    'iotproject538801-4': '任务id',
+    'iotproject538801-5': '请输入任务id',
+    'iotproject538801-6': '项目类别(钻井 修井 注氮 酸化压裂... )',
+    'iotproject538801-7': '请输入项目类别(钻井 修井 注氮 酸化压裂... )',
+    'iotproject538801-8': '施工开始日期',
+    'iotproject538801-9': '选择施工开始日期',
+    'iotproject538801-10': '施工结束日期',
+    'iotproject538801-11': '选择施工结束日期',
+    'iotproject538801-12': '下步工作计划',
+    'iotproject538801-13': '请输入下步工作计划',
+    'iotproject538801-14': '当日生产情况生产动态',
+    'iotproject538801-15': '请选择字典生成',
+    'iotproject538801-16': '施工状态(数据字典)',
+    'iotproject538801-17': '人员情况',
+    'iotproject538801-18': '请输入人员情况',
+    'iotproject538801-19': '不同专业公司的扩展属性值',
+    'iotproject538801-20': '请输入不同专业公司的扩展属性值',
+    'iotproject538801-21': '排序值',
+    'iotproject538801-22': '请输入排序值',
+    'iotproject538801-23': '备注',
+    'iotproject538801-24': '请输入备注',
+    'iotproject538801-25': '状态(0启用 1禁用)',
+    'iotproject538801-26': '流程实例id',
+    'iotproject538801-27': '请输入流程实例id',
+    'iotproject538801-28': '审批状态 未提交、审批中、审批通过、审批不通过、已取消',
+    'iotproject538801-29': '确 定',
+    'iotproject538801-30': '取 消'
+  },
+  iotprojectinfo: {
+    'indexvue711764-0': '公司',
+    'indexvue711764-1': '请选择公司',
+    'indexvue711764-2': '项目部',
+    'indexvue711764-3': "queryParams.companyDeptId ? '请选择项目部' : '请先选择公司'",
+    'indexvue711764-4': '合同名称',
+    'indexvue711764-5': '请输入合同名称',
+    'indexvue711764-6': '合同编号',
+    'indexvue711764-7': '请输入合同编号',
+    'indexvue711764-8': '起止日期',
+    'indexvue711764-9': '开始日期',
+    'indexvue711764-10': '结束日期',
+    'indexvue711764-11': '搜索',
+    'indexvue711764-12': '重置',
+    'indexvue711764-13': '新增',
+    'indexvue711764-14': '导出',
+    'indexvue711764-15': '客户名称',
+    'indexvue711764-16': '合同开始时间',
+    'indexvue711764-17': '合同完成时间',
+    'indexvue711764-18': '创建时间',
+    'indexvue711764-19': '操作',
+    'indexvue711764-20': '编辑',
+    'indexvue711764-21': '分配任务',
+    'indexvue711764-22': '删除',
+    'indexvue711764-23': '井号',
+    'indexvue711764-24': '未更新状态',
+    'indexvue711764-25': '施工地点',
+    'indexvue711764-26': '设计工作量',
+    'indexvue711764-27': '工作量单位',
+    'indexvue711764-28': '施工队伍',
+    'indexvue711764-29': '施工设备',
+    'indexvue711764-30': '责任人',
+    'indexvue711764-31': "`任务进度 - ${currentTaskRow ? currentTaskRow.wellName : ''}`",
+    'indexvue711764-32': '实际进度',
+    'indexvue711764-33': '关闭',
+    'iotproject508088-0': '项目基本信息',
+    'iotproject508088-1': '合同名称',
+    'iotproject508088-2': '合同编号',
+    'iotproject508088-3': '客户名称',
+    'iotproject508088-4': '请选择',
+    'iotproject508088-5': '总数',
+    'iotproject508088-6': '已完成',
+    'iotproject508088-7': '开始时间',
+    'iotproject508088-8': '选择开始时间',
+    'iotproject508088-9': '完成时间',
+    'iotproject508088-10': '选择完成时间',
+    'iotproject508088-11': '备注',
+    'iotproject508088-12': '任务列表',
+    'iotproject508088-13': '井号',
+    'iotproject508088-14': '施工地点',
+    'iotproject508088-15': '设计工作量',
+    'iotproject508088-16': '施工队伍',
+    'iotproject508088-17': '施工设备',
+    'iotproject508088-18': '责任人',
+    'iotproject500203-0': '维护客户、合同、归属部门及项目配置信息',
+    'iotproject500203-1': '返回',
+    'iotproject500203-2': '合同信息',
+    'iotproject500203-3': '客户、合同及项目周期信息',
+    'iotproject500203-4': '客户名称',
+    'iotproject500203-5': '请选择',
+    'iotproject500203-6': '合同名称',
+    'iotproject500203-7': '请输入合同名称',
+    'iotproject500203-8': '合同编号',
+    'iotproject500203-9': '请输入合同编号',
+    'iotproject500203-10': '开始时间',
+    'iotproject500203-11': '选择开始时间',
+    'iotproject500203-12': '完成时间',
+    'iotproject500203-13': '选择完成时间',
+    'iotproject500203-14': '项目配置',
+    'iotproject500203-15': '归属部门、责任人与项目属性',
+    'iotproject500203-16': '请选择所属公司',
+    'iotproject500203-17': '项目部',
+    'iotproject500203-18': '请选择项目部',
+    'iotproject500203-19': '责任人',
+    'iotproject500203-20': '暂未选择责任人',
+    'iotproject500203-21': '选择',
+    'iotproject500203-22': '请先选择所属公司',
+    'iotproject500203-23': '请输入施工区域',
+    'iotproject500203-24': '暂无可用施工区域选项,请手动输入',
+    'iotproject500203-25': '虚拟项目',
+    'iotproject500203-26': '备注',
+    'iotproject500203-27': '请输入备注',
+    'iotproject500203-28': '选择责任人',
+    'iotproject500203-29': '从当前公司人员中选择项目责任人',
+    'iotproject500203-30': "`${option.nickname} - ${option.deptName || '未分配部门'}`",
+    'iotproject500203-31': '取消',
+    'iotproject500203-32': '确定',
+    'iotproject500203-33': '保存',
+    'iotproject148994-0': '井号',
+    'iotproject148994-1': '请输入井号',
+    'iotproject148994-2': '井型/井别',
+    'iotproject148994-3': '请选择井型/井别',
+    'iotproject148994-4': '请选择字典生成',
+    'iotproject148994-5': '施工地点',
+    'iotproject148994-6': '请输入施工地点',
+    'iotproject148994-7': '施工工艺',
+    'iotproject148994-8': '请输入施工工艺',
+    'iotproject148994-9': '设计工作量',
+    'iotproject148994-10': '请输入设计工作量',
+    'iotproject148994-11': '所属队伍',
+    'iotproject148994-12': '备注',
+    'iotproject148994-13': '请输入备注',
+    'iotproject148994-14': '确 定',
+    'iotproject148994-15': '取 消'
+  },
+  iotprojecttask: {
+    'indexvue752171-0': '公司',
+    'indexvue752171-1': '请选择公司',
+    'indexvue752171-2': '客户名称',
+    'indexvue752171-3': '请输入客户名称',
+    'indexvue752171-4': '合同名称',
+    'indexvue752171-5': '请输入合同名称',
+    'indexvue752171-6': '合同编号',
+    'indexvue752171-7': '请输入合同编号',
+    'indexvue752171-8': '施工队伍',
+    'indexvue752171-9': '请输入施工队伍',
+    'indexvue752171-10': '井号',
+    'indexvue752171-11': '请输入井号',
+    'indexvue752171-12': '平台井',
+    'indexvue752171-13': '请选择平台井',
+    'indexvue752171-14': '全部',
+    'indexvue752171-15': '是',
+    'indexvue752171-16': '否',
+    'indexvue752171-17': '创建时间',
+    'indexvue752171-18': '开始日期',
+    'indexvue752171-19': '结束日期',
+    'indexvue752171-20': '搜索',
+    'indexvue752171-21': '重置',
+    'indexvue752171-22': '导出',
+    'indexvue752171-23': '施工地点',
+    'indexvue752171-24': '施工状态',
+    'indexvue752171-25': '操作',
+    'indexvue752171-26': '计划',
+    'indexvue752171-27': '生成日报',
+    'indexvue752171-28': '编辑',
+    'indexvue752171-29': '删除',
+    'indexvue752171-30': '任务计划',
+    'indexvue752171-31': '计划明细',
+    'indexvue752171-32': '维护任务开始时间、结束时间及工作量',
+    'indexvue752171-33': '新增计划',
+    'indexvue752171-34': '序号',
+    'indexvue752171-35': '开始时间',
+    'indexvue752171-36': '选择开始时间',
+    'indexvue752171-37': '结束时间',
+    'indexvue752171-38': '选择结束时间',
+    'indexvue752171-39': '请输入',
+    'indexvue752171-40': '请确认各计划时间和工作量填写完整',
+    'indexvue752171-41': '取消',
+    'indexvue752171-42': '保存',
+    'indexvue752171-43': '日报日期',
+    'indexvue752171-44': '请选择日期',
+    'indexvue752171-45': '确定',
+    'iotproject820427-0': '维护任务基础信息、施工资源和设计工作量',
+    'iotproject820427-1': '返回',
+    'iotproject820427-2': '项目信息',
+    'iotproject820427-3': '合同关联信息仅供查看',
+    'iotproject820427-4': '合同名称',
+    'iotproject820427-5': '请选择',
+    'iotproject820427-6': '合同编号',
+    'iotproject820427-7': '请输入合同编号',
+    'iotproject820427-8': '客户名称',
+    'iotproject820427-9': '开始时间',
+    'iotproject820427-10': '选择开始时间',
+    'iotproject820427-11': '完成时间',
+    'iotproject820427-12': '选择完成时间',
+    'iotproject820427-13': '项目部',
+    'iotproject820427-14': '请选择项目部',
+    'iotproject820427-15': '备注',
+    'iotproject820427-16': '请输入备注',
+    'iotproject820427-17': '井号',
+    'iotproject820427-18': '井型',
+    'iotproject820427-19': '井别',
+    'iotproject820427-20': '施工地点',
+    'iotproject820427-21': '设计工作量',
+    'iotproject820427-22': '施工队伍',
+    'iotproject820427-23': '施工设备',
+    'iotproject820427-24': '责任人',
+    'iotproject820427-25': '任务详情',
+    'iotproject820427-26': '配置井次、工艺、工作量及施工资源',
+    'iotproject820427-27': '请输入井号',
+    'iotproject820427-28': '请输入施工区域',
+    'iotproject820427-29': '暂无可用施工区域选项,请手动输入',
+    'iotproject820427-30': '请选择施工工艺',
+    'iotproject820427-31': '暂无可用施工工艺选项',
+    'iotproject820427-32': '请输入设计工作量',
+    'iotproject820427-33': '添加多个设计工作量',
+    'iotproject820427-34': '请选择工作量单位',
+    'iotproject820427-35': '请选择施工队伍',
+    'iotproject820427-36': '选择设备',
+    'iotproject820427-37': '暂未选择设备',
+    'iotproject820427-38': "isSpecialDept ? '带班干部' : '责任人'",
+    'iotproject820427-39': '填报人',
+    'iotproject820427-40': '选择填报人',
+    'iotproject820427-41': '暂未选择填报人',
+    'iotproject820427-42': '平台井',
+    'iotproject820427-43': '`请输入${attr.name}`',
+    'iotproject820427-44': '`选择${attr.name}`',
+    'iotproject820427-45': '重置任务',
+    'iotproject820427-46': '附件',
+    'iotproject820427-47': '支持上传并预览项目设计与完井资料',
+    'iotproject820427-48': '工程设计',
+    'iotproject820427-49': '上传工程设计',
+    'iotproject820427-50': '地质设计',
+    'iotproject820427-51': '上传地质设计',
+    'iotproject820427-52': '完井报告',
+    'iotproject820427-53': '上传完井报告',
+    'iotproject820427-54': '维护平台井井号及对应设计工作量',
+    'iotproject820427-55': '工作量单位',
+    'iotproject820427-56': '操作',
+    'iotproject820427-57': '删除',
+    'iotproject820427-58': '添加一行',
+    'iotproject820427-59': '保存',
+    'iotproject820427-60': '取消',
+    'iotproject820427-61': '选择施工设备',
+    'iotproject820427-62': '确定',
+    'iotproject820427-63': '选择责任人',
+    'iotproject820427-64': "`${option.nickname} - ${option.deptName || '未分配部门'}`",
+    'iotproject820427-65': '工作量',
+    'iotproject820427-66': '请输入工作量'
+  },
+  iotprojecttaskattrs: {
+    'indexvue889197-0': '任务扩展模板id',
+    'indexvue889197-1': '请输入任务扩展模板id',
+    'indexvue889197-2': '公司id',
+    'indexvue889197-3': '请输入公司id',
+    'indexvue889197-4': '项目id',
+    'indexvue889197-5': '请输入项目id',
+    'indexvue889197-6': '项目类别(钻井 修井 注氮 酸化压裂 )',
+    'indexvue889197-7': '请输入项目类别(钻井 修井 注氮 酸化压裂 )',
+    'indexvue889197-8': '井型',
+    'indexvue889197-9': '请选择井型',
+    'indexvue889197-10': '请选择字典生成',
+    'indexvue889197-11': '井别',
+    'indexvue889197-12': '请输入井别',
+    'indexvue889197-13': '施工工艺',
+    'indexvue889197-14': '请输入施工工艺',
+    'indexvue889197-15': '属性名称',
+    'indexvue889197-16': '请输入属性名称',
+    'indexvue889197-17': '属性标识符',
+    'indexvue889197-18': '请输入属性标识符',
+    'indexvue889197-19': '不同专业公司的扩展属性',
+    'indexvue889197-20': '请输入不同专业公司的扩展属性',
+    'indexvue889197-21': '备注',
+    'indexvue889197-22': '请输入备注',
+    'indexvue889197-23': '施工状态(工作量开始/动迁/准备/施工)',
+    'indexvue889197-24': '请选择施工状态(工作量开始/动迁/准备/施工)',
+    'indexvue889197-25': '创建时间',
+    'indexvue889197-26': '开始日期',
+    'indexvue889197-27': '结束日期',
+    'indexvue889197-28': '搜索',
+    'indexvue889197-29': '重置',
+    'indexvue889197-30': '新增',
+    'indexvue889197-31': '导出',
+    'indexvue889197-32': '主键id',
+    'indexvue889197-33': '操作',
+    'indexvue889197-34': '编辑',
+    'indexvue889197-35': '删除',
+    'iotproject891409-0': '任务扩展模板id',
+    'iotproject891409-1': '请输入任务扩展模板id',
+    'iotproject891409-2': '公司id',
+    'iotproject891409-3': '请输入公司id',
+    'iotproject891409-4': '项目id',
+    'iotproject891409-5': '请输入项目id',
+    'iotproject891409-6': '项目类别(钻井 修井 注氮 酸化压裂 )',
+    'iotproject891409-7': '请输入项目类别(钻井 修井 注氮 酸化压裂 )',
+    'iotproject891409-8': '井型',
+    'iotproject891409-9': '请选择井型',
+    'iotproject891409-10': '请选择字典生成',
+    'iotproject891409-11': '井别',
+    'iotproject891409-12': '请输入井别',
+    'iotproject891409-13': '施工工艺',
+    'iotproject891409-14': '请输入施工工艺',
+    'iotproject891409-15': '属性名称',
+    'iotproject891409-16': '请输入属性名称',
+    'iotproject891409-17': '属性标识符',
+    'iotproject891409-18': '请输入属性标识符',
+    'iotproject891409-19': '不同专业公司的扩展属性',
+    'iotproject891409-20': '请输入不同专业公司的扩展属性',
+    'iotproject891409-21': '备注',
+    'iotproject891409-22': '请输入备注',
+    'iotproject891409-23': '施工状态(工作量开始/动迁/准备/施工)',
+    'iotproject891409-24': '确 定',
+    'iotproject891409-25': '取 消'
+  },
+  iotprojecttaskschedule: {
+    'indexvue467778-0': '项目id',
+    'indexvue467778-1': '请输入项目id',
+    'indexvue467778-2': '任务id',
+    'indexvue467778-3': '请输入任务id',
+    'indexvue467778-4': '施工状态(工作量开始/动迁/准备/施工)',
+    'indexvue467778-5': '请选择施工状态(工作量开始/动迁/准备/施工)',
+    'indexvue467778-6': '请选择字典生成',
+    'indexvue467778-7': '状态起始时间',
+    'indexvue467778-8': '开始日期',
+    'indexvue467778-9': '结束日期',
+    'indexvue467778-10': '状态结束时间',
+    'indexvue467778-11': '备注',
+    'indexvue467778-12': '请输入备注',
+    'indexvue467778-13': '创建时间',
+    'indexvue467778-14': '搜索',
+    'indexvue467778-15': '重置',
+    'indexvue467778-16': '新增',
+    'indexvue467778-17': '导出',
+    'indexvue467778-18': '主键id',
+    'indexvue467778-19': '施工阶段描述',
+    'indexvue467778-20': '操作',
+    'indexvue467778-21': '编辑',
+    'indexvue467778-22': '删除',
+    'iotproject787787-0': '项目id',
+    'iotproject787787-1': '请输入项目id',
+    'iotproject787787-2': '任务id',
+    'iotproject787787-3': '请输入任务id',
+    'iotproject787787-4': '施工状态(工作量开始/动迁/准备/施工)',
+    'iotproject787787-5': '请选择字典生成',
+    'iotproject787787-6': '施工阶段描述',
+    'iotproject787787-7': '状态起始时间',
+    'iotproject787787-8': '选择状态起始时间',
+    'iotproject787787-9': '状态结束时间',
+    'iotproject787787-10': '选择状态结束时间',
+    'iotproject787787-11': '备注',
+    'iotproject787787-12': '请输入备注',
+    'iotproject787787-13': '确 定',
+    'iotproject787787-14': '取 消'
+  },
+  iotprojecttasktemplate: {
+    'taskattrmo927795-0': '下拉选项',
+    'taskattrmo927795-1': '对该下拉选项的描述',
+    'taskattrmo927795-2': '下拉选项的值',
+    'taskattrmo927795-3': '删除',
+    'taskattrmo437499-0': '单位',
+    'taskattrmo437499-1': '请选择单位',
+    'indexvue272401-0': '模板名称',
+    'indexvue272401-1': '公司名称',
+    'indexvue272401-2': '添加属性',
+    'indexvue272401-3': '属性名称',
+    'indexvue272401-4': '标识符',
+    'indexvue272401-5': '数据类型',
+    'indexvue272401-6': '操作',
+    'indexvue272401-7': '编辑',
+    'indexvue272401-8': '删除',
+    'taskattrmo172918-0': '属性名称',
+    'taskattrmo172918-1': '请输入属性名称',
+    'taskattrmo172918-2': '默认值',
+    'taskattrmo172918-3': '请输入默认值',
+    'taskattrmo172918-4': '描述',
+    'taskattrmo172918-5': '请输入属性描述',
+    'taskattrmo172918-6': '确 定',
+    'taskattrmo172918-7': '取 消',
+    'taskattrmo359495-0': '数据类型',
+    'taskattrmo359495-1': '请选择数据类型',
+    'taskattrmo359495-2': '时间格式',
+    'taskattrmo359495-3': 'String 类型的 UTC 时间戳(毫秒)',
+    'taskattrmo359495-4': '是否必填',
+    'indexvue797541-0': '项目类别',
+    'indexvue797541-1': '请输入项目类别',
+    'indexvue797541-2': '模板名称',
+    'indexvue797541-3': '请输入模板名称',
+    'indexvue797541-4': '创建时间',
+    'indexvue797541-5': '开始日期',
+    'indexvue797541-6': '结束日期',
+    'indexvue797541-7': '搜索',
+    'indexvue797541-8': '重置',
+    'indexvue797541-9': '新增',
+    'indexvue797541-10': '导出',
+    'indexvue797541-11': '公司',
+    'indexvue797541-12': '模板标识符',
+    'indexvue797541-13': '操作',
+    'indexvue797541-14': '查看',
+    'indexvue797541-15': '编辑',
+    'indexvue797541-16': '删除',
+    'iotproject621355-0': '公司id',
+    'iotproject621355-1': '请输入公司id',
+    'iotproject621355-2': '项目id',
+    'iotproject621355-3': '请输入项目id',
+    'iotproject621355-4': '项目类别(钻井 修井 注氮 酸化压裂 )',
+    'iotproject621355-5': '请输入项目类别(钻井 修井 注氮 酸化压裂 )',
+    'iotproject621355-6': '井型',
+    'iotproject621355-7': '请选择井型',
+    'iotproject621355-8': '请选择字典生成',
+    'iotproject621355-9': '井别',
+    'iotproject621355-10': '请输入井别',
+    'iotproject621355-11': '施工工艺',
+    'iotproject621355-12': '请输入施工工艺',
+    'iotproject621355-13': '模板名称',
+    'iotproject621355-14': '请输入模板名称',
+    'iotproject621355-15': '模板标识符',
+    'iotproject621355-16': '请输入模板标识符',
+    'iotproject621355-17': '备注',
+    'iotproject621355-18': '请输入备注',
+    'iotproject621355-19': '施工状态(工作量开始/动迁/准备/施工)',
+    'iotproject621355-20': '确 定',
+    'iotproject621355-21': '取 消'
+  },
+  iotrddailyreport: {
+    'dailystati057949-0': '暂无数据',
+    'dailystati057949-1': '表格',
+    'dailystati057949-2': '看板',
+    'dailystati057949-3': '导出',
+    'dailystati057949-4': '部门',
+    'dailystati057949-5': '油耗(万升)',
+    'dailystati057949-6': '桥塞',
+    'dailystati057949-7': '趟数',
+    'dailystati057949-8': '井数',
+    'dailystati057949-9': '段数',
+    'dailystati057949-10': '小时(H)',
+    'dailystati057949-11': '水方量(方)',
+    'dailystati057949-12': '台次',
+    'dailystati057949-13': '泵车',
+    'dailystati057949-14': '仪表/混砂',
+    'dailystati057949-15': '设备利用率',
+    'nonproduct278320-0': '表格',
+    'nonproduct278320-1': '看板',
+    'nonproduct278320-2': '队伍',
+    'nonproduct278320-3': 'npt合计',
+    'nonproduct278320-4': '时长(H)',
+    'nonproduct278320-5': '占比',
+    'nonproduct278320-6': '自然时间(H)',
+    'createrdfo032456-0': '新建日报',
+    'createrdfo032456-1': '施工队伍',
+    'createrdfo032456-2': '请选择施工队伍',
+    'createrdfo032456-3': '施工日期',
+    'createrdfo032456-4': '请选择施工日期',
+    'createrdfo032456-5': '施工地点',
+    'createrdfo032456-6': '请输入施工地点',
+    'createrdfo032456-7': '带班干部',
+    'createrdfo032456-8': '请选择带班干部',
+    'createrdfo032456-9': '填报人',
+    'createrdfo032456-10': '时间节点',
+    'createrdfo032456-11': '开始时间',
+    'createrdfo032456-12': '结束时间',
+    'createrdfo032456-13': '选择时间范围',
+    'createrdfo032456-14': '施工状态',
+    'createrdfo032456-15': '请选择',
+    'createrdfo032456-16': '当日油耗(L)',
+    'createrdfo032456-17': '请输入当日油耗',
+    'createrdfo032456-18': '当日生产动态',
+    'createrdfo032456-19': '请输入外组设备',
+    'createrdfo032456-20': '下步工作计划',
+    'createrdfo032456-21': '请输入下步工作计划',
+    'createrdfo032456-22': '外租设备',
+    'createrdfo032456-23': '故障情况',
+    'createrdfo032456-24': '请输入故障情况',
+    'createrdfo032456-25': '施工简报',
+    'createrdfo032456-26': '请输入施工简报',
+    'createrdfo032456-27': '非生产时间',
+    'createrdfo032456-28': '其他非生产原因',
+    'createrdfo032456-29': "当'其他非生产时间'大于0时必填",
+    'createrdfo032456-30': '确 定',
+    'createrdfo032456-31': '取 消',
+    'dailyrepor816746-0': '甲方:',
+    'dailyrepor816746-1': '合同号:',
+    'dailyrepor816746-2': '井号:',
+    'dailyrepor816746-3': '施工队伍:',
+    'dailyrepor816746-4': '施工地点:',
+    'dailyrepor816746-5': '工艺:',
+    'dailyrepor816746-6': '搬迁日期:',
+    'dailyrepor816746-7': '开工日期:',
+    'dailyrepor816746-8': '完工日期:',
+    'dailyrepor816746-9': '带班干部:',
+    'dailyrepor816746-10': '设备配置:',
+    'dailyrepor816746-11': '时间节点',
+    'dailyrepor816746-12': '开始时间',
+    'dailyrepor816746-13': '结束时间',
+    'dailyrepor816746-14': '选择时间范围',
+    'dailyrepor816746-15': '施工状态',
+    'dailyrepor816746-16': '请选择施工状态',
+    'dailyrepor816746-17': '平台井',
+    'dailyrepor816746-18': '请选择平台井',
+    'dailyrepor816746-19': '施工设备',
+    'dailyrepor816746-20': '选择设备',
+    'dailyrepor816746-21': '未选择设备',
+    'dailyrepor816746-22': '未施工设备',
+    'dailyrepor816746-23': '未施工的设备将显示在这里',
+    'dailyrepor816746-24': '施工工艺',
+    'dailyrepor816746-25': '请选择施工工艺',
+    'dailyrepor816746-26': '`请输入${attr.name}`',
+    'dailyrepor816746-27': '`选择${attr.name}`',
+    'dailyrepor816746-28': '当日生产动态',
+    'dailyrepor816746-29': '请输入当日生产动态',
+    'dailyrepor816746-30': '下步工作计划',
+    'dailyrepor816746-31': '请输入下步工作计划',
+    'dailyrepor816746-32': '外租设备',
+    'dailyrepor816746-33': '请输入外租设备信息',
+    'dailyrepor816746-34': '故障情况',
+    'dailyrepor816746-35': '请输入故障情况',
+    'dailyrepor816746-36': '故障误工H',
+    'dailyrepor816746-37': '请输入故障误工H',
+    'dailyrepor816746-38': '附件',
+    'dailyrepor816746-39': '删除',
+    'dailyrepor816746-40': '无附件',
+    'dailyrepor816746-41': '平台井工作量',
+    'dailyrepor816746-42': '井号',
+    'dailyrepor816746-43': '暂无平台井工作量数据',
+    'dailyrepor816746-44': '审批意见',
+    'dailyrepor816746-45': '请输入审批意见',
+    'dailyrepor816746-46': '审批通过',
+    'dailyrepor816746-47': '审批驳回',
+    'dailyrepor816746-48': '选择施工设备',
+    'dailyrepor816746-49': '取消',
+    'dailyrepor816746-50': '确定',
+    'filldailyr440256-0': '项目',
+    'filldailyr440256-1': '请输入项目',
+    'filldailyr440256-2': '任务',
+    'filldailyr440256-3': '请输入任务',
+    'filldailyr440256-4': '创建时间',
+    'filldailyr440256-5': '开始日期',
+    'filldailyr440256-6': '结束日期',
+    'filldailyr440256-7': '新增日报',
+    'filldailyr440256-8': '搜索',
+    'filldailyr440256-9': '重置',
+    'filldailyr440256-10': '操作',
+    'filldailyr440256-11': '填报',
+    'filldailyr440256-12': '查看',
+    'filldailyr440256-13': '时效',
+    'filldailyr440256-14': '日报状态',
+    'filldailyr440256-15': '审批状态',
+    'filldailyr440256-16': '施工队伍',
+    'filldailyr440256-17': '非生产时效',
+    'filldailyr440256-18': '非生产时间',
+    'filldailyr440256-19': '工程质量',
+    'filldailyr440256-20': '设备故障',
+    'filldailyr440256-21': '设备保养',
+    'filldailyr440256-22': '技术受限',
+    'filldailyr440256-23': '生产配合',
+    'filldailyr440256-24': '生产组织',
+    'filldailyr440256-25': '不可抗力',
+    'filldailyr440256-26': '待命',
+    'filldailyr440256-27': '甲方设计',
+    'filldailyr440256-28': '甲方准备',
+    'filldailyr440256-29': '甲方资源',
+    'filldailyr440256-30': '其它非生产时间',
+    'filldailyr440256-31': '其他非生产时间原因',
+    'filldailyr440256-32': '带班干部',
+    'filldailyr440256-33': '填报人',
+    'filldailyr570052-0': '甲方',
+    'filldailyr570052-1': '合同号',
+    'filldailyr570052-2': '井号',
+    'filldailyr570052-3': '施工队伍',
+    'filldailyr570052-4': '施工地点',
+    'filldailyr570052-5': '工艺',
+    'filldailyr570052-6': '设计工作量',
+    'filldailyr570052-7': '开工日期',
+    'filldailyr570052-8': '完工日期',
+    'filldailyr570052-9': '带班干部',
+    'filldailyr570052-10': '填报人',
+    'filldailyr570052-11': '设备配置',
+    'filldailyr570052-12': '任务进度',
+    'filldailyr570052-13': '时间节点',
+    'filldailyr570052-14': '开始时间',
+    'filldailyr570052-15': '结束时间',
+    'filldailyr570052-16': '选择时间范围',
+    'filldailyr570052-17': '当日油耗(L)',
+    'filldailyr570052-18': '请输入当日油耗',
+    'filldailyr570052-19': '施工设备',
+    'filldailyr570052-20': '请选择施工设备',
+    'filldailyr570052-21': '闲置/未施工设备',
+    'filldailyr570052-22': '所有设备均已投入施工',
+    'filldailyr570052-23': '生产动态',
+    'filldailyr570052-24': '添加一行',
+    'filldailyr570052-25': '开始日期',
+    'filldailyr570052-26': '选择开始日期',
+    'filldailyr570052-27': '选择开始时间',
+    'filldailyr570052-28': '结束日期',
+    'filldailyr570052-29': '选择结束日期',
+    'filldailyr570052-30': '选择结束时间',
+    'filldailyr570052-31': '时长(H)',
+    'filldailyr570052-32': '施工详情',
+    'filldailyr570052-33': '输入施工详情',
+    'filldailyr570052-34': '操作',
+    'filldailyr570052-35': '删除',
+    'filldailyr570052-36': '下步工作计划',
+    'filldailyr570052-37': '请输入下步工作计划',
+    'filldailyr570052-38': '外租设备',
+    'filldailyr570052-39': '请输入外租设备',
+    'filldailyr570052-40': '故障情况',
+    'filldailyr570052-41': '请输入故障情况',
+    'filldailyr570052-42': '故障误工(H)',
+    'filldailyr570052-43': '附件',
+    'filldailyr570052-44': '无附件',
+    'filldailyr570052-45': '平台井',
+    'filldailyr570052-46': '请选择平台井',
+    'filldailyr570052-47': '施工状态',
+    'filldailyr570052-48': '请选择',
+    'filldailyr570052-49': '施工工艺',
+    'filldailyr570052-50': '请输入',
+    'filldailyr570052-51': '非生产时间',
+    'filldailyr570052-52': '其他非生产原因',
+    'filldailyr570052-53': "当'其他非生产时间'大于0时必填",
+    'filldailyr570052-54': '当日施工简报',
+    'filldailyr570052-55': '请输入当日施工简报',
+    'filldailyr570052-56': '油耗信息',
+    'filldailyr570052-57': '设备编号',
+    'filldailyr570052-58': '设备名称',
+    'filldailyr570052-59': '发生日期',
+    'filldailyr570052-60': '中航北斗油耗(L)',
+    'filldailyr570052-61': '实际油耗(L)',
+    'filldailyr570052-62': '平台井工作量',
+    'filldailyr570052-63': '审批意见',
+    'filldailyr570052-64': '请输入审批意见',
+    'filldailyr570052-65': '确 定',
+    'filldailyr570052-66': '取 消',
+    'filldailyr570052-67': '审批通过',
+    'filldailyr570052-68': '审批拒绝',
+    'filldailyr570052-69': '返 回',
+    'indexvue483816-0': '项目',
+    'indexvue483816-1': '请输入项目',
+    'indexvue483816-2': '任务',
+    'indexvue483816-3': '请输入任务',
+    'indexvue483816-4': '创建时间',
+    'indexvue483816-5': '开始日期',
+    'indexvue483816-6': '结束日期',
+    'indexvue483816-7': '施工状态',
+    'indexvue483816-8': '请选择施工状态',
+    'indexvue483816-9': '搜索',
+    'indexvue483816-10': '重置',
+    'indexvue483816-11': '导出',
+    'indexvue483816-12': '施工队伍',
+    'indexvue483816-13': '施工工艺',
+    'indexvue483816-14': '生产动态',
+    'indexvue483816-15': '施工详情:',
+    'indexvue483816-16': '当日施工简报',
+    'indexvue483816-17': '下步工作计划',
+    'indexvue483816-18': '当日',
+    'indexvue483816-19': '施工井',
+    'indexvue483816-20': '施工层',
+    'indexvue483816-21': '泵车台次',
+    'indexvue483816-22': '仪表/混砂',
+    'indexvue483816-23': '趟数',
+    'indexvue483816-24': '桥塞',
+    'indexvue483816-25': '水方量',
+    'indexvue483816-26': '时间(H)',
+    'indexvue483816-27': '油耗(L)',
+    'indexvue483816-28': '外租设备',
+    'indexvue483816-29': '故障情况',
+    'indexvue483816-30': '故障误工(H)',
+    'indexvue483816-31': '非生产时效',
+    'indexvue483816-32': '非生产时间',
+    'indexvue483816-33': '工程质量',
+    'indexvue483816-34': '设备故障',
+    'indexvue483816-35': '设备保养',
+    'indexvue483816-36': '技术受限',
+    'indexvue483816-37': '生产配合',
+    'indexvue483816-38': '生产组织',
+    'indexvue483816-39': '不可抗力',
+    'indexvue483816-40': '待命',
+    'indexvue483816-41': '甲方设计',
+    'indexvue483816-42': '甲方准备',
+    'indexvue483816-43': '甲方资源',
+    'indexvue483816-44': '其它非生产时间',
+    'indexvue483816-45': '其他非生产时间原因',
+    'indexvue483816-46': '非生产时间填写',
+    'indexvue483816-47': '时间节点',
+    'indexvue483816-48': '审批状态',
+    'indexvue483816-49': '操作',
+    'indexvue483816-50': '查看',
+    'indexvue483816-51': '审批',
+    'iotrddaily086731-0': '施工队伍id',
+    'iotrddaily086731-1': '请输入施工队伍id',
+    'iotrddaily086731-2': '项目id',
+    'iotrddaily086731-3': '请输入项目id',
+    'iotrddaily086731-4': '任务id',
+    'iotrddaily086731-5': '请输入任务id',
+    'iotrddaily086731-6': '项目类别(钻井 修井 注氮 酸化压裂... )',
+    'iotrddaily086731-7': '请输入项目类别(钻井 修井 注氮 酸化压裂... )',
+    'iotrddaily086731-8': '施工工艺([123,233])',
+    'iotrddaily086731-9': '请输入施工工艺([123,233])',
+    'iotrddaily086731-10': '施工设备([123,233])',
+    'iotrddaily086731-11': '请输入施工设备([123,233])',
+    'iotrddaily086731-12': '时间节点-开始',
+    'iotrddaily086731-13': '选择时间节点-开始',
+    'iotrddaily086731-14': '时间节点-结束',
+    'iotrddaily086731-15': '选择时间节点-结束',
+    'iotrddaily086731-16': '累计施工井',
+    'iotrddaily086731-17': '请输入累计施工井',
+    'iotrddaily086731-18': '累计施工层',
+    'iotrddaily086731-19': '请输入累计施工层',
+    'iotrddaily086731-20': '当日泵车台次',
+    'iotrddaily086731-21': '请输入当日泵车台次',
+    'iotrddaily086731-22': '当日仪表/混砂',
+    'iotrddaily086731-23': '请输入当日仪表/混砂',
+    'iotrddaily086731-24': '趟数',
+    'iotrddaily086731-25': '请输入趟数',
+    'iotrddaily086731-26': '桥塞',
+    'iotrddaily086731-27': '请输入桥塞',
+    'iotrddaily086731-28': '水方量',
+    'iotrddaily086731-29': '请输入水方量',
+    'iotrddaily086731-30': '时间H',
+    'iotrddaily086731-31': '请输入时间H',
+    'iotrddaily086731-32': '当日油耗(吨)',
+    'iotrddaily086731-33': '请输入当日油耗(吨)',
+    'iotrddaily086731-34': '当日用电量(kWh)',
+    'iotrddaily086731-35': '请输入当日用电量(kWh)',
+    'iotrddaily086731-36': '生产时间(H)',
+    'iotrddaily086731-37': '选择生产时间(H)',
+    'iotrddaily086731-38': '非生产时间(H)',
+    'iotrddaily086731-39': '选择非生产时间(H)',
+    'iotrddaily086731-40': '非生产时间原因',
+    'iotrddaily086731-41': '请输入非生产时间原因',
+    'iotrddaily086731-42': '施工开始日期',
+    'iotrddaily086731-43': '选择施工开始日期',
+    'iotrddaily086731-44': '施工结束日期',
+    'iotrddaily086731-45': '选择施工结束日期',
+    'iotrddaily086731-46': '当日生产情况生产动态',
+    'iotrddaily086731-47': '请选择字典生成',
+    'iotrddaily086731-48': '外租情况(可能有附件)',
+    'iotrddaily086731-49': '请输入外租情况(可能有附件)',
+    'iotrddaily086731-50': '下步工作计划',
+    'iotrddaily086731-51': '请输入下步工作计划',
+    'iotrddaily086731-52': '施工状态(动迁上井/动迁下井/施工准备/施工...)',
+    'iotrddaily086731-53': '故障情况',
+    'iotrddaily086731-54': '请输入故障情况',
+    'iotrddaily086731-55': '故障误工h',
+    'iotrddaily086731-56': '选择故障误工h',
+    'iotrddaily086731-57': '人员情况',
+    'iotrddaily086731-58': '请输入人员情况',
+    'iotrddaily086731-59': '全员数量',
+    'iotrddaily086731-60': '请输入全员数量',
+    'iotrddaily086731-61': '休假人员数量',
+    'iotrddaily086731-62': '请输入休假人员数量',
+    'iotrddaily086731-63': '不同专业公司的扩展属性值',
+    'iotrddaily086731-64': '请输入不同专业公司的扩展属性值',
+    'iotrddaily086731-65': '排序值',
+    'iotrddaily086731-66': '请输入排序值',
+    'iotrddaily086731-67': '备注',
+    'iotrddaily086731-68': '请输入备注',
+    'iotrddaily086731-69': '状态(0启用 1禁用)',
+    'iotrddaily086731-70': '流程实例id',
+    'iotrddaily086731-71': '请输入流程实例id',
+    'iotrddaily086731-72': '审批状态 未提交、审批中、审批通过、审批不通过、已取消',
+    'iotrddaily086731-73': '确 定',
+    'iotrddaily086731-74': '取 消',
+    'rdformvue804373-0': '甲方',
+    'rdformvue804373-1': '合同号',
+    'rdformvue804373-2': '井号',
+    'rdformvue804373-3': '施工队伍',
+    'rdformvue804373-4': '施工地点',
+    'rdformvue804373-5': '工艺',
+    'rdformvue804373-6': '设计工作量',
+    'rdformvue804373-7': '开工日期',
+    'rdformvue804373-8': '完工日期',
+    'rdformvue804373-9': '带班干部',
+    'rdformvue804373-10': '设备配置',
+    'rdformvue804373-11': '任务进度',
+    'rdformvue804373-12': '平台井',
+    'rdformvue804373-13': '请选择平台井',
+    'rdformvue804373-14': '施工状态',
+    'rdformvue804373-15': '请选择',
+    'rdformvue804373-16': '施工工艺',
+    'rdformvue804373-17': '请输入',
+    'rdformvue804373-18': '非生产时间',
+    'rdformvue804373-19': '其他非生产原因',
+    'rdformvue804373-20': "当'其他非生产时间'大于0时必填",
+    'rdformvue804373-21': '当日施工简报',
+    'rdformvue804373-22': '请输入当日施工简报',
+    'rdformvue804373-23': '时间节点',
+    'rdformvue804373-24': '开始时间',
+    'rdformvue804373-25': '结束时间',
+    'rdformvue804373-26': '选择时间范围',
+    'rdformvue804373-27': '当日油耗(L)',
+    'rdformvue804373-28': '请输入当日油耗',
+    'rdformvue804373-29': '施工设备',
+    'rdformvue804373-30': '请选择施工设备',
+    'rdformvue804373-31': '闲置/未施工设备',
+    'rdformvue804373-32': '所有设备均已投入施工',
+    'rdformvue804373-33': '生产动态',
+    'rdformvue804373-34': '添加一行',
+    'rdformvue804373-35': '日期',
+    'rdformvue804373-36': '选择开始时间',
+    'rdformvue804373-37': '选择结束时间',
+    'rdformvue804373-38': '时长(H)',
+    'rdformvue804373-39': '施工详情',
+    'rdformvue804373-40': '输入施工详情',
+    'rdformvue804373-41': '操作',
+    'rdformvue804373-42': '删除',
+    'rdformvue804373-43': '下步工作计划',
+    'rdformvue804373-44': '请输入下步工作计划',
+    'rdformvue804373-45': '外组设备',
+    'rdformvue804373-46': '请输入外组设备',
+    'rdformvue804373-47': '故障情况',
+    'rdformvue804373-48': '请输入故障情况',
+    'rdformvue804373-49': '故障误工(H)',
+    'rdformvue804373-50': '附件',
+    'rdformvue804373-51': '无附件',
+    'rdformvue804373-52': '油耗信息',
+    'rdformvue804373-53': '设备编号',
+    'rdformvue804373-54': '设备名称',
+    'rdformvue804373-55': '发生日期',
+    'rdformvue804373-56': '中航北斗油耗(L)',
+    'rdformvue804373-57': '实际油耗(L)',
+    'rdformvue804373-58': '平台井工作量',
+    'rdformvue804373-59': '审批意见',
+    'rdformvue804373-60': '请输入审批意见',
+    'rdformvue804373-61': '确 定',
+    'rdformvue804373-62': '取 消',
+    'rdformvue804373-63': '审批通过',
+    'rdformvue804373-64': '审批拒绝',
+    'statistics437821-0': '项目',
+    'statistics437821-1': '请输入项目',
+    'statistics437821-2': '任务',
+    'statistics437821-3': '请输入任务',
+    'statistics437821-4': '创建时间',
+    'statistics437821-5': '开始日期',
+    'statistics437821-6': '结束日期',
+    'statistics437821-7': '搜索',
+    'statistics437821-8': '重置',
+    'statistics437821-9': '新增',
+    'statistics437821-10': '导出',
+    'statistics437821-11': '施工周期(D)',
+    'statistics437821-12': '任务开始日期',
+    'statistics437821-13': '项目部',
+    'statistics437821-14': '队伍',
+    'statistics437821-15': '井号',
+    'statistics437821-16': '工艺',
+    'statistics437821-17': '总工作量',
+    'statistics437821-18': '油耗(L)',
+    'statistics437821-19': '已完成工作量',
+    'statistics437821-20': '非生产时效',
+    'statistics437821-21': '甲方',
+    'summaryvue825148-0': '项目',
+    'summaryvue825148-1': '请输入项目',
+    'summaryvue825148-2': '任务',
+    'summaryvue825148-3': '请输入任务',
+    'summaryvue825148-4': '创建时间',
+    'summaryvue825148-5': '开始日期',
+    'summaryvue825148-6': '结束日期',
+    'summaryvue825148-7': '搜索',
+    'summaryvue825148-8': '重置',
+    'summaryvue825148-9': '导出',
+    'summaryvue825148-10': '日报统计',
+    'summaryvue825148-11': '非生产时效'
+  },
+  iotrddailyreportitem: {
+    'indexvue481595-0': '日报id',
+    'indexvue481595-1': '请输入日报id',
+    'indexvue481595-2': '施工队伍id',
+    'indexvue481595-3': '请输入施工队伍id',
+    'indexvue481595-4': '项目id',
+    'indexvue481595-5': '请输入项目id',
+    'indexvue481595-6': '任务id',
+    'indexvue481595-7': '请输入任务id',
+    'indexvue481595-8': '项目类别(钻井 修井 注氮 酸化压裂... )',
+    'indexvue481595-9': '请输入项目类别(钻井 修井 注氮 酸化压裂... )',
+    'indexvue481595-10': '施工工艺',
+    'indexvue481595-11': '请输入施工工艺',
+    'indexvue481595-12': '工作量属性标识符(bridgePlug waterVolume...)',
+    'indexvue481595-13': '请输入工作量属性标识符(bridgePlug waterVolume...)',
+    'indexvue481595-14': '工作量属性名称(泵车台次 仪表/混砂...)',
+    'indexvue481595-15': '请输入工作量属性名称(泵车台次 仪表/混砂...)',
+    'indexvue481595-16': '工作量属性值',
+    'indexvue481595-17': '请输入工作量属性值',
+    'indexvue481595-18': '排序值',
+    'indexvue481595-19': '请输入排序值',
+    'indexvue481595-20': '备注',
+    'indexvue481595-21': '请输入备注',
+    'indexvue481595-22': '状态(0启用 1禁用)',
+    'indexvue481595-23': '请选择状态(0启用 1禁用)',
+    'indexvue481595-24': '请选择字典生成',
+    'indexvue481595-25': '创建时间',
+    'indexvue481595-26': '开始日期',
+    'indexvue481595-27': '结束日期',
+    'indexvue481595-28': '搜索',
+    'indexvue481595-29': '重置',
+    'indexvue481595-30': '新增',
+    'indexvue481595-31': '导出',
+    'indexvue481595-32': '主键id',
+    'indexvue481595-33': '操作',
+    'indexvue481595-34': '编辑',
+    'indexvue481595-35': '删除',
+    'iotrddaily473419-0': '日报id',
+    'iotrddaily473419-1': '请输入日报id',
+    'iotrddaily473419-2': '施工队伍id',
+    'iotrddaily473419-3': '请输入施工队伍id',
+    'iotrddaily473419-4': '项目id',
+    'iotrddaily473419-5': '请输入项目id',
+    'iotrddaily473419-6': '任务id',
+    'iotrddaily473419-7': '请输入任务id',
+    'iotrddaily473419-8': '项目类别(钻井 修井 注氮 酸化压裂... )',
+    'iotrddaily473419-9': '请输入项目类别(钻井 修井 注氮 酸化压裂... )',
+    'iotrddaily473419-10': '施工工艺',
+    'iotrddaily473419-11': '请输入施工工艺',
+    'iotrddaily473419-12': '工作量属性标识符(bridgePlug waterVolume...)',
+    'iotrddaily473419-13': '请输入工作量属性标识符(bridgePlug waterVolume...)',
+    'iotrddaily473419-14': '工作量属性名称(泵车台次 仪表/混砂...)',
+    'iotrddaily473419-15': '请输入工作量属性名称(泵车台次 仪表/混砂...)',
+    'iotrddaily473419-16': '工作量属性值',
+    'iotrddaily473419-17': '请输入工作量属性值',
+    'iotrddaily473419-18': '排序值',
+    'iotrddaily473419-19': '请输入排序值',
+    'iotrddaily473419-20': '备注',
+    'iotrddaily473419-21': '请输入备注',
+    'iotrddaily473419-22': '状态(0启用 1禁用)',
+    'iotrddaily473419-23': '请选择字典生成',
+    'iotrddaily473419-24': '确 定',
+    'iotrddaily473419-25': '取 消'
+  },
+  iotrhdailyreport: {
+    'approvalvu291425-0': '项目',
+    'approvalvu291425-1': '请输入项目',
+    'approvalvu291425-2': '任务',
+    'approvalvu291425-3': '请输入任务',
+    'approvalvu291425-4': '创建时间',
+    'approvalvu291425-5': '开始日期',
+    'approvalvu291425-6': '结束日期',
+    'approvalvu291425-7': '搜索',
+    'approvalvu291425-8': '重置',
+    'approvalvu291425-9': '查看',
+    'approvalvu291425-10': '审批',
+    'dailystati238689-0': '暂无数据',
+    'dailystati238689-1': '表格',
+    'dailystati238689-2': '看板',
+    'dailystati238689-3': '导出',
+    'nonproduct073396-0': '表格',
+    'nonproduct073396-1': '看板',
+    'nonproduct073396-2': '队伍',
+    'nonproduct073396-3': 'npt合计',
+    'nonproduct073396-4': '时长(H)',
+    'nonproduct073396-5': '占比',
+    'nonproduct073396-6': '自然时间(H)',
+    'depttree2v185025-0': '请输入部门名称',
+    'depttree2v185025-1': '新增子节点',
+    'depttree2v185025-2': '重命名',
+    'depttree2v185025-3': '删除',
+    'fillvue068385-0': '项目',
+    'fillvue068385-1': '请输入项目',
+    'fillvue068385-2': '任务',
+    'fillvue068385-3': '请输入任务',
+    'fillvue068385-4': '创建时间',
+    'fillvue068385-5': '开始日期',
+    'fillvue068385-6': '结束日期',
+    'fillvue068385-7': '搜索',
+    'fillvue068385-8': '重置',
+    'fillvue068385-9': '查看',
+    'fillvue068385-10': '编辑',
+    'indexvue193252-0': '项目',
+    'indexvue193252-1': '请输入项目',
+    'indexvue193252-2': '任务',
+    'indexvue193252-3': '请输入任务',
+    'indexvue193252-4': '创建时间',
+    'indexvue193252-5': '开始日期',
+    'indexvue193252-6': '结束日期',
+    'indexvue193252-7': '非生产时效',
+    'indexvue193252-8': '搜索',
+    'indexvue193252-9': '重置',
+    'indexvue193252-10': '导出',
+    'indexvue193252-11': '修改',
+    'indexvue193252-12': '告警提示',
+    'indexvue193252-13': '运行时效超过100%红色预警',
+    'indexvue193252-14': '气电比计算结果大于15橙色预警',
+    'iotrhdaily852875-0': '施工队伍',
+    'iotrhdaily852875-1': '项目',
+    'iotrhdaily852875-2': '任务',
+    'iotrhdaily852875-3': '搬迁安装天数(D)',
+    'iotrhdaily852875-4': '运行时效',
+    'iotrhdaily852875-5': '当日注气量(方)',
+    'iotrhdaily852875-6': '请输入当日注气量(方)',
+    'iotrhdaily852875-7': '当日注水量(方)',
+    'iotrhdaily852875-8': '请输入当日注水量(方)',
+    'iotrhdaily852875-9': '当日注气时间(H)',
+    'iotrhdaily852875-10': '请输入当日注气时间(H)',
+    'iotrhdaily852875-11': '当日注水时间(H)',
+    'iotrhdaily852875-12': '非生产时间(H)',
+    'iotrhdaily852875-13': '非生产时间原因',
+    'iotrhdaily852875-14': '请选择',
+    'iotrhdaily852875-15': '生产动态',
+    'iotrhdaily852875-16': '请输入生产动态',
+    'iotrhdaily852875-17': '累计注气量(万方)',
+    'iotrhdaily852875-18': '累计注水量(方)',
+    'iotrhdaily852875-19': '请输入累计注水量(方)',
+    'iotrhdaily852875-20': '累计完工井次',
+    'iotrhdaily852875-21': '请输入累计完工井次',
+    'iotrhdaily852875-22': '备注',
+    'iotrhdaily852875-23': '请输入备注',
+    'iotrhdaily852875-24': '确 定',
+    'iotrhdaily852875-25': '取 消',
+    'rhformvue723341-0': '运行时效:',
+    'rhformvue723341-1': '审核意见',
+    'rhformvue723341-2': '基础信息',
+    'rhformvue723341-3': '施工队伍',
+    'rhformvue723341-4': '项目',
+    'rhformvue723341-5': '任务',
+    'rhformvue723341-6': '请选择',
+    'rhformvue723341-7': '无任务选项',
+    'rhformvue723341-8': '搬迁安装天数(D)',
+    'rhformvue723341-9': '运行时效',
+    'rhformvue723341-10': '施工状态',
+    'rhformvue723341-11': '请选择施工状态',
+    'rhformvue723341-12': '当日注气量(方)',
+    'rhformvue723341-13': '当日注水量(方)',
+    'rhformvue723341-14': '用电量(kWh)',
+    'rhformvue723341-15': '施工区域',
+    'rhformvue723341-16': '生产动态',
+    'rhformvue723341-17': '故障情况',
+    'rhformvue723341-18': '备注',
+    'rhformvue723341-19': '生产与非生产时间',
+    'rhformvue723341-20': '当日注气时间(H)',
+    'rhformvue723341-21': '注气+非生产=24H',
+    'rhformvue723341-22': '当日注水时间(H)',
+    'rhformvue723341-23': '注气=0时,注水+非生产=24H',
+    'rhformvue723341-24': '其他非生产原因',
+    'rhformvue723341-25': '请输入其他非生产原因',
+    'rhformvue723341-26': '审批意见',
+    'rhformvue723341-27': '请输入审批意见',
+    'rhformvue723341-28': '确 定',
+    'rhformvue723341-29': '取 消',
+    'rhformvue723341-30': '审批通过',
+    'rhformvue723341-31': '审批拒绝',
+    'rhsummaryv714477-0': '项目',
+    'rhsummaryv714477-1': '请输入项目',
+    'rhsummaryv714477-2': '任务',
+    'rhsummaryv714477-3': '请输入任务',
+    'rhsummaryv714477-4': '创建时间',
+    'rhsummaryv714477-5': '开始日期',
+    'rhsummaryv714477-6': '结束日期',
+    'rhsummaryv714477-7': '搜索',
+    'rhsummaryv714477-8': '重置',
+    'rhsummaryv714477-9': '日报统计',
+    'rhsummaryv714477-10': '非生产时效',
+    'rhtablevue744021-0': '日期',
+    'rhtablevue744021-1': '施工队伍',
+    'rhtablevue744021-2': '任务',
+    'rhtablevue744021-3': '审批状态',
+    'rhtablevue744021-4': '施工区域',
+    'rhtablevue744021-5': '施工工艺',
+    'rhtablevue744021-6': '设备号',
+    'rhtablevue744021-7': '设计注气量(万方)',
+    'rhtablevue744021-8': '运行时效',
+    'rhtablevue744021-9': '当日',
+    'rhtablevue744021-10': '注气量(万方)',
+    'rhtablevue744021-11': '注水量(方)',
+    'rhtablevue744021-12': '注气时间(H)',
+    'rhtablevue744021-13': '注水时间(H)',
+    'rhtablevue744021-14': '用电量(kWh)',
+    'rhtablevue744021-15': '油耗(L)',
+    'rhtablevue744021-16': '气电比',
+    'rhtablevue744021-17': '非生产时效',
+    'rhtablevue744021-18': '非生产时间',
+    'rhtablevue744021-19': '工程质量',
+    'rhtablevue744021-20': '设备故障',
+    'rhtablevue744021-21': '设备保养',
+    'rhtablevue744021-22': '技术受限',
+    'rhtablevue744021-23': '生产配合',
+    'rhtablevue744021-24': '生产组织',
+    'rhtablevue744021-25': '不可抗力',
+    'rhtablevue744021-26': '待命',
+    'rhtablevue744021-27': '甲方设计',
+    'rhtablevue744021-28': '甲方准备',
+    'rhtablevue744021-29': '甲方资源',
+    'rhtablevue744021-30': '其它非生产时间',
+    'rhtablevue744021-31': '其他非生产时间原因',
+    'rhtablevue744021-32': '生产动态',
+    'rhtablevue744021-33': '项目',
+    'rhtablevue744021-34': '搬迁安装天数',
+    'rhtablevue744021-35': '井累计',
+    'rhtablevue744021-36': '用电量(MWh)',
+    'rhtablevue744021-37': '年累计',
+    'rhtablevue744021-38': '累计',
+    'rhtablevue744021-39': '完工井次',
+    'rhtablevue744021-40': '产能(万方)',
+    'rhtablevue744021-41': '操作',
+    'summaryvue798136-0': '项目',
+    'summaryvue798136-1': '请输入项目',
+    'summaryvue798136-2': '任务',
+    'summaryvue798136-3': '请输入任务',
+    'summaryvue798136-4': '创建时间',
+    'summaryvue798136-5': '开始日期',
+    'summaryvue798136-6': '结束日期',
+    'summaryvue798136-7': '搜索',
+    'summaryvue798136-8': '重置',
+    'summaryvue798136-9': '日报统计',
+    'summaryvue798136-10': '非生产时效',
+    'unfilledre019573-0': '未填报详情',
+    'unfilledre019573-1': '创建时间',
+    'unfilledre019573-2': '开始日期',
+    'unfilledre019573-3': '结束日期',
+    'unfilledre019573-4': '搜索',
+    'unfilledre019573-5': '重置',
+    'unfilledre019573-6': '日期',
+    'unfilledre019573-7': '部门名称'
+  },
+  iotrydailyreport: {
+    'approvalvu470962-0': '项目',
+    'approvalvu470962-1': '请输入项目',
+    'approvalvu470962-2': '任务',
+    'approvalvu470962-3': '请输入任务',
+    'approvalvu470962-4': '创建时间',
+    'approvalvu470962-5': '开始日期',
+    'approvalvu470962-6': '结束日期',
+    'approvalvu470962-7': '搜索',
+    'approvalvu470962-8': '重置',
+    'approvalvu470962-9': '查看',
+    'approvalvu470962-10': '审批',
+    'dailystati330418-0': '暂无数据',
+    'dailystati330418-1': '表格',
+    'dailystati330418-2': '看板',
+    'dailystati330418-3': '导出',
+    'equipmentf857373-0': '标题',
+    'equipmentf857373-1': '请输入标题',
+    'equipmentf857373-2': '汇报时间',
+    'equipmentf857373-3': '请选择汇报时间',
+    'equipmentf857373-4': '工作地点',
+    'equipmentf857373-5': '请输入工作地点',
+    'equipmentf857373-6': '施工目的',
+    'equipmentf857373-7': '请输入施工目的',
+    'equipmentf857373-8': '安全作业天数',
+    'equipmentf857373-9': '请输入安全作业天数',
+    'equipmentf857373-10': '天',
+    'equipmentf857373-11': '人员情况',
+    'equipmentf857373-12': '请输入人员情况',
+    'equipmentf857373-13': '施工动态明细',
+    'equipmentf857373-14': '新增明细',
+    'equipmentf857373-15': '项目名称',
+    'equipmentf857373-16': '请输入项目名称',
+    'equipmentf857373-17': '施工动态',
+    'equipmentf857373-18': '请输入施工动态',
+    'equipmentf857373-19': '下步计划',
+    'equipmentf857373-20': '请输入下步计划',
+    'equipmentf857373-21': '操作',
+    'equipmentf857373-22': '删除',
+    'equipmentf857373-23': '审批意见',
+    'equipmentf857373-24': "formMode === 'approval' ? '请输入审批意见' : '暂无审批意见'",
+    'equipmentf857373-25': '确 定',
+    'equipmentf857373-26': '审批通过',
+    'equipmentf857373-27': '审批不通过',
+    'equipmentf857373-28': '取 消',
+    'nonproduct444293-0': '表格',
+    'nonproduct444293-1': '看板',
+    'nonproduct444293-2': '部门',
+    'nonproduct444293-3': 'npt合计',
+    'nonproduct444293-4': '时长(H)',
+    'nonproduct444293-5': '占比',
+    'nonproduct444293-6': '自然时间(H)',
+    'xjdailysta823840-0': '暂无数据',
+    'xjdailysta823840-1': '表格',
+    'xjdailysta823840-2': '看板',
+    'xjdailysta823840-3': '导出',
+    'xjnonprodu188275-0': '表格',
+    'xjnonprodu188275-1': '看板',
+    'xjnonprodu188275-2': '部门',
+    'xjnonprodu188275-3': 'npt合计',
+    'xjnonprodu188275-4': '时长(H)',
+    'xjnonprodu188275-5': '占比',
+    'xjnonprodu188275-6': '自然时间(H)',
+    'equipmentv389039-0': '汇报时间',
+    'equipmentv389039-1': '开始日期',
+    'equipmentv389039-2': '结束日期',
+    'equipmentv389039-3': '搜索',
+    'equipmentv389039-4': '重置',
+    'equipmentv389039-5': '序号',
+    'equipmentv389039-6': '标题',
+    'equipmentv389039-7': '施工队伍',
+    'equipmentv389039-8': '工作地点',
+    'equipmentv389039-9': '施工目的',
+    'equipmentv389039-10': '安全作业天数',
+    'equipmentv389039-11': '施工动态',
+    'equipmentv389039-12': '下步计划',
+    'equipmentv389039-13': '人员情况',
+    'equipmentv389039-14': '审批状态',
+    'equipmentv389039-15': '操作',
+    'equipmentv389039-16': '查看',
+    'equipmentv389039-17': '修改',
+    'equipmentv389039-18': '编辑',
+    'equipmentv389039-19': '审批',
+    'fillvue066610-0': '项目',
+    'fillvue066610-1': '请输入项目',
+    'fillvue066610-2': '任务',
+    'fillvue066610-3': '请输入任务',
+    'fillvue066610-4': '创建时间',
+    'fillvue066610-5': '开始日期',
+    'fillvue066610-6': '结束日期',
+    'fillvue066610-7': '搜索',
+    'fillvue066610-8': '重置',
+    'fillvue066610-9': '查看',
+    'fillvue066610-10': '编辑',
+    'indexvue974707-0': '项目',
+    'indexvue974707-1': '请输入项目',
+    'indexvue974707-2': '任务',
+    'indexvue974707-3': '请输入任务',
+    'indexvue974707-4': '创建时间',
+    'indexvue974707-5': '开始日期',
+    'indexvue974707-6': '结束日期',
+    'indexvue974707-7': '非生产时效',
+    'indexvue974707-8': '搜索',
+    'indexvue974707-9': '重置',
+    'indexvue974707-10': '导出',
+    'indexvue974707-11': '编辑',
+    'indexvue974707-12': '删除',
+    'indexvue974707-13': '告警提示',
+    'indexvue974707-14':
+      '当日油耗大于9000升&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;红色预警',
+    'indexvue974707-15':
+      '进尺工作时间+其它生产时间+非生产时间=24H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;否则橙色预警',
+    'iotrydaily858987-0': '施工队伍',
+    'iotrydaily858987-1': '项目',
+    'iotrydaily858987-2': '任务',
+    'iotrydaily858987-3': '请选择',
+    'iotrydaily858987-4': '上井次完井时间',
+    'iotrydaily858987-5': '设计井深(m)',
+    'iotrydaily858987-6': '当前井深(m)',
+    'iotrydaily858987-7': '请输入当前井深(m)',
+    'iotrydaily858987-8': '日进尺(m)',
+    'iotrydaily858987-9': '月进尺(m)',
+    'iotrydaily858987-10': '年累计进尺(m)',
+    'iotrydaily858987-11': '当日用电量(kWh)',
+    'iotrydaily858987-12': '请输入当日用电量(kWh)',
+    'iotrydaily858987-13': '当日油耗(升)',
+    'iotrydaily858987-14': '请输入当日油耗(升)',
+    'iotrydaily858987-15': '总施工井数',
+    'iotrydaily858987-16': '完工井数',
+    'iotrydaily858987-17': '泥浆密度(g/cm³)',
+    'iotrydaily858987-18': '请输入泥浆性能-密度(g/cm³)',
+    'iotrydaily858987-19': '泥浆粘度(S)',
+    'iotrydaily858987-20': '请输入泥浆性能-粘度(S)',
+    'iotrydaily858987-21': '水平段长度(m)',
+    'iotrydaily858987-22': '请输入水平段长度(m)',
+    'iotrydaily858987-23': '井斜(°)',
+    'iotrydaily858987-24': '请输入井斜(°)',
+    'iotrydaily858987-25': '方位(°)',
+    'iotrydaily858987-26': '请输入方位(°)',
+    'iotrydaily858987-27': '设计井身结构',
+    'iotrydaily858987-28': '生产动态',
+    'iotrydaily858987-29': '请输入生产动态',
+    'iotrydaily858987-30': '人员情况',
+    'iotrydaily858987-31': '请输入人员情况',
+    'iotrydaily858987-32': '备注',
+    'iotrydaily858987-33': '请输入备注',
+    'iotrydaily858987-34': '确 定',
+    'iotrydaily858987-35': '取 消',
+    'iotryxjdai436185-0': '施工队伍',
+    'iotryxjdai436185-1': '项目',
+    'iotryxjdai436185-2': '任务',
+    'iotryxjdai436185-3': '请选择',
+    'iotryxjdai436185-4': '井别',
+    'iotryxjdai436185-5': '设计井深(m)',
+    'iotryxjdai436185-6': '井控级别',
+    'iotryxjdai436185-7': '套生段产管尺寸(mm)',
+    'iotryxjdai436185-8': '总施工井数',
+    'iotryxjdai436185-9': '完工井数',
+    'iotryxjdai436185-10': '请输入目前工序',
+    'iotryxjdai436185-11': '请输入下步工序',
+    'iotryxjdai436185-12': '生产时间(H)',
+    'iotryxjdai436185-13': '请输入生产时间(H)',
+    'iotryxjdai436185-14': '生产动态',
+    'iotryxjdai436185-15': '请输入生产动态',
+    'iotryxjdai436185-16': '全员数量',
+    'iotryxjdai436185-17': '请输入全员数量',
+    'iotryxjdai436185-18': '在岗人数',
+    'iotryxjdai436185-19': '休假人员数量',
+    'iotryxjdai436185-20': '请输入休假人员数量',
+    'iotryxjdai436185-21': '备注',
+    'iotryxjdai436185-22': '请输入备注',
+    'iotryxjdai436185-23': '确 定',
+    'iotryxjdai436185-24': '取 消',
+    'ryformvue846251-0': '油量消耗:',
+    'ryformvue846251-1': '当日油耗',
+    'ryformvue846251-2': '时间平衡:',
+    'ryformvue846251-3': '审核意见',
+    'ryformvue846251-4': '基础信息',
+    'ryformvue846251-5': '施工队伍',
+    'ryformvue846251-6': '项目',
+    'ryformvue846251-7': '任务井',
+    'ryformvue846251-8': '请选择任务井',
+    'ryformvue846251-9': '施工区域',
+    'ryformvue846251-10': '施工状态',
+    'ryformvue846251-11': '请选择施工状态',
+    'ryformvue846251-12': '设计井深(m)',
+    'ryformvue846251-13': '当前井深(m)',
+    'ryformvue846251-14': '请输入当前井深(m)',
+    'ryformvue846251-15': '当日用电量(kWh)',
+    'ryformvue846251-16': '请输入当日用电量(kWh)',
+    'ryformvue846251-17': '当日油耗(升)',
+    'ryformvue846251-18': '请输入当日油耗(升)',
+    'ryformvue846251-19': '泥浆密度(g/cm³)',
+    'ryformvue846251-20': '请输入泥浆性能-密度(g/cm³)',
+    'ryformvue846251-21': '泥浆粘度(S)',
+    'ryformvue846251-22': '请输入泥浆性能-粘度(S)',
+    'ryformvue846251-23': '水平段长度(m)',
+    'ryformvue846251-24': '请输入水平段长度(m)',
+    'ryformvue846251-25': '井斜(°)',
+    'ryformvue846251-26': '请输入井斜(°)',
+    'ryformvue846251-27': '方位(°)',
+    'ryformvue846251-28': '请输入方位(°)',
+    'ryformvue846251-29': '设计井身结构',
+    'ryformvue846251-30': '人员情况',
+    'ryformvue846251-31': '请输入人员情况',
+    'ryformvue846251-32': '备注',
+    'ryformvue846251-33': '生产动态',
+    'ryformvue846251-34': '添加一行',
+    'ryformvue846251-35': '日期',
+    'ryformvue846251-36': '选择日期',
+    'ryformvue846251-37': '开始时间',
+    'ryformvue846251-38': '选择开始时间',
+    'ryformvue846251-39': '结束时间',
+    'ryformvue846251-40': '选择结束时间',
+    'ryformvue846251-41': '时长(H)',
+    'ryformvue846251-42': '工况',
+    'ryformvue846251-43': '请输入工况',
+    'ryformvue846251-44': '结束井深(m)',
+    'ryformvue846251-45': '请输入结束井深',
+    'ryformvue846251-46': '详细描述',
+    'ryformvue846251-47': '请输入详细描述',
+    'ryformvue846251-48': '操作',
+    'ryformvue846251-49': '删除',
+    'ryformvue846251-50': '当日施工简报',
+    'ryformvue846251-51': '请输入当日施工简报',
+    'ryformvue846251-52': '下步计划',
+    'ryformvue846251-53': '请输入下步计划',
+    'ryformvue846251-54': '故障情况',
+    'ryformvue846251-55': '请输入故障情况',
+    'ryformvue846251-56': '生产与非生产时间',
+    'ryformvue846251-57': '进尺工作时间(H)',
+    'ryformvue846251-58': '进尺+其他+非生产=24H',
+    'ryformvue846251-59': '其它生产时间(H)',
+    'ryformvue846251-60': '请输入其它生产时间(H)',
+    'ryformvue846251-61': '其他非生产原因',
+    'ryformvue846251-62': '请输入其他非生产原因',
+    'ryformvue846251-63': '审批意见',
+    'ryformvue846251-64': '请输入审批意见',
+    'ryformvue846251-65': '确 定',
+    'ryformvue846251-66': '取 消',
+    'ryformvue846251-67': '审批通过',
+    'ryformvue846251-68': '审批拒绝',
+    'rysummaryv399759-0': '项目',
+    'rysummaryv399759-1': '请输入项目',
+    'rysummaryv399759-2': '任务',
+    'rysummaryv399759-3': '请输入任务',
+    'rysummaryv399759-4': '创建时间',
+    'rysummaryv399759-5': '开始日期',
+    'rysummaryv399759-6': '结束日期',
+    'rysummaryv399759-7': '搜索',
+    'rysummaryv399759-8': '重置',
+    'rysummaryv399759-9': '日报统计',
+    'rysummaryv399759-10': '非生产时效',
+    'rytablevue488823-0': '日期',
+    'rytablevue488823-1': '施工队伍',
+    'rytablevue488823-2': '任务',
+    'rytablevue488823-3': '审批状态',
+    'rytablevue488823-4': '井深(m)',
+    'rytablevue488823-5': '设计',
+    'rytablevue488823-6': '当前',
+    'rytablevue488823-7': '进尺(m)',
+    'rytablevue488823-8': '日',
+    'rytablevue488823-9': '月',
+    'rytablevue488823-10': '年',
+    'rytablevue488823-11': '生产动态',
+    'rytablevue488823-12': '工况:',
+    'rytablevue488823-13': '详细描述:',
+    'rytablevue488823-14': '当日施工简报',
+    'rytablevue488823-15': '下步计划',
+    'rytablevue488823-16': '进尺工作时间(H)',
+    'rytablevue488823-17': '其它生产时间(H)',
+    'rytablevue488823-18': '非生产时效',
+    'rytablevue488823-19': '设备型号',
+    'rytablevue488823-20': '上井次完井时间',
+    'rytablevue488823-21': '施工区域',
+    'rytablevue488823-22': '总施工井数',
+    'rytablevue488823-23': '完工井数',
+    'rytablevue488823-24': '泥浆性能',
+    'rytablevue488823-25': '密度(g/cm³)',
+    'rytablevue488823-26': '粘度(S)',
+    'rytablevue488823-27': '当日',
+    'rytablevue488823-28': '用电量(kWh)',
+    'rytablevue488823-29': '油耗(升)',
+    'rytablevue488823-30': '水平段长度(m)',
+    'rytablevue488823-31': '井斜(°)',
+    'rytablevue488823-32': '方位(°)',
+    'rytablevue488823-33': '设计井身结构',
+    'rytablevue488823-34': '项目',
+    'rytablevue488823-35': '非生产时间',
+    'rytablevue488823-36': '工程质量',
+    'rytablevue488823-37': '设备故障',
+    'rytablevue488823-38': '设备保养',
+    'rytablevue488823-39': '技术受限',
+    'rytablevue488823-40': '生产配合',
+    'rytablevue488823-41': '生产组织',
+    'rytablevue488823-42': '不可抗力',
+    'rytablevue488823-43': '待命',
+    'rytablevue488823-44': '甲方设计',
+    'rytablevue488823-45': '甲方准备',
+    'rytablevue488823-46': '甲方资源',
+    'rytablevue488823-47': '其它非生产时间',
+    'rytablevue488823-48': '其他非生产时间原因',
+    'rytablevue488823-49': '操作',
+    'ryxjformvu491688-0': '运行时效:',
+    'ryxjformvu491688-1': '时间平衡:',
+    'ryxjformvu491688-2': '油量消耗:',
+    'ryxjformvu491688-3': '当日油耗',
+    'ryxjformvu491688-4': '审核意见',
+    'ryxjformvu491688-5': '基础信息',
+    'ryxjformvu491688-6': '施工队伍',
+    'ryxjformvu491688-7': '项目',
+    'ryxjformvu491688-8': '任务井',
+    'ryxjformvu491688-9': '请选择任务井',
+    'ryxjformvu491688-10': '施工区域',
+    'ryxjformvu491688-11': '请选择',
+    'ryxjformvu491688-12': '井别',
+    'ryxjformvu491688-13': '设计井深(m)',
+    'ryxjformvu491688-14': '井控级别',
+    'ryxjformvu491688-15': '套生段产管尺寸(mm)',
+    'ryxjformvu491688-16': '当日油耗(升)',
+    'ryxjformvu491688-17': '请输入当日油耗(升)',
+    'ryxjformvu491688-18': '请输入目前工序',
+    'ryxjformvu491688-19': '请输入下步工序',
+    'ryxjformvu491688-20': '运行时效',
+    'ryxjformvu491688-21': '全员数量',
+    'ryxjformvu491688-22': '请输入全员数量',
+    'ryxjformvu491688-23': '在岗人数',
+    'ryxjformvu491688-24': '休假人员数量',
+    'ryxjformvu491688-25': '请输入休假人员数量',
+    'ryxjformvu491688-26': '白班跟班干部',
+    'ryxjformvu491688-27': '请输入白班跟班干部',
+    'ryxjformvu491688-28': '备注',
+    'ryxjformvu491688-29': '夜班跟班干部',
+    'ryxjformvu491688-30': '请输入夜班跟班干部',
+    'ryxjformvu491688-31': '生产动态',
+    'ryxjformvu491688-32': '添加一行',
+    'ryxjformvu491688-33': '日期',
+    'ryxjformvu491688-34': '选择日期',
+    'ryxjformvu491688-35': '开始时间',
+    'ryxjformvu491688-36': '选择开始时间',
+    'ryxjformvu491688-37': '结束时间',
+    'ryxjformvu491688-38': '选择结束时间',
+    'ryxjformvu491688-39': '时长(H)',
+    'ryxjformvu491688-40': '工况',
+    'ryxjformvu491688-41': '请输入工况',
+    'ryxjformvu491688-42': '详细描述',
+    'ryxjformvu491688-43': '请输入详细描述',
+    'ryxjformvu491688-44': '定额时长',
+    'ryxjformvu491688-45': '请输入定额时长',
+    'ryxjformvu491688-46': '定额时效',
+    'ryxjformvu491688-47': '操作',
+    'ryxjformvu491688-48': '删除',
+    'ryxjformvu491688-49': '当日施工简报',
+    'ryxjformvu491688-50': '请输入当日施工简报',
+    'ryxjformvu491688-51': '故障情况',
+    'ryxjformvu491688-52': '请输入故障情况',
+    'ryxjformvu491688-53': '生产与非生产时间',
+    'ryxjformvu491688-54': '额定生产时间(H)',
+    'ryxjformvu491688-55': '请输入额定生产时间(H)',
+    'ryxjformvu491688-56': '生产时间(H)',
+    'ryxjformvu491688-57': '请输入生产时间(H)',
+    'ryxjformvu491688-58': '其他非生产原因',
+    'ryxjformvu491688-59': '请输入其他非生产原因',
+    'ryxjformvu491688-60': '审批意见',
+    'ryxjformvu491688-61': '请输入审批意见',
+    'ryxjformvu491688-62': '确 定',
+    'ryxjformvu491688-63': '取 消',
+    'ryxjformvu491688-64': '审批通过',
+    'ryxjformvu491688-65': '审批拒绝',
+    'ryxjsummar550770-0': '项目',
+    'ryxjsummar550770-1': '请输入项目',
+    'ryxjsummar550770-2': '任务',
+    'ryxjsummar550770-3': '请输入任务',
+    'ryxjsummar550770-4': '创建时间',
+    'ryxjsummar550770-5': '开始日期',
+    'ryxjsummar550770-6': '结束日期',
+    'ryxjsummar550770-7': '搜索',
+    'ryxjsummar550770-8': '重置',
+    'ryxjsummar550770-9': '日报统计',
+    'ryxjsummar550770-10': '非生产时效',
+    'ryxjtablev595482-0': '日期',
+    'ryxjtablev595482-1': '施工队伍',
+    'ryxjtablev595482-2': '任务',
+    'ryxjtablev595482-3': '审批状态',
+    'ryxjtablev595482-4': '生产动态',
+    'ryxjtablev595482-5': '工况:',
+    'ryxjtablev595482-6': '详细描述:',
+    'ryxjtablev595482-7': '当日施工简报',
+    'ryxjtablev595482-8': '额定生产时间(H)',
+    'ryxjtablev595482-9': '生产时间(H)',
+    'ryxjtablev595482-10': '非生产时效',
+    'ryxjtablev595482-11': '非生产时间',
+    'ryxjtablev595482-12': '工程质量',
+    'ryxjtablev595482-13': '设备故障',
+    'ryxjtablev595482-14': '设备保养',
+    'ryxjtablev595482-15': '技术受限',
+    'ryxjtablev595482-16': '生产配合',
+    'ryxjtablev595482-17': '生产组织',
+    'ryxjtablev595482-18': '不可抗力',
+    'ryxjtablev595482-19': '待命',
+    'ryxjtablev595482-20': '甲方设计',
+    'ryxjtablev595482-21': '甲方准备',
+    'ryxjtablev595482-22': '甲方资源',
+    'ryxjtablev595482-23': '其它非生产时间',
+    'ryxjtablev595482-24': '其他非生产时间原因',
+    'ryxjtablev595482-25': '施工区域',
+    'ryxjtablev595482-26': '总施工井数',
+    'ryxjtablev595482-27': '完工井数',
+    'ryxjtablev595482-28': '井别',
+    'ryxjtablev595482-29': '井深(m)',
+    'ryxjtablev595482-30': '套生段产管尺寸(mm)',
+    'ryxjtablev595482-31': '井控级别',
+    'ryxjtablev595482-32': '当日',
+    'ryxjtablev595482-33': '用电量(kWh)',
+    'ryxjtablev595482-34': '油耗(升)',
+    'ryxjtablev595482-35': '项目',
+    'ryxjtablev595482-36': '跟班干部',
+    'ryxjtablev595482-37': '白班',
+    'ryxjtablev595482-38': '夜班',
+    'ryxjtablev595482-39': '全员数量',
+    'ryxjtablev595482-40': '在岗人数',
+    'ryxjtablev595482-41': '休假人员数量',
+    'ryxjtablev595482-42': '操作',
+    'summaryvue683335-0': '项目',
+    'summaryvue683335-1': '请输入项目',
+    'summaryvue683335-2': '任务',
+    'summaryvue683335-3': '请输入任务',
+    'summaryvue683335-4': '创建时间',
+    'summaryvue683335-5': '开始日期',
+    'summaryvue683335-6': '结束日期',
+    'summaryvue683335-7': '搜索',
+    'summaryvue683335-8': '重置',
+    'summaryvue683335-9': '导出',
+    'summaryvue683335-10': '日报统计',
+    'summaryvue683335-11': '非生产时效',
+    'unfilledre070214-0': '未填报详情',
+    'unfilledre070214-1': '创建时间',
+    'unfilledre070214-2': '开始日期',
+    'unfilledre070214-3': '结束日期',
+    'unfilledre070214-4': '搜索',
+    'unfilledre070214-5': '重置',
+    'unfilledre070214-6': '日期',
+    'unfilledre070214-7': '部门名称',
+    'xapprovalv375964-0': '项目',
+    'xapprovalv375964-1': '请输入项目',
+    'xapprovalv375964-2': '任务',
+    'xapprovalv375964-3': '请输入任务',
+    'xapprovalv375964-4': '创建时间',
+    'xapprovalv375964-5': '开始日期',
+    'xapprovalv375964-6': '结束日期',
+    'xapprovalv375964-7': '搜索',
+    'xapprovalv375964-8': '重置',
+    'xapprovalv375964-9': '查看',
+    'xapprovalv375964-10': '审批',
+    'xfillvue253660-0': '项目',
+    'xfillvue253660-1': '请输入项目',
+    'xfillvue253660-2': '任务',
+    'xfillvue253660-3': '请输入任务',
+    'xfillvue253660-4': '创建时间',
+    'xfillvue253660-5': '开始日期',
+    'xfillvue253660-6': '结束日期',
+    'xfillvue253660-7': '搜索',
+    'xfillvue253660-8': '重置',
+    'xfillvue253660-9': '新增',
+    'xfillvue253660-10': '查看',
+    'xfillvue253660-11': '编辑',
+    'xjindexvue644545-0': '项目',
+    'xjindexvue644545-1': '请输入项目',
+    'xjindexvue644545-2': '任务',
+    'xjindexvue644545-3': '请输入任务',
+    'xjindexvue644545-4': '创建时间',
+    'xjindexvue644545-5': '开始日期',
+    'xjindexvue644545-6': '结束日期',
+    'xjindexvue644545-7': '非生产时效',
+    'xjindexvue644545-8': '搜索',
+    'xjindexvue644545-9': '重置',
+    'xjindexvue644545-10': '导出',
+    'xjindexvue644545-11': '编辑',
+    'xjindexvue644545-12': '删除',
+    'xjindexvue644545-13': '告警提示',
+    'xjindexvue644545-14':
+      '运行时效=生产时间/额定生产时间&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;超过100%红色预警',
+    'xjindexvue644545-15':
+      '生产时间+非生产时间=额定生产时间&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;否则橙色预警',
+    'xjindexvue644545-16':
+      '当日油耗大于3500升&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;蓝色预警',
+    'xsummaryvu596765-0': '项目',
+    'xsummaryvu596765-1': '请输入项目',
+    'xsummaryvu596765-2': '任务',
+    'xsummaryvu596765-3': '请输入任务',
+    'xsummaryvu596765-4': '创建时间',
+    'xsummaryvu596765-5': '开始日期',
+    'xsummaryvu596765-6': '结束日期',
+    'xsummaryvu596765-7': '搜索',
+    'xsummaryvu596765-8': '重置',
+    'xsummaryvu596765-9': '导出',
+    'xsummaryvu596765-10': '日报统计',
+    'xsummaryvu596765-11': '非生产时效'
+  },
+  iotsappickinglist: {
+    'indexvue198342-0': '组织部门id',
+    'indexvue198342-1': '请输入组织部门id',
+    'indexvue198342-2': 'SAP工厂id',
+    'indexvue198342-3': '请输入SAP工厂id',
+    'indexvue198342-4': '工厂(SAP)',
+    'indexvue198342-5': '请输入工厂(SAP)',
+    'indexvue198342-6': '成本中心id',
+    'indexvue198342-7': '请输入成本中心id',
+    'indexvue198342-8': '成本中心(SAP)',
+    'indexvue198342-9': '请输入成本中心(SAP)',
+    'indexvue198342-10': '库存地点id',
+    'indexvue198342-11': '请输入库存地点id',
+    'indexvue198342-12': '库存地点',
+    'indexvue198342-13': '请输入库存地点',
+    'indexvue198342-14': '领料单号',
+    'indexvue198342-15': '请输入领料单号',
+    'indexvue198342-16': '物料编码',
+    'indexvue198342-17': '请输入物料编码',
+    'indexvue198342-18': '物料名称',
+    'indexvue198342-19': '请输入物料名称',
+    'indexvue198342-20': '物料组',
+    'indexvue198342-21': '请输入物料组',
+    'indexvue198342-22': '物料组id',
+    'indexvue198342-23': '请输入物料组id',
+    'indexvue198342-24': '数量',
+    'indexvue198342-25': '请输入数量',
+    'indexvue198342-26': '单价',
+    'indexvue198342-27': '请输入单价',
+    'indexvue198342-28': '单位',
+    'indexvue198342-29': '请输入单位',
+    'indexvue198342-30': '同步状态 0未同步 1同步成功 2同步失败',
+    'indexvue198342-31': '请选择同步状态 0未同步 1同步成功 2同步失败',
+    'indexvue198342-32': '请选择字典生成',
+    'indexvue198342-33': '最后一次同步时间',
+    'indexvue198342-34': '开始日期',
+    'indexvue198342-35': '结束日期',
+    'indexvue198342-36': '同步失败时的错误信息',
+    'indexvue198342-37': '请输入同步失败时的错误信息',
+    'indexvue198342-38': '排序',
+    'indexvue198342-39': '请输入排序',
+    'indexvue198342-40': '状态 0启用  1停用',
+    'indexvue198342-41': '请选择状态 0启用  1停用',
+    'indexvue198342-42': '备注',
+    'indexvue198342-43': '请输入备注',
+    'indexvue198342-44': '创建时间',
+    'indexvue198342-45': '搜索',
+    'indexvue198342-46': '重置',
+    'indexvue198342-47': '新增',
+    'indexvue198342-48': '导出',
+    'indexvue198342-49': '主键',
+    'indexvue198342-50': '操作',
+    'indexvue198342-51': '编辑',
+    'indexvue198342-52': '删除',
+    'iotsappick367171-0': '组织部门id',
+    'iotsappick367171-1': '请输入组织部门id',
+    'iotsappick367171-2': 'SAP工厂id',
+    'iotsappick367171-3': '请输入SAP工厂id',
+    'iotsappick367171-4': '工厂(SAP)',
+    'iotsappick367171-5': '请输入工厂(SAP)',
+    'iotsappick367171-6': '成本中心id',
+    'iotsappick367171-7': '请输入成本中心id',
+    'iotsappick367171-8': '成本中心(SAP)',
+    'iotsappick367171-9': '请输入成本中心(SAP)',
+    'iotsappick367171-10': '库存地点id',
+    'iotsappick367171-11': '请输入库存地点id',
+    'iotsappick367171-12': '库存地点',
+    'iotsappick367171-13': '请输入库存地点',
+    'iotsappick367171-14': '领料单号',
+    'iotsappick367171-15': '请输入领料单号',
+    'iotsappick367171-16': '物料编码',
+    'iotsappick367171-17': '请输入物料编码',
+    'iotsappick367171-18': '物料名称',
+    'iotsappick367171-19': '请输入物料名称',
+    'iotsappick367171-20': '物料组',
+    'iotsappick367171-21': '请输入物料组',
+    'iotsappick367171-22': '物料组id',
+    'iotsappick367171-23': '请输入物料组id',
+    'iotsappick367171-24': '数量',
+    'iotsappick367171-25': '请输入数量',
+    'iotsappick367171-26': '单价',
+    'iotsappick367171-27': '请输入单价',
+    'iotsappick367171-28': '单位',
+    'iotsappick367171-29': '请输入单位',
+    'iotsappick367171-30': '同步状态 0未同步 1同步成功 2同步失败',
+    'iotsappick367171-31': '请选择字典生成',
+    'iotsappick367171-32': '最后一次同步时间',
+    'iotsappick367171-33': '选择最后一次同步时间',
+    'iotsappick367171-34': '同步失败时的错误信息',
+    'iotsappick367171-35': '请输入同步失败时的错误信息',
+    'iotsappick367171-36': '排序',
+    'iotsappick367171-37': '请输入排序',
+    'iotsappick367171-38': '状态 0启用  1停用',
+    'iotsappick367171-39': '备注',
+    'iotsappick367171-40': '请输入备注',
+    'iotsappick367171-41': '确 定',
+    'iotsappick367171-42': '取 消'
+  },
+  iotsapstock: {
+    'indexvue994589-0': '导出',
+    'indexvue994589-1': '库存总金额',
+    'indexvue994589-2': '按币种独立核算',
+    'indexvue994589-3': '暂无金额汇总数据',
+    'indexvue994589-4': '币种',
+    'iotsapstoc562063-0': '导出'
+  },
+  iotshelves: {
+    'indexvue542709-0': '库存地点',
+    'indexvue542709-1': '请选择',
+    'indexvue542709-2': '仓库区域',
+    'indexvue542709-3': '货架名称',
+    'indexvue542709-4': '请输入货架名称',
+    'indexvue542709-5': '搜索',
+    'indexvue542709-6': '重置',
+    'indexvue542709-7': '新增',
+    'indexvue542709-8': '导出',
+    'indexvue542709-9': '货架编码',
+    'indexvue542709-10': '创建时间',
+    'indexvue542709-11': '操作',
+    'indexvue542709-12': '编辑',
+    'indexvue542709-13': '删除',
+    'iotshelves676139-0': '库存地点',
+    'iotshelves676139-1': '请选择',
+    'iotshelves676139-2': '仓库区域',
+    'iotshelves676139-3': '货架编码',
+    'iotshelves676139-4': '请输入货架编码',
+    'iotshelves676139-5': '货架名称',
+    'iotshelves676139-6': '请输入货架名称',
+    'iotshelves676139-7': '显示顺序',
+    'iotshelves676139-8': '备注',
+    'iotshelves676139-9': '请输入备注',
+    'iotshelves676139-10': '确 定',
+    'iotshelves676139-11': '取 消'
+  },
+  iotstoragearea: {
+    'indexvue912469-0': '库区名称',
+    'indexvue912469-1': '请输入库区名称',
+    'indexvue912469-2': '搜索',
+    'indexvue912469-3': '重置',
+    'indexvue912469-4': '新增',
+    'indexvue912469-5': '导出',
+    'indexvue912469-6': '库存地点',
+    'indexvue912469-7': '库区编码',
+    'indexvue912469-8': '创建时间',
+    'indexvue912469-9': '操作',
+    'indexvue912469-10': '编辑',
+    'indexvue912469-11': '删除',
+    'iotstorage927115-0': '库存地点',
+    'iotstorage927115-1': '请选择',
+    'iotstorage927115-2': '库区编码',
+    'iotstorage927115-3': '请输入库区编码',
+    'iotstorage927115-4': '库区名称',
+    'iotstorage927115-5': '请输入库区名称',
+    'iotstorage927115-6': '显示排序',
+    'iotstorage927115-7': '备注',
+    'iotstorage927115-8': '请输入备注',
+    'iotstorage927115-9': '确 定',
+    'iotstorage927115-10': '取 消'
+  },
+  maintenance: {
+    'indexvue660129-0': '保养计划id',
+    'indexvue660129-1': '请输入保养计划id',
+    'indexvue660129-2': '设备id',
+    'indexvue660129-3': '请输入设备id',
+    'indexvue660129-4': '设备资产编号',
+    'indexvue660129-5': '请输入设备资产编号',
+    'indexvue660129-6': '设备名称',
+    'indexvue660129-7': '请输入设备名称',
+    'indexvue660129-8': '设备类别',
+    'indexvue660129-9': '请输入设备类别',
+    'indexvue660129-10': '设备品牌',
+    'indexvue660129-11': '请输入设备品牌',
+    'indexvue660129-12': '当前运行公里数(km)',
+    'indexvue660129-13': '请输入当前运行公里数(km)',
+    'indexvue660129-14': '当前运行时间(小时)',
+    'indexvue660129-15': '开始日期',
+    'indexvue660129-16': '结束日期',
+    'indexvue660129-17': '自然日期(天)',
+    'indexvue660129-18': '备注',
+    'indexvue660129-19': '请输入备注',
+    'indexvue660129-20': '排序',
+    'indexvue660129-21': '请输入排序',
+    'indexvue660129-22': '状态 0启用  1停用',
+    'indexvue660129-23': '请选择状态 0启用  1停用',
+    'indexvue660129-24': '请选择字典生成',
+    'indexvue660129-25': '创建时间',
+    'indexvue660129-26': '搜索',
+    'indexvue660129-27': '重置',
+    'indexvue660129-28': '新增',
+    'indexvue660129-29': '导出',
+    'indexvue660129-30': '主键id',
+    'indexvue660129-31': '操作',
+    'indexvue660129-32': '编辑',
+    'indexvue660129-33': '删除',
+    'iotmainten437424-0': '保养计划id',
+    'iotmainten437424-1': '请输入保养计划id',
+    'iotmainten437424-2': '设备id',
+    'iotmainten437424-3': '请输入设备id',
+    'iotmainten437424-4': '设备资产编号',
+    'iotmainten437424-5': '请输入设备资产编号',
+    'iotmainten437424-6': '设备名称',
+    'iotmainten437424-7': '请输入设备名称',
+    'iotmainten437424-8': '设备类别',
+    'iotmainten437424-9': '请输入设备类别',
+    'iotmainten437424-10': '设备品牌',
+    'iotmainten437424-11': '请输入设备品牌',
+    'iotmainten437424-12': '当前运行公里数(km)',
+    'iotmainten437424-13': '请输入当前运行公里数(km)',
+    'iotmainten437424-14': '当前运行时间(小时)',
+    'iotmainten437424-15': '选择当前运行时间(小时)',
+    'iotmainten437424-16': '自然日期(天)',
+    'iotmainten437424-17': '选择自然日期(天)',
+    'iotmainten437424-18': '备注',
+    'iotmainten437424-19': '请输入备注',
+    'iotmainten437424-20': '排序',
+    'iotmainten437424-21': '请输入排序',
+    'iotmainten437424-22': '状态 0启用  1停用',
+    'iotmainten437424-23': '请选择字典生成',
+    'iotmainten437424-24': '确 定',
+    'iotmainten437424-25': '取 消',
+    'indexvue706478-0': '导出',
+    'iotmainten586594-0': '设备id',
+    'iotmainten586594-1':
+      "`设备 ${configDialog.current?.deviceCode + '-' + configDialog.current?.name} 保养配置`",
+    'iotmainten586594-2': '设备',
+    'iotmainten586594-3': '保养项配置',
+    'iotmainten586594-4': '选择日期',
+    'iotmainten586594-5': '请选择累计运行时长',
+    'iotmainten586594-6': '请选择累计运行公里数',
+    'iotmainten876371-0':
+      "`设备 ${configDialog.current?.deviceCode + '-' + configDialog.current?.name} 保养项配置`",
+    'iotmainten876371-1': '设备',
+    'iotmainten876371-2': '保养项配置',
+    'iotmainten876371-3': '选择日期',
+    'iotmainten876371-4': '请选择累计运行时长',
+    'iotmainten876371-5': '请选择累计运行公里数',
+    'iotmainten251148-0': '设备id',
+    'iotmainten251148-1': '保养时长',
+    'iotmainten251148-2': '保养里程',
+    'iotmainten251148-3': '保养日期',
+    'iotmainten251148-4':
+      "`设备 ${configDialog.current?.deviceCode + '-' + configDialog.current?.name} 保养配置`",
+    'iotmainten251148-5': '设备',
+    'iotmainten251148-6': '保养项配置',
+    'iotmainten251148-7': '选择日期',
+    'iotmainten251148-8': '请选择累计运行时长',
+    'iotmainten251148-9': '请选择累计运行公里数',
+    'iotmainten865094-0': '计划编号',
+    'iotmainten865094-1': '请输入计划编号',
+    'iotmainten865094-2': '计划名称',
+    'iotmainten865094-3': '请输入计划名称',
+    'iotmainten865094-4': '负责人id 多个以逗号分隔',
+    'iotmainten865094-5': '请输入负责人id 多个以逗号分隔',
+    'iotmainten865094-6': '备注',
+    'iotmainten865094-7': '请输入备注',
+    'iotmainten865094-8': '状态 0启用  1停用',
+    'iotmainten865094-9': '请选择字典生成',
+    'iotmainten865094-10': '确 定',
+    'iotmainten865094-11': '取 消',
+    'iotmainten455015-0': '保养时长',
+    'iotmainten455015-1': '保养里程',
+    'iotmainten455015-2': '保养日期',
+    'iotmainten455015-3':
+      "`设备 ${configDialog.current?.deviceCode + '-' + configDialog.current?.name} 保养配置`",
+    'iotmainten455015-4': '设备',
+    'iotmainten455015-5': '保养项配置',
+    'iotmainten455015-6': '选择日期',
+    'iotmainten455015-7': '请选择累计运行时长',
+    'iotmainten455015-8': '请选择累计运行公里数',
+    'mainplande437674-0': '请选择有保养项的设备',
+    'maintenanc121751-0': '请选择有保养项的设备',
+    'maintenanc446154-0': '保养项配置',
+    'maintenanc446154-1': '请选择累计运行时长',
+    'maintenanc446154-2': '请选择累计运行公里数',
+    'maintenanc662507-0': '保养时长',
+    'maintenanc662507-1': '保养里程',
+    'maintenanc662507-2': '保养日期'
+  },
+  material: {
+    'indexvue150210-0': '用户体系',
+    'indexvue150210-1': '三方登陆',
+    'indexvue150210-2': 'Excel 导入导出',
+    'indexvue150210-3': '物料名称',
+    'indexvue150210-4': '请输入物料名称',
+    'indexvue150210-5': '物料编码',
+    'indexvue150210-6': '请输入物料编码',
+    'indexvue150210-7': '状态',
+    'indexvue150210-8': '物料状态',
+    'indexvue150210-9': '创建时间',
+    'indexvue150210-10': '开始日期',
+    'indexvue150210-11': '结束日期',
+    'indexvue150210-12': '搜索',
+    'indexvue150210-13': '重置',
+    'indexvue150210-14': '新增',
+    'indexvue150210-15': '导入',
+    'indexvue150210-16': '导出',
+    'indexvue150210-17': '物料组名称',
+    'indexvue150210-18': '规格型号',
+    'indexvue150210-19': '单位',
+    'indexvue150210-20': '操作',
+    'indexvue150210-21': '修改',
+    'indexvue150210-22': '更多',
+    'indexvue150210-23': '删除',
+    'materialfo512811-0': '物料名称',
+    'materialfo512811-1': '请输入物料名称',
+    'materialfo512811-2': '所属物料组',
+    'materialfo512811-3': '请选择所属物料组',
+    'materialfo512811-4': '物料编码',
+    'materialfo512811-5': '请输入物料编码',
+    'materialfo512811-6': '规格型号',
+    'materialfo512811-7': '请输入规格型号',
+    'materialfo512811-8': '单位',
+    'materialfo512811-9': '请选择单位',
+    'materialfo512811-10': '显示排序',
+    'materialfo512811-11': '备注',
+    'materialfo512811-12': '请输入内容',
+    'materialfo512811-13': '确 定',
+    'materialfo512811-14': '取 消',
+    'materialgr944486-0': '请输入分类名称',
+    'materialgr944486-1': '新增子节点',
+    'materialgr944486-2': '重命名',
+    'materialgr944486-3': '删除',
+    'materialim375984-0': '用户导入',
+    'materialim375984-1': '将文件拖到此处,或',
+    'materialim375984-2': '点击上传',
+    'materialim375984-3': '是否更新已经存在的用户数据',
+    'materialim375984-4': '下载模板',
+    'materialim375984-5': '确 定',
+    'materialim375984-6': '取 消'
+  },
+  materialgroup: {
+    'indexvue506387-0': '物料组名称',
+    'indexvue506387-1': '请输入物料组名称',
+    'indexvue506387-2': '物料组状态',
+    'indexvue506387-3': '请选择物料组状态',
+    'indexvue506387-4': '搜索',
+    'indexvue506387-5': '重置',
+    'indexvue506387-6': '新增',
+    'indexvue506387-7': '排序',
+    'indexvue506387-8': '状态',
+    'indexvue506387-9': '创建时间',
+    'indexvue506387-10': '操作',
+    'indexvue506387-11': '修改',
+    'indexvue506387-12': '删除',
+    'materialgr258845-0': '上级物料组',
+    'materialgr258845-1': '请选择上级物料组',
+    'materialgr258845-2': '物料组名称',
+    'materialgr258845-3': '请输入物料组名称',
+    'materialgr258845-4': '显示排序',
+    'materialgr258845-5': '状态',
+    'materialgr258845-6': '请选择状态',
+    'materialgr258845-7': '确 定',
+    'materialgr258845-8': '取 消'
+  },
+  model: {
+    'indexvue789316-0': '名称',
+    'indexvue789316-1': '请输入规格型号名称',
+    'indexvue789316-2': '品牌',
+    'indexvue789316-3': '请输入品牌',
+    'indexvue789316-4': '状态',
+    'indexvue789316-5': '请选择资料分类状态',
+    'indexvue789316-6': '搜索',
+    'indexvue789316-7': '重置',
+    'indexvue789316-8': '新增',
+    'indexvue789316-9': '导出',
+    'indexvue789316-10': '规格型号名称',
+    'indexvue789316-11': '符合标准',
+    'indexvue789316-12': '显示顺序',
+    'indexvue789316-13': '备注',
+    'indexvue789316-14': '创建时间',
+    'indexvue789316-15': '操作',
+    'indexvue789316-16': '编辑',
+    'indexvue789316-17': '删除',
+    'iotmodelfo876157-0': '名称',
+    'iotmodelfo876157-1': '请输入规格型号名称',
+    'iotmodelfo876157-2': '品牌',
+    'iotmodelfo876157-3': '请输入品牌',
+    'iotmodelfo876157-4': '状态',
+    'iotmodelfo876157-5': '请选择',
+    'iotmodelfo876157-6': '显示顺序',
+    'iotmodelfo876157-7': '请输入显示顺序',
+    'iotmodelfo876157-8': '符合标准',
+    'iotmodelfo876157-9': '请输入符合标准',
+    'iotmodelfo876157-10': '备注',
+    'iotmodelfo876157-11': '请输入备注',
+    'iotmodelfo876157-12': '确 定',
+    'iotmodelfo876157-13': '取 消'
+  },
+  modeltemplate: {
+    'attrtempla615780-0': '属性名称',
+    'attrtempla615780-1': '请输入属性名称',
+    'attrtempla615780-2': '日报取值',
+    'attrtempla615780-3': '是否数采:',
+    'attrtempla615780-4': '是否累计:',
+    'attrtempla615780-5': '累加值',
+    'attrtempla615780-6': '请选择累加值',
+    'attrtempla615780-7': '是否累加',
+    'attrtempla615780-8': '标识符',
+    'attrtempla615780-9': '填写阈值',
+    'attrtempla615780-10': '请输入阈值',
+    'attrtempla615780-11': '物属性',
+    'attrtempla615780-12': '请选择',
+    'attrtempla615780-13': '描述',
+    'attrtempla615780-14': '请输入属性描述',
+    'attrtempla615780-15': '确 定',
+    'attrtempla615780-16': '取 消',
+    'attrtempla606133-0': '数据类型',
+    'attrtempla606133-1': '请选择数据类型',
+    'attrtempla606133-2': '布尔值',
+    'attrtempla606133-3': "`如:${item.value === 0 ? '关' : '开'}`",
+    'attrtempla606133-4': '时间格式',
+    'attrtempla606133-5': 'String 类型的 UTC 时间戳(毫秒)',
+    'indexvue213204-0': '模板信息',
+    'indexvue213204-1': '所属模板',
+    'indexvue213204-2': '设备分类',
+    'indexvue213204-3': '属性列表',
+    'indexvue213204-4': '搜索',
+    'indexvue213204-5': '重置',
+    'indexvue213204-6': '添加属性',
+    'indexvue213204-7': '序号',
+    'indexvue213204-8': '属性名称',
+    'indexvue213204-9': '数据类型',
+    'indexvue213204-10': '操作',
+    'indexvue213204-11': '编辑',
+    'indexvue213204-12': '删除',
+    'modelattrm628367-0': '元素类型',
+    'modelattrm628367-1': '元素个数',
+    'modelattrm628367-2': '请输入数组中的元素个数',
+    'modelattrm154979-0': '下拉选项',
+    'modelattrm154979-1': '对该下拉选项的描述',
+    'modelattrm154979-2': '删除',
+    'modelattrm267227-0': '单位',
+    'modelattrm267227-1': '请选择单位',
+    'modelattrm060367-0': 'JSON 对象',
+    'modelattrm060367-1': '编辑',
+    'modelattrm060367-2': '删除',
+    'modelattrm060367-3': '属性名称',
+    'modelattrm060367-4': '请输入属性名称',
+    'modelattrm060367-5': '标识符',
+    'modelattrm060367-6': '请输入标识符',
+    'modelattrm060367-7': '确 定',
+    'modelattrm060367-8': '取 消',
+    'indexvue394392-0': '属性模板',
+    'templatede197563-0': '设备编码:',
+    'templatede197563-1': '备注:',
+    'indexvue218750-0': '未知',
+    'indexvue218750-1': '更多',
+    'modelcateg669201-0': '请输入设备分类名称',
+    'modelcateg669201-1': '新增子节点',
+    'modelcateg669201-2': '重命名',
+    'modelcateg669201-3': '删除',
+    'templatefo791298-0': '维护设备分类下的模型属性模板信息',
+    'templatefo791298-1': '模板信息',
+    'templatefo791298-2': '设备分类',
+    'templatefo791298-3': '请选择设备分类',
+    'templatefo791298-4': '模板名称',
+    'templatefo791298-5': '请输入模板名称',
+    'templatefo791298-6': '备注',
+    'templatefo791298-7': '请输入内容',
+    'templatefo791298-8': '取 消',
+    'templatefo791298-9': '确 定'
+  },
+  mqtt: {
+    'mqttvue648391-0': 'MQTT 消息监听(TS 版本)',
+    'mqttvue648391-1': '收到新消息',
+    'mqttvue648391-2': '断开连接',
+    'mqttvue648391-3': '已连接',
+    'mqttvue648391-4': '未连接'
+  },
+  operationmeeting: {
+    'meetingdet422836-0': '项目名称',
+    'meetingdet422836-1': '请选择或输入项目名称',
+    'meetingdet422836-2': '收入-本期',
+    'meetingdet422836-3': '收入-累计',
+    'meetingdet422836-4': '挂帐-本期',
+    'meetingdet422836-5': '挂帐-累计',
+    'meetingdet422836-6': '回款-本期',
+    'meetingdet422836-7': '回款-累计',
+    'meetingdet422836-8': '本期生产运行情况',
+    'meetingdet422836-9': '`请输入${item.name}`',
+    'meetingdet422836-10': '生产管理情况及重点工作',
+    'meetingdet422836-11': '重点工作及完成情况',
+    'meetingdet422836-12': '请输入重点工作及完成情况',
+    'meetingdet422836-13': '存在问题及分析',
+    'meetingdet422836-14': '请输入存在问题及分析',
+    'meetingdet422836-15': '设备、安全管理工作',
+    'meetingdet422836-16': '请输入设备、安全管理工作',
+    'meetingdet422836-17': '下期工作计划',
+    'meetingdet422836-18': '计划工作量',
+    'meetingdet422836-19': '请输入下期计划工作量',
+    'meetingdet422836-20': '重点工作事项',
+    'meetingdet422836-21': '请输入重点工作事项',
+    'meetingdet422836-22': '取消',
+    'meetingdet422836-23': '保存',
+    'operationm684378-0': '生产运营双周例会汇报',
+    'operationm684378-1': '会议期次',
+    'operationm684378-2': '暂无会议期次',
+    'operationm684378-3': '请输入会议期次',
+    'operationm684378-4': '专业公司',
+    'operationm684378-5': '全部公司',
+    'operationm684378-6': '新建保存后系统自动填充',
+    'operationm684378-7': '新建保存后由系统自动填充。',
+    'operationm684378-8': '会议日期',
+    'operationm684378-9': '暂无会议日期',
+    'operationm684378-10': '请选择会议日期',
+    'operationm684378-11': '经营数据汇总',
+    'operationm684378-12': '万元',
+    'operationm684378-13': '工作量完成情况',
+    'operationm684378-14': '查看详情',
+    'operationm684378-15': '`${workloadScopeName}工作量完成情况详情`',
+    'operationm684378-16': '项目名称',
+    'operationm684378-17': '`${currentSummaryScopeName}合计`',
+    'operationm684378-18': '会议明细',
+    'operationm684378-19': '新增一行',
+    'operationm684378-20': '生产管理情况及重点工作',
+    'operationm684378-21': '重点工作及完成情况',
+    'operationm684378-22': '存在问题及分析',
+    'operationm684378-23': '设备、安全管理工作',
+    'operationm684378-24': '下期工作计划',
+    'operationm684378-25': '计划工作量',
+    'operationm684378-26': '重点工作事项',
+    'operationm684378-27': '操作',
+    'operationm684378-28': '删除',
+    'operationm684378-29': '其他重点事项及需要集团协调事项',
+    'operationm684378-30': '请输入其他重点事项及需要集团协调事项',
+    'indexvue930288-0': '专业公司',
+    'indexvue930288-1': '请选择专业公司',
+    'indexvue930288-2': '会议日期',
+    'indexvue930288-3': '开始日期',
+    'indexvue930288-4': '结束日期',
+    'indexvue930288-5': '搜索',
+    'indexvue930288-6': '重置',
+    'indexvue930288-7': '新建',
+    'indexvue930288-8': '会议期次',
+    'indexvue930288-9': '公司名称',
+    'indexvue930288-10': '操作',
+    'indexvue930288-11': '编辑',
+    'indexvue930288-12': '查看',
+    'meetingfor692584-0': '保存',
+    'summaryvue521284-0': '搜索',
+    'summaryvue521284-1': '重置',
+    'summaryvue521284-2': '会议期次',
+    'summaryvue521284-3': '公司名称',
+    'summaryvue521284-4': '会议日期',
+    'summaryvue521284-5': '操作',
+    'summaryvue521284-6': '查看',
+    'summaryvue521284-7': '经营情况(万元)'
+  },
+  planwork: {
+    'fillvue793717-0': '时间范围',
+    'fillvue793717-1': '开始日期',
+    'fillvue793717-2': '结束日期',
+    'fillvue793717-3': '新增',
+    'fillvue793717-4': '搜索',
+    'fillvue793717-5': '重置',
+    'fillvue793717-6': '部门名称',
+    'fillvue793717-7': '项目业务',
+    'fillvue793717-8': '时间',
+    'fillvue793717-9': '计划工作量',
+    'fillvue793717-10': '工作量单位',
+    'fillvue793717-11': '操作',
+    'fillvue793717-12': '查看',
+    'fillvue793717-13': '编辑',
+    'fillvue793717-14': '计划信息',
+    'fillvue793717-15': '选择部门',
+    'fillvue793717-16': '请选择部门',
+    'fillvue793717-17': '选择时间',
+    'fillvue793717-18': '请选择年月',
+    'fillvue793717-19': "createFormData.deptId ? '请选择项目业务' : '请先选择部门'",
+    'fillvue793717-20': '选择项目业务后自动填入',
+    'fillvue793717-21': "createFormData.business ? '请输入计划工作量' : '请先选择项目业务'",
+    'fillvue793717-22': '确 定',
+    'indexvue482320-0': '时间范围',
+    'indexvue482320-1': '开始日期',
+    'indexvue482320-2': '结束日期',
+    'indexvue482320-3': '搜索',
+    'indexvue482320-4': '重置',
+    'indexvue482320-5': '部门名称',
+    'indexvue482320-6': '项目业务',
+    'indexvue482320-7': '合计',
+    'indexvue482320-8': '单位'
+  },
+  productclassify: {
+    'indexvue432782-0': '分类名称',
+    'indexvue432782-1': '请输入分类名称',
+    'indexvue432782-2': '分类状态',
+    'indexvue432782-3': '请选择分类状态',
+    'indexvue432782-4': '搜索',
+    'indexvue432782-5': '重置',
+    'indexvue432782-6': '新增',
+    'indexvue432782-7': '排序',
+    'indexvue432782-8': '状态',
+    'indexvue432782-9': '备注',
+    'indexvue432782-10': '创建时间',
+    'indexvue432782-11': '操作',
+    'indexvue432782-12': '修改',
+    'indexvue432782-13': '删除',
+    'productcla272275-0': '上级分类',
+    'productcla272275-1': '请选择上级分类',
+    'productcla272275-2': '分类名称',
+    'productcla272275-3': '请输入分类名称',
+    'productcla272275-4': '显示排序',
+    'productcla272275-5': '状态',
+    'productcla272275-6': '请选择状态',
+    'productcla272275-7': '备注',
+    'productcla272275-8': '请输入备注',
+    'productcla272275-9': '确 定',
+    'productcla272275-10': '取 消'
+  },
+  qhse: {
+    'indexvue646594-0': '事件级别',
+    'indexvue646594-1': '请输入事件级别',
+    'indexvue646594-2': '事件类型',
+    'indexvue646594-3': '请选择事件类型',
+    'indexvue646594-4': '搜索',
+    'indexvue646594-5': '重置',
+    'indexvue646594-6': '事件时间',
+    'indexvue646594-7': '事件状态',
+    'indexvue646594-8': '事件损失情况',
+    'indexvue646594-9': '事件地址',
+    'indexvue646594-10': '部门名称',
+    'indexvue646594-11': '现场负责人',
+    'indexvue646594-12': '创建时间',
+    'indexvue646594-13': '操作',
+    'indexvue646594-14': '流转信息',
+    'indexvue646594-15': '审批',
+    'indexvue646594-16': '操作人:',
+    'indexvue646594-17': '审批意见:',
+    'indexvue646594-18': '附件:',
+    'indexvue646594-19': '审批建议',
+    'indexvue646594-20': '请输入审批建议',
+    'indexvue646594-21': '取 消',
+    'indexvue646594-22': '上报',
+    'indexvue848945-0': '事故类型',
+    'indexvue848945-1': '请选择事故类型',
+    'indexvue848945-2': '事故等级',
+    'indexvue848945-3': '请选择事故等级',
+    'indexvue848945-4': '现场负责人',
+    'indexvue848945-5': '请输入现场负责人',
+    'indexvue848945-6': '搜索',
+    'indexvue848945-7': '重置',
+    'indexvue848945-8': '新增',
+    'indexvue848945-9': '导出',
+    'indexvue848945-10': '事故时间',
+    'indexvue848945-11': '附件',
+    'indexvue848945-12': '查看',
+    'indexvue848945-13': '备注',
+    'indexvue848945-14': '操作',
+    'indexvue848945-15': '编辑',
+    'indexvue848945-16': '删除',
+    'indexvue848945-17': '请选择事故时间',
+    'indexvue848945-18': '部门',
+    'indexvue848945-19': '请选择所在部门',
+    'indexvue848945-20': '请输入备注',
+    'indexvue848945-21': '确定',
+    'indexvue848945-22': '取消',
+    'indexvue848945-23': '下载',
+    'indexvue848945-24': '确认',
+    'certificat865417-0': '已过期',
+    'certificat865417-1': '证书总数',
+    'certificat865417-2': '个人证书',
+    'certificat865417-3': '证书类型',
+    'certificat865417-4': '请选择证书类型',
+    'certificat865417-5': '其他',
+    'certificat865417-6': '证书类别',
+    'certificat865417-7': '所属人',
+    'certificat865417-8': '输入所属人',
+    'certificat865417-9': '是否过期',
+    'certificat865417-10': '请选择是否过期',
+    'certificat865417-11': '是否预警',
+    'certificat865417-12': '请选择是否预警',
+    'certificat865417-13': '新增',
+    'certificat865417-14': '导出',
+    'certificat865417-15': '证书名称',
+    'certificat865417-16': '培训周期',
+    'certificat865417-17': '所在部门',
+    'certificat865417-18': '颁发机构',
+    'certificat865417-19': '证书标准',
+    'certificat865417-20': '颁发时间',
+    'certificat865417-21': '有效期',
+    'certificat865417-22': '备注',
+    'certificat865417-23': '编辑',
+    'certificat865417-24': '删除',
+    'certificat865417-25': '查看证书',
+    'certificat865417-26': '证书已过期红色预警',
+    'certificat865417-27': '请输入证书名称',
+    'certificat865417-28': '请选择所在部门',
+    'certificat865417-29': '请输入所属人',
+    'certificat865417-30': '请输入颁发机构',
+    'certificat865417-31': '如国标、API等',
+    'certificat865417-32': '请选择颁发时间',
+    'certificat865417-33': '请选择有效期',
+    'certificat865417-34': '请输入备注',
+    'certificat865417-35': '证书附件',
+    'certificat865417-36': '取 消',
+    'certificat865417-37': '确 定',
+    'certificat865417-38': '附件',
+    'certificat865417-39': '查看',
+    'certificat865417-40': '下载',
+    'certificat865417-41': '确认',
+    'certperson740485-0': '所属队伍',
+    'certperson740485-1': '请选择所在部门',
+    'certperson740485-2': '姓名',
+    'certperson740485-3': '请输入姓名',
+    'certperson740485-4': '手机号',
+    'certperson740485-5': '请输入手机号',
+    'certperson740485-6': '岗位',
+    'certperson740485-7': '请输入岗位名称',
+    'certperson740485-8': '备注',
+    'certperson740485-9': '请输入备注',
+    'certperson740485-10': '是否需要相关证书',
+    'certperson740485-11': '硫化氢证',
+    'certperson740485-12': '井控证',
+    'certperson740485-13': 'HSE证',
+    'certperson740485-14': '司钻证',
+    'certperson740485-15': '高处作业证',
+    'certperson740485-16': '电工证',
+    'certperson740485-17': '连续油管主操证',
+    'certperson740485-18': '吊装证',
+    'certperson740485-19': '安全管理证',
+    'certperson740485-20': '国际井控证',
+    'certperson740485-21': '消防证',
+    'certperson740485-22': '急救证',
+    'certperson740485-23': '确 定',
+    'certperson740485-24': '取 消',
+    'indexvue292698-0': '人员名称',
+    'indexvue292698-1': '请输入人员名称',
+    'indexvue292698-2': '姓名',
+    'indexvue292698-3': '请输入姓名',
+    'indexvue292698-4': '岗位',
+    'indexvue292698-5': '请输入岗位名称',
+    'indexvue292698-6': '搜索',
+    'indexvue292698-7': '重置',
+    'indexvue292698-8': '新增',
+    'indexvue292698-9': '导出',
+    'indexvue292698-10': '手机号',
+    'indexvue292698-11': '部门名称',
+    'indexvue292698-12': '三小证',
+    'indexvue292698-13': '硫化氢',
+    'indexvue292698-14': '井控(A2)',
+    'indexvue292698-15': '司钻证',
+    'indexvue292698-16': '高处作业证',
+    'indexvue292698-17': '电工证',
+    'indexvue292698-18': '连续油管主操证',
+    'indexvue292698-19': '吊装证',
+    'indexvue292698-20': '安全管理证',
+    'indexvue292698-21': '国际井控证',
+    'indexvue292698-22': '消防证',
+    'indexvue292698-23': '急救证',
+    'indexvue292698-24': '备注',
+    'indexvue292698-25': '操作',
+    'indexvue292698-26': '编辑',
+    'indexvue292698-27': '删除',
+    'indexvue451736-0': '已过期',
+    'indexvue451736-1': '证书总数',
+    'indexvue451736-2': '证书类别',
+    'indexvue451736-3': '是否过期',
+    'indexvue451736-4': '请选择是否过期',
+    'indexvue451736-5': '是否预警',
+    'indexvue451736-6': '请选择是否预警',
+    'indexvue451736-7': '新增',
+    'indexvue451736-8': '导出',
+    'indexvue451736-9': '证书名称',
+    'indexvue451736-10': '所在部门',
+    'indexvue451736-11': '颁发机构',
+    'indexvue451736-12': '证书标准',
+    'indexvue451736-13': '颁发时间',
+    'indexvue451736-14': '有效期',
+    'indexvue451736-15': '备注',
+    'indexvue451736-16': '编辑',
+    'indexvue451736-17': '删除',
+    'indexvue451736-18': '查看证书',
+    'indexvue451736-19': '证书已过期红色预警',
+    'indexvue451736-20': '请输入证书名称',
+    'indexvue451736-21': '请选择所在部门',
+    'indexvue451736-22': '请输入颁发机构',
+    'indexvue451736-23': '如国标、API等',
+    'indexvue451736-24': '请选择颁发时间',
+    'indexvue451736-25': '请选择有效期',
+    'indexvue451736-26': '请输入备注',
+    'indexvue451736-27': '证书附件',
+    'indexvue451736-28': '取 消',
+    'indexvue451736-29': '确 定',
+    'indexvue451736-30': '附件',
+    'indexvue451736-31': '查看',
+    'indexvue451736-32': '下载',
+    'indexvue451736-33': '确认',
+    'indexvue243883-0': '文件夹列表',
+    'indexvue243883-1': '文件列表',
+    'indexvue243883-2': "'在' + breadcrumbs[breadcrumbs.length - 1].name + '下搜索'",
+    'iotinfofor854199-0': '请选择文件目录',
+    'iotinfofor854199-1': '请选择',
+    'pmstreevue476301-0': '请输入名称',
+    'pmstreevue476301-1': '新建目录',
+    'pmstreevue476301-2': '编辑目录',
+    'pmstreevue476301-3': '删除目录',
+    'pmstreevue476301-4': '目录名称',
+    'pmstreevue476301-5': '请输入目录名称',
+    'pmstreevue476301-6': '显示排序',
+    'pmstreevue476301-7': '确 定',
+    'pmstreevue476301-8': '取 消',
+    'devicecert652005-0': '关联设备',
+    'devicecert652005-1': '请选择关联设备',
+    'devicecert652005-2': '选择',
+    'devicecert652005-3': '设备编码',
+    'devicecert652005-4': '请输入设备编码',
+    'devicecert652005-5': '设备名称',
+    'devicecert652005-6': '请输入设备名称',
+    'devicecert652005-7': '检测类型',
+    'devicecert652005-8': '请选择检测类型',
+    'devicecert652005-9': '序列号',
+    'devicecert652005-10': '请输入序列号',
+    'devicecert652005-11': '检测单位',
+    'devicecert652005-12': '请输入检测单位',
+    'devicecert652005-13': '检测日期',
+    'devicecert652005-14': '请选择检测日期',
+    'devicecert652005-15': '有效期至',
+    'devicecert652005-16': '请选择有效期至',
+    'devicecert652005-17': '部门',
+    'devicecert652005-18': '请选择部门',
+    'devicecert652005-19': '附件',
+    'devicecert652005-20': '备注',
+    'devicecert652005-21': '请输入备注',
+    'devicecert652005-22': '确 定',
+    'devicecert652005-23': '取 消',
+    'devicecert652005-24': '选择设备',
+    'devicecert652005-25': '所在部门',
+    'devicecert652005-26': '设备状态',
+    'devicecert652005-27': '位置',
+    'indexvue995099-0': '已过期',
+    'indexvue995099-1': '证书总数',
+    'indexvue995099-2': '设备名称',
+    'indexvue995099-3': '请输入设备名称',
+    'indexvue995099-4': '检测类型',
+    'indexvue995099-5': '请选择检测类型',
+    'indexvue995099-6': '序列号',
+    'indexvue995099-7': '请输入序列号',
+    'indexvue995099-8': '检测日期',
+    'indexvue995099-9': '开始日期',
+    'indexvue995099-10': '结束日期',
+    'indexvue995099-11': '检测单位',
+    'indexvue995099-12': '请输入检测单位',
+    'indexvue995099-13': '有效期',
+    'indexvue995099-14': '搜索',
+    'indexvue995099-15': '重置',
+    'indexvue995099-16': '新增',
+    'indexvue995099-17': '导出',
+    'indexvue995099-18': '设备编码',
+    'indexvue995099-19': '部门名称',
+    'indexvue995099-20': '备注',
+    'indexvue995099-21': '附件',
+    'indexvue995099-22': '查看',
+    'indexvue995099-23': '操作',
+    'indexvue995099-24': '编辑',
+    'indexvue995099-25': '删除',
+    'indexvue995099-26': '应检设备证书已过期红色预警',
+    'indexvue995099-27': '下载',
+    'indexvue995099-28': '确认',
+    'emergencyb962599-0': '关联物资',
+    'emergencyb962599-1': '请选择关联物资',
+    'emergencyb962599-2': '选择',
+    'emergencyb962599-3': '证书编号',
+    'emergencyb962599-4': '请输入证书编号',
+    'emergencyb962599-5': '检测单位',
+    'emergencyb962599-6': '请输入检测单位',
+    'emergencyb962599-7': '检测日期',
+    'emergencyb962599-8': '请选择检测日期',
+    'emergencyb962599-9': '有效期至',
+    'emergencyb962599-10': '请选择有效期至',
+    'emergencyb962599-11': '附件',
+    'emergencyb962599-12': '备注',
+    'emergencyb962599-13': '请输入备注',
+    'emergencyb962599-14': '确 定',
+    'emergencyb962599-15': '取 消',
+    'emergencyb962599-16': '选择设备',
+    'emergencyb962599-17': '物资编号',
+    'emergencyb962599-18': '请输入物资编号',
+    'emergencyb962599-19': '物资名称',
+    'emergencyb962599-20': '请输入设备名称',
+    'emergencyb962599-21': '责任人',
+    'emergencyb962599-22': '请输入责任人',
+    'emergencyb962599-23': '应急物资编号',
+    'emergencyb962599-24': '应急物资名称',
+    'emergencyb962599-25': '应急物资单位',
+    'emergencyb962599-26': '数量',
+    'emergencyb962599-27': '存放位置',
+    'emergencyb962599-28': '联系电话',
+    'emergencyb962599-29': '查看',
+    'emergencyb962599-30': '下载',
+    'emergencyb962599-31': '确认',
+    'indexvue924955-0': '应急物资名称',
+    'indexvue924955-1': '请输入应急物资名称',
+    'indexvue924955-2': '证书编号',
+    'indexvue924955-3': '请输入证书编号',
+    'indexvue924955-4': '搜索',
+    'indexvue924955-5': '重置',
+    'indexvue924955-6': '新增',
+    'indexvue924955-7': '导出',
+    'indexvue924955-8': '物资名称',
+    'indexvue924955-9': '检测日期',
+    'indexvue924955-10': '检测单位',
+    'indexvue924955-11': '有效期',
+    'indexvue924955-12': '备注',
+    'indexvue924955-13': '附件',
+    'indexvue924955-14': '查看',
+    'indexvue924955-15': '操作',
+    'indexvue924955-16': '编辑',
+    'indexvue924955-17': '删除',
+    'indexvue924955-18': '下载',
+    'indexvue924955-19': '确认',
+    'certdrawer958956-0': '证书检测列表',
+    'certdrawer958956-1': '应急物资名称',
+    'certdrawer958956-2': '请输入应急物资名称',
+    'certdrawer958956-3': '证书编号',
+    'certdrawer958956-4': '请输入证书编号',
+    'certdrawer958956-5': '新增',
+    'certdrawer958956-6': '搜索',
+    'certdrawer958956-7': '重置',
+    'certdrawer958956-8': '物资名称',
+    'certdrawer958956-9': '检测日期',
+    'certdrawer958956-10': '检测单位',
+    'certdrawer958956-11': '有效期',
+    'certdrawer958956-12': '备注',
+    'certdrawer958956-13': '附件',
+    'certdrawer958956-14': '查看',
+    'certdrawer958956-15': '关联物资',
+    'certdrawer958956-16': '请输入检测单位',
+    'certdrawer958956-17': '请选择检测日期',
+    'certdrawer958956-18': '有效期至',
+    'certdrawer958956-19': '请选择有效期至',
+    'certdrawer958956-20': '请输入备注',
+    'certdrawer958956-21': '确 定',
+    'certdrawer958956-22': '取 消',
+    'certdrawer958956-23': '下载',
+    'certdrawer958956-24': '确认',
+    'emergencyd314725-0': '应急物资名称',
+    'emergencyd314725-1': '请输入应急物资名称',
+    'emergencyd314725-2': '应急物资单位',
+    'emergencyd314725-3': '请输入应急物资单位,如:个、台等',
+    'emergencyd314725-4': '是否录入证书',
+    'emergencyd314725-5': '数量',
+    'emergencyd314725-6': '存放位置',
+    'emergencyd314725-7': '请输入存放位置',
+    'emergencyd314725-8': '责任人',
+    'emergencyd314725-9': '请输入责任人',
+    'emergencyd314725-10': '联系电话',
+    'emergencyd314725-11': '请输入联系电话',
+    'emergencyd314725-12': '部门',
+    'emergencyd314725-13': '请选择部门',
+    'emergencyd314725-14': '附件',
+    'emergencyd314725-15': '备注',
+    'emergencyd314725-16': '请输入备注',
+    'emergencyd314725-17': '确定',
+    'emergencyd314725-18': '取消',
+    'indexvue592075-0': '应急物资名称',
+    'indexvue592075-1': '请输入物资编号',
+    'indexvue592075-2': '请输入物资名称',
+    'indexvue592075-3': '责任人',
+    'indexvue592075-4': '请输入责任人',
+    'indexvue592075-5': '搜索',
+    'indexvue592075-6': '重置',
+    'indexvue592075-7': '新增',
+    'indexvue592075-8': '导出',
+    'indexvue592075-9': '应急物资编号',
+    'indexvue592075-10': '应急物资单位',
+    'indexvue592075-11': '数量',
+    'indexvue592075-12': '存放位置',
+    'indexvue592075-13': '联系电话',
+    'indexvue592075-14': '备注',
+    'indexvue592075-15': '附件',
+    'indexvue592075-16': '查看',
+    'indexvue592075-17': '操作',
+    'indexvue592075-18': '查看证书',
+    'indexvue592075-19': '编辑',
+    'indexvue592075-20': '删除',
+    'indexvue592075-21': '下载',
+    'indexvue592075-22': '确认',
+    'indexvue239376-0': '工序',
+    'indexvue239376-1': '请输入工序',
+    'indexvue239376-2': '步骤分解',
+    'indexvue239376-3': '请输入步骤分解',
+    'indexvue239376-4': '环境因素',
+    'indexvue239376-5': '请输入环境因素',
+    'indexvue239376-6': '搜索',
+    'indexvue239376-7': '重置',
+    'indexvue239376-8': '新增',
+    'indexvue239376-9': '导出',
+    'indexvue239376-10': '序号',
+    'indexvue239376-11': '时态',
+    'indexvue239376-12': '过去',
+    'indexvue239376-13': '现在',
+    'indexvue239376-14': '将来',
+    'indexvue239376-15': '状态',
+    'indexvue239376-16': '正常',
+    'indexvue239376-17': '异常',
+    'indexvue239376-18': '紧急',
+    'indexvue239376-19': '环境影响类型',
+    'indexvue239376-20': '能源/资源耗用',
+    'indexvue239376-21': '水体',
+    'indexvue239376-22': '大气',
+    'indexvue239376-23': '噪音',
+    'indexvue239376-24': '废弃物',
+    'indexvue239376-25': '土壤',
+    'indexvue239376-26': '其他',
+    'indexvue239376-27': '控制措施',
+    'indexvue239376-28': '创建日期',
+    'indexvue239376-29': '备注',
+    'indexvue239376-30': '操作',
+    'indexvue239376-31': '编辑',
+    'indexvue239376-32': '删除',
+    'indexvue239376-33': '水体污染',
+    'indexvue239376-34': '大气污染',
+    'indexvue239376-35': '噪声污染',
+    'indexvue239376-36': '土壤污染',
+    'indexvue239376-37': '请输入控制措施',
+    'indexvue239376-38': '所在部门',
+    'indexvue239376-39': '请选择所在部门',
+    'indexvue239376-40': '请输入备注',
+    'indexvue239376-41': '取 消',
+    'indexvue239376-42': '确 定',
+    'indexvue561643-0': '严谨迟报、漏报、瞒报!!!',
+    'indexvue561643-1': '事件级别',
+    'indexvue561643-2': '请输入事件级别',
+    'indexvue561643-3': '事件类型',
+    'indexvue561643-4': '请选择事件类型',
+    'indexvue561643-5': '搜索',
+    'indexvue561643-6': '重置',
+    'indexvue561643-7': '新增',
+    'indexvue561643-8': '事件时间',
+    'indexvue561643-9': '事件状态',
+    'indexvue561643-10': '事件损失情况',
+    'indexvue561643-11': '事件地址',
+    'indexvue561643-12': '部门名称',
+    'indexvue561643-13': '现场负责人',
+    'indexvue561643-14': '创建时间',
+    'indexvue561643-15': '操作',
+    'indexvue561643-16': '详情',
+    'indexvue561643-17': '流转信息',
+    'indexvue561643-18': '操作人:',
+    'indexvue561643-19': '审批意见:',
+    'indexvue561643-20': '附件:',
+    'qhsefaultr063978-0': '事件时间',
+    'qhsefaultr063978-1': '选择事件发生时间',
+    'qhsefaultr063978-2': '事件级别',
+    'qhsefaultr063978-3': '请输入事件级别',
+    'qhsefaultr063978-4': '事件类型',
+    'qhsefaultr063978-5': '请选择事件类型',
+    'qhsefaultr063978-6': '事件地址',
+    'qhsefaultr063978-7': '请输入事件地址',
+    'qhsefaultr063978-8': '现场负责人',
+    'qhsefaultr063978-9': '请输入现场负责人姓名',
+    'qhsefaultr063978-10': '事件损失情况',
+    'qhsefaultr063978-11': '请输入事件损失情况',
+    'qhsefaultr063978-12': '现场采取措施',
+    'qhsefaultr063978-13': '请输入现场采取的应急措施',
+    'qhsefaultr063978-14': '事件简要经过',
+    'qhsefaultr063978-15': '请输入事件详细经过',
+    'qhsefaultr063978-16': '附件/现场图片',
+    'qhsefaultr063978-17': '备注',
+    'qhsefaultr063978-18': '请输入备注信息',
+    'qhsefaultr063978-19': '确 定',
+    'qhsefaultr063978-20': '取 消',
+    'qhsefaultr321236-0': '事件时间',
+    'qhsefaultr321236-1': '选择事件发生时间',
+    'qhsefaultr321236-2': '事件级别',
+    'qhsefaultr321236-3': '请输入事件级别',
+    'qhsefaultr321236-4': '事件类型',
+    'qhsefaultr321236-5': '请选择事件类型',
+    'qhsefaultr321236-6': '事件地址',
+    'qhsefaultr321236-7': '请输入事件地址',
+    'qhsefaultr321236-8': '现场负责人',
+    'qhsefaultr321236-9': '请输入现场负责人姓名',
+    'qhsefaultr321236-10': '事件损失情况',
+    'qhsefaultr321236-11': '请输入事件损失情况',
+    'qhsefaultr321236-12': '现场采取措施',
+    'qhsefaultr321236-13': '请输入现场采取的应急措施',
+    'qhsefaultr321236-14': '事件简要经过',
+    'qhsefaultr321236-15': '请输入事件详细经过',
+    'qhsefaultr321236-16': '附件/现场图片',
+    'qhsefaultr321236-17': '备注',
+    'qhsefaultr321236-18': '请输入备注信息',
+    'indexvue677779-0': '风险等级',
+    'indexvue677779-1': '请选择风险等级',
+    'indexvue677779-2': '搜索',
+    'indexvue677779-3': '重置',
+    'indexvue677779-4': '新增',
+    'indexvue677779-5': '导出',
+    'indexvue677779-6': '区域/位置',
+    'indexvue677779-7': '序号',
+    'indexvue677779-8': '危害因素描述',
+    'indexvue677779-9': '可导致的后果',
+    'indexvue677779-10': '风险评价',
+    'indexvue677779-11': '可能性 (L)',
+    'indexvue677779-12': '严重性 (S)',
+    'indexvue677779-13': '风险值 (R)',
+    'indexvue677779-14': '控制措施',
+    'indexvue677779-15': '责任人',
+    'indexvue677779-16': '操作',
+    'indexvue677779-17': '编辑',
+    'indexvue677779-18': '删除',
+    'indexvue677779-19': '请输入区域/位置',
+    'indexvue677779-20': '请输入危害因素描述',
+    'indexvue677779-21': '可能导致的后果',
+    'indexvue677779-22': '请输入可能导致的后果',
+    'indexvue677779-23': '风险评价可能性',
+    'indexvue677779-24': '风险评价严重性',
+    'indexvue677779-25': '风险评价风险值',
+    'indexvue677779-26': '请输入责任人',
+    'indexvue677779-27': '备注',
+    'indexvue677779-28': '请输入备注',
+    'indexvue677779-29': '请输入控制措施',
+    'indexvue677779-30': '取消',
+    'indexvue677779-31': '确定',
+    'hiddenclas732977-0': '上级分类',
+    'hiddenclas732977-1': '请选择上级分类',
+    'hiddenclas732977-2': '分类名称',
+    'hiddenclas732977-3': '请输入分类名称',
+    'hiddenclas732977-4': '显示排序',
+    'hiddenclas732977-5': '状态',
+    'hiddenclas732977-6': '请选择状态',
+    'hiddenclas732977-7': '备注',
+    'hiddenclas732977-8': '请输入备注',
+    'hiddenclas732977-9': '确 定',
+    'hiddenclas732977-10': '取 消',
+    'indexvue359203-0': '分类名称',
+    'indexvue359203-1': '请输入分类名称',
+    'indexvue359203-2': '分类状态',
+    'indexvue359203-3': '请选择分类状态',
+    'indexvue359203-4': '搜索',
+    'indexvue359203-5': '重置',
+    'indexvue359203-6': '新增',
+    'indexvue359203-7': '排序',
+    'indexvue359203-8': '状态',
+    'indexvue359203-9': '备注',
+    'indexvue359203-10': '创建时间',
+    'indexvue359203-11': '操作',
+    'indexvue359203-12': '修改',
+    'indexvue359203-13': '删除',
+    'indexvue585796-0': '已过期',
+    'indexvue585796-1': '分类统计',
+    'indexvue585796-2': '计量器具名称',
+    'indexvue585796-3': '请输入计量器具名称',
+    'indexvue585796-4': '编码',
+    'indexvue585796-5': '请输入计量器具编码',
+    'indexvue585796-6': '是否过期',
+    'indexvue585796-7': '请选择是否过期',
+    'indexvue585796-8': '是否预警',
+    'indexvue585796-9': '请选择是否预警',
+    'indexvue585796-10': '新增',
+    'indexvue585796-11': '导出',
+    'indexvue585796-12': '名称',
+    'indexvue585796-13': '序列号',
+    'indexvue585796-14': '部门名称',
+    'indexvue585796-15': '精度',
+    'indexvue585796-16': '责任人',
+    'indexvue585796-17': '品牌',
+    'indexvue585796-18': '规格型号',
+    'indexvue585796-19': '分类',
+    'indexvue585796-20': '状态',
+    'indexvue585796-21': '报废时间',
+    'indexvue585796-22': '采购日期',
+    'indexvue585796-23': '价格',
+    'indexvue585796-24': '备注',
+    'indexvue585796-25': '查看证书',
+    'indexvue585796-26': '编辑',
+    'indexvue585796-27': '删除',
+    'indexvue585796-28': '台账已过期红色预警',
+    'indexvue585796-29': '请输入序列号',
+    'indexvue585796-30': '部门',
+    'indexvue585796-31': '请选择所在部门',
+    'indexvue585796-32': '请输入责任人',
+    'indexvue585796-33': '请输入品牌',
+    'indexvue585796-34': '请输入规格型号',
+    'indexvue585796-35': '请输入精度',
+    'indexvue585796-36': '请选择分类',
+    'indexvue585796-37': '请选择状态',
+    'indexvue585796-38': '请选择报废时间',
+    'indexvue585796-39': '请输入价格',
+    'indexvue585796-40': '请选择采购日期',
+    'indexvue585796-41': '请输入描述',
+    'indexvue585796-42': '取 消',
+    'indexvue585796-43': '确 定',
+    'indexvue585796-44': '检测信息',
+    'indexvue585796-45': '证书编码',
+    'indexvue585796-46': '检测/校准日期',
+    'indexvue585796-47': '检测/校准机构',
+    'indexvue585796-48': '检测/校准标准',
+    'indexvue585796-49': '检测/校准内容',
+    'indexvue585796-50': '检测/校准有效期',
+    'indexvue585796-51': '校准金额',
+    'indexvue585796-52': '附件',
+    'indexvue585796-53': '查看',
+    'indexvue585796-54': '暂无附件',
+    'indexvue585796-55': '下载',
+    'indexvue585796-56': '确认',
+    'indexvue598751-0': '类型',
+    'indexvue598751-1': '请选择类型',
+    'indexvue598751-2': '名称',
+    'indexvue598751-3': '请输入名称',
+    'indexvue598751-4': '搜索',
+    'indexvue598751-5': '重置',
+    'indexvue598751-6': '新增',
+    'indexvue598751-7': '导出',
+    'indexvue598751-8': '发布日期',
+    'indexvue598751-9': '生效日期',
+    'indexvue598751-10': '最新修订日期',
+    'indexvue598751-11': '发布部门',
+    'indexvue598751-12': '文件编号',
+    'indexvue598751-13': '适用条款',
+    'indexvue598751-14': '备注',
+    'indexvue598751-15': '操作',
+    'indexvue598751-16': '编辑',
+    'indexvue598751-17': '删除',
+    'indexvue598751-18': '请输入法规名称',
+    'indexvue598751-19': '请选择发布日期',
+    'indexvue598751-20': '请选择生效日期',
+    'indexvue598751-21': '请选择最新修订日期',
+    'indexvue598751-22': '请输入文件编号',
+    'indexvue598751-23': '请输入发布部门',
+    'indexvue598751-24': '部门',
+    'indexvue598751-25': '请选择部门',
+    'indexvue598751-26': '请输入适用条款',
+    'indexvue598751-27': '请输入备注',
+    'indexvue598751-28': '确定',
+    'indexvue598751-29': '取消',
+    'indexvue546164-0': '计量器具编码',
+    'indexvue546164-1': '请输入计量器具编码',
+    'indexvue546164-2': '检测/校准日期',
+    'indexvue546164-3': '开始日期',
+    'indexvue546164-4': '结束日期',
+    'indexvue546164-5': '检测/校准机构',
+    'indexvue546164-6': '请输入检测/校准机构',
+    'indexvue546164-7': '检测/校准有效期',
+    'indexvue546164-8': '搜索',
+    'indexvue546164-9': '重置',
+    'indexvue546164-10': '新增',
+    'indexvue546164-11': '导出',
+    'indexvue546164-12': '序列号',
+    'indexvue546164-13': '计量器具名称',
+    'indexvue546164-14': '证书编码',
+    'indexvue546164-15': '检测/校准标准',
+    'indexvue546164-16': '检测/校准内容',
+    'indexvue546164-17': '查看详情',
+    'indexvue546164-18': '检测周期',
+    'indexvue546164-19': '精度',
+    'indexvue546164-20': '校准金额',
+    'indexvue546164-21': '部门名称',
+    'indexvue546164-22': '附件',
+    'indexvue546164-23': '查看',
+    'indexvue546164-24': '操作',
+    'indexvue546164-25': '编辑',
+    'indexvue546164-26': '删除',
+    'indexvue546164-27': '下载',
+    'indexvue546164-28': '确认',
+    'iotmeasure707653-0': '计量器具',
+    'iotmeasure707653-1': '选择',
+    'iotmeasure707653-2': '证书编码',
+    'iotmeasure707653-3': '请输入证书编码',
+    'iotmeasure707653-4': '检测/校准日期',
+    'iotmeasure707653-5': '选择检测/校准日期',
+    'iotmeasure707653-6': '检测/校准机构',
+    'iotmeasure707653-7': '请输入检测/校准机构',
+    'iotmeasure707653-8': '检测/校准标准',
+    'iotmeasure707653-9': '请输入检测/校准标准',
+    'iotmeasure707653-10': '检测/校准有效期',
+    'iotmeasure707653-11': '选择检测/校准有效期',
+    'iotmeasure707653-12': '精度',
+    'iotmeasure707653-13': '请输入精度',
+    'iotmeasure707653-14': '校准金额',
+    'iotmeasure707653-15': '请输入校准金额',
+    'iotmeasure707653-16': '检测周期',
+    'iotmeasure707653-17': '检测/校准内容',
+    'iotmeasure707653-18': '附件',
+    'iotmeasure707653-19': '确 定',
+    'iotmeasure707653-20': '取 消',
+    'iotmeasure707653-21': '选择仪器',
+    'iotmeasure707653-22': '计量器具名称',
+    'iotmeasure707653-23': '请输入计量器具名称',
+    'iotmeasure707653-24': '序列号',
+    'iotmeasure707653-25': '请输入序列号',
+    'iotmeasure707653-26': '计量器具编码',
+    'iotmeasure707653-27': '请输入计量器具编码',
+    'iotmeasure707653-28': '责任人',
+    'iotmeasure707653-29': '请输入责任人',
+    'iotmeasure707653-30': '计量单位',
+    'iotmeasure707653-31': '品牌',
+    'iotmeasure707653-32': '规格型号',
+    'iotmeasure707653-33': '分类',
+    'iotmeasure707653-34': '采购日期',
+    'iotmeasure707653-35': '有效期',
+    'iotmeasure707653-36': '上次检验日期',
+    'iotmeasure707653-37': '价格',
+    'iotmeasure707653-38': '备注',
+    'indexvue225698-0': '计量器具名称',
+    'indexvue225698-1': '请输入计量器具名称',
+    'indexvue225698-2': '计量项目',
+    'indexvue225698-3': '请输入计量项目',
+    'indexvue225698-4': '使用人',
+    'indexvue225698-5': '请输入使用人',
+    'indexvue225698-6': '搜索',
+    'indexvue225698-7': '重置',
+    'indexvue225698-8': '新增',
+    'indexvue225698-9': '导出',
+    'indexvue225698-10': '使用日期',
+    'indexvue225698-11': '使用原因',
+    'indexvue225698-12': '部门名称',
+    'indexvue225698-13': '操作',
+    'indexvue225698-14': '编辑',
+    'indexvue225698-15': '删除',
+    'iotmeasure566789-0': '计量器具',
+    'iotmeasure566789-1': '选择计量器具',
+    'iotmeasure566789-2': '使用日期',
+    'iotmeasure566789-3': '选择使用日期',
+    'iotmeasure566789-4': '使用原因',
+    'iotmeasure566789-5': '请输入使用原因',
+    'iotmeasure566789-6': '计量项目',
+    'iotmeasure566789-7': '请输入计量项目',
+    'iotmeasure566789-8': '使用人',
+    'iotmeasure566789-9': '请输入使用人',
+    'iotmeasure566789-10': '部门',
+    'iotmeasure566789-11': '请选择所在部门',
+    'iotmeasure566789-12': '确 定',
+    'iotmeasure566789-13': '取 消',
+    'iotmeasure566789-14': '选择仪器',
+    'iotmeasure566789-15': '计量器具名称',
+    'iotmeasure566789-16': '请输入计量器具名称',
+    'iotmeasure566789-17': '单位',
+    'iotmeasure566789-18': '名称',
+    'iotmeasure566789-19': '责任人',
+    'iotmeasure566789-20': '品牌',
+    'iotmeasure566789-21': '规格型号',
+    'iotmeasure566789-22': '分类',
+    'iotmeasure566789-23': '采购日期',
+    'iotmeasure566789-24': '有效期',
+    'iotmeasure566789-25': '上次检验日期',
+    'iotmeasure566789-26': '价格',
+    'iotmeasure566789-27': '备注',
+    'indexvue032173-0': '序号',
+    'indexvue032173-1': '请输入序号',
+    'indexvue032173-2': '工作负责人',
+    'indexvue032173-3': '请输入工作负责人',
+    'indexvue032173-4': '搜索',
+    'indexvue032173-5': '重置',
+    'indexvue032173-6': '新增',
+    'indexvue032173-7': '导出',
+    'indexvue032173-8': 'JSA序号',
+    'indexvue032173-9': '编号',
+    'indexvue032173-10': '日期',
+    'indexvue032173-11': '工作任务',
+    'indexvue032173-12': '工作地点',
+    'indexvue032173-13': '附件',
+    'indexvue032173-14': '查看',
+    'indexvue032173-15': '备注',
+    'indexvue032173-16': '操作',
+    'indexvue032173-17': '编辑',
+    'indexvue032173-18': '删除',
+    'indexvue032173-19': '下载',
+    'indexvue032173-20': '确认',
+    'iotsocsumm767788-0': '所属队伍',
+    'iotsocsumm767788-1': '请选择所在部门',
+    'iotsocsumm767788-2': '日期',
+    'iotsocsumm767788-3': '选择日期',
+    'iotsocsumm767788-4': '序号',
+    'iotsocsumm767788-5': '请输入序号',
+    'iotsocsumm767788-6': '工作任务',
+    'iotsocsumm767788-7': '请输入工作任务',
+    'iotsocsumm767788-8': '工作地点',
+    'iotsocsumm767788-9': '请输入工作地点',
+    'iotsocsumm767788-10': '工作负责人',
+    'iotsocsumm767788-11': '请输入工作负责人',
+    'iotsocsumm767788-12': '附件',
+    'iotsocsumm767788-13': '备注',
+    'iotsocsumm767788-14': '请输入备注',
+    'iotsocsumm767788-15': '确 定',
+    'iotsocsumm767788-16': '取 消',
+    'indexvue325112-0': '开始',
+    'indexvue325112-1': '结束',
+    'indexvue325112-2': '月度',
+    'indexvue325112-3': '季度',
+    'indexvue325112-4': '年度',
+    'indexvue325112-5': '初始化',
+    'indexvue325112-6': '风险管控及隐患治理',
+    'indexvue325112-7': '行为安全与系统预警',
+    'indexvue325112-8': '人',
+    'indexvue325112-9': '是否过期',
+    'indexvue325112-10': '请选择是否过期',
+    'indexvue325112-11': '是否预警',
+    'indexvue325112-12': '查询',
+    'indexvue325112-13': '重置',
+    'indexvue325112-14': '序号',
+    'indexvue325112-15': '证书类别',
+    'indexvue325112-16': '证书名称',
+    'indexvue325112-17': '所在部门',
+    'indexvue325112-18': '颁发机构',
+    'indexvue325112-19': '证书标准',
+    'indexvue325112-20': '颁发时间',
+    'indexvue325112-21': '有效期',
+    'indexvue325112-22': '到期提醒',
+    'indexvue325112-23': '备注',
+    'indexvue325112-24': '操作',
+    'indexvue325112-25': '查看证书',
+    'indexvue325112-26': '证书已过期红色预警',
+    'indexvue325112-27': '附件',
+    'indexvue325112-28': '查看',
+    'indexvue325112-29': '下载',
+    'indexvue325112-30': '确认',
+    'indexvue325112-31': '证书类型',
+    'indexvue325112-32': '所属人',
+    'indexvue325112-33': '单位',
+    'indexvue325112-34': '类型',
+    'indexvue325112-35': '来源',
+    'indexvue325112-36': '地点',
+    'indexvue325112-37': '存在问题',
+    'indexvue325112-38': '隐患附件',
+    'indexvue325112-39': '整改人',
+    'indexvue325112-40': '整改要求',
+    'indexvue325112-41': '整改情况',
+    'indexvue325112-42': '整改附件',
+    'indexvue325112-43': '排查时间',
+    'indexvue325112-44': '状态',
+    'indexvue325112-45': '区域/位置',
+    'indexvue325112-46': '危险因素描述',
+    'indexvue325112-47': '可导致的后果',
+    'indexvue325112-48': '风险评价',
+    'indexvue325112-49': '可能性 (L)',
+    'indexvue325112-50': '严重性 (S)',
+    'indexvue325112-51': '风险值 (R)',
+    'indexvue325112-52': '风险等级',
+    'indexvue325112-53': '控制措施',
+    'indexvue325112-54': '责任人',
+    'indexvue325112-55': '名称',
+    'indexvue325112-56': '编码',
+    'indexvue325112-57': '序列号',
+    'indexvue325112-58': '部门名称',
+    'indexvue325112-59': '计量单位',
+    'indexvue325112-60': '品牌',
+    'indexvue325112-61': '规格型号',
+    'indexvue325112-62': '分类',
+    'indexvue325112-63': '采购日期',
+    'indexvue325112-64': '价格',
+    'indexvue621523-0': '计量器具名称',
+    'indexvue621523-1': '请输入计量器具名称',
+    'indexvue621523-2': '责任人',
+    'indexvue621523-3': '请输入责任人',
+    'indexvue621523-4': '搜索',
+    'indexvue621523-5': '重置',
+    'indexvue621523-6': '新增',
+    'indexvue621523-7': '导出',
+    'indexvue621523-8': '主键id',
+    'indexvue621523-9': '计量器具编码',
+    'indexvue621523-10': '分类',
+    'indexvue621523-11': '采购日期',
+    'indexvue621523-12': '品牌',
+    'indexvue621523-13': '规格型号',
+    'indexvue621523-14': '有效期',
+    'indexvue621523-15': '上次检验/校准日期',
+    'indexvue621523-16': '单位',
+    'indexvue621523-17': '价格',
+    'indexvue621523-18': '图片',
+    'indexvue621523-19': '备注',
+    'indexvue621523-20': '创建时间',
+    'indexvue621523-21': '部门id',
+    'indexvue621523-22': '操作',
+    'indexvue621523-23': '编辑',
+    'indexvue621523-24': '删除',
+    'iotmeasure525708-0': '计量器具名称',
+    'iotmeasure525708-1': '请输入计量器具名称',
+    'iotmeasure525708-2': '分类',
+    'iotmeasure525708-3': '请输入分类',
+    'iotmeasure525708-4': '责任人',
+    'iotmeasure525708-5': '请输入责任人',
+    'iotmeasure525708-6': '采购日期',
+    'iotmeasure525708-7': '选择采购日期',
+    'iotmeasure525708-8': '品牌',
+    'iotmeasure525708-9': '请输入品牌',
+    'iotmeasure525708-10': '规格型号',
+    'iotmeasure525708-11': '请输入规格型号',
+    'iotmeasure525708-12': '有效期',
+    'iotmeasure525708-13': '选择有效期',
+    'iotmeasure525708-14': '上次检验/校准日期',
+    'iotmeasure525708-15': '选择上次检验/校准日期',
+    'iotmeasure525708-16': '单位',
+    'iotmeasure525708-17': '请输入单位',
+    'iotmeasure525708-18': '价格',
+    'iotmeasure525708-19': '请输入价格',
+    'iotmeasure525708-20': '图片',
+    'iotmeasure525708-21': '请输入图片',
+    'iotmeasure525708-22': '备注',
+    'iotmeasure525708-23': '请输入备注',
+    'iotmeasure525708-24': '部门id',
+    'iotmeasure525708-25': '请输入部门id',
+    'iotmeasure525708-26': '确 定',
+    'iotmeasure525708-27': '取 消',
+    'measurecer329669-0': '查看证书',
+    'measurecer329669-1': '证书编码',
+    'measurecer329669-2': '请输入证书编码',
+    'measurecer329669-3': '检测/校准日期',
+    'measurecer329669-4': '开始日期',
+    'measurecer329669-5': '结束日期',
+    'measurecer329669-6': '新增',
+    'measurecer329669-7': '搜索',
+    'measurecer329669-8': '重置',
+    'measurecer329669-9': '检测日期',
+    'measurecer329669-10': '检测机构',
+    'measurecer329669-11': '检测标准',
+    'measurecer329669-12': '检测/校准内容',
+    'measurecer329669-13': '有效期',
+    'measurecer329669-14': '检测周期',
+    'measurecer329669-15': '精度',
+    'measurecer329669-16': '校准金额',
+    'measurecer329669-17': '附件',
+    'measurecer329669-18': '查看',
+    'measurecer329669-19': '暂无',
+    'measurecer329669-20': '下载',
+    'measurecer329669-21': '确认',
+    'indexvue463638-0': '月报标题',
+    'indexvue463638-1': '请输入月报标题',
+    'indexvue463638-2': '创建日期',
+    'indexvue463638-3': '开始日期',
+    'indexvue463638-4': '结束日期',
+    'indexvue463638-5': '搜索',
+    'indexvue463638-6': '重置',
+    'indexvue463638-7': '导出',
+    'indexvue463638-8': '工单填报人',
+    'indexvue463638-9': '操作',
+    'indexvue463638-10': '填报',
+    'indexvue463638-11': '查看',
+    'monthlyrep647557-0': '基本信息',
+    'monthlyrep647557-1': '部门名称',
+    'monthlyrep647557-2': '请选择所属队伍',
+    'monthlyrep647557-3': '月报标题',
+    'monthlyrep647557-4': '请输入月报标题',
+    'monthlyrep647557-5': '年月',
+    'monthlyrep647557-6': '选择年月',
+    'monthlyrep647557-7': '人工时和安全行驶公里数',
+    'monthlyrep647557-8': '员工人数',
+    'monthlyrep647557-9': '分包商人数',
+    'monthlyrep647557-10': '安全行驶里程数(公里)',
+    'monthlyrep647557-11': '总人工时数(小时)',
+    'monthlyrep647557-12': '无事故累计天数',
+    'monthlyrep647557-13': '死亡事故(起)',
+    'monthlyrep647557-14': '损失工时事故(起)',
+    'monthlyrep647557-15': '工作受限事件(起)',
+    'monthlyrep647557-16': '医疗处理事件(起)',
+    'monthlyrep647557-17': '急救箱事件(起)',
+    'monthlyrep647557-18': '交通事故(起)',
+    'monthlyrep647557-19': '未遂事件(起)',
+    'monthlyrep647557-20': '泄漏事件(起)',
+    'monthlyrep647557-21': '违反保命规则的次数(次)',
+    'monthlyrep647557-22': '班前会(次)',
+    'monthlyrep647557-23': 'QHSE管理委员会会议(次)',
+    'monthlyrep647557-24': 'QHSE月度例会(次)',
+    'monthlyrep647557-25': '公司级隐患排查(次)',
+    'monthlyrep647557-26': 'QHSE检查(次)',
+    'monthlyrep647557-27': '安全观察卡(张)',
+    'monthlyrep647557-28': '工作许可审核(份)',
+    'monthlyrep647557-29': '工作安全分析(次)',
+    'monthlyrep647557-30': '演练次数',
+    'monthlyrep647557-31': 'QHSE培训次数',
+    'monthlyrep647557-32': 'QHSE培训人次',
+    'monthlyrep647557-33': 'QHSE培训学时数(小时)',
+    'monthlyrep647557-34': '环境数据',
+    'monthlyrep647557-35': '水消耗(吨)',
+    'monthlyrep647557-36': '柴油消耗(升)',
+    'monthlyrep647557-37': '用电量(千瓦·小时)',
+    'monthlyrep647557-38': '天然气消耗量(立方米)',
+    'monthlyrep647557-39': '其他信息',
+    'monthlyrep647557-40': '工单填报人',
+    'monthlyrep647557-41': '请选择填报人',
+    'monthlyrep647557-42': '备注',
+    'monthlyrep647557-43': '请输入备注信息',
+    'monthlyrep647557-44': '返 回',
+    'monthlyrep687564-0': '基本信息',
+    'monthlyrep687564-1': '部门名称',
+    'monthlyrep687564-2': '请选择所属队伍',
+    'monthlyrep687564-3': '月报标题',
+    'monthlyrep687564-4': '请输入月报标题',
+    'monthlyrep687564-5': '年月',
+    'monthlyrep687564-6': '选择年月',
+    'monthlyrep687564-7': '人工时和安全行驶公里数',
+    'monthlyrep687564-8': '员工人数',
+    'monthlyrep687564-9': '分包商人数',
+    'monthlyrep687564-10': '安全行驶里程数(公里)',
+    'monthlyrep687564-11': '总人工时数(小时)',
+    'monthlyrep687564-12': '无事故累计天数',
+    'monthlyrep687564-13': '死亡事故(起)',
+    'monthlyrep687564-14': '损失工时事故(起)',
+    'monthlyrep687564-15': '工作受限事件(起)',
+    'monthlyrep687564-16': '医疗处理事件(起)',
+    'monthlyrep687564-17': '急救箱事件(起)',
+    'monthlyrep687564-18': '交通事故(起)',
+    'monthlyrep687564-19': '未遂事件(起)',
+    'monthlyrep687564-20': '泄漏事件(起)',
+    'monthlyrep687564-21': '违反保命规则的次数(次)',
+    'monthlyrep687564-22': '班前会(次)',
+    'monthlyrep687564-23': 'QHSE管理委员会会议(次)',
+    'monthlyrep687564-24': 'QHSE月度例会(次)',
+    'monthlyrep687564-25': '公司级隐患排查(次)',
+    'monthlyrep687564-26': 'QHSE检查(次)',
+    'monthlyrep687564-27': '安全观察卡(张)',
+    'monthlyrep687564-28': '工作许可审核(份)',
+    'monthlyrep687564-29': '工作安全分析(次)',
+    'monthlyrep687564-30': '演练次数',
+    'monthlyrep687564-31': 'QHSE培训次数',
+    'monthlyrep687564-32': 'QHSE培训人次',
+    'monthlyrep687564-33': 'QHSE培训学时数(小时)',
+    'monthlyrep687564-34': '环境数据',
+    'monthlyrep687564-35': '水消耗(吨)',
+    'monthlyrep687564-36': '柴油消耗(升)',
+    'monthlyrep687564-37': '用电量(千瓦·小时)',
+    'monthlyrep687564-38': '天然气消耗量(立方米)',
+    'monthlyrep687564-39': '其他信息',
+    'monthlyrep687564-40': '备注',
+    'monthlyrep687564-41': '请输入备注信息',
+    'monthlyrep687564-42': '取消',
+    'monthlyrep687564-43': '保存',
+    'indexvue439912-0': '作业票总数',
+    'indexvue439912-1': '作业票分类统计',
+    'indexvue439912-2': '作业票趋势统计',
+    'indexvue439912-3': 'PTW编号',
+    'indexvue439912-4': '请输入PTW编号',
+    'indexvue439912-5': 'PTW序号',
+    'indexvue439912-6': '请输入PTW序号',
+    'indexvue439912-7': '创建日期',
+    'indexvue439912-8': '开始日期',
+    'indexvue439912-9': '结束日期',
+    'indexvue439912-10': '新增',
+    'indexvue439912-11': '导出',
+    'indexvue439912-12': '时间',
+    'indexvue439912-13': '作业票类型',
+    'indexvue439912-14': '作业分级',
+    'indexvue439912-15': '作业地点',
+    'indexvue439912-16': '作业内容',
+    'indexvue439912-17': '作业人员',
+    'indexvue439912-18': '监护人',
+    'indexvue439912-19': '作业负责人',
+    'indexvue439912-20': '部门',
+    'indexvue439912-21': '附件',
+    'indexvue439912-22': '查看',
+    'indexvue439912-23': '创建时间',
+    'indexvue439912-24': '备注',
+    'indexvue439912-25': '编辑',
+    'indexvue439912-26': '删除',
+    'indexvue439912-27': '所属队伍',
+    'indexvue439912-28': '请选择所属队伍',
+    'indexvue439912-29': 'JSA编号',
+    'indexvue439912-30': '选择JSA编号',
+    'indexvue439912-31': '选择',
+    'indexvue439912-32': '序号',
+    'indexvue439912-33': '请输入序号',
+    'indexvue439912-34': '请输入作业内容',
+    'indexvue439912-35': '请选择作业票类型',
+    'indexvue439912-36': '请选择作业分级',
+    'indexvue439912-37': '请输入作业地点',
+    'indexvue439912-38': '作业时间',
+    'indexvue439912-39': '请选择作业时间',
+    'indexvue439912-40': '请选择作业人员',
+    'indexvue439912-41': '请选择监护人',
+    'indexvue439912-42': '请选择作业负责人',
+    'indexvue439912-43': '请输入备注',
+    'indexvue439912-44': '取 消',
+    'indexvue439912-45': '确 定',
+    'indexvue439912-46': '下载',
+    'indexvue439912-47': '确认',
+    'indexvue439912-48': '所属人员',
+    'indexvue439912-49': '请输入所属人员',
+    'indexvue439912-50': '证书类型',
+    'indexvue439912-51': '证书类别',
+    'indexvue439912-52': '证书名称',
+    'indexvue439912-53': '所属人',
+    'indexvue439912-54': '所在部门',
+    'indexvue439912-55': '颁发机构',
+    'indexvue439912-56': '证书标准',
+    'indexvue439912-57': '颁发时间',
+    'indexvue439912-58': '有效期',
+    'indexvue439912-59': '到期提醒',
+    'indexvue439912-60': '选择JSA序号',
+    'indexvue439912-61': 'JSA序号',
+    'indexvue439912-62': '请输入JSA序号',
+    'indexvue439912-63': '编号',
+    'indexvue439912-64': '日期',
+    'indexvue439912-65': '工作任务',
+    'indexvue439912-66': '工作地点',
+    'indexvue439912-67': '工作负责人',
+    'indexvue311597-0': '月报标题',
+    'indexvue311597-1': '请输入月报标题',
+    'indexvue311597-2': '创建日期',
+    'indexvue311597-3': '开始日期',
+    'indexvue311597-4': '结束日期',
+    'indexvue311597-5': '搜索',
+    'indexvue311597-6': '重置',
+    'indexvue311597-7': '工单填报人',
+    'indexvue311597-8': '审批状态',
+    'indexvue311597-9': '拒绝原因',
+    'indexvue311597-10': '操作',
+    'indexvue311597-11': '审批',
+    'indexvue311597-12': '月报审核',
+    'indexvue311597-13': '所属部门',
+    'indexvue311597-14': '填报人',
+    'indexvue311597-15': '备注信息',
+    'indexvue311597-16': '填报人补充说明',
+    'indexvue311597-17': '关闭',
+    'indexvue311597-18': '审批不通过',
+    'indexvue311597-19': '审批通过',
+    'indexvue311597-20': '填写驳回原因',
+    'indexvue311597-21': '驳回原因',
+    'indexvue311597-22': '请输入驳回原因',
+    'indexvue311597-23': '取消',
+    'indexvue311597-24': '确定',
+    'indexvue525575-0': '月报期次',
+    'indexvue525575-1': '搜索',
+    'indexvue525575-2': '重置',
+    'indexvue525575-3': '月报标题',
+    'indexvue525575-4': '操作',
+    'indexvue525575-5': '查看',
+    'previewdra741169-0': '基本信息',
+    'previewdra741169-1': '单位',
+    'previewdra741169-2': '汇总',
+    'previewdra741169-3': '关闭',
+    'indexvue287571-0': '地址',
+    'indexvue287571-1': '请输入地址',
+    'indexvue287571-2': '检查主体',
+    'indexvue287571-3': '请选择检查主体',
+    'indexvue287571-4': '状态',
+    'indexvue287571-5': '请选择状态',
+    'indexvue287571-6': '新增',
+    'indexvue287571-7': '导出',
+    'indexvue287571-8': '隐患总数',
+    'indexvue287571-9': '未整改数',
+    'indexvue287571-10': '整改率',
+    'indexvue287571-11': '隐患来源分布',
+    'indexvue287571-12': '单位',
+    'indexvue287571-13': '类型',
+    'indexvue287571-14': '检查类型',
+    'indexvue287571-15': '检查人',
+    'indexvue287571-16': '排查时间',
+    'indexvue287571-17': '排查地点',
+    'indexvue287571-18': '存在问题',
+    'indexvue287571-19': '附件',
+    'indexvue287571-20': '查看',
+    'indexvue287571-21': '整改人',
+    'indexvue287571-22': '整改要求',
+    'indexvue287571-23': '整改期限',
+    'indexvue287571-24': '整改情况',
+    'indexvue287571-25': '整改附件',
+    'indexvue287571-26': '备注',
+    'indexvue287571-27': '整改',
+    'indexvue287571-28': '编辑',
+    'indexvue287571-29': '删除',
+    'indexvue287571-30': '请选择检查类型',
+    'indexvue287571-31': '请输入检查人',
+    'indexvue287571-32': '所属队伍',
+    'indexvue287571-33': '请选择所属队伍',
+    'indexvue287571-34': '隐患类别',
+    'indexvue287571-35': '请选择隐患类别',
+    'indexvue287571-36': '请选择排查时间',
+    'indexvue287571-37': '请输入地点',
+    'indexvue287571-38': '请输入存在问题',
+    'indexvue287571-39': '请输入整改要求',
+    'indexvue287571-40': '请选择整改期限',
+    'indexvue287571-41': '请选择整改人',
+    'indexvue287571-42': '照片',
+    'indexvue287571-43': '请输入备注',
+    'indexvue287571-44': '取 消',
+    'indexvue287571-45': '确 定',
+    'indexvue287571-46': '整改描述',
+    'indexvue287571-47': '请输入整改描述',
+    'indexvue287571-48': '下载',
+    'indexvue287571-49': '确认',
+    'indexvue854982-0': '分类名称',
+    'indexvue854982-1': '请输入分类名称',
+    'indexvue854982-2': '分类状态',
+    'indexvue854982-3': '请选择分类状态',
+    'indexvue854982-4': '搜索',
+    'indexvue854982-5': '重置',
+    'indexvue854982-6': '新增',
+    'indexvue854982-7': '排序',
+    'indexvue854982-8': '状态',
+    'indexvue854982-9': '备注',
+    'indexvue854982-10': '创建时间',
+    'indexvue854982-11': '操作',
+    'indexvue854982-12': '修改',
+    'indexvue854982-13': '删除',
+    'socclassif766499-0': '上级分类',
+    'socclassif766499-1': '请选择上级分类',
+    'socclassif766499-2': '分类名称',
+    'socclassif766499-3': '请输入分类名称',
+    'socclassif766499-4': '显示排序',
+    'socclassif766499-5': '状态',
+    'socclassif766499-6': '请选择状态',
+    'socclassif766499-7': '备注',
+    'socclassif766499-8': '请输入备注',
+    'socclassif766499-9': '确 定',
+    'socclassif766499-10': '取 消',
+    'indexvue274208-0': '返回总览',
+    'indexvue274208-1': '姓名',
+    'indexvue274208-2': '请输入姓名',
+    'indexvue274208-3': '队伍名称',
+    'indexvue274208-4': '请输入队伍名称',
+    'indexvue274208-5': '观察日期',
+    'indexvue274208-6': '开始日期',
+    'indexvue274208-7': '结束日期',
+    'indexvue274208-8': '搜索',
+    'indexvue274208-9': '重置',
+    'indexvue274208-10': '新增',
+    'indexvue274208-11': '导出',
+    'indexvue274208-12': '项目部',
+    'indexvue274208-13': '类型名称',
+    'indexvue274208-14': '岗位',
+    'indexvue274208-15': '详细描述',
+    'indexvue274208-16': '创建时间',
+    'indexvue274208-17': '操作',
+    'indexvue274208-18': '下载',
+    'indexvue274208-19': '编辑',
+    'indexvue274208-20': '删除',
+    'indexvue274208-21': '文档预览',
+    'iotsocsumm123999-0': '队伍',
+    'iotsocsumm123999-1': '请选择所在队伍',
+    'iotsocsumm123999-2': '观察日期',
+    'iotsocsumm123999-3': '选择观察日期',
+    'iotsocsumm123999-4': 'soc类型',
+    'iotsocsumm123999-5': '请选择soc类型',
+    'iotsocsumm123999-6': '姓名',
+    'iotsocsumm123999-7': '请输入姓名',
+    'iotsocsumm123999-8': '岗位',
+    'iotsocsumm123999-9': '请输入岗位',
+    'iotsocsumm123999-10': '详细描述',
+    'iotsocsumm123999-11': '请输入详细描述',
+    'iotsocsumm123999-12': '确 定',
+    'iotsocsumm123999-13': '取 消'
+  },
+  videocenter: {
+    'indexvue061263-0': '搜索',
+    'indexvue061263-1': '重置',
+    'indexvue061263-2': '新增',
+    'indexvue061263-3': '产品分类名称',
+    'indexvue061263-4': '备注',
+    'indexvue061263-5': '系统定义',
+    'indexvue061263-6': '显示顺序',
+    'indexvue061263-7': '创建时间',
+    'indexvue061263-8': '操作',
+    'indexvue061263-9': '查看',
+    'indexvue061263-10': '删除',
+    'indexvue061263-11': '系统定义,不能修改',
+    'indexvue061263-12': '产品分类',
+    'indexvue061263-13': '分类名称',
+    'indexvue061263-14': '请输入产品分类名称',
+    'indexvue061263-15': '请输入显示顺序',
+    'indexvue061263-16': '请输入内容',
+    'indexvue061263-17': '修 改',
+    'indexvue061263-18': '新 增',
+    'indexvue061263-19': '取 消',
+    'baidumappi204970-0': '输入地址搜索',
+    'baidumappi204970-1': '搜索地址',
+    'baidumappi204970-2': "selectedPoint ? '拾取结果' : '操作提示'",
+    'baidumappi204970-3': '坐标',
+    'baidumappi204970-4': '地址',
+    'baidumappi204970-5': '操作提示',
+    'baidumappi204970-6': '点击地图选择位置,或输入地址进行搜索',
+    'baidumappi204970-7': '取消',
+    'baidumappi204970-8': '确认选择',
+    'batchimpor032690-0': '产品',
+    'batchimpor032690-1': '请选择产品',
+    'batchimpor032690-2': '上传文件',
+    'batchimpor032690-3': '将文件拖到此处,',
+    'batchimpor032690-4': '点击上传',
+    'batchimpor032690-5': '下载设备导入模板',
+    'batchimpor032690-6': '确定',
+    'batchimpor032690-7': '取消',
+    'deviceedit461878-0': '所在部门',
+    'deviceedit461878-1': '请选择所在部门',
+    'deviceedit461878-2': '关联设备',
+    'deviceedit461878-3': '请选择要关联的设备',
+    'deviceedit461878-4': '发布',
+    'deviceedit461878-5': '订阅',
+    'deviceedit461878-6': '是否自定义',
+    'deviceedit461878-7': '初始化',
+    'deviceedit461878-8': '自定义',
+    'deviceedit461878-9': '修改',
+    'deviceedit461878-10': "'请选择坐标位置'",
+    'indexvue471783-0': '设备名称',
+    'indexvue471783-1': '请输入设备名称',
+    'indexvue471783-2': '所在部门',
+    'indexvue471783-3': '请选择所在部门',
+    'indexvue471783-4': '设备编号',
+    'indexvue471783-5': '请输入设备编号',
+    'indexvue471783-6': '设备状态',
+    'indexvue471783-7': '请选择设备状态',
+    'indexvue471783-8': '查询',
+    'indexvue471783-9': '重置',
+    'indexvue471783-10': '新增',
+    'indexvue471783-11': '手动添加',
+    'indexvue471783-12': '批量导入',
+    'indexvue471783-13': '图标',
+    'indexvue471783-14': '编号',
+    'indexvue471783-15': '所属产品',
+    'indexvue471783-16': '协议',
+    'indexvue471783-17': '通讯协议',
+    'indexvue471783-18': '子设备数',
+    'indexvue471783-19': '设备影子',
+    'indexvue471783-20': '启用',
+    'indexvue471783-21': '禁用',
+    'indexvue471783-22': '状态',
+    'indexvue471783-23': '信号',
+    'indexvue471783-24': '定位方式',
+    'indexvue471783-25': '固件版本',
+    'indexvue471783-26': '激活时间',
+    'indexvue471783-27': '创建时间',
+    'indexvue471783-28': '操作',
+    'indexvue471783-29': '删除',
+    'indexvue471783-30': '查看',
+    'indexvue471783-31': '二维码',
+    'indexvue471783-32': '分享的设备',
+    'indexvue471783-33': '产品',
+    'indexvue471783-34': '关联设备',
+    'indexvue471783-35': '查看详情',
+    'indexvue471783-36': '运行状态',
+    'indexvue471783-37': '设备二维码',
+    'productlis414263-0': '选择产品',
+    'productlis414263-1': '请输入产品名称',
+    'productlis414263-2': '查询',
+    'productlis414263-3': '重置',
+    'productlis414263-4': '分类名称',
+    'productlis414263-5': '租户名称',
+    'productlis414263-6': '认证方式',
+    'productlis414263-7': '联网方式',
+    'productlis414263-8': '创建时间',
+    'productlis414263-9': '确认',
+    'productlis414263-10': '取消',
+    'indexvue555908-0': '监控点目录',
+    'indexvue555908-1': '输入监控点名称,回车搜索',
+    'indexvue555908-2':
+      "data.onlineStatus === true\n                    ? '在线'\n                    : data.onlineStatus === false\n                      ? '离线'\n                      : '状态未知'",
+    'indexvue555908-3': '搜索仅筛选当前已加载的节点',
+    'indexvue555908-4': '关闭预览',
+    'indexvue555908-5': '暂无监控',
+    'indexvue555908-6': '抓取当前画面',
+    'indexvue555908-7': '打开云台控制',
+    'indexvue555908-8': '云台控制',
+    'indexvue555908-9': '`视口 ${windowIndex + 1} 云台方向控制`',
+    'indexvue555908-10': "sidebarCollapsed ? '展开监控点目录' : '收起监控点目录'",
+    'indexvue555908-11': '关闭全部监控画面',
+    'indexvue555908-12': '全部抓图',
+    'indexvue555908-13': '分屏布局',
+    'indexvue555908-14': '选择分屏布局',
+    'indexvue555908-15': '`切换为 ${option.count} 分屏`',
+    'indexvue555908-16': '`${option.count} 分屏`',
+    'indexvue555908-17': "stageFullscreen ? '退出全屏' : '全屏'",
+    'indexvue579465-0': '刷新',
+    'indexvue579465-1': '删除',
+    'indexvue579465-2': '查看',
+    'indexvue579465-3': '编辑',
+    'mediaserve100969-0': '流媒体服务器节点',
+    'mediaserve100969-1': '取消',
+    'mediaserve100969-2': '测试',
+    'mediaserve100969-3': '提交',
+    'userlistvu948695-0': '确认',
+    'userlistvu948695-1': '取消',
+    'dayvue606377-0': '不指定',
+    'dayvue606377-1': '周期从',
+    'dayvue606377-2': '日',
+    'dayvue606377-3': '从',
+    'dayvue606377-4': '号开始,每',
+    'dayvue606377-5': '日执行一次',
+    'dayvue606377-6': '每月',
+    'dayvue606377-7': '号最近的那个工作日',
+    'dayvue606377-8': '本月最后一天',
+    'dayvue606377-9': '指定',
+    'dayvue606377-10': '可多选',
+    'hourvue622439-0': '周期从',
+    'hourvue622439-1': '小时',
+    'hourvue622439-2': '从',
+    'hourvue622439-3': '小时开始,每',
+    'hourvue622439-4': '小时执行一次',
+    'hourvue622439-5': '指定',
+    'hourvue622439-6': '可多选',
+    'indexvue617247-0': '秒',
+    'indexvue617247-1': '分钟',
+    'indexvue617247-2': '小时',
+    'indexvue617247-3': '日',
+    'indexvue617247-4': '月',
+    'indexvue617247-5': '周',
+    'indexvue617247-6': '年',
+    'indexvue617247-7': '时间表达式',
+    'indexvue617247-8': '确定',
+    'indexvue617247-9': '重置',
+    'indexvue617247-10': '取消',
+    'minvue079391-0': '周期从',
+    'minvue079391-1': '分钟',
+    'minvue079391-2': '从',
+    'minvue079391-3': '分钟开始,每',
+    'minvue079391-4': '分钟执行一次',
+    'minvue079391-5': '指定',
+    'minvue079391-6': '可多选',
+    'monthvue307469-0': '周期从',
+    'monthvue307469-1': '月',
+    'monthvue307469-2': '从',
+    'monthvue307469-3': '月开始,每',
+    'monthvue307469-4': '月执行一次',
+    'monthvue307469-5': '指定',
+    'monthvue307469-6': '可多选',
+    'secondvue980407-0': '周期从',
+    'secondvue980407-1': '秒',
+    'secondvue980407-2': '从',
+    'secondvue980407-3': '秒开始,每',
+    'secondvue980407-4': '秒执行一次',
+    'secondvue980407-5': '指定',
+    'secondvue980407-6': '可多选',
+    'weekvue340407-0': '不指定',
+    'weekvue340407-1': '周期从星期',
+    'weekvue340407-2': '第',
+    'weekvue340407-3': '周的星期',
+    'weekvue340407-4': '本月最后一个星期',
+    'weekvue340407-5': '指定',
+    'weekvue340407-6': '星期一',
+    'yearvue909120-0': '每年',
+    'yearvue909120-1': '周期从',
+    'yearvue909120-2': '从',
+    'yearvue909120-3': '年开始,每',
+    'yearvue909120-4': '年执行一次',
+    'yearvue909120-5': '指定',
+    'yearvue909120-6': '可多选',
+    'indexvue707732-0': '请上传',
+    'indexvue707732-1': '大小不超过',
+    'indexvue707732-2': '格式为',
+    'indexvue707732-3': '的文件',
+    'indexvue707732-4': '预览',
+    'indexvue294717-0': "showSearch ? '隐藏搜索' : '显示搜索'",
+    'indexvue294717-1': '刷新',
+    'indexvue294717-2': '显隐列',
+    'indexvue737876-0': '新增',
+    'indexvue737876-1': '分享的设备',
+    'indexvue737876-2': '已发布',
+    'indexvue737876-3': '未发布',
+    'indexvue737876-4': '所属分类',
+    'indexvue737876-5': '产品类型',
+    'indexvue737876-6': '联网方式',
+    'indexvue737876-7': '设备授权',
+    'indexvue737876-8': '已启用',
+    'indexvue737876-9': '未启用',
+    'indexvue737876-10': '查看详情',
+    'indexvue737876-11': '删除',
+    'indexvue737876-12': '查看设备',
+    'indexvue737876-13': '图标',
+    'indexvue737876-14': '名称',
+    'indexvue737876-15': '所属类型',
+    'indexvue737876-16': '发布状态',
+    'indexvue737876-17': '操作',
+    'productedi930070-0': '通讯协议',
+    'productedi930070-1': '请选择协议',
+    'productedi930070-2': '采集点模板',
+    'productedi930070-3': '删除',
+    'productedi930070-4': '选择模板',
+    'productedi930070-5': '请选择设备类型',
+    'productedi930070-6': '用户登录',
+    'productedi930070-7': '响应数据key',
+    'productedi930070-8': '请求间隔',
+    'productedi930070-9': '请输入cron执行表达式',
+    'productedi930070-10': '生成表达式',
+    'productedi930070-11': '请求方式',
+    'productedi930070-12': '请选择',
+    'productedi930070-13': '请求地址',
+    'productedi930070-14': '例:http:127.0.0.1/',
+    'productedi930070-15': '请求参数',
+    'productedi930070-16': '请输入',
+    'productedi930070-17': '操作',
+    'productedi930070-18': '请输入内容',
+    'productedi930070-19': '设备地址',
+    'productedi930070-20': '团体名',
+    'productedi930070-21': 'OID信息',
+    'productedi930070-22': '名称',
+    'productedi930070-23': '模板名称',
+    'productedi930070-24': '搜索',
+    'productedi930070-25': '重置',
+    'productedi930070-26': '选择采集点模板',
+    'productedi930070-27': '物模型列表',
+    'productedi930070-28': '物模型名称',
+    'productedi930070-29': '寄存器',
+    'productedi930070-30': '数值类型',
+    'productedi930070-31': '取 消',
+    'productedi930070-32': '确 定',
+    'productedi930070-33': '登录信息',
+    'productedi930070-34': '账号',
+    'productedi930070-35': '请输入账号',
+    'productedi930070-36': '密码',
+    'productedi930070-37': '请输入密码',
+    'productedi930070-38': '登录地址',
+    'productedi930070-39': '请输入登录地址,例:http:127.0.0.1/',
+    'productedi930070-40': 'Cron表达式生成器',
+    'productthi249005-0': '设备从机:',
+    'productthi249005-1': '请选择设备从机',
+    'productthi249005-2': '网关物模型',
+    'productthi249005-3': '寄存器地址(10进制)',
+    'productthi249005-4': '实时监测',
+    'productthi249005-5': 'APP展示',
+    'productthi249005-6': '只读',
+    'productthi249005-7': '寄存器地址',
+    'productthi249005-8': '控制公式',
+    'productthi249005-9': '更新',
+    'productthi249005-10': '添加',
+    'productthi249005-11': '取消',
+    'productthi249005-12': '导入',
+    'productthi249005-13': '关闭',
+    'parameterv371458-0': '编辑参数',
+    'parameterv371458-1': '请输入物模型名称',
+    'parameterv371458-2': '搜索',
+    'parameterv371458-3': '单击应用模板',
+    'parameterv371458-4': '选择',
+    'parameterv371458-5': '名称',
+    'parameterv371458-6': '标识符',
+    'parameterv371458-7': '数据类型',
+    'parameterv371458-8': '参数名称',
+    'parameterv371458-9': '例如:温度',
+    'parameterv371458-10': '参数标识',
+    'parameterv371458-11': '例如:temperature',
+    'parameterv371458-12': '参数排序',
+    'parameterv371458-13': '请输入排序',
+    'parameterv371458-14': '参数特性',
+    'parameterv371458-15': '请选择数据类型',
+    'parameterv371458-16': '整数',
+    'parameterv371458-17': '小数',
+    'parameterv371458-18': '布尔',
+    'parameterv371458-19': '枚举',
+    'parameterv371458-20': '字符串',
+    'parameterv371458-21': '取值范围',
+    'parameterv371458-22': '最小值',
+    'parameterv371458-23': '到',
+    'parameterv371458-24': '最大值',
+    'parameterv371458-25': '单位',
+    'parameterv371458-26': '例如:℃',
+    'parameterv371458-27': '步长',
+    'parameterv371458-28': '例如:1',
+    'parameterv371458-29': '布尔值',
+    'parameterv371458-30': '例如:关闭',
+    'parameterv371458-31': '例如:打开',
+    'parameterv371458-32': '展示方式',
+    'parameterv371458-33': '请选择展示方式',
+    'parameterv371458-34': '下拉框',
+    'parameterv371458-35': '按钮',
+    'parameterv371458-36': '枚举项',
+    'parameterv371458-37': '例如:0',
+    'parameterv371458-38': '例如:中速挡位',
+    'parameterv371458-39': '删除',
+    'parameterv371458-40': '添加枚举项',
+    'parameterv371458-41': '最大长度',
+    'parameterv371458-42': '例如:1024',
+    'parameterv371458-43': '提交',
+    'parameterv371458-44': '取消',
+    'indexvue277993-0': '协议名称',
+    'indexvue277993-1': '协议编码',
+    'indexvue277993-2': '请输入协议编码',
+    'indexvue277993-3': '搜索',
+    'indexvue277993-4': '重置',
+    'indexvue277993-5': '协议摘要',
+    'indexvue277993-6': '上传地址',
+    'indexvue277993-7': '协议类型',
+    'indexvue277993-8': '请输入协议名称',
+    'indexvue277993-9': '请输入内容',
+    'indexvue277993-10': '请输入协议文件摘要(文件的md5)',
+    'indexvue277993-11': '确 定',
+    'indexvue277993-12': '取 消',
+    'channelvue472496-0': '刷新',
+    'channelvue472496-1': '操作',
+    'devicelive715034-0': '通道名称:',
+    'devicelive715034-1': '请选择',
+    'devicetree219916-0': '设备列表',
+    'devicetree219916-1': '在线设备',
+    'devicetree219916-2': '离线设备',
+    'devicetree219916-3': '在线通道',
+    'devicetree219916-4': '离线通道',
+    'devicetree219916-5': '在线通道-球机',
+    'devicetree219916-6': '离线通道-球机',
+    'devicetree219916-7': '在线通道-半球',
+    'devicetree219916-8': '离线通道-半球',
+    'devicetree219916-9': '在线通道-枪机',
+    'devicetree219916-10': '离线通道-枪机',
+    'devicevide505437-0': '通道:',
+    'devicevide505437-1': '请选择',
+    'devicevide505437-2': '日期:',
+    'devicevide505437-3': '选择日期',
+    'devicevide505437-4': '查看录像',
+    'devicevide505437-5': '查看',
+    'devicevide505437-6': '时间:',
+    'devicevide505437-7': '开始时间',
+    'devicevide505437-8': '结束时间',
+    'devicevide505437-9': '选择时间范围',
+    'devicevide505437-10': '下载选定录像',
+    'devicevide505437-11': '转存',
+    'playervue826489-0': '放大',
+    'playervue826489-1': '缩小',
+    'indexvue478271-0': '搜索',
+    'indexvue478271-1': '重置',
+    'indexvue478271-2': '添加',
+    'indexvue478271-3': '删除',
+    'indexvue478271-4': '设备编号',
+    'indexvue478271-5': '操作',
+    'indexvue478271-6': '取消',
+    'indexvue478271-7': '确定',
+    'productlis738271-0': '产品名称',
+    'productlis738271-1': '请输入产品名称',
+    'productlis738271-2': '选择',
+    'productlis738271-3': '分类名称',
+    'productlis738271-4': '确认',
+    'productlis738271-5': '关闭',
+    'sipconfigv332553-0': '更新',
+    'sipconfigv332553-1': '添加',
+    'sipidgenvu260414-0': '取消',
+    'indexvue453783-0': '设备名称',
+    'indexvue453783-1': '请输入设备名称',
+    'indexvue453783-2': '通道',
+    'indexvue453783-3': '请选择通道',
+    'indexvue453783-4': '告警类型',
+    'indexvue453783-5': '请选择告警类型',
+    'indexvue453783-6': '查询',
+    'indexvue453783-7': '重置',
+    'indexvue453783-8': '通道名称',
+    'indexvue453783-9': '通道ID',
+    'indexvue453783-10': '告警时间',
+    'indexvue453783-11': '已告警次数',
+    'indexvue453783-12': '事件状态',
+    'indexvue453783-13': 'AI算法',
+    'indexvue453783-14': '告警描述',
+    'indexvue453783-15': '图片',
+    'indexvue453783-16': '查看',
+    'indexvue453783-17': '无图片',
+    'indexvue453783-18': '告警图片'
+  },
+  yfclass: {
+    'indexvue328742-0': '编码分类名称',
+    'indexvue328742-1': '请输入编码分类名称',
+    'indexvue328742-2': '编码分类状态',
+    'indexvue328742-3': '请选择编码分类状态',
+    'indexvue328742-4': '搜索',
+    'indexvue328742-5': '重置',
+    'indexvue328742-6': '新增',
+    'indexvue328742-7': '编码分类编码',
+    'indexvue328742-8': '排序',
+    'indexvue328742-9': '所属公司',
+    'indexvue328742-10': '瑞恒兴域',
+    'indexvue328742-11': '四川瑞都',
+    'indexvue328742-12': '瑞鹰国际',
+    'indexvue328742-13': '东方石油',
+    'indexvue328742-14': '瑞霖技术',
+    'indexvue328742-15': '瑞气能源',
+    'indexvue328742-16': '状态',
+    'indexvue328742-17': '备注',
+    'indexvue328742-18': '创建时间',
+    'indexvue328742-19': '操作',
+    'indexvue328742-20': '修改',
+    'indexvue328742-21': '删除',
+    'yfclassify716177-0': '上级编码分类',
+    'yfclassify716177-1': '请选择上级编码分类',
+    'yfclassify716177-2': '分类名称',
+    'yfclassify716177-3': '请输入分类名称',
+    'yfclassify716177-4': '编码',
+    'yfclassify716177-5': '请输入编码',
+    'yfclassify716177-6': '显示排序',
+    'yfclassify716177-7': '状态',
+    'yfclassify716177-8': '请选择状态',
+    'yfclassify716177-9': '备注',
+    'yfclassify716177-10': '请输入备注',
+    'yfclassify716177-11': '确 定',
+    'yfclassify716177-12': '取 消'
   },
 
-  'OAuth 2.0': 'OAuth 2.0' // 避免菜单名是 OAuth 2.0 时,一直 warn 报错
+  'report-stats': {
+    'device-report0': '设备总数',
+    'device-report1': '设备状态',
+    'col-category-top': '分类Top',
+    'col-device-code': '设备编码',
+    'col-device-name': '设备名称',
+    'btn-export': '导出',
+    'col-company': '公司',
+    'col-department': '部门',
+    'col-manufacturer': '制造商',
+    'col-produce-date': '生产日期',
+    'col-commission-date': '投运日期',
+    year: '年',
+    month: '月',
+    day: '日'
+  }
 }

+ 13 - 24
src/views/erp/product/category/index.vue

@@ -8,30 +8,26 @@
       :model="queryParams"
       ref="queryFormRef"
       :inline="true"
-      label-width="68px"
-    >
+      label-width="68px">
       <el-form-item label="分类名称" prop="name">
         <el-input
           v-model="queryParams.name"
           placeholder="请输入分类名称"
           clearable
           @keyup.enter="handleQuery"
-          class="!w-240px"
-        />
+          class="!w-240px" />
       </el-form-item>
       <el-form-item label="开启状态" prop="status">
         <el-select
           v-model="queryParams.status"
           placeholder="请选择开启状态"
           clearable
-          class="!w-240px"
-        >
+          class="!w-240px">
           <el-option
             v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
             :key="dict.value"
             :label="dict.label"
-            :value="dict.value"
-          />
+            :value="dict.value" />
         </el-select>
       </el-form-item>
       <el-form-item>
@@ -41,8 +37,7 @@
           type="primary"
           plain
           @click="openForm('create')"
-          v-hasPermi="['erp:product-category:create']"
-        >
+          v-hasPermi="['erp:product-category:create']">
           <Icon icon="ep:plus" class="mr-5px" /> 新增
         </el-button>
         <el-button
@@ -50,12 +45,11 @@
           plain
           @click="handleExport"
           :loading="exportLoading"
-          v-hasPermi="['erp:product-category:export']"
-        >
+          v-hasPermi="['erp:product-category:export']">
           <Icon icon="ep:download" class="mr-5px" /> 导出
         </el-button>
         <el-button type="danger" plain @click="toggleExpandAll">
-          <Icon icon="ep:sort" class="mr-5px" /> 展开/折叠
+          <Icon icon="ep:sort" class="mr-5px" /> {{ t('common.toggle') }}
         </el-button>
       </el-form-item>
     </el-form>
@@ -70,8 +64,7 @@
       :show-overflow-tooltip="true"
       row-key="id"
       :default-expand-all="isExpandAll"
-      v-if="refreshTable"
-    >
+      v-if="refreshTable">
       <el-table-column label="编码" align="center" prop="code" />
       <el-table-column label="名称" align="center" prop="name" />
       <el-table-column label="排序" align="center" prop="sort" />
@@ -85,24 +78,21 @@
         align="center"
         prop="createTime"
         :formatter="dateFormatter"
-        width="180px"
-      />
+        width="180px" />
       <el-table-column label="操作" align="center">
         <template #default="scope">
           <el-button
             link
             type="primary"
             @click="openForm('update', scope.row.id)"
-            v-hasPermi="['erp:product-category:update']"
-          >
+            v-hasPermi="['erp:product-category:update']">
             编辑
           </el-button>
           <el-button
             link
             type="danger"
             @click="handleDelete(scope.row.id)"
-            v-hasPermi="['erp:product-category:delete']"
-          >
+            v-hasPermi="['erp:product-category:delete']">
             删除
           </el-button>
         </template>
@@ -113,8 +103,7 @@
       :total="total"
       v-model:page="queryParams.pageNo"
       v-model:limit="queryParams.pageSize"
-      @pagination="getList"
-    />
+      @pagination="getList" />
   </ContentWrap>
 
   <!-- 表单弹窗:添加/修改 -->
@@ -201,7 +190,7 @@ const handleExport = async () => {
   }
 }
 
-/** 展开/折叠操作 */
+/** {{t('common.toggle')}}操作 */
 const isExpandAll = ref(true) // 是否展开,默认全部展开
 const refreshTable = ref(true) // 重新渲染表格状态
 const toggleExpandAll = async () => {

+ 12 - 22
src/views/infra/demo/demo02/index.vue

@@ -8,16 +8,14 @@
       :model="queryParams"
       ref="queryFormRef"
       :inline="true"
-      label-width="68px"
-    >
+      label-width="68px">
       <el-form-item label="名字" prop="name">
         <el-input
           v-model="queryParams.name"
           placeholder="请输入名字"
           clearable
           @keyup.enter="handleQuery"
-          class="!w-240px"
-        />
+          class="!w-240px" />
       </el-form-item>
       <el-form-item label="创建时间" prop="createTime">
         <el-date-picker
@@ -27,8 +25,7 @@
           start-placeholder="开始日期"
           end-placeholder="结束日期"
           :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
-          class="!w-240px"
-        />
+          class="!w-240px" />
       </el-form-item>
       <el-form-item>
         <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
@@ -37,8 +34,7 @@
           type="primary"
           plain
           @click="openForm('create')"
-          v-hasPermi="['infra:demo02-category:create']"
-        >
+          v-hasPermi="['infra:demo02-category:create']">
           <Icon icon="ep:plus" class="mr-5px" /> 新增
         </el-button>
         <el-button
@@ -46,12 +42,11 @@
           plain
           @click="handleExport"
           :loading="exportLoading"
-          v-hasPermi="['infra:demo02-category:export']"
-        >
+          v-hasPermi="['infra:demo02-category:export']">
           <Icon icon="ep:download" class="mr-5px" /> 导出
         </el-button>
         <el-button type="danger" plain @click="toggleExpandAll">
-          <Icon icon="ep:sort" class="mr-5px" /> 展开/折叠
+          <Icon icon="ep:sort" class="mr-5px" /> {{ t('common.toggle') }}
         </el-button>
       </el-form-item>
     </el-form>
@@ -66,8 +61,7 @@
       :show-overflow-tooltip="true"
       row-key="id"
       :default-expand-all="isExpandAll"
-      v-if="refreshTable"
-    >
+      v-if="refreshTable">
       <el-table-column label="编号" align="center" prop="id" />
       <el-table-column label="名字" align="center" prop="name" />
       <el-table-column
@@ -75,24 +69,21 @@
         align="center"
         prop="createTime"
         :formatter="dateFormatter"
-        width="180px"
-      />
+        width="180px" />
       <el-table-column label="操作" align="center">
         <template #default="scope">
           <el-button
             link
             type="primary"
             @click="openForm('update', scope.row.id)"
-            v-hasPermi="['infra:demo02-category:update']"
-          >
+            v-hasPermi="['infra:demo02-category:update']">
             编辑
           </el-button>
           <el-button
             link
             type="danger"
             @click="handleDelete(scope.row.id)"
-            v-hasPermi="['infra:demo02-category:delete']"
-          >
+            v-hasPermi="['infra:demo02-category:delete']">
             删除
           </el-button>
         </template>
@@ -103,8 +94,7 @@
       :total="total"
       v-model:page="queryParams.pageNo"
       v-model:limit="queryParams.pageSize"
-      @pagination="getList"
-    />
+      @pagination="getList" />
   </ContentWrap>
 
   <!-- 表单弹窗:添加/修改 -->
@@ -190,7 +180,7 @@ const handleExport = async () => {
   }
 }
 
-/** 展开/折叠操作 */
+/** {{t('common.toggle')}}操作 */
 const isExpandAll = ref(true) // 是否展开,默认全部展开
 const refreshTable = ref(true) // 重新渲染表格状态
 const toggleExpandAll = async () => {

+ 30 - 54
src/views/oli-connection/monitoring/index.vue

@@ -171,21 +171,18 @@ const openDetail = (
 
 <template>
   <div
-    class="grid grid-cols-[auto_1fr] grid-rows-[62px_1fr] gap-4 h-[calc(100vh-20px-var(--top-tool-height)-var(--tags-view-height)-var(--app-footer-height))]"
-  >
+    class="grid grid-cols-[auto_1fr] grid-rows-[62px_1fr] gap-4 h-[calc(100vh-20px-var(--top-tool-height)-var(--tags-view-height)-var(--app-footer-height))]">
     <DeptTreeSelect
       :top-id="156"
       :deptId="deptId"
       v-model="query.deptId"
       :init-select="false"
       :show-title="false"
-      class="row-span-2"
-    />
+      class="row-span-2" />
     <!-- <div class="p-4 bg-white dark:bg-[#1d1e1f] shadow rounded-lg row-span-2"> </div> -->
     <el-form
       size="default"
-      class="bg-white dark:bg-[#1d1e1f] rounded-lg shadow px-8 gap-8 flex items-center justify-between"
-    >
+      class="bg-white dark:bg-[#1d1e1f] rounded-lg shadow px-8 gap-8 flex items-center justify-between">
       <div class="flex items-center gap-8">
         <el-form-item :label="t('monitor.deviceName')">
           <el-input
@@ -193,8 +190,7 @@ const openDetail = (
             :placeholder="t('monitor.nameHolder')"
             clearable
             @keyup.enter="handleQuery()"
-            class="!w-240px"
-          />
+            class="!w-240px" />
         </el-form-item>
         <el-form-item :label="t('monitor.deviceCode')">
           <el-input
@@ -202,29 +198,28 @@ const openDetail = (
             :placeholder="t('monitor.codeHolder')"
             clearable
             @keyup.enter="handleQuery()"
-            class="!w-240px"
-          />
+            class="!w-240px" />
         </el-form-item>
         <el-form-item :label="t('monitor.ifInline')">
           <el-select
             v-model="query.ifInline"
             :placeholder="t('monitor.ifInlineHolder')"
             clearable
-            class="!w-240px"
-          >
+            class="!w-240px">
             <el-option
               v-for="dict in getStrDictOptions(DICT_TYPE.IOT_DEVICE_STATUS)"
               :key="dict.value"
               :label="dict.label"
-              :value="dict.value"
-            />
+              :value="dict.value" />
           </el-select>
         </el-form-item>
         <el-form-item>
           <el-button type="primary" @click="handleQuery()">
-            <Icon icon="ep:search" class="mr-5px" /> 搜索
+            <Icon icon="ep:search" class="mr-5px" /> {{ t('common.query') }}
           </el-button>
-          <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" />重置</el-button>
+          <el-button @click="resetQuery"
+            ><Icon icon="ep:refresh" class="mr-5px" />{{ t('common.reset') }}</el-button
+          >
         </el-form-item>
       </div>
       <el-form-item>
@@ -240,8 +235,7 @@ const openDetail = (
     </el-form>
     <div
       class="bg-white dark:bg-[#1d1e1f] shadow rounded-lg flex flex-col"
-      :class="{ 'p-4': viewMode === 'list' }"
-    >
+      :class="{ 'p-4': viewMode === 'list' }">
       <div class="flex-1 relative">
         <el-auto-resizer class="absolute">
           <template #default="{ width, height }">
@@ -252,8 +246,7 @@ const openDetail = (
                 :loading="loading"
                 :width="width"
                 :max-height="height"
-                :height="height"
-              >
+                :height="height">
                 <zm-table-column type="index" :label="t('monitor.serial')" :width="60" />
                 <zm-table-column prop="deviceName" :label="t('monitor.deviceName')" />
                 <zm-table-column prop="deviceCode" :label="t('monitor.deviceCode')" />
@@ -286,8 +279,7 @@ const openDetail = (
                           scope.row.carOnline ?? '',
                           scope.row.mqttUrl ?? ''
                         )
-                      "
-                    >
+                      ">
                       {{ t('monitor.check') }}
                     </el-button>
                   </template>
@@ -297,21 +289,17 @@ const openDetail = (
                 v-else
                 :height="height"
                 :class="width"
-                view-class="grid grid-cols-4 grid-rows-3 gap-4 p-4"
-              >
+                view-class="grid grid-cols-4 grid-rows-3 gap-4 p-4">
                 <div
                   v-for="item in list"
                   :key="item.id"
-                  class="group relative flex flex-col bg-white dark:bg-[#262727] rounded-xl shadow-sm border border-gray-100 dark:border-gray-700 hover:shadow-[0_8px_20px_rgba(0,0,0,0.1)] hover:-translate-y-1 transition-all duration-300 overflow-hidden"
-                >
+                  class="group relative flex flex-col bg-white dark:bg-[#262727] rounded-xl shadow-sm border border-gray-100 dark:border-gray-700 hover:shadow-[0_8px_20px_rgba(0,0,0,0.1)] hover:-translate-y-1 transition-all duration-300 overflow-hidden">
                   <div
                     class="h-[80px] px-4 flex items-center justify-between overflow-hidden"
-                    :class="getStatusConfig(item.ifInline).bg"
-                  >
+                    :class="getStatusConfig(item.ifInline).bg">
                     <div class="flex items-center gap-3 z-10 max-w-[80%]">
                       <div
-                        class="bg-white/20 p-2 rounded-lg backdrop-blur-md shadow-inner shrink-0"
-                      >
+                        class="bg-white/20 p-2 rounded-lg backdrop-blur-md shadow-inner shrink-0">
                         <Icon :icon="item.carId ? 'ep:van' : 'ep:cpu'" class="text-xl text-white" />
                       </div>
 
@@ -320,8 +308,7 @@ const openDetail = (
                         <el-tooltip effect="dark" :content="item.deviceName" placement="top-start">
                           <span
                             class="text-white font-bold text-base leading-tight"
-                            :title="item.deviceName"
-                          >
+                            :title="item.deviceName">
                             {{ item.deviceName }}
                           </span>
                         </el-tooltip>
@@ -334,12 +321,10 @@ const openDetail = (
 
                     <div class="z-10 shrink-0">
                       <div
-                        class="flex items-center gap-1.5 bg-black/20 backdrop-blur-md px-2.5 py-1 rounded-full text-xs font-medium text-white shadow-sm border border-white/10"
-                      >
+                        class="flex items-center gap-1.5 bg-black/20 backdrop-blur-md px-2.5 py-1 rounded-full text-xs font-medium text-white shadow-sm border border-white/10">
                         <div
                           class="w-1.5 h-1.5 rounded-full bg-white animate-pulse"
-                          v-if="item.ifInline === 3"
-                        >
+                          v-if="item.ifInline === 3">
                         </div>
                         <Icon :icon="getStatusConfig(item.ifInline).icon" v-else />
                         <span>{{ getStatusConfig(item.ifInline).label }}</span>
@@ -349,8 +334,7 @@ const openDetail = (
 
                   <!-- 内容区域 -->
                   <div
-                    class="flex-1 p-4 flex flex-col gap-3 text-sm text-gray-600 dark:text-gray-300 relative z-20 bg-white dark:bg-[#262727]"
-                  >
+                    class="flex-1 p-4 flex flex-col gap-3 text-sm text-gray-600 dark:text-gray-300 relative z-20 bg-white dark:bg-[#262727]">
                     <!-- 编码行 -->
                     <div class="flex items-center justify-between pb-2">
                       <span class="text-gray-400 text-xs flex items-center gap-1.5">
@@ -358,8 +342,7 @@ const openDetail = (
                       </span>
                       <span
                         class="font-mono font-medium truncate max-w-[140px] select-all"
-                        :title="item.deviceCode"
-                      >
+                        :title="item.deviceCode">
                         {{ item.deviceCode }}
                       </span>
                     </div>
@@ -374,8 +357,7 @@ const openDetail = (
                         type="info"
                         effect="light"
                         round
-                        class="!bg-gray-100 dark:!bg-gray-800 !border-gray-200 dark:!border-gray-600"
-                      >
+                        class="!bg-gray-100 dark:!bg-gray-800 !border-gray-200 dark:!border-gray-600">
                         {{ item.assetClassName || '-' }}
                       </el-tag>
                     </div>
@@ -389,8 +371,7 @@ const openDetail = (
                         class="text-xs font-medium"
                         :class="
                           item.lastInlineTime ? 'text-gray-600 dark:text-gray-300' : 'text-gray-300'
-                        "
-                      >
+                        ">
                         {{ item.lastInlineTime || '暂无记录' }}
                       </span>
                     </div>
@@ -398,8 +379,7 @@ const openDetail = (
 
                   <!-- 底部操作栏 -->
                   <div
-                    class="px-4 py-2.5 bg-gray-50/80 dark:bg-[#1d1e1f] flex justify-between items-center group-hover:bg-blue-50/30 dark:group-hover:bg-blue-900/10 transition-colors"
-                  >
+                    class="px-4 py-2.5 bg-gray-50/80 dark:bg-[#1d1e1f] flex justify-between items-center group-hover:bg-blue-50/30 dark:group-hover:bg-blue-900/10 transition-colors">
                     <span class="text-[10px] text-gray-400"></span>
                     <!-- <span class="text-[10px] text-gray-400">ID: {{ item.id }}</span> -->
                     <el-button type="primary" link size="small" class="!px-0 group/btn">
@@ -422,8 +402,7 @@ const openDetail = (
                       >
                       <Icon
                         icon="ep:arrow-right"
-                        class="group-hover/btn:translate-x-1 transition-transform"
-                      />
+                        class="group-hover/btn:translate-x-1 transition-transform" />
                     </el-button>
                   </div>
                 </div>
@@ -432,8 +411,7 @@ const openDetail = (
             <div
               v-else
               :style="{ width: width + 'px', height: height + 'px' }"
-              class="flex flex-col items-center justify-center text-gray-400"
-            >
+              class="flex flex-col items-center justify-center text-gray-400">
               <div class="i-lucide-inbox text-5xl mb-4 op-50"></div>
 
               <p class="text-sm font-medium">暂无相关数据</p>
@@ -444,8 +422,7 @@ const openDetail = (
       </div>
       <div
         class="h-10 mt-4 flex items-center justify-end"
-        :class="{ 'mb-4 px-4': viewMode === 'card' }"
-      >
+        :class="{ 'mb-4 px-4': viewMode === 'card' }">
         <el-pagination
           size="default"
           v-show="total > 0"
@@ -456,8 +433,7 @@ const openDetail = (
           :total="total"
           layout="total, sizes, prev, pager, next, jumper"
           @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-        />
+          @current-change="handleCurrentChange" />
       </div>
     </div>
   </div>

+ 6 - 6
src/views/pms/app/IotAppForm.vue

@@ -7,11 +7,11 @@
       label-width="100px"
       v-loading="formLoading"
     >
-      <el-form-item label="版本号" prop="appVersion">
-        <el-input v-model="formData.appVersion" placeholder="请输入版本号" />
+      <el-form-item :label="t('app.iotappform295229-0')" prop="appVersion">
+        <el-input v-model="formData.appVersion" :placeholder="t('app.iotappform295229-1')" />
       </el-form-item>
-      <el-form-item label="app名称" prop="appName">
-        <el-input v-model="formData.appName" placeholder="请输入包名称" />
+      <el-form-item :label="t('app.iotappform295229-2')" prop="appName">
+        <el-input v-model="formData.appName" :placeholder="t('app.iotappform295229-3')" />
       </el-form-item>
       <el-form-item :label="t('fileInfo.appendix')" prop="url">
         <UploadFile v-model="formData.url" :limit="1" :is-show-tip="false" class="min-w-80px" />
@@ -21,8 +21,8 @@
       </el-form-item>
     </el-form>
     <template #footer>
-      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
-      <el-button @click="dialogVisible = false">取 消</el-button>
+      <el-button @click="submitForm" type="primary" :disabled="formLoading">{{ t('app.iotappform295229-4') }}</el-button>
+      <el-button @click="dialogVisible = false">{{ t('app.iotappform295229-5') }}</el-button>
     </template>
   </Dialog>
 </template>

+ 11 - 12
src/views/pms/app/index.vue

@@ -8,27 +8,26 @@
       :inline="true"
       label-width="68px"
     >
-      <el-form-item label="创建时间" prop="createTime">
+      <el-form-item :label="t('app.indexvue112700-0')" prop="createTime">
         <el-date-picker
           v-model="queryParams.createTime"
           value-format="YYYY-MM-DD HH:mm:ss"
           type="daterange"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
+          start-:placeholder="t('app.indexvue112700-1')"
+          end-:placeholder="t('app.indexvue112700-2')"
           :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
           class="!w-220px"
         />
       </el-form-item>
       <el-form-item>
-        <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
-        <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
+        <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" />{{ t('app.indexvue112700-3') }}</el-button>
+        <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" />{{ t('app.indexvue112700-4') }}</el-button>
         <el-button
           type="primary"
           plain
           @click="openForm('create')"
         >
-          <Icon icon="ep:plus" class="mr-5px" /> 新增
-        </el-button>
+          <Icon icon="ep:plus" class="mr-5px" />{{ t('app.indexvue112700-5') }}</el-button>
       </el-form-item>
     </el-form>
   </ContentWrap>
@@ -36,12 +35,12 @@
   <!-- 列表 -->
   <ContentWrap>
     <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
-      <el-table-column label="app版本号" align="center" prop="appVersion" />
-      <el-table-column label="app包名称" align="center" prop="appName" />
-      <el-table-column label="app的apk路径" align="center" prop="url" />
-      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column :label="t('app.indexvue112700-6')" align="center" prop="appVersion" />
+      <el-table-column :label="t('app.indexvue112700-7')" align="center" prop="appName" />
+      <el-table-column :label="t('app.indexvue112700-8')" align="center" prop="url" />
+      <el-table-column :label="t('app.indexvue112700-9')" align="center" prop="remark" />
       <el-table-column
-        label="创建时间"
+        :label="t('app.indexvue112700-0')"
         align="center"
         prop="createTime"
         :formatter="dateFormatter"

+ 17 - 17
src/views/pms/bom/BomForm.vue

@@ -5,17 +5,17 @@
       v-loading="formLoading"
       :model="formData"
       :rules="formRules"
-      label-width="120px"
+      label-width="auto"
       size="default"
       class="bom-form">
-      <el-form-item label="设备分类" prop="deviceCategoryId">
+      <el-form-item :label="t('bom.bomformvue818829-0')" prop="deviceCategoryId">
         <el-tree-select
           v-model="formData.deviceCategoryId"
           :data="deviceCategoryTree"
           :props="defaultProps"
           check-strictly
           :default-expanded-keys="deviceCategoryExpandedKeys"
-          placeholder="请选择设备分类"
+          :placeholder="t('bom.bomformvue818829-1')"
           value-key="id"
           filterable
           clearable
@@ -23,7 +23,7 @@
           class="w-full"
           @node-click="handleDeviceCategoryTreeNodeClick" />
       </el-form-item>
-      <el-form-item label="上级BOM" prop="parentId">
+      <el-form-item :label="t('bom.bomformvue818829-2')" prop="parentId">
         <el-tree-select
           v-model="formData.parentId"
           :data="bomTree"
@@ -32,15 +32,15 @@
           default-expand-all
           filterable
           clearable
-          placeholder="请选择上级BOM"
+          :placeholder="t('bom.bomformvue818829-3')"
           value-key="bomId"
           size="default"
           class="w-full" />
       </el-form-item>
-      <el-form-item label="BOM节点名称" prop="name">
-        <lang-input v-model="formData.name" placeholder="请输入BOM节点名称" />
+      <el-form-item :label="t('bom.bomformvue818829-4')" prop="name">
+        <lang-input v-model="formData.name" :placeholder="t('bom.bomformvue818829-5')" />
       </el-form-item>
-      <el-form-item label="BOM节点属性" prop="type">
+      <el-form-item :label="t('bom.bomformvue818829-6')" prop="type">
         <el-checkbox-group v-model="formData.type" class="w-80">
           <el-checkbox
             v-for="dict in getIntDictOptions(DICT_TYPE.PMS_BOM_NODE_EXT_ATTR)"
@@ -50,7 +50,7 @@
           </el-checkbox>
         </el-checkbox-group>
       </el-form-item>
-      <el-form-item label="显示排序" prop="sort">
+      <el-form-item :label="t('bom.bomformvue818829-7')" prop="sort">
         <el-input-number
           v-model="formData.sort"
           :min="0"
@@ -58,11 +58,11 @@
           size="default"
           class="w-full" />
       </el-form-item>
-      <el-form-item label="状态" prop="status">
+      <el-form-item :label="t('bom.bomformvue818829-8')" prop="status">
         <el-select
           v-model="formData.status"
           clearable
-          placeholder="请选择状态"
+          :placeholder="t('bom.bomformvue818829-9')"
           size="default"
           class="w-full">
           <el-option
@@ -74,12 +74,12 @@
       </el-form-item>
     </el-form>
     <template #footer>
-      <el-button type="primary" size="default" :loading="formLoading" @click="submitForm">
-        确 定
-      </el-button>
-      <el-button size="default" :disabled="formLoading" @click="dialogVisible = false">
-        取 消
-      </el-button>
+      <el-button type="primary" size="default" :loading="formLoading" @click="submitForm">{{
+        t('bom.bomformvue818829-10')
+      }}</el-button>
+      <el-button size="default" :disabled="formLoading" @click="dialogVisible = false">{{
+        t('bom.bomformvue818829-11')
+      }}</el-button>
     </template>
   </Dialog>
 </template>

+ 6 - 4
src/views/pms/bom/DeviceCategoryTree.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="head-container">
-    <el-input v-model="deviceCategoryName" class="mb-20px" clearable placeholder="请输入设备分类名称">
+    <el-input v-model="deviceCategoryName" class="mb-20px" clearable :placeholder="t('bom.devicecate054617-0')">
       <template #prefix>
         <Icon icon="ep:search" />
       </template>
@@ -28,18 +28,20 @@
     :style="{ left: menuX + 'px', top: menuY + 'px' }"
   >
     <ul>
-      <li @click="handleMenuClick('add')">新增子节点</li>
-      <li @click="handleMenuClick('edit')">重命名</li>
-      <li @click="handleMenuClick('delete')">删除</li>
+      <li @click="handleMenuClick('add')">{{ t('bom.devicecate054617-1') }}</li>
+      <li @click="handleMenuClick('edit')">{{ t('bom.devicecate054617-2') }}</li>
+      <li @click="handleMenuClick('delete')">{{ t('bom.devicecate054617-3') }}</li>
     </ul>
   </div>
 </template>
 
 <script lang="ts" setup>
 import { ElTree } from 'element-plus'
+import { useI18n } from 'vue-i18n'
 import * as DeviceCategoryApi from '@/api/pms/productclassify'
 import { defaultProps, handleTree } from '@/utils/tree'
 import { useTreeStore } from '@/store/modules/treeStore'
+const { t } = useI18n()
 defineOptions({ name: 'DeviceCategoryTree' })
 const treeStore = useTreeStore();
 const deviceCategoryName = ref('')

+ 1 - 1
src/views/pms/bom/MaterialList.vue

@@ -8,7 +8,7 @@
     <div class="material-picker">
       <section class="context-panel">
         <div class="context-item">
-          <span class="context-label">设备分类</span>
+          <span class="context-label">{{ t('bom.materialli039948-0') }}</span>
           <span class="context-value">{{ deviceCategoryName || '暂无' }}</span>
         </div>
         <div class="context-item">

+ 7 - 9
src/views/pms/bom/MaterialListDrawer.vue

@@ -15,7 +15,7 @@
             <Icon icon="ep:goods" :size="22" />
           </div>
           <div>
-            <div class="drawer-title">物料详情</div>
+            <div class="drawer-title">{{ t('bom.materialli002525-0') }}</div>
             <div class="drawer-subtitle">查看并维护当前 BOM 节点关联的物料数量</div>
           </div>
         </div>
@@ -38,7 +38,7 @@
           <div class="info-card__body">
             <div class="detail-grid">
               <div class="detail-item">
-                <div class="detail-item__label">设备分类</div>
+                <div class="detail-item__label">{{ t('bom.materialli002525-1') }}</div>
                 <div class="detail-item__value">{{ rowInfo.deviceCategoryName }}</div>
               </div>
               <div class="detail-item">
@@ -53,7 +53,7 @@
           <div class="info-card__header">
             <div class="info-card__title">
               <span class="info-card__marker"></span>
-              <span>关联物料</span>
+              <span>{{ t('bom.materialli002525-2') }}</span>
             </div>
             <span class="material-total">共 {{ total }} 条</span>
           </div>
@@ -88,7 +88,7 @@
                         v-model.number="row.quantity"
                         type="number"
                         size="default"
-                        placeholder="请输入数量"
+                        :placeholder="t('bom.materialli002525-3')"
                         min="0"
                         class="quantity-input"
                         @blur="clearQuantityError(row)"
@@ -103,7 +103,7 @@
                 prop="createTime"
                 min-width="170"
                 :formatter="dateFormatter" />
-              <ZmTableColumn label="操作" width="180" fixed="right" action>
+              <ZmTableColumn :label="t('bom.materialli002525-4')" width="180" fixed="right" action>
                 <template #default="{ row }">
                   <div class="table-actions">
                     <el-button
@@ -112,11 +112,9 @@
                       link
                       :loading="row.updating"
                       @click="handleUpdate(row)">
-                      <Icon icon="ep:check" class="mr-4px" />修改
-                    </el-button>
+                      <Icon icon="ep:check" class="mr-4px" />{{ t('bom.materialli002525-5') }}</el-button>
                     <el-button size="default" type="danger" link @click="handleDelete(row)">
-                      <Icon icon="ep:delete" class="mr-4px" />删除
-                    </el-button>
+                      <Icon icon="ep:delete" class="mr-4px" />{{ t('bom.materialli002525-6') }}</el-button>
                   </div>
                 </template>
               </ZmTableColumn>

+ 44 - 31
src/views/pms/bom/index.vue

@@ -272,21 +272,20 @@ onMounted(() => {
       ref="queryFormRef"
       :model="queryParams"
       size="default"
-      label-width="110px"
       class="bg-white dark:bg-[#1d1e1f] rounded-lg shadow px-8 py-3 gap-6 flex items-center justify-between flex-wrap min-w-0">
       <div class="flex items-center gap-6 flex-wrap">
-        <el-form-item label="BOM节点名称" prop="name">
+        <el-form-item :label="t('bom.indexvue513755-0')" prop="name">
           <el-input
             v-model="queryParams.name"
-            placeholder="请输入BOM节点名称"
+            :placeholder="t('bom.indexvue513755-1')"
             clearable
             class="!w-220px"
             @keyup.enter="handleQuery" />
         </el-form-item>
-        <el-form-item label="BOM节点" prop="status">
+        <el-form-item :label="t('bom.indexvue513755-2')" prop="status">
           <el-select
             v-model="queryParams.status"
-            placeholder="请选择BOM节点"
+            :placeholder="t('bom.indexvue513755-3')"
             clearable
             class="!w-180px">
             <el-option
@@ -300,18 +299,20 @@ onMounted(() => {
 
       <el-form-item class="bom-query-actions">
         <el-button type="primary" @click="handleQuery">
-          <Icon icon="ep:search" class="mr-5px" />搜索
-        </el-button>
-        <el-button @click="resetQuery"> <Icon icon="ep:refresh" class="mr-5px" />重置 </el-button>
+          <Icon icon="ep:search" class="mr-5px" />{{ t('bom.indexvue513755-4') }}</el-button
+        >
+        <el-button @click="resetQuery">
+          <Icon icon="ep:refresh" class="mr-5px" />{{ t('bom.indexvue513755-5') }}</el-button
+        >
         <el-button
           type="primary"
           plain
           @click="openForm('create')"
           v-hasPermi="['rq:iot-bom:create']">
-          <Icon icon="ep:plus" class="mr-5px" />新增
-        </el-button>
+          <Icon icon="ep:plus" class="mr-5px" />{{ t('bom.indexvue513755-6') }}</el-button
+        >
         <el-button type="danger" plain @click="toggleExpandAll">
-          <Icon icon="ep:sort" class="mr-5px" />展开/折叠
+          <Icon icon="ep:sort" class="mr-5px" />{{ t('common.toggle') }}
         </el-button>
       </el-form-item>
     </el-form>
@@ -332,32 +333,40 @@ onMounted(() => {
               show-border
               :row-class-name="({ row }) => (row.id === activeRowId ? 'is-active-bom-row' : '')"
               @row-click="handleClick">
-              <ZmTableColumn prop="name" label="BOM节点" min-width="180" align="left" fixed="left">
+              <ZmTableColumn
+                prop="name"
+                :label="t('bom.indexvue513755-2')"
+                min-width="180"
+                align="left"
+                fixed="left">
                 <template #default="{ row }">
                   <el-tooltip
                     effect="dark"
-                    :content="`设备分类:${row.deviceCategoryName || '暂无'}`"
+                    ::content="t('bom.indexvue513755-7')"
                     placement="top-start"
                     :disabled="!row.deviceCategoryName">
                     <span class="bom-node-name">{{ row.name }}</span>
                   </el-tooltip>
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn prop="deviceCategoryName" label="设备分类" min-width="140" />
-              <ZmTableColumn label="维修" width="90">
+              <ZmTableColumn
+                prop="deviceCategoryName"
+                :label="t('bom.indexvue513755-8')"
+                min-width="140" />
+              <ZmTableColumn :label="t('bom.indexvue513755-9')" width="90">
                 <template #default="{ row }">
                   <el-switch :model-value="hasBomType(row, 1)" disabled />
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="保养" width="90">
+              <ZmTableColumn :label="t('bom.indexvue513755-10')" width="90">
                 <template #default="{ row }">
                   <el-switch :model-value="hasBomType(row, 2)" disabled />
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn prop="sort" label="排序" width="80" />
-              <ZmTableColumn prop="materials" label="物料数量" width="100" />
+              <ZmTableColumn prop="sort" :label="t('bom.indexvue513755-11')" width="80" />
+              <ZmTableColumn prop="materials" :label="t('bom.indexvue513755-12')" width="100" />
               <ZmTableColumn
-                label="操作"
+                :label="t('bom.indexvue513755-13')"
                 width="300"
                 fixed="right"
                 :show-overflow-tooltip="false"
@@ -368,33 +377,37 @@ onMounted(() => {
                     type="primary"
                     @click.stop="openForm('update', row)"
                     v-hasPermi="['rq:iot-bom:update']">
-                    <Icon icon="ep:edit" class="mr-4px" />
-                    修改
-                  </el-button>
+                    <Icon icon="ep:edit" class="mr-4px" />{{
+                      t('bom.indexvue513755-14')
+                    }}</el-button
+                  >
                   <el-button
                     link
                     type="primary"
                     @click.stop="openSelectMaterialForm(row)"
                     v-hasPermi="['rq:iot-bom:update']">
-                    <Icon icon="ep:plus" class="mr-4px" />
-                    添加物料
-                  </el-button>
+                    <Icon icon="ep:plus" class="mr-4px" />{{
+                      t('bom.indexvue513755-15')
+                    }}</el-button
+                  >
                   <el-button
                     link
                     type="primary"
                     @click.stop="handleView(row)"
                     v-hasPermi="['rq:iot-bom:update']">
-                    <Icon icon="ep:view" class="mr-4px" />
-                    物料详情
-                  </el-button>
+                    <Icon icon="ep:view" class="mr-4px" />{{
+                      t('bom.indexvue513755-16')
+                    }}</el-button
+                  >
                   <el-button
                     link
                     type="danger"
                     @click.stop="handleDelete(row.id)"
                     v-hasPermi="['rq:iot-bom:delete']">
-                    <Icon icon="ep:delete" class="mr-4px" />
-                    删除
-                  </el-button>
+                    <Icon icon="ep:delete" class="mr-4px" />{{
+                      t('bom.indexvue513755-17')
+                    }}</el-button
+                  >
                 </template>
               </ZmTableColumn>
             </ZmTable>

+ 8 - 5
src/views/pms/constructionDailyReport/components/ConstructionDailyReportDrawer.vue

@@ -1,5 +1,6 @@
 <script setup lang="ts">
 import { FiveIotProjectDailyReportApi } from '@/api/pms/fiveconstructiondailyreport'
+import { useI18n } from 'vue-i18n'
 import dayjs from 'dayjs'
 import type { FormInstance, FormRules } from 'element-plus'
 import ConstructionDailyReportFormSection from './ConstructionDailyReportFormSection.vue'
@@ -8,7 +9,7 @@ import {
   formSections,
   type ConstructionDailyReportRow
 } from './report-config'
-
+const { t } = useI18n()
 interface Props {
   visible: boolean
   loadList: () => void | Promise<void>
@@ -194,15 +195,17 @@ defineExpose({ handleOpenForm })
     </el-form>
 
     <template #footer>
-      <el-button size="default" @click="emits('update:visible', false)">取消</el-button>
+      <el-button size="default" @click="emits('update:visible', false)">{{
+        t('constructiondailyreport.constructi275711-0')
+      }}</el-button>
       <el-button
         size="default"
         v-if="!disabled"
         type="primary"
         :loading="submitLoading"
-        @click="handleSubmit">
-        保存
-      </el-button>
+        @click="handleSubmit"
+        >{{ t('constructiondailyreport.constructi275711-1') }}</el-button
+      >
     </template>
   </el-drawer>
 </template>

+ 3 - 1
src/views/pms/constructionDailyReport/components/ConstructionDailyReportFormSection.vue

@@ -1,5 +1,7 @@
 <script setup lang="ts">
 import { getStrDictOptions } from '@/utils/dict'
+import { useI18n } from 'vue-i18n'
+const { t } = useI18n()
 import type {
   ConstructionDailyReportField,
   ConstructionDailyReportRow,
@@ -134,7 +136,7 @@ function getFieldClass(field: ConstructionDailyReportField) {
           class="w-full"
           :clearable="isSelectClearable(field)"
           filterable
-          placeholder="请选择"
+          :placeholder="t('constructiondailyreport.constructi429667-0')"
           :disabled="isFieldDisabled(field)"
           @update:model-value="updateField(field.prop, $event)" />
         <el-input-number

+ 16 - 3
src/views/pms/constructionDailyReport/components/ConstructionDailyReportTable.vue

@@ -1,6 +1,8 @@
 <script setup lang="ts">
 import { useTableComponents } from '@/components/ZmTable/useTableComponents'
+import { useI18n } from 'vue-i18n'
 import dayjs from 'dayjs'
+const { t } = useI18n()
 import type {
   ConstructionDailyReportRow,
   ConstructionDailyReportTableColumn,
@@ -34,7 +36,10 @@ const { ZmTable, ZmTableColumn } = useTableComponents<ConstructionDailyReportRow
 
 function isColumnGroup(
   column: ConstructionDailyReportTableColumn
-): column is Extract<ConstructionDailyReportTableColumn, { children: ConstructionDailyReportTableColumnLeaf[] }> {
+): column is Extract<
+  ConstructionDailyReportTableColumn,
+  { children: ConstructionDailyReportTableColumnLeaf[] }
+> {
   return 'children' in column
 }
 
@@ -60,7 +65,11 @@ function formatCellValue(row: ConstructionDailyReportRow, prop: keyof Constructi
             :height="height"
             :max-height="height"
             show-border>
-            <ZmTableColumn type="index" label="序号" :width="60" fixed="left" />
+            <ZmTableColumn
+              type="index"
+              :label="t('constructiondailyreport.constructi153072-0')"
+              :width="60"
+              fixed="left" />
             <template v-for="column in tableColumns" :key="column.label">
               <ZmTableColumn v-if="isColumnGroup(column)" :label="column.label">
                 <ZmTableColumn
@@ -90,7 +99,11 @@ function formatCellValue(row: ConstructionDailyReportRow, prop: keyof Constructi
                   (row: ConstructionDailyReportRow) => formatCellValue(row, column.prop)
                 " />
             </template>
-            <ZmTableColumn label="操作" :width="120" fixed="right" action>
+            <ZmTableColumn
+              :label="t('constructiondailyreport.constructi153072-1')"
+              :width="120"
+              fixed="right"
+              action>
               <template #default="{ row }">
                 <slot name="action" :row="row"></slot>
               </template>

+ 24 - 17
src/views/pms/constructionDailyReport/index.vue

@@ -1,5 +1,6 @@
 <script setup lang="ts">
 import { FiveIotProjectDailyReportApi } from '@/api/pms/fiveconstructiondailyreport'
+import { useI18n } from 'vue-i18n'
 import { useUserStore } from '@/store/modules/user'
 import { resolveDailyReportDeptId } from '@/utils/dailyReportDept'
 import { rangeShortcuts } from '@/utils/formatTime'
@@ -13,7 +14,7 @@ import type {
 } from './components/report-config'
 
 defineOptions({ name: 'ConstructionDailyReport' })
-
+const { t } = useI18n()
 const userStore = useUserStore()
 const TOP_DEPT_ID = 388
 const deptId = resolveDailyReportDeptId(userStore.getUser.deptId, TOP_DEPT_ID)
@@ -163,29 +164,29 @@ onMounted(() => {
       size="default"
       class="bg-white dark:bg-[#1d1e1f] rounded-lg shadow px-8 gap-8 flex items-center justify-between">
       <div class="flex items-center gap-8">
-        <el-form-item label="项目">
+        <el-form-item :label="t('constructiondailyreport.indexvue914679-0')">
           <el-input
             v-model="query.projectName"
-            placeholder="请输入项目名称"
+            :placeholder="t('constructiondailyreport.indexvue914679-1')"
             clearable
             @keyup.enter="handleQuery()"
             class="!w-240px" />
         </el-form-item>
-        <el-form-item label="生产任务">
+        <el-form-item :label="t('constructiondailyreport.indexvue914679-2')">
           <el-input
             v-model="query.wellName"
-            placeholder="请输入生产任务"
+            :placeholder="t('constructiondailyreport.indexvue914679-3')"
             clearable
             @keyup.enter="handleQuery()"
             class="!w-240px" />
         </el-form-item>
-        <el-form-item label="创建时间">
+        <el-form-item :label="t('constructiondailyreport.indexvue914679-4')">
           <el-date-picker
             v-model="query.createTime"
             value-format="YYYY-MM-DD HH:mm:ss"
             type="daterange"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
+            start-:placeholder="t('constructiondailyreport.indexvue914679-5')"
+            end-:placeholder="t('constructiondailyreport.indexvue914679-6')"
             :shortcuts="rangeShortcuts"
             :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
             class="!w-260px" />
@@ -193,9 +194,15 @@ onMounted(() => {
       </div>
       <el-form-item>
         <el-button type="primary" @click="handleQuery()">
-          <Icon icon="ep:search" class="mr-5px" /> 搜索
-        </el-button>
-        <el-button @click="resetQuery"> <Icon icon="ep:refresh" class="mr-5px" /> 重置 </el-button>
+          <Icon icon="ep:search" class="mr-5px" />{{
+            t('constructiondailyreport.indexvue914679-7')
+          }}</el-button
+        >
+        <el-button @click="resetQuery">
+          <Icon icon="ep:refresh" class="mr-5px" />{{
+            t('constructiondailyreport.indexvue914679-8')
+          }}</el-button
+        >
       </el-form-item>
     </el-form>
 
@@ -212,16 +219,16 @@ onMounted(() => {
           link
           type="primary"
           @click="handleOpenForm(row.id!, 'edit')"
-          v-hasPermi="['pms:iot-five-daily-report:update']">
-          填报
-        </el-button>
+          v-hasPermi="['pms:iot-five-daily-report:update']"
+          >{{ t('constructiondailyreport.indexvue914679-9') }}</el-button
+        >
         <el-button
           link
           type="success"
           @click="handleOpenForm(row.id!, 'readonly')"
-          v-hasPermi="['pms:iot-five-daily-report:query']">
-          查看
-        </el-button>
+          v-hasPermi="['pms:iot-five-daily-report:query']"
+          >{{ t('constructiondailyreport.indexvue914679-10') }}</el-button
+        >
       </template>
     </ConstructionDailyReportTable>
   </div>

+ 16 - 14
src/views/pms/device/BrandList.vue

@@ -1,5 +1,5 @@
 <template>
-  <Dialog v-model="dialogVisible" title="选择品牌" style="width: 1100px; min-height: 800px">
+  <Dialog v-model="dialogVisible" :title="t('device.brandlistv210116-0')" style="width: 1100px; min-height: 800px">
     <ContentWrap>
       <el-form
         class="-mb-15px"
@@ -8,17 +8,17 @@
         :inline="true"
         label-width="68px"
       >
-        <el-form-item label="字典标签" prop="label">
+        <el-form-item :label="t('device.brandlistv210116-1')" prop="label">
           <el-input
             v-model="queryParams.label"
-            placeholder="请输入字典标签"
+            :placeholder="t('device.brandlistv210116-2')"
             clearable
             @keyup.enter="handleQuery"
             class="!w-240px"
           />
         </el-form-item>
-        <el-form-item label="状态" prop="status">
-          <el-select v-model="queryParams.status" placeholder="数据状态" clearable class="!w-240px">
+        <el-form-item :label="t('device.brandlistv210116-3')" prop="status">
+          <el-select v-model="queryParams.status" :placeholder="t('device.brandlistv210116-4')" clearable class="!w-240px">
             <el-option
               v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
               :key="dict.value"
@@ -28,14 +28,14 @@
           </el-select>
         </el-form-item>
         <el-form-item>
-          <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
-          <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
+          <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" />{{ t('device.brandlistv210116-5') }}</el-button>
+          <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" />{{ t('device.brandlistv210116-6') }}</el-button>
         </el-form-item>
       </el-form>
     </ContentWrap>
     <ContentWrap>
       <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" @row-click="handleRowClick">
-        <el-table-column width="60" label="选择">
+        <el-table-column width="60" :label="t('device.brandlistv210116-7')">
           <template #default="{ row }">
             <el-radio
               :model-value="selectedRow?.id"
@@ -45,20 +45,20 @@
             />
           </template>
         </el-table-column>
-        <el-table-column label="字典编码" align="center" prop="id" />
-        <el-table-column label="字典标签" align="center" prop="label" />
-        <el-table-column label="字典键值" align="center" prop="value" />
+        <el-table-column :label="t('device.brandlistv210116-8')" align="center" prop="id" />
+        <el-table-column :label="t('device.brandlistv210116-1')" align="center" prop="label" />
+        <el-table-column :label="t('device.brandlistv210116-9')" align="center" prop="value" />
         <!--      <el-table-column label="字典排序" align="center" prop="sort" />-->
-        <el-table-column label="状态" align="center" prop="status">
+        <el-table-column :label="t('device.brandlistv210116-3')" align="center" prop="status">
           <template #default="scope">
             <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
           </template>
         </el-table-column>
         <!--      <el-table-column label="颜色类型" align="center" prop="colorType" />-->
         <!--      <el-table-column label="CSS Class" align="center" prop="cssClass" />-->
-        <el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip />
+        <el-table-column :label="t('device.brandlistv210116-10')" align="center" prop="remark" show-overflow-tooltip />
         <el-table-column
-          label="创建时间"
+          :label="t('device.brandlistv210116-11')"
           align="center"
           prop="createTime"
           width="180"
@@ -83,10 +83,12 @@
 
 <script setup lang="ts">
 import * as DictDataApi from '@/api/system/dict/dict.data'
+import { useI18n } from 'vue-i18n'
 import { DictDataVO } from '@/api/system/dict/dict.data'
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import { dateFormatter } from '@/utils/formatTime'
 import * as DictTypeApi from '@/api/system/dict/dict.type'
+const { t } = useI18n()
 
 const emit = defineEmits(['choose']) // 定义 success 事件,用于操作成功后的回调
 const dialogVisible = ref(false) // 弹窗的是否展示

+ 33 - 38
src/views/pms/device/CheckCertificate.vue

@@ -6,18 +6,18 @@
         ref="queryFormRef"
         class="rounded-lg shadow px-8 py-2 pt-4 flex items-center flex-wrap min-w-0">
         <div class="flex items-center gap-2 flex-wrap">
-          <el-form-item label="设备名称" prop="deviceName">
+          <el-form-item :label="t('device.checkcerti853760-0')" prop="deviceName">
             <el-input
               v-model="queryParams.deviceName"
-              placeholder="请输入设备名称"
+              :placeholder="t('device.checkcerti853760-1')"
               clearable
               class="!w-150px" />
           </el-form-item>
 
-          <el-form-item label="检测类型" prop="certType">
+          <el-form-item :label="t('device.checkcerti853760-2')" prop="certType">
             <el-select
               v-model="queryParams.certType"
-              placeholder="请选择检测类型"
+              :placeholder="t('device.checkcerti853760-3')"
               clearable
               style="width: 150px">
               <el-option
@@ -27,49 +27,47 @@
                 :value="dict.value" />
             </el-select>
           </el-form-item>
-          <el-form-item label="序列号" prop="certNo">
+          <el-form-item :label="t('device.checkcerti853760-4')" prop="certNo">
             <el-input
               v-model="queryParams.certNo"
-              placeholder="请输入证书编号"
+              :placeholder="t('device.checkcerti853760-5')"
               clearable
               class="!w-150px" />
           </el-form-item>
-          <el-form-item label="检测日期" prop="certTime">
+          <el-form-item :label="t('device.checkcerti853760-6')" prop="certTime">
             <el-date-picker
               v-model="queryParams.certTime"
               value-format="YYYY-MM-DD HH:mm:ss"
               type="daterange"
-              start-placeholder="开始日期"
-              end-placeholder="结束日期"
+              start-:placeholder="t('device.checkcerti853760-7')"
+              end-:placeholder="t('device.checkcerti853760-8')"
               :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
               class="!w-200px" />
           </el-form-item>
-          <el-form-item label="检测单位" prop="certOrg">
+          <el-form-item :label="t('device.checkcerti853760-9')" prop="certOrg">
             <el-input
               v-model="queryParams.certOrg"
-              placeholder="请输入检测单位"
+              :placeholder="t('device.checkcerti853760-10')"
               clearable
               @keyup.enter="handleQuery"
               class="!w-150px" />
           </el-form-item>
-          <el-form-item label="有效期" prop="certExpire">
+          <el-form-item :label="t('device.checkcerti853760-11')" prop="certExpire">
             <el-date-picker
               v-model="queryParams.certExpire"
               value-format="YYYY-MM-DD HH:mm:ss"
               type="daterange"
-              start-placeholder="开始日期"
-              end-placeholder="结束日期"
+              start-:placeholder="t('device.checkcerti853760-7')"
+              end-:placeholder="t('device.checkcerti853760-8')"
               :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
               class="!w-200px" />
           </el-form-item>
 
           <el-form-item>
             <el-button @click="handleQuery" v-hasPermi="['rq:qhse-device-cert:query']">
-              <Icon icon="ep:search" class="mr-5px" /> 搜索
-            </el-button>
+              <Icon icon="ep:search" class="mr-5px" />{{ t('device.checkcerti853760-12') }}</el-button>
             <el-button @click="resetQuery">
-              <Icon icon="ep:refresh" class="mr-5px" /> 重置
-            </el-button>
+              <Icon icon="ep:refresh" class="mr-5px" />{{ t('device.checkcerti853760-13') }}</el-button>
 
             <el-button
               v-hasPermi="['rq:qhse-device-cert:export']"
@@ -77,8 +75,7 @@
               plain
               @click="handleExport"
               :loading="exportLoading">
-              <Icon icon="ep:download" class="mr-5px" /> 导出
-            </el-button>
+              <Icon icon="ep:download" class="mr-5px" />{{ t('device.checkcerti853760-14') }}</el-button>
           </el-form-item>
         </div>
       </el-form>
@@ -96,36 +93,34 @@
               {{ scope.$index + 1 }}
             </template>
           </zm-table-column>
-          <zm-table-column label="设备编码" align="center" prop="deviceCode" />
-          <zm-table-column label="设备名称" align="center" prop="deviceName" />
-          <zm-table-column label="检测类型" align="center" width="100">
+          <zm-table-column :label="t('device.checkcerti853760-15')" align="center" prop="deviceCode" />
+          <zm-table-column :label="t('device.checkcerti853760-0')" align="center" prop="deviceName" />
+          <zm-table-column :label="t('device.checkcerti853760-2')" align="center" width="100">
             <template #default="scope">
               <dict-tag :type="DICT_TYPE.QHSE_DEVICE_CERT_TYPE" :value="scope.row.certType" />
             </template>
           </zm-table-column>
-          <zm-table-column label="序列号" align="center" prop="certNo" />
-          <zm-table-column label="检测日期" align="center" prop="certTime" width="140">
+          <zm-table-column :label="t('device.checkcerti853760-4')" align="center" prop="certNo" />
+          <zm-table-column :label="t('device.checkcerti853760-6')" align="center" prop="certTime" width="140">
             <template #default="scope">
               <span class="iot-md-date">{{ formatDateCorrectly(scope.row.certTime) }}</span>
             </template>
           </zm-table-column>
-          <zm-table-column label="检测单位" align="center" prop="certOrg" />
-          <zm-table-column label="有效期" align="center" prop="certExpire" width="140">
+          <zm-table-column :label="t('device.checkcerti853760-9')" align="center" prop="certOrg" />
+          <zm-table-column :label="t('device.checkcerti853760-11')" align="center" prop="certExpire" width="140">
             <template #default="scope">
               <span class="iot-md-date">{{ formatDateCorrectly(scope.row.certExpire) }}</span>
             </template>
           </zm-table-column>
-          <zm-table-column label="部门名称" align="center" prop="deptName" />
-          <zm-table-column label="备注" align="center" prop="remark" show-overflow-tooltip />
-          <zm-table-column label="附件" align="center" prop="file" min-width="90">
+          <zm-table-column :label="t('device.checkcerti853760-16')" align="center" prop="deptName" />
+          <zm-table-column :label="t('device.checkcerti853760-17')" align="center" prop="remark" show-overflow-tooltip />
+          <zm-table-column :label="t('device.checkcerti853760-18')" align="center" prop="file" min-width="90">
             <template #default="scope">
               <el-button
                 v-if="scope.row.file"
                 link
                 type="primary"
-                @click="viewFile(scope.row.file)">
-                查看
-              </el-button>
+                @click="viewFile(scope.row.file)">{{ t('device.checkcerti853760-19') }}</el-button>
             </template>
           </zm-table-column>
         </zm-table>
@@ -143,7 +138,7 @@
       <div
         class="bg-[#fef0f0] text-[#f57979] px-3 flex-1 flex items-center justify-center text-center py-2 text-sm rounded-md"
         ><el-icon class="stats-card__icon" :size="28"> <Icon icon="ep:info-filled" /> </el-icon
-        >应检设备证书已过期红色预警</div
+        >{{ t('device.checkcerti853760-20') }}</div
       >
       <div
         class="bg-[#fdf6ec] flex-1 text-[#e6a23c] text-center flex items-center justify-center px-3 py-2 text-sm rounded-md"
@@ -153,7 +148,7 @@
     </div>
   </div>
 
-  <Dialog v-model="dialogFileView" title="附件" width="500">
+  <Dialog v-model="dialogFileView" :title="t('device.checkcerti853760-18')" width="500">
     <div
       v-for="(file, index) in fileList"
       :key="index"
@@ -161,17 +156,17 @@
       <span class="file-name-text">{{ extractFileName(file) }}</span>
       <div>
         <el-button link type="primary" @click="viewFileInfo(file)">
-          <Icon icon="ep:view" class="mr-2px" />查看</el-button
+          <Icon icon="ep:view" class="mr-2px" />{{ t('device.checkcerti853760-19') }}</el-button
         >
         <el-button link type="primary" @click="handleDownload(file)">
-          <Icon icon="ep:download" class="mr-2px" />下载</el-button
+          <Icon icon="ep:download" class="mr-2px" />{{ t('device.checkcerti853760-21') }}</el-button
         >
       </div>
     </div>
 
     <template #footer>
       <div class="dialog-footer mt-10">
-        <el-button type="primary" @click="dialogFileView = false"> 确认 </el-button>
+        <el-button type="primary" @click="dialogFileView = false">{{ t('device.checkcerti853760-22') }}</el-button>
       </div>
     </template>
   </Dialog>

+ 18 - 18
src/views/pms/device/CustomerList.vue

@@ -7,8 +7,8 @@
       <div class="dialog-title">
         <div class="dialog-title__icon"><Icon icon="ep:office-building" /></div>
         <div>
-          <div class="dialog-title__text">选择客户</div>
-          <div class="dialog-title__subtitle">查询并选择需要关联的客户信息</div>
+          <div class="dialog-title__text">{{ t('device.customerli510445-0') }}</div>
+          <div class="dialog-title__subtitle">{{ t('device.customerli510445-1') }}</div>
         </div>
       </div>
     </template>
@@ -21,34 +21,32 @@
         size="default"
         class="customer-query-form">
         <div class="query-fields">
-          <el-form-item label="客商名称" prop="name">
+          <el-form-item :label="t('device.customerli510445-2')" prop="name">
             <el-input
               v-model="queryParams.name"
-              placeholder="请输入客商名称"
+              :placeholder="t('device.customerli510445-3')"
               clearable
               @keyup.enter="handleQuery" />
           </el-form-item>
-          <el-form-item label="客商编号" prop="code">
+          <el-form-item :label="t('device.customerli510445-4')" prop="code">
             <el-input
               v-model="queryParams.code"
-              placeholder="请输入客商编号"
+              :placeholder="t('device.customerli510445-5')"
               clearable
               @keyup.enter="handleQuery" />
           </el-form-item>
           <el-form-item class="query-actions">
             <el-button size="default" type="primary" @click="handleQuery">
-              <Icon icon="ep:search" class="mr-5px" />搜索
-            </el-button>
+              <Icon icon="ep:search" class="mr-5px" />{{ t('device.customerli510445-6') }}</el-button>
             <el-button size="default" @click="resetQuery">
-              <Icon icon="ep:refresh" class="mr-5px" />重置
-            </el-button>
+              <Icon icon="ep:refresh" class="mr-5px" />{{ t('device.customerli510445-7') }}</el-button>
           </el-form-item>
         </div>
       </el-form>
 
       <section class="customer-table-section">
         <div class="section-header">
-          <div class="section-title">客户列表</div>
+          <div class="section-title">{{ t('device.customerli510445-8') }}</div>
           <span class="section-total">共 {{ total }} 条</span>
         </div>
         <div class="table-container">
@@ -58,7 +56,7 @@
             height="360px"
             show-border
             @row-click="handleRowClick">
-            <ZmTableColumn width="70" label="选择" hide-in-column-settings>
+            <ZmTableColumn width="70" :label="t('device.customerli510445-9')" hide-in-column-settings>
               <template #default="{ row }">
                 <el-radio
                   :model-value="selectedRow?.id"
@@ -67,19 +65,19 @@
                   @click.stop="selectRow(row)" />
               </template>
             </ZmTableColumn>
-            <ZmTableColumn label="客商名称" prop="name" />
-            <ZmTableColumn label="客商编号" prop="code" />
-            <ZmTableColumn label="客商分类" prop="classification">
+            <ZmTableColumn :label="t('device.customerli510445-2')" prop="name" />
+            <ZmTableColumn :label="t('device.customerli510445-4')" prop="code" />
+            <ZmTableColumn :label="t('device.customerli510445-10')" prop="classification">
               <template #default="scope">
                 <dict-tag :type="DICT_TYPE.SUPPLIER_TYPE" :value="scope.row.classification" />
               </template>
             </ZmTableColumn>
-            <ZmTableColumn label="状态" prop="status">
+            <ZmTableColumn :label="t('device.customerli510445-11')" prop="status">
               <template #default="scope">
                 <dict-tag :type="DICT_TYPE.SUPPLIER_STATUS" :value="scope.row.status" />
               </template>
             </ZmTableColumn>
-            <ZmTableColumn label="创建时间" prop="createTime" :formatter="dateFormatter" />
+            <ZmTableColumn :label="t('device.customerli510445-12')" prop="createTime" :formatter="dateFormatter" />
           </ZmTable>
         </div>
         <Pagination
@@ -91,16 +89,18 @@
     </div>
 
     <template #footer>
-      <el-button size="default" @click="dialogVisible = false">关闭</el-button>
+      <el-button size="default" @click="dialogVisible = false">{{ t('device.customerli510445-13') }}</el-button>
     </template>
   </Dialog>
 </template>
 
 <script setup lang="ts">
 import { DICT_TYPE } from '@/utils/dict'
+import { useI18n } from 'vue-i18n'
 import { dateFormatter } from '@/utils/formatTime'
 import { Api, SupplierVO } from '@/api/supplier/base'
 import { useTableComponents } from '@/components/ZmTable/useTableComponents'
+const { t } = useI18n()
 
 const { ZmTable, ZmTableColumn } = useTableComponents()
 const emit = defineEmits(['choose']) // 定义 success 事件,用于操作成功后的回调

+ 6 - 4
src/views/pms/device/DeptTree2.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="head-container" style="display: flex;flex-direction: row;">
-    <el-input v-model="deptName" class="mb-18px" clearable placeholder="请输入部门名称">
+    <el-input v-model="deptName" class="mb-18px" clearable :placeholder="t('device.depttree2v724110-0')">
       <template #prefix>
         <Icon icon="ep:search" />
       </template>
@@ -29,17 +29,19 @@
     :style="{ left: menuX + 'px', top: menuY + 'px' }"
   >
     <ul>
-      <li @click="handleMenuClick('add')">新增子节点</li>
-      <li @click="handleMenuClick('edit')">重命名</li>
-      <li @click="handleMenuClick('delete')">删除</li>
+      <li @click="handleMenuClick('add')">{{ t('device.depttree2v724110-1') }}</li>
+      <li @click="handleMenuClick('edit')">{{ t('device.depttree2v724110-2') }}</li>
+      <li @click="handleMenuClick('delete')">{{ t('device.depttree2v724110-3') }}</li>
     </ul>
   </div>
 </template>
 
 <script lang="ts" setup>
 import { ElTree } from 'element-plus'
+import { useI18n } from 'vue-i18n'
 import * as DeptApi from '@/api/system/dept'
 import { defaultProps, handleTree } from '@/utils/tree'
+const { t } = useI18n()
 
 defineOptions({ name: 'SystemUserDeptTree' })
 

+ 10 - 8
src/views/pms/device/DeviceAllotRecord.vue

@@ -8,7 +8,7 @@
               <Icon icon="ep:switch" />
             </span>
             <div>
-              <h3>调拨记录</h3>
+              <h3>{{ t('device.deviceallo305472-0') }}</h3>
             </div>
           </div>
         </div>
@@ -29,7 +29,7 @@
               empty-text="暂无数据"
               show-border>
               <ZmTableColumn
-                label="设备名称"
+                :label="t('device.deviceallo305472-1')"
                 prop="deviceName"
                 min-width="180"
                 align="left"
@@ -38,32 +38,32 @@
                   <span class="device-name">{{ row.deviceName || '-' }}</span>
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="设备编码" prop="deviceCode" min-width="150">
+              <ZmTableColumn :label="t('device.deviceallo305472-2')" prop="deviceCode" min-width="150">
                 <template #default="{ row }">
                   {{ row.deviceCode || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="调拨前部门" prop="oldDeptName" min-width="180">
+              <ZmTableColumn :label="t('device.deviceallo305472-3')" prop="oldDeptName" min-width="180">
                 <template #default="{ row }">
                   {{ row.oldDeptName || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="调拨后部门" prop="newDeptName" min-width="180">
+              <ZmTableColumn :label="t('device.deviceallo305472-4')" prop="newDeptName" min-width="180">
                 <template #default="{ row }">
                   {{ row.newDeptName || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="调拨原因" prop="reason" min-width="220" align="left">
+              <ZmTableColumn :label="t('device.deviceallo305472-5')" prop="reason" min-width="220" align="left">
                 <template #default="{ row }">
                   {{ row.reason || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="调整人" prop="creatorName" min-width="140">
+              <ZmTableColumn :label="t('device.deviceallo305472-6')" prop="creatorName" min-width="140">
                 <template #default="{ row }">
                   {{ row.creatorName || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="调整时间" prop="createTime" min-width="180">
+              <ZmTableColumn :label="t('device.deviceallo305472-7')" prop="createTime" min-width="180">
                 <template #default="{ row }">
                   {{ formatRecordTime(row.createTime) }}
                 </template>
@@ -86,9 +86,11 @@
 
 <script lang="ts" setup>
 import { reactive, ref, watch } from 'vue'
+import { useI18n } from 'vue-i18n'
 import { IotDeviceAllotLogApi, IotDeviceAllotLogVO } from '@/api/pms/iotdeviceallotlog'
 import { useTableComponents } from '@/components/ZmTable/useTableComponents'
 import { formatDate } from '@/utils/formatTime'
+const { t } = useI18n()
 
 defineOptions({ name: 'DeviceAllotRecord' })
 

+ 15 - 17
src/views/pms/device/DeviceAssociationRecord.vue

@@ -13,16 +13,16 @@
               <Icon icon="ep:connection" />
             </span>
             <div>
-              <h3>关联设备</h3>
+              <h3>{{ t('device.deviceasso162747-0') }}</h3>
             </div>
           </div>
 
-          <el-form-item label="设备编码" prop="deviceCode">
+          <el-form-item :label="t('device.deviceasso162747-1')" prop="deviceCode">
             <el-input
               v-model="queryParams.deviceCode"
               class="library-search-input"
               clearable
-              placeholder="请输入设备编码"
+              :placeholder="t('device.deviceasso162747-2')"
               @keyup.enter="handleQuery">
               <template #prefix>
                 <Icon icon="ep:search" />
@@ -33,13 +33,9 @@
 
         <el-form-item class="library-actions">
           <el-button type="primary" @click="handleQuery">
-            <Icon icon="ep:search" />
-            搜索
-          </el-button>
+            <Icon icon="ep:search" />{{ t('device.deviceasso162747-3') }}</el-button>
           <el-button @click="resetQuery">
-            <Icon icon="ep:refresh" />
-            重置
-          </el-button>
+            <Icon icon="ep:refresh" />{{ t('device.deviceasso162747-4') }}</el-button>
         </el-form-item>
       </el-form>
 
@@ -57,13 +53,13 @@
               row-key="id"
               empty-text="暂无数据"
               show-border>
-              <ZmTableColumn label="序号" width="70" align="center">
+              <ZmTableColumn :label="t('device.deviceasso162747-5')" width="70" align="center">
                 <template #default="{ $index }">
                   {{ (queryParams.pageNo - 1) * queryParams.pageSize + $index + 1 }}
                 </template>
               </ZmTableColumn>
               <ZmTableColumn
-                label="成套名称"
+                :label="t('device.deviceasso162747-6')"
                 prop="groupName"
                 min-width="180"
                 align="left"
@@ -72,23 +68,23 @@
                   <span class="group-name">{{ row.groupName || '-' }}</span>
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="设备名称" prop="deviceName" min-width="180">
+              <ZmTableColumn :label="t('device.deviceasso162747-7')" prop="deviceName" min-width="180">
                 <template #default="{ row }">
                   {{ row.deviceName || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="设备编码" prop="deviceCode" min-width="150">
+              <ZmTableColumn :label="t('device.deviceasso162747-1')" prop="deviceCode" min-width="150">
                 <template #default="{ row }">
                   {{ row.deviceCode || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="是否主设备" prop="ifMaster" min-width="120">
+              <ZmTableColumn :label="t('device.deviceasso162747-8')" prop="ifMaster" min-width="120">
                 <template #default="{ row }">
-                  <el-tag v-if="row.ifMaster" type="success" effect="light"></el-tag>
-                  <el-tag v-else type="info" effect="light"></el-tag>
+                  <el-tag v-if="row.ifMaster" type="success" effect="light">{{ t('device.deviceasso162747-9') }}</el-tag>
+                  <el-tag v-else type="info" effect="light">{{ t('device.deviceasso162747-10') }}</el-tag>
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="创建时间" prop="createTime" min-width="160">
+              <ZmTableColumn :label="t('device.deviceasso162747-11')" prop="createTime" min-width="160">
                 <template #default="{ row }">
                   {{ formatRecordTime(row.createTime) }}
                 </template>
@@ -111,9 +107,11 @@
 
 <script lang="ts" setup>
 import { reactive, ref, watch } from 'vue'
+import { useI18n } from 'vue-i18n'
 import { IotDeviceApi } from '@/api/pms/device'
 import { useTableComponents } from '@/components/ZmTable/useTableComponents'
 import { formatToDate } from '@/utils/dateUtil'
+const { t } = useI18n()
 
 defineOptions({ name: 'DeviceAssociationRecord' })
 

+ 7 - 5
src/views/pms/device/DeviceBasicInfo.vue

@@ -6,8 +6,8 @@
           <Icon icon="ep:office-building" />
         </span>
         <div>
-          <h3>制造信息</h3>
-          <p>设备生产、供应、质保及启用信息</p>
+          <h3>{{ t('device.devicebasi313029-0') }}</h3>
+          <p>{{ t('device.devicebasi313029-1') }}</p>
         </div>
       </div>
       <div class="basic-grid basic-grid--manufacture">
@@ -24,7 +24,7 @@
           <Icon icon="ep:coin" />
         </span>
         <div>
-          <h3>财务信息</h3>
+          <h3>{{ t('device.devicebasi313029-2') }}</h3>
           <p>{{ financeDescription }}</p>
         </div>
       </div>
@@ -42,8 +42,8 @@
           <Icon icon="ep:grid" />
         </span>
         <div>
-          <h3>其他信息</h3>
-          <p>设备分类模板补充信息</p>
+          <h3>{{ t('device.devicebasi313029-3') }}</h3>
+          <p>{{ t('device.devicebasi313029-4') }}</p>
         </div>
       </div>
       <div class="basic-grid">
@@ -58,7 +58,9 @@
 
 <script setup lang="ts">
 import { computed } from 'vue'
+import { useI18n } from 'vue-i18n'
 import { formatDate } from '@/utils/formatTime'
+const { t } = useI18n()
 
 interface DeviceBasicInfoData {
   zzName?: string

+ 41 - 34
src/views/pms/device/DeviceBomLibrary.vue

@@ -17,19 +17,19 @@
             </div>
           </div>
 
-          <el-form-item label="BOM节点名称" prop="name">
+          <el-form-item :label="t('device.deviceboml064738-0')" prop="name">
             <el-input
               v-model="queryParams.name"
               class="library-search-input"
               clearable
-              placeholder="请输入BOM节点名称"
+              :placeholder="t('device.deviceboml064738-1')"
               @keyup.enter="handleQuery">
               <template #prefix>
                 <Icon icon="ep:search" />
               </template>
             </el-input>
           </el-form-item>
-          <el-form-item label="BOM节点" prop="nodeId">
+          <el-form-item :label="t('device.deviceboml064738-2')" prop="nodeId">
             <el-tree-select
               v-model="selectedNodeId"
               class="library-search-input"
@@ -39,30 +39,27 @@
               clearable
               filterable
               node-key="id"
-              placeholder="请选择BOM节点" />
+              :placeholder="t('device.deviceboml064738-3')" />
           </el-form-item>
         </div>
 
         <el-form-item class="library-actions">
           <el-button type="primary" @click="handleQuery">
-            <Icon icon="ep:search" />
-            搜索
-          </el-button>
+            <Icon icon="ep:search" />{{ t('device.deviceboml064738-4') }}</el-button
+          >
           <el-button @click="resetQuery">
-            <Icon icon="ep:refresh" />
-            重置
-          </el-button>
+            <Icon icon="ep:refresh" />{{ t('device.deviceboml064738-5') }}</el-button
+          >
           <el-button
             v-hasPermi="['rq:iot-bom:create']"
             type="primary"
             plain
             @click="openForm('create', null)">
-            <Icon icon="ep:plus" />
-            新增
-          </el-button>
+            <Icon icon="ep:plus" />{{ t('device.deviceboml064738-6') }}</el-button
+          >
           <el-button type="danger" plain @click="toggleExpandAll">
             <Icon icon="ep:sort" />
-            展开/折叠
+            {{ t('common.toggle') }}
           </el-button>
         </el-form-item>
       </el-form>
@@ -83,39 +80,51 @@
               row-key="id"
               empty-text="暂无数据"
               show-border>
-              <ZmTableColumn prop="name" label="BOM节点" min-width="180" align="left" fixed="left">
+              <ZmTableColumn
+                prop="name"
+                :label="t('device.deviceboml064738-2')"
+                min-width="180"
+                align="left"
+                fixed="left">
                 <template #default="{ row }">
                   <el-tooltip
                     effect="dark"
-                    :content="`设备分类:${row.deviceCategoryName || props.deviceCategoryName || '暂无'}`"
+                    ::content="t('device.deviceboml064738-7')"
                     placement="top-start"
                     :disabled="!row.deviceCategoryName && !props.deviceCategoryName">
                     <span class="bom-node-name">{{ row.name || '-' }}</span>
                   </el-tooltip>
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn prop="deviceCategoryName" label="设备分类" min-width="140">
+              <ZmTableColumn
+                prop="deviceCategoryName"
+                :label="t('device.deviceboml064738-8')"
+                min-width="140">
                 <template #default="{ row }">
                   {{ row.deviceCategoryName || props.deviceCategoryName || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn prop="sort" label="排序" width="80" />
-              <ZmTableColumn label="维修" width="90">
+              <ZmTableColumn prop="sort" :label="t('device.deviceboml064738-9')" width="80" />
+              <ZmTableColumn :label="t('device.deviceboml064738-10')" width="90">
                 <template #default="{ row }">
                   <el-switch :model-value="hasBomType(row, 1)" disabled />
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="保养" width="90">
+              <ZmTableColumn :label="t('device.deviceboml064738-11')" width="90">
                 <template #default="{ row }">
                   <el-switch :model-value="hasBomType(row, 2)" disabled />
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn prop="materials" label="物料数量" width="100">
+              <ZmTableColumn prop="materials" :label="t('device.deviceboml064738-12')" width="100">
                 <template #default="{ row }">
                   {{ row.materials ?? 0 }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="操作" width="320" fixed="right" action>
+              <ZmTableColumn
+                :label="t('device.deviceboml064738-13')"
+                width="320"
+                fixed="right"
+                action>
                 <template #default="{ row }">
                   <div class="table-actions">
                     <el-button
@@ -124,36 +133,32 @@
                       type="primary"
                       class="table-action-btn"
                       @click="openForm('update', row)">
-                      <Icon icon="ep:edit" />
-                      修改
-                    </el-button>
+                      <Icon icon="ep:edit" />{{ t('device.deviceboml064738-14') }}</el-button
+                    >
                     <el-button
                       v-hasPermi="['rq:iot-bom:update']"
                       link
                       type="primary"
                       class="table-action-btn"
                       @click="openSelectMaterialForm(row)">
-                      <Icon icon="ep:plus" />
-                      添加物料
-                    </el-button>
+                      <Icon icon="ep:plus" />{{ t('device.deviceboml064738-15') }}</el-button
+                    >
                     <el-button
                       v-hasPermi="['rq:iot-bom:update']"
                       link
                       type="primary"
                       class="table-action-btn"
                       @click="handleView(row)">
-                      <Icon icon="ep:document" />
-                      物料详情
-                    </el-button>
+                      <Icon icon="ep:document" />{{ t('device.deviceboml064738-16') }}</el-button
+                    >
                     <el-button
                       v-hasPermi="['rq:iot-bom:delete']"
                       link
                       type="danger"
                       class="table-action-btn"
                       @click="handleDelete(row.id)">
-                      <Icon icon="ep:delete" />
-                      删除
-                    </el-button>
+                      <Icon icon="ep:delete" />{{ t('device.deviceboml064738-17') }}</el-button
+                    >
                   </div>
                 </template>
               </ZmTableColumn>
@@ -178,6 +183,7 @@
 
 <script setup lang="ts">
 import { computed, nextTick, reactive, ref, watch } from 'vue'
+import { useI18n } from 'vue-i18n'
 import * as BomApi from '@/api/pms/devicebom'
 import * as MaterialApi from '@/api/pms/iotdevicematerial'
 import { handleTree } from '@/utils/tree'
@@ -185,6 +191,7 @@ import { useTableComponents } from '@/components/ZmTable/useTableComponents'
 import BomFormDevice from '@/views/pms/device/bom/BomFormDevice.vue'
 import MaterialList from '@/views/pms/bom/MaterialList.vue'
 import MaterialListDrawerDevice from '@/views/pms/device/MaterialListDrawerDevice.vue'
+const { t } = useI18n()
 
 defineOptions({ name: 'DeviceBomLibrary' })
 

+ 39 - 41
src/views/pms/device/DeviceFailureRecord.vue

@@ -14,40 +14,40 @@
                 <Icon icon="ep:warning" />
               </span>
               <div>
-                <h3>故障记录</h3>
+                <h3>{{ t('device.devicefail620996-0') }}</h3>
               </div>
             </div>
 
-            <el-form-item label="故障编码" prop="failureCode">
+            <el-form-item :label="t('device.devicefail620996-1')" prop="failureCode">
               <el-input
                 v-model="queryParams.failureCode"
                 class="library-search-input"
                 clearable
-                placeholder="请输入故障编码"
+                :placeholder="t('device.devicefail620996-2')"
                 @keyup.enter="handleQuery">
                 <template #prefix>
                   <Icon icon="ep:search" />
                 </template>
               </el-input>
             </el-form-item>
-            <el-form-item label="故障名称" prop="failureName">
+            <el-form-item :label="t('device.devicefail620996-3')" prop="failureName">
               <el-input
                 v-model="queryParams.failureName"
                 class="library-search-input"
                 clearable
-                placeholder="请输入故障名称"
+                :placeholder="t('device.devicefail620996-4')"
                 @keyup.enter="handleQuery">
                 <template #prefix>
                   <Icon icon="ep:search" />
                 </template>
               </el-input>
             </el-form-item>
-            <el-form-item label="状态" prop="status">
+            <el-form-item :label="t('device.devicefail620996-5')" prop="status">
               <el-select
                 v-model="queryParams.status"
                 class="library-search-input"
                 clearable
-                placeholder="请选择状态">
+                :placeholder="t('device.devicefail620996-6')">
                 <el-option
                   v-for="dict in getStrDictOptions(DICT_TYPE.PMS_FAILURE_STATUS)"
                   :key="dict.value"
@@ -66,24 +66,20 @@
               {{ showAdvancedSearch ? '收起查询' : '更多查询' }}
             </el-button>
             <el-button type="primary" @click="handleQuery">
-              <Icon icon="ep:search" />
-              搜索
-            </el-button>
+              <Icon icon="ep:search" />{{ t('device.devicefail620996-7') }}</el-button>
             <el-button @click="resetQuery">
-              <Icon icon="ep:refresh" />
-              重置
-            </el-button>
+              <Icon icon="ep:refresh" />{{ t('device.devicefail620996-8') }}</el-button>
           </el-form-item>
         </div>
 
         <el-collapse-transition>
           <div v-show="showAdvancedSearch" class="advanced-search-panel">
-            <el-form-item label="是否停机" prop="ifStop">
+            <el-form-item :label="t('device.devicefail620996-9')" prop="ifStop">
               <el-select
                 v-model="queryParams.ifStop"
                 class="library-search-input"
                 clearable
-                placeholder="请选择">
+                :placeholder="t('device.devicefail620996-10')">
                 <el-option
                   v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
                   :key="dict.value"
@@ -91,22 +87,22 @@
                   :value="dict.value" />
               </el-select>
             </el-form-item>
-            <el-form-item label="故障时间" prop="failureTime">
+            <el-form-item :label="t('device.devicefail620996-11')" prop="failureTime">
               <el-date-picker
                 v-model="queryParams.failureTime"
                 class="library-date-range"
                 value-format="YYYY-MM-DD HH:mm:ss"
                 type="daterange"
-                start-placeholder="开始时间"
-                end-placeholder="结束时间"
+                start-:placeholder="t('device.devicefail620996-12')"
+                end-:placeholder="t('device.devicefail620996-13')"
                 :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" />
             </el-form-item>
-            <el-form-item label="是否解决" prop="ifDeal">
+            <el-form-item :label="t('device.devicefail620996-14')" prop="ifDeal">
               <el-select
                 v-model="queryParams.ifDeal"
                 class="library-search-input"
                 clearable
-                placeholder="请选择">
+                :placeholder="t('device.devicefail620996-10')">
                 <el-option
                   v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
                   :key="dict.value"
@@ -114,12 +110,12 @@
                   :value="dict.value" />
               </el-select>
             </el-form-item>
-            <el-form-item label="是否协助" prop="needHelp">
+            <el-form-item :label="t('device.devicefail620996-15')" prop="needHelp">
               <el-select
                 v-model="queryParams.needHelp"
                 class="library-search-input"
                 clearable
-                placeholder="请选择">
+                :placeholder="t('device.devicefail620996-10')">
                 <el-option
                   v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
                   :key="dict.value"
@@ -127,38 +123,38 @@
                   :value="dict.value" />
               </el-select>
             </el-form-item>
-            <el-form-item label="创建时间" prop="createTime">
+            <el-form-item :label="t('device.devicefail620996-16')" prop="createTime">
               <el-date-picker
                 v-model="queryParams.createTime"
                 class="library-date-range"
                 value-format="YYYY-MM-DD HH:mm:ss"
                 type="daterange"
-                start-placeholder="开始时间"
-                end-placeholder="结束时间"
+                start-:placeholder="t('device.devicefail620996-12')"
+                end-:placeholder="t('device.devicefail620996-13')"
                 :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" />
             </el-form-item>
-            <el-form-item label="故障系统" prop="failureSystem">
+            <el-form-item :label="t('device.devicefail620996-17')" prop="failureSystem">
               <el-input
                 v-model="queryParams.failureSystem"
                 class="library-search-input"
                 clearable
-                placeholder="请输入故障系统"
+                :placeholder="t('device.devicefail620996-18')"
                 @keyup.enter="handleQuery" />
             </el-form-item>
-            <el-form-item label="故障影响" prop="failureInfluence">
+            <el-form-item :label="t('device.devicefail620996-19')" prop="failureInfluence">
               <el-input
                 v-model="queryParams.failureInfluence"
                 class="library-search-input"
                 clearable
-                placeholder="请输入故障影响"
+                :placeholder="t('device.devicefail620996-20')"
                 @keyup.enter="handleQuery" />
             </el-form-item>
-            <el-form-item label="描述" prop="description">
+            <el-form-item :label="t('device.devicefail620996-21')" prop="description">
               <el-input
                 v-model="queryParams.description"
                 class="library-search-input"
                 clearable
-                placeholder="请输入描述"
+                :placeholder="t('device.devicefail620996-22')"
                 @keyup.enter="handleQuery" />
             </el-form-item>
           </div>
@@ -180,7 +176,7 @@
               empty-text="暂无数据"
               show-border>
               <ZmTableColumn
-                label="故障编码"
+                :label="t('device.devicefail620996-1')"
                 prop="failureCode"
                 min-width="150"
                 align="left"
@@ -189,47 +185,47 @@
                   <span class="failure-code">{{ row.failureCode || '-' }}</span>
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="故障名称" prop="failureName" min-width="180" align="left">
+              <ZmTableColumn :label="t('device.devicefail620996-3')" prop="failureName" min-width="180" align="left">
                 <template #default="{ row }">
                   {{ row.failureName || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="设备" prop="deviceName" min-width="160">
+              <ZmTableColumn :label="t('device.devicefail620996-23')" prop="deviceName" min-width="160">
                 <template #default="{ row }">
                   {{ row.deviceName || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="状态" prop="status" min-width="120">
+              <ZmTableColumn :label="t('device.devicefail620996-5')" prop="status" min-width="120">
                 <template #default="{ row }">
                   <dict-tag :type="DICT_TYPE.PMS_FAILURE_STATUS" :value="row.status" />
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="审核状态" prop="auditStatus" min-width="120">
+              <ZmTableColumn :label="t('device.devicefail620996-24')" prop="auditStatus" min-width="120">
                 <template #default="{ row }">
                   <dict-tag :type="DICT_TYPE.CRM_AUDIT_STATUS" :value="row.auditStatus" />
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="是否解决" prop="ifDeal" min-width="120">
+              <ZmTableColumn :label="t('device.devicefail620996-14')" prop="ifDeal" min-width="120">
                 <template #default="{ row }">
                   <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="row.ifDeal" />
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="是否停机" prop="ifStop" min-width="120">
+              <ZmTableColumn :label="t('device.devicefail620996-9')" prop="ifStop" min-width="120">
                 <template #default="{ row }">
                   <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="row.ifStop" />
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="故障时间" prop="failureTime" min-width="180">
+              <ZmTableColumn :label="t('device.devicefail620996-11')" prop="failureTime" min-width="180">
                 <template #default="{ row }">
                   {{ formatRecordTime(row.failureTime) }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="故障系统" prop="failureSystem" min-width="160">
+              <ZmTableColumn :label="t('device.devicefail620996-17')" prop="failureSystem" min-width="160">
                 <template #default="{ row }">
                   {{ row.failureSystem || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="创建时间" prop="createTime" min-width="180">
+              <ZmTableColumn :label="t('device.devicefail620996-16')" prop="createTime" min-width="180">
                 <template #default="{ row }">
                   {{ formatRecordTime(row.createTime) }}
                 </template>
@@ -251,10 +247,12 @@
 
 <script lang="ts" setup>
 import { reactive, ref, watch } from 'vue'
+import { useI18n } from 'vue-i18n'
 import { IotFailureReportApi, IotFailureReportVO } from '@/api/pms/failure'
 import { useTableComponents } from '@/components/ZmTable/useTableComponents'
 import { DICT_TYPE, getBoolDictOptions, getStrDictOptions } from '@/utils/dict'
 import { formatDate } from '@/utils/formatTime'
+const { t } = useI18n()
 
 defineOptions({ name: 'DeviceFailureRecord' })
 

+ 17 - 23
src/views/pms/device/DeviceFileLibrary.vue

@@ -7,7 +7,7 @@
             <Icon icon="ep:files" />
           </span>
           <div>
-            <h3>资料列表</h3>
+            <h3>{{ t('device.devicefile737256-0') }}</h3>
             <p>{{ currentFolderName }} · {{ fileList.length }} 项</p>
           </div>
         </div>
@@ -18,7 +18,7 @@
               class="library-search-input"
               clearable
               size="default"
-              placeholder="请输入文件名称"
+              :placeholder="t('device.devicefile737256-1')"
               @keyup.enter="handleQuery">
               <template #prefix>
                 <Icon icon="ep:search" />
@@ -27,13 +27,9 @@
           </el-form-item>
           <el-form-item>
             <el-button type="primary" size="default" @click="handleQuery">
-              <Icon icon="ep:search" />
-              搜索
-            </el-button>
+              <Icon icon="ep:search" />{{ t('device.devicefile737256-2') }}</el-button>
             <el-button size="default" @click="resetQuery">
-              <Icon icon="ep:refresh" />
-              重置
-            </el-button>
+              <Icon icon="ep:refresh" />{{ t('device.devicefile737256-3') }}</el-button>
           </el-form-item>
         </el-form>
       </div>
@@ -64,7 +60,7 @@
         row-key="id"
         empty-text="暂无数据"
         @row-dblclick="handleRowDblClick">
-        <ZmTableColumn label="文件名称" prop="filename" min-width="320" align="left">
+        <ZmTableColumn :label="t('device.devicefile737256-4')" prop="filename" min-width="320" align="left">
           <template #default="{ row }">
             <div class="file-name-cell">
               <span :class="['file-icon', `file-icon--${getFileIconType(row)}`]">
@@ -72,34 +68,34 @@
               </span>
               <div class="file-name-cell__text">
                 <strong>{{ row.filename || '-' }}</strong>
-                <span v-if="row.fileType === 'content'">双击进入文件夹</span>
+                <span v-if="row.fileType === 'content'">{{ t('device.devicefile737256-5') }}</span>
                 <span v-else>{{ row.fileClassify || 'file' }}</span>
               </div>
             </div>
           </template>
         </ZmTableColumn>
-        <ZmTableColumn label="文件类型" prop="fileType" min-width="120">
+        <ZmTableColumn :label="t('device.devicefile737256-6')" prop="fileType" min-width="120">
           <template #default="{ row }">
-            <el-tag v-if="row.fileType === 'content'" type="warning" effect="light">文件夹</el-tag>
+            <el-tag v-if="row.fileType === 'content'" type="warning" effect="light">{{ t('device.devicefile737256-7') }}</el-tag>
             <el-tag v-else type="info" effect="light">{{ row.fileClassify || '文件' }}</el-tag>
           </template>
         </ZmTableColumn>
-        <ZmTableColumn label="文件大小" prop="fileSize" min-width="120">
+        <ZmTableColumn :label="t('device.devicefile737256-8')" prop="fileSize" min-width="120">
           <template #default="{ row }">
             {{ row.fileSize || '-' }}
           </template>
         </ZmTableColumn>
-        <ZmTableColumn label="所在部门" prop="deptName" min-width="160">
+        <ZmTableColumn :label="t('device.devicefile737256-9')" prop="deptName" min-width="160">
           <template #default="{ row }">
             {{ row.deptName || '-' }}
           </template>
         </ZmTableColumn>
-        <ZmTableColumn label="所属设备" prop="deviceCode" min-width="180">
+        <ZmTableColumn :label="t('device.devicefile737256-10')" prop="deviceCode" min-width="180">
           <template #default="{ row }">
             {{ row.deviceCode || '-' }}
           </template>
         </ZmTableColumn>
-        <ZmTableColumn label="操作" width="150" fixed="right" align="center" action>
+        <ZmTableColumn :label="t('device.devicefile737256-11')" width="150" fixed="right" align="center" action>
           <template #default="{ row }">
             <div v-if="row.fileType !== 'content'" class="table-actions">
               <el-button
@@ -108,20 +104,16 @@
                 size="default"
                 class="table-action-btn"
                 @click.stop="previewFile(row)">
-                <Icon icon="ep:view" />
-                预览
-              </el-button>
+                <Icon icon="ep:view" />{{ t('device.devicefile737256-12') }}</el-button>
               <el-button
                 link
                 type="primary"
                 size="default"
                 class="table-action-btn"
                 @click.stop="downloadFile(row)">
-                <Icon icon="ep:download" />
-                下载
-              </el-button>
+                <Icon icon="ep:download" />{{ t('device.devicefile737256-13') }}</el-button>
             </div>
-            <span v-else class="folder-action-tip">双击进入</span>
+            <span v-else class="folder-action-tip">{{ t('device.devicefile737256-14') }}</span>
           </template>
         </ZmTableColumn>
       </ZmTable>
@@ -131,10 +123,12 @@
 
 <script setup lang="ts">
 import { computed, reactive, ref, watch } from 'vue'
+import { useI18n } from 'vue-i18n'
 import { Base64 } from 'js-base64'
 import { IotInfoApi } from '@/api/pms/iotinfo'
 import { IotTreeApi } from '@/api/system/tree'
 import { useTableComponents } from '@/components/ZmTable/useTableComponents'
+const { t } = useI18n()
 
 defineOptions({ name: 'DeviceFileLibrary' })
 

+ 6 - 6
src/views/pms/device/DeviceInfo1.vue

@@ -74,8 +74,8 @@
                 <Icon icon="ep:office-building" />
               </span>
               <div>
-                <h3>制造档案</h3>
-                <p>设备生产、供应及质保信息</p>
+                <h3>{{ t('device.deviceinfo661964-0') }}</h3>
+                <p>{{ t('device.deviceinfo661964-1') }}</p>
               </div>
             </div>
             <div class="record-grid">
@@ -112,8 +112,8 @@
                 <Icon icon="ep:coin" />
               </span>
               <div>
-                <h3>资产折旧</h3>
-                <p>采购成本及折旧执行信息</p>
+                <h3>{{ t('device.deviceinfo661964-2') }}</h3>
+                <p>{{ t('device.deviceinfo661964-3') }}</p>
               </div>
             </div>
             <div class="record-grid">
@@ -170,8 +170,8 @@
                 <Icon icon="ep:grid" />
               </span>
               <div>
-                <h3>扩展属性</h3>
-                <p>设备分类模板补充信息</p>
+                <h3>{{ t('device.deviceinfo661964-4') }}</h3>
+                <p>{{ t('device.deviceinfo661964-5') }}</p>
               </div>
             </div>
             <div class="record-grid">

+ 24 - 28
src/views/pms/device/DeviceInspectRecord.vue

@@ -13,40 +13,40 @@
               <Icon icon="ep:checked" />
             </span>
             <div>
-              <h3>巡检记录</h3>
+              <h3>{{ t('device.deviceinsp728206-0') }}</h3>
             </div>
           </div>
 
-          <el-form-item label="工单名称" prop="inspectOrderTitle">
+          <el-form-item :label="t('device.deviceinsp728206-1')" prop="inspectOrderTitle">
             <el-input
               v-model="queryParams.inspectOrderTitle"
               class="library-search-input"
               clearable
-              placeholder="请输入工单名称"
+              :placeholder="t('device.deviceinsp728206-2')"
               @keyup.enter="handleQuery">
               <template #prefix>
                 <Icon icon="ep:search" />
               </template>
             </el-input>
           </el-form-item>
-          <el-form-item label="工单编码" prop="inspectOrderCode">
+          <el-form-item :label="t('device.deviceinsp728206-3')" prop="inspectOrderCode">
             <el-input
               v-model="queryParams.inspectOrderCode"
               class="library-search-input"
               clearable
-              placeholder="请输入工单编码"
+              :placeholder="t('device.deviceinsp728206-4')"
               @keyup.enter="handleQuery">
               <template #prefix>
                 <Icon icon="ep:search" />
               </template>
             </el-input>
           </el-form-item>
-          <el-form-item label="状态" prop="status">
+          <el-form-item :label="t('device.deviceinsp728206-5')" prop="status">
             <el-select
               v-model="queryParams.status"
               class="library-search-input"
               clearable
-              placeholder="请选择状态">
+              :placeholder="t('device.deviceinsp728206-6')">
               <el-option
                 v-for="dict in getStrDictOptions(DICT_TYPE.PMS_INSPECT_ORDER_STATUS)"
                 :key="dict.value"
@@ -54,27 +54,23 @@
                 :value="dict.value" />
             </el-select>
           </el-form-item>
-          <el-form-item label="创建时间" prop="createTime">
+          <el-form-item :label="t('device.deviceinsp728206-7')" prop="createTime">
             <el-date-picker
               v-model="queryParams.createTime"
               class="library-date-range"
               value-format="YYYY-MM-DD HH:mm:ss"
               type="daterange"
-              start-placeholder="开始时间"
-              end-placeholder="结束时间"
+              start-:placeholder="t('device.deviceinsp728206-8')"
+              end-:placeholder="t('device.deviceinsp728206-9')"
               :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" />
           </el-form-item>
         </div>
 
         <el-form-item class="library-actions">
           <el-button type="primary" @click="handleQuery">
-            <Icon icon="ep:search" />
-            搜索
-          </el-button>
+            <Icon icon="ep:search" />{{ t('device.deviceinsp728206-10') }}</el-button>
           <el-button @click="resetQuery">
-            <Icon icon="ep:refresh" />
-            重置
-          </el-button>
+            <Icon icon="ep:refresh" />{{ t('device.deviceinsp728206-11') }}</el-button>
         </el-form-item>
       </el-form>
 
@@ -92,13 +88,13 @@
               row-key="id"
               empty-text="暂无数据"
               show-border>
-              <ZmTableColumn label="序号" width="70" align="center">
+              <ZmTableColumn :label="t('device.deviceinsp728206-12')" width="70" align="center">
                 <template #default="{ $index }">
                   {{ (queryParams.pageNo - 1) * queryParams.pageSize + $index + 1 }}
                 </template>
               </ZmTableColumn>
               <ZmTableColumn
-                label="工单名称"
+                :label="t('device.deviceinsp728206-1')"
                 prop="inspectOrderTitle"
                 min-width="220"
                 align="left"
@@ -107,46 +103,44 @@
                   <span class="inspect-title">{{ row.inspectOrderTitle || '-' }}</span>
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="工单编码" prop="inspectOrderCode" min-width="160">
+              <ZmTableColumn :label="t('device.deviceinsp728206-3')" prop="inspectOrderCode" min-width="160">
                 <template #default="{ row }">
                   {{ row.inspectOrderCode || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="类型" prop="type" min-width="120">
+              <ZmTableColumn :label="t('device.deviceinsp728206-13')" prop="type" min-width="120">
                 <template #default="{ row }">
                   {{ row.type || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="状态" prop="status" min-width="120">
+              <ZmTableColumn :label="t('device.deviceinsp728206-5')" prop="status" min-width="120">
                 <template #default="{ row }">
                   <dict-tag :type="DICT_TYPE.PMS_INSPECT_ORDER_STATUS" :value="row.status" />
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="负责人" prop="chargeName" min-width="150">
+              <ZmTableColumn :label="t('device.deviceinsp728206-14')" prop="chargeName" min-width="150">
                 <template #default="{ row }">
                   {{ row.chargeName || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="备注" prop="remark" min-width="180">
+              <ZmTableColumn :label="t('device.deviceinsp728206-15')" prop="remark" min-width="180">
                 <template #default="{ row }">
                   {{ row.remark || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="创建时间" prop="createTime" min-width="180">
+              <ZmTableColumn :label="t('device.deviceinsp728206-7')" prop="createTime" min-width="180">
                 <template #default="{ row }">
                   {{ formatRecordTime(row.createTime) }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="操作" width="120" fixed="right" action>
+              <ZmTableColumn :label="t('device.deviceinsp728206-16')" width="120" fixed="right" action>
                 <template #default="{ row }">
                   <el-button
                     link
                     type="primary"
                     class="table-action-btn"
                     @click="openDetail(row.id)">
-                    <Icon icon="ep:view" />
-                    查看
-                  </el-button>
+                    <Icon icon="ep:view" />{{ t('device.deviceinsp728206-17') }}</el-button>
                 </template>
               </ZmTableColumn>
             </ZmTable>
@@ -167,10 +161,12 @@
 
 <script lang="ts" setup>
 import { reactive, ref, watch } from 'vue'
+import { useI18n } from 'vue-i18n'
 import { IotInspectOrderApi, IotInspectOrderVO } from '@/api/pms/inspect/order'
 import { useTableComponents } from '@/components/ZmTable/useTableComponents'
 import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
 import { formatDate } from '@/utils/formatTime'
+const { t } = useI18n()
 
 defineOptions({ name: 'DeviceInspectRecord' })
 

+ 42 - 44
src/views/pms/device/DeviceMaintainRecord.vue

@@ -14,40 +14,40 @@
                 <Icon icon="ep:tools" />
               </span>
               <div>
-                <h3>维修记录</h3>
+                <h3>{{ t('device.devicemain901827-0') }}</h3>
               </div>
             </div>
 
-            <el-form-item label="故障编码" prop="failureCode">
+            <el-form-item :label="t('device.devicemain901827-1')" prop="failureCode">
               <el-input
                 v-model="queryParams.failureCode"
                 class="library-search-input"
                 clearable
-                placeholder="请输入故障编码"
+                :placeholder="t('device.devicemain901827-2')"
                 @keyup.enter="handleQuery">
                 <template #prefix>
                   <Icon icon="ep:search" />
                 </template>
               </el-input>
             </el-form-item>
-            <el-form-item label="故障名称" prop="failureName">
+            <el-form-item :label="t('device.devicemain901827-3')" prop="failureName">
               <el-input
                 v-model="queryParams.failureName"
                 class="library-search-input"
                 clearable
-                placeholder="请输入故障名称"
+                :placeholder="t('device.devicemain901827-4')"
                 @keyup.enter="handleQuery">
                 <template #prefix>
                   <Icon icon="ep:search" />
                 </template>
               </el-input>
             </el-form-item>
-            <el-form-item label="状态" prop="status">
+            <el-form-item :label="t('device.devicemain901827-5')" prop="status">
               <el-select
                 v-model="queryParams.status"
                 class="library-search-input"
                 clearable
-                placeholder="请选择状态">
+                :placeholder="t('device.devicemain901827-6')">
                 <el-option
                   v-for="dict in getStrDictOptions(DICT_TYPE.PMS_MAIN_STATUS)"
                   :key="dict.value"
@@ -66,24 +66,20 @@
               {{ showAdvancedSearch ? '收起查询' : '更多查询' }}
             </el-button>
             <el-button type="primary" @click="handleQuery">
-              <Icon icon="ep:search" />
-              搜索
-            </el-button>
+              <Icon icon="ep:search" />{{ t('device.devicemain901827-7') }}</el-button>
             <el-button @click="resetQuery">
-              <Icon icon="ep:refresh" />
-              重置
-            </el-button>
+              <Icon icon="ep:refresh" />{{ t('device.devicemain901827-8') }}</el-button>
           </el-form-item>
         </div>
 
         <el-collapse-transition>
           <div v-show="showAdvancedSearch" class="advanced-search-panel">
-            <el-form-item label="是否停机" prop="ifStop">
+            <el-form-item :label="t('device.devicemain901827-9')" prop="ifStop">
               <el-select
                 v-model="queryParams.ifStop"
                 class="library-search-input"
                 clearable
-                placeholder="请选择">
+                :placeholder="t('device.devicemain901827-10')">
                 <el-option
                   v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
                   :key="dict.value"
@@ -91,68 +87,68 @@
                   :value="dict.value" />
               </el-select>
             </el-form-item>
-            <el-form-item label="故障时间" prop="failureTime">
+            <el-form-item :label="t('device.devicemain901827-11')" prop="failureTime">
               <el-date-picker
                 v-model="queryParams.failureTime"
                 class="library-date-range"
                 value-format="YYYY-MM-DD HH:mm:ss"
                 type="daterange"
-                start-placeholder="开始时间"
-                end-placeholder="结束时间"
+                start-:placeholder="t('device.devicemain901827-12')"
+                end-:placeholder="t('device.devicemain901827-13')"
                 :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" />
             </el-form-item>
-            <el-form-item label="维修开始" prop="maintainStartTime">
+            <el-form-item :label="t('device.devicemain901827-14')" prop="maintainStartTime">
               <el-date-picker
                 v-model="queryParams.maintainStartTime"
                 class="library-date-range"
                 value-format="YYYY-MM-DD HH:mm:ss"
                 type="daterange"
-                start-placeholder="开始时间"
-                end-placeholder="结束时间"
+                start-:placeholder="t('device.devicemain901827-12')"
+                end-:placeholder="t('device.devicemain901827-13')"
                 :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" />
             </el-form-item>
-            <el-form-item label="维修结束" prop="maintainEndTime">
+            <el-form-item :label="t('device.devicemain901827-15')" prop="maintainEndTime">
               <el-date-picker
                 v-model="queryParams.maintainEndTime"
                 class="library-date-range"
                 value-format="YYYY-MM-DD HH:mm:ss"
                 type="daterange"
-                start-placeholder="开始时间"
-                end-placeholder="结束时间"
+                start-:placeholder="t('device.devicemain901827-12')"
+                end-:placeholder="t('device.devicemain901827-13')"
                 :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" />
             </el-form-item>
-            <el-form-item label="创建时间" prop="createTime">
+            <el-form-item :label="t('device.devicemain901827-16')" prop="createTime">
               <el-date-picker
                 v-model="queryParams.createTime"
                 class="library-date-range"
                 value-format="YYYY-MM-DD HH:mm:ss"
                 type="daterange"
-                start-placeholder="开始时间"
-                end-placeholder="结束时间"
+                start-:placeholder="t('device.devicemain901827-12')"
+                end-:placeholder="t('device.devicemain901827-13')"
                 :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" />
             </el-form-item>
-            <el-form-item label="故障系统" prop="failureSystem">
+            <el-form-item :label="t('device.devicemain901827-17')" prop="failureSystem">
               <el-input
                 v-model="queryParams.failureSystem"
                 class="library-search-input"
                 clearable
-                placeholder="请输入故障系统"
+                :placeholder="t('device.devicemain901827-18')"
                 @keyup.enter="handleQuery" />
             </el-form-item>
-            <el-form-item label="故障影响" prop="failureInfluence">
+            <el-form-item :label="t('device.devicemain901827-19')" prop="failureInfluence">
               <el-input
                 v-model="queryParams.failureInfluence"
                 class="library-search-input"
                 clearable
-                placeholder="请输入故障影响"
+                :placeholder="t('device.devicemain901827-20')"
                 @keyup.enter="handleQuery" />
             </el-form-item>
-            <el-form-item label="描述" prop="description">
+            <el-form-item :label="t('device.devicemain901827-21')" prop="description">
               <el-input
                 v-model="queryParams.description"
                 class="library-search-input"
                 clearable
-                placeholder="请输入描述"
+                :placeholder="t('device.devicemain901827-22')"
                 @keyup.enter="handleQuery" />
             </el-form-item>
           </div>
@@ -174,7 +170,7 @@
               empty-text="暂无数据"
               show-border>
               <ZmTableColumn
-                label="故障编码"
+                :label="t('device.devicemain901827-1')"
                 prop="failureCode"
                 min-width="150"
                 align="left"
@@ -183,50 +179,50 @@
                   <span class="maintain-code">{{ row.failureCode || '-' }}</span>
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="故障名称" prop="failureName" min-width="180" align="left">
+              <ZmTableColumn :label="t('device.devicemain901827-3')" prop="failureName" min-width="180" align="left">
                 <template #default="{ row }">
                   {{ row.failureName || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="设备" prop="deviceName" min-width="160">
+              <ZmTableColumn :label="t('device.devicemain901827-23')" prop="deviceName" min-width="160">
                 <template #default="{ row }">
                   {{ row.deviceName || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="状态" prop="status" min-width="120">
+              <ZmTableColumn :label="t('device.devicemain901827-5')" prop="status" min-width="120">
                 <template #default="{ row }">
                   <dict-tag :type="DICT_TYPE.PMS_MAIN_STATUS" :value="row.status" />
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="审核状态" prop="auditStatus" min-width="120">
+              <ZmTableColumn :label="t('device.devicemain901827-24')" prop="auditStatus" min-width="120">
                 <template #default="{ row }">
                   <dict-tag :type="DICT_TYPE.CRM_AUDIT_STATUS" :value="row.auditStatus" />
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="是否停机" prop="ifStop" min-width="120">
+              <ZmTableColumn :label="t('device.devicemain901827-9')" prop="ifStop" min-width="120">
                 <template #default="{ row }">
                   <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="row.ifStop" />
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="维修开始时间" prop="maintainStartTime" min-width="180">
+              <ZmTableColumn :label="t('device.devicemain901827-25')" prop="maintainStartTime" min-width="180">
                 <template #default="{ row }">
                   {{ formatRecordTime(row.maintainStartTime) }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="故障时间" prop="failureTime" min-width="180">
+              <ZmTableColumn :label="t('device.devicemain901827-11')" prop="failureTime" min-width="180">
                 <template #default="{ row }">
                   {{ formatRecordTime(row.failureTime) }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="创建时间" prop="createTime" min-width="180">
+              <ZmTableColumn :label="t('device.devicemain901827-16')" prop="createTime" min-width="180">
                 <template #default="{ row }">
                   {{ formatRecordTime(row.createTime) }}
                 </template>
               </ZmTableColumn>
 
-              <ZmTableColumn label="操作" min-width="90" fixed="right">
+              <ZmTableColumn :label="t('device.devicemain901827-26')" min-width="90" fixed="right">
                 <template #default="{ row }">
-                  <el-button type="primary" link @click="view(row)"> 查看 </el-button>
+                  <el-button type="primary" link @click="view(row)">{{ t('device.devicemain901827-27') }}</el-button>
                 </template>
               </ZmTableColumn>
             </ZmTable>
@@ -247,10 +243,12 @@
 
 <script lang="ts" setup>
 import { reactive, ref, watch } from 'vue'
+import { useI18n } from 'vue-i18n'
 import { IotMaintainApi, IotMaintainVO } from '@/api/pms/maintain'
 import { useTableComponents } from '@/components/ZmTable/useTableComponents'
 import { DICT_TYPE, getBoolDictOptions, getStrDictOptions } from '@/utils/dict'
 import { formatDate } from '@/utils/formatTime'
+const { t } = useI18n()
 
 defineOptions({ name: 'DeviceMaintainRecord' })
 

+ 23 - 27
src/views/pms/device/DeviceMaintenanceRecord.vue

@@ -13,28 +13,28 @@
               <Icon icon="ep:calendar" />
             </span>
             <div>
-              <h3>保养记录</h3>
+              <h3>{{ t('device.devicemain398413-0') }}</h3>
             </div>
           </div>
 
-          <el-form-item label="工单名称" prop="name">
+          <el-form-item :label="t('device.devicemain398413-1')" prop="name">
             <el-input
               v-model="queryParams.name"
               class="library-search-input"
               clearable
-              placeholder="请输入工单名称"
+              :placeholder="t('device.devicemain398413-2')"
               @keyup.enter="handleQuery">
               <template #prefix>
                 <Icon icon="ep:search" />
               </template>
             </el-input>
           </el-form-item>
-          <el-form-item label="状态" prop="result">
+          <el-form-item :label="t('device.devicemain398413-3')" prop="result">
             <el-select
               v-model="queryParams.result"
               class="library-search-input"
               clearable
-              placeholder="请选择状态">
+              :placeholder="t('device.devicemain398413-4')">
               <el-option
                 v-for="dict in getStrDictOptions(DICT_TYPE.PMS_MAIN_WORK_ORDER_RESULT)"
                 :key="dict.value"
@@ -42,27 +42,23 @@
                 :value="dict.value" />
             </el-select>
           </el-form-item>
-          <el-form-item label="创建时间" prop="createTime">
+          <el-form-item :label="t('device.devicemain398413-5')" prop="createTime">
             <el-date-picker
               v-model="queryParams.createTime"
               class="library-date-range"
               value-format="YYYY-MM-DD HH:mm:ss"
               type="daterange"
-              start-placeholder="开始时间"
-              end-placeholder="结束时间"
+              start-:placeholder="t('device.devicemain398413-6')"
+              end-:placeholder="t('device.devicemain398413-7')"
               :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" />
           </el-form-item>
         </div>
 
         <el-form-item class="library-actions">
           <el-button type="primary" @click="handleQuery">
-            <Icon icon="ep:search" />
-            搜索
-          </el-button>
+            <Icon icon="ep:search" />{{ t('device.devicemain398413-8') }}</el-button>
           <el-button @click="resetQuery">
-            <Icon icon="ep:refresh" />
-            重置
-          </el-button>
+            <Icon icon="ep:refresh" />{{ t('device.devicemain398413-9') }}</el-button>
         </el-form-item>
       </el-form>
 
@@ -80,52 +76,52 @@
               row-key="id"
               empty-text="暂无数据"
               show-border>
-              <ZmTableColumn label="序号" width="70" align="center">
+              <ZmTableColumn :label="t('device.devicemain398413-10')" width="70" align="center">
                 <template #default="{ $index }">
                   {{ (queryParams.pageNo - 1) * queryParams.pageSize + $index + 1 }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="工单名称" prop="name" min-width="220" align="left" fixed="left">
+              <ZmTableColumn :label="t('device.devicemain398413-1')" prop="name" min-width="220" align="left" fixed="left">
                 <template #default="{ row }">
                   <span class="maintenance-name">{{ row.name || '-' }}</span>
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="状态" prop="result" min-width="120">
+              <ZmTableColumn :label="t('device.devicemain398413-3')" prop="result" min-width="120">
                 <template #default="{ row }">
                   <dict-tag :type="DICT_TYPE.PMS_MAIN_WORK_ORDER_RESULT" :value="row.result" />
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="保养周期" prop="maintenanceInterval" min-width="120">
+              <ZmTableColumn :label="t('device.devicemain398413-11')" prop="maintenanceInterval" min-width="120">
                 <template #default="{ row }">
                   {{ row.maintenanceInterval || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="工单类型" prop="type" min-width="120">
+              <ZmTableColumn :label="t('device.devicemain398413-12')" prop="type" min-width="120">
                 <template #default="{ row }">
                   <dict-tag :type="DICT_TYPE.PMS_MAIN_WORK_ORDER_TYPE" :value="row.type" />
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="负责人" prop="responsiblePersonName" min-width="150">
+              <ZmTableColumn :label="t('device.devicemain398413-13')" prop="responsiblePersonName" min-width="150">
                 <template #default="{ row }">
                   {{ row.responsiblePersonName || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="开始时间" prop="actualStartTime" min-width="180">
+              <ZmTableColumn :label="t('device.devicemain398413-6')" prop="actualStartTime" min-width="180">
                 <template #default="{ row }">
                   {{ formatRecordTime(row.actualStartTime) }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="结束时间" prop="actualEndTime" min-width="180">
+              <ZmTableColumn :label="t('device.devicemain398413-7')" prop="actualEndTime" min-width="180">
                 <template #default="{ row }">
                   {{ formatRecordTime(row.actualEndTime) }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="创建时间" prop="createTime" min-width="180">
+              <ZmTableColumn :label="t('device.devicemain398413-5')" prop="createTime" min-width="180">
                 <template #default="{ row }">
                   {{ formatRecordTime(row.createTime) }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="操作" width="120" fixed="right" action>
+              <ZmTableColumn :label="t('device.devicemain398413-14')" width="120" fixed="right" action>
                 <template #default="{ row }">
                   <el-button
                     v-hasPermi="['pms:iot-main-work-order:query']"
@@ -133,9 +129,7 @@
                     type="primary"
                     class="table-action-btn"
                     @click="openDetail(row.id)">
-                    <Icon icon="ep:view" />
-                    查看
-                  </el-button>
+                    <Icon icon="ep:view" />{{ t('device.devicemain398413-15') }}</el-button>
                 </template>
               </ZmTableColumn>
             </ZmTable>
@@ -156,10 +150,12 @@
 
 <script lang="ts" setup>
 import { reactive, ref, watch } from 'vue'
+import { useI18n } from 'vue-i18n'
 import { IotMainWorkOrderApi, IotMainWorkOrderVO } from '@/api/pms/iotmainworkorder'
 import { useTableComponents } from '@/components/ZmTable/useTableComponents'
 import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
 import { formatDate } from '@/utils/formatTime'
+const { t } = useI18n()
 
 defineOptions({ name: 'DeviceMaintenanceRecord' })
 

+ 15 - 19
src/views/pms/device/DeviceOperationRecord.vue

@@ -13,28 +13,28 @@
               <Icon icon="ep:document-checked" />
             </span>
             <div>
-              <h3>运行记录</h3>
+              <h3>{{ t('device.deviceoper817057-0') }}</h3>
             </div>
           </div>
 
-          <el-form-item label="运行名称" prop="orderName">
+          <el-form-item :label="t('device.deviceoper817057-1')" prop="orderName">
             <el-input
               v-model="queryParams.orderName"
               class="library-search-input"
               clearable
-              placeholder="请输入运行名称"
+              :placeholder="t('device.deviceoper817057-2')"
               @keyup.enter="handleQuery">
               <template #prefix>
                 <Icon icon="ep:search" />
               </template>
             </el-input>
           </el-form-item>
-          <el-form-item label="状态" prop="orderStatus">
+          <el-form-item :label="t('device.deviceoper817057-3')" prop="orderStatus">
             <el-select
               v-model="queryParams.orderStatus"
               class="library-search-input"
               clearable
-              placeholder="请选择状态">
+              :placeholder="t('device.deviceoper817057-4')">
               <el-option
                 v-for="dict in getStrDictOptions(DICT_TYPE.OPERATION_FILL_ORDER_STATUS)"
                 :key="dict.value"
@@ -46,13 +46,9 @@
 
         <el-form-item class="library-actions">
           <el-button type="primary" @click="handleQuery">
-            <Icon icon="ep:search" />
-            搜索
-          </el-button>
+            <Icon icon="ep:search" />{{ t('device.deviceoper817057-5') }}</el-button>
           <el-button @click="resetQuery">
-            <Icon icon="ep:refresh" />
-            重置
-          </el-button>
+            <Icon icon="ep:refresh" />{{ t('device.deviceoper817057-6') }}</el-button>
         </el-form-item>
       </el-form>
 
@@ -70,13 +66,13 @@
               row-key="id"
               empty-text="暂无数据"
               show-border>
-              <ZmTableColumn label="序号" width="70" align="center">
+              <ZmTableColumn :label="t('device.deviceoper817057-7')" width="70" align="center">
                 <template #default="{ $index }">
                   {{ (queryParams.pageNo - 1) * queryParams.pageSize + $index + 1 }}
                 </template>
               </ZmTableColumn>
               <ZmTableColumn
-                label="运行名称"
+                :label="t('device.deviceoper817057-1')"
                 prop="orderName"
                 min-width="260"
                 align="left"
@@ -85,28 +81,26 @@
                   <span class="record-name">{{ row.orderName || '-' }}</span>
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="负责人" prop="userName" min-width="140">
+              <ZmTableColumn :label="t('device.deviceoper817057-8')" prop="userName" min-width="140">
                 <template #default="{ row }">
                   {{ row.userName || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="状态" prop="orderStatus" min-width="120">
+              <ZmTableColumn :label="t('device.deviceoper817057-3')" prop="orderStatus" min-width="120">
                 <template #default="{ row }">
                   <dict-tag
                     :type="DICT_TYPE.OPERATION_FILL_ORDER_STATUS"
                     :value="row.orderStatus" />
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="操作" width="120" fixed="right" action>
+              <ZmTableColumn :label="t('device.deviceoper817057-9')" width="120" fixed="right" action>
                 <template #default="{ row }">
                   <el-button
                     link
                     type="primary"
                     class="table-action-btn"
                     @click="openWrite(row.id, row.orderStatus, row.deptId, row.createTime)">
-                    <Icon icon="ep:view" />
-                    查看
-                  </el-button>
+                    <Icon icon="ep:view" />{{ t('device.deviceoper817057-10') }}</el-button>
                 </template>
               </ZmTableColumn>
             </ZmTable>
@@ -127,9 +121,11 @@
 
 <script lang="ts" setup>
 import { reactive, ref, watch } from 'vue'
+import { useI18n } from 'vue-i18n'
 import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
 import { useTableComponents } from '@/components/ZmTable/useTableComponents'
 import { IotOpeationFillApi, IotOpeationFillVO } from '@/api/pms/iotopeationfill'
+const { t } = useI18n()
 
 defineOptions({ name: 'DeviceOperationRecord' })
 

+ 10 - 8
src/views/pms/device/DevicePersonRecord.vue

@@ -8,7 +8,7 @@
               <Icon icon="ep:user" />
             </span>
             <div>
-              <h3>责任人调整记录</h3>
+              <h3>{{ t('device.devicepers660941-0') }}</h3>
             </div>
           </div>
         </div>
@@ -29,7 +29,7 @@
               empty-text="暂无数据"
               show-border>
               <ZmTableColumn
-                label="设备名称"
+                :label="t('device.devicepers660941-1')"
                 prop="deviceName"
                 min-width="180"
                 align="left"
@@ -38,32 +38,32 @@
                   <span class="device-name">{{ row.deviceName || '-' }}</span>
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="设备编码" prop="deviceCode" min-width="150">
+              <ZmTableColumn :label="t('device.devicepers660941-2')" prop="deviceCode" min-width="150">
                 <template #default="{ row }">
                   {{ row.deviceCode || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="调整前责任人" prop="oldPersonNames" min-width="180">
+              <ZmTableColumn :label="t('device.devicepers660941-3')" prop="oldPersonNames" min-width="180">
                 <template #default="{ row }">
                   {{ row.oldPersonNames || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="调整后责任人" prop="newPersonNames" min-width="180">
+              <ZmTableColumn :label="t('device.devicepers660941-4')" prop="newPersonNames" min-width="180">
                 <template #default="{ row }">
                   {{ row.newPersonNames || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="调整原因" prop="reason" min-width="220" align="left">
+              <ZmTableColumn :label="t('device.devicepers660941-5')" prop="reason" min-width="220" align="left">
                 <template #default="{ row }">
                   {{ row.reason || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="调整人" prop="creatorName" min-width="140">
+              <ZmTableColumn :label="t('device.devicepers660941-6')" prop="creatorName" min-width="140">
                 <template #default="{ row }">
                   {{ row.creatorName || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="调整时间" prop="createTime" min-width="180">
+              <ZmTableColumn :label="t('device.devicepers660941-7')" prop="createTime" min-width="180">
                 <template #default="{ row }">
                   {{ formatRecordTime(row.createTime) }}
                 </template>
@@ -86,9 +86,11 @@
 
 <script lang="ts" setup>
 import { reactive, ref, watch } from 'vue'
+import { useI18n } from 'vue-i18n'
 import { IotDevicePersonLogApi, IotDevicePersonLogVO } from '@/api/pms/iotdevicepersonlog'
 import { useTableComponents } from '@/components/ZmTable/useTableComponents'
 import { formatDate } from '@/utils/formatTime'
+const { t } = useI18n()
 
 defineOptions({ name: 'DevicePersonRecord' })
 

+ 10 - 8
src/views/pms/device/DeviceStatusRecord.vue

@@ -8,7 +8,7 @@
               <Icon icon="ep:refresh" />
             </span>
             <div>
-              <h3>状态变更记录</h3>
+              <h3>{{ t('device.devicestat332202-0') }}</h3>
             </div>
           </div>
         </div>
@@ -29,7 +29,7 @@
               empty-text="暂无数据"
               show-border>
               <ZmTableColumn
-                label="设备名称"
+                :label="t('device.devicestat332202-1')"
                 prop="deviceName"
                 min-width="180"
                 align="left"
@@ -38,32 +38,32 @@
                   <span class="device-name">{{ row.deviceName || '-' }}</span>
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="设备编码" prop="deviceCode" min-width="150">
+              <ZmTableColumn :label="t('device.devicestat332202-2')" prop="deviceCode" min-width="150">
                 <template #default="{ row }">
                   {{ row.deviceCode || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="变更前状态" prop="oldStatus" min-width="140">
+              <ZmTableColumn :label="t('device.devicestat332202-3')" prop="oldStatus" min-width="140">
                 <template #default="{ row }">
                   <dict-tag :type="DICT_TYPE.PMS_DEVICE_STATUS" :value="row.oldStatus" />
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="变更后状态" prop="newStatus" min-width="140">
+              <ZmTableColumn :label="t('device.devicestat332202-4')" prop="newStatus" min-width="140">
                 <template #default="{ row }">
                   <dict-tag :type="DICT_TYPE.PMS_DEVICE_STATUS" :value="row.newStatus" />
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="变更原因" prop="reason" min-width="220" align="left">
+              <ZmTableColumn :label="t('device.devicestat332202-5')" prop="reason" min-width="220" align="left">
                 <template #default="{ row }">
                   {{ row.reason || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="调整人" prop="creatorName" min-width="140">
+              <ZmTableColumn :label="t('device.devicestat332202-6')" prop="creatorName" min-width="140">
                 <template #default="{ row }">
                   {{ row.creatorName || '-' }}
                 </template>
               </ZmTableColumn>
-              <ZmTableColumn label="调整时间" prop="createTime" min-width="180">
+              <ZmTableColumn :label="t('device.devicestat332202-7')" prop="createTime" min-width="180">
                 <template #default="{ row }">
                   {{ formatRecordTime(row.createTime) }}
                 </template>
@@ -86,10 +86,12 @@
 
 <script lang="ts" setup>
 import { reactive, ref, watch } from 'vue'
+import { useI18n } from 'vue-i18n'
 import { IotDeviceStatusLogApi, IotDeviceStatusLogVO } from '@/api/pms/iotdevicestatuslog'
 import { useTableComponents } from '@/components/ZmTable/useTableComponents'
 import { DICT_TYPE } from '@/utils/dict'
 import { formatDate } from '@/utils/formatTime'
+const { t } = useI18n()
 
 defineOptions({ name: 'DeviceStatusRecord' })
 

+ 12 - 12
src/views/pms/device/FileTree.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <el-input v-model="deptName" class="mb-20px" clearable placeholder="请输入资料分类名称">
+    <el-input v-model="deptName" class="mb-20px" clearable :placeholder="t('device.filetreevu579915-0')">
       <template #prefix>
         <Icon icon="ep:search" />
       </template>
@@ -45,10 +45,10 @@
   </div>
   <div v-show="menuVisible" ref="contextMenuRef" class="custom-menu" :style="{ left: menuX + 'px', top: menuY + 'px' }">
     <ul>
-      <li v-if="nodeInfo.parentId===0" @click="handleMenuClick('add')">新增子节点</li>
-      <li v-if="nodeInfo.parentId!=0" style="border-bottom: 1px solid #ccc;" @click="handleMenuClick('add')">新增子节点</li>
-      <li v-if="nodeInfo.parentId!=0" style="border-bottom: 1px solid #ccc;" @click="handleMenuClick('edit')">编辑节点</li>
-      <li v-if="nodeInfo.parentId!=0" @click="handleMenuClick('delete')">删除节点</li>
+      <li v-if="nodeInfo.parentId===0" @click="handleMenuClick('add')">{{ t('device.filetreevu579915-1') }}</li>
+      <li v-if="nodeInfo.parentId!=0" style="border-bottom: 1px solid #ccc;" @click="handleMenuClick('add')">{{ t('device.filetreevu579915-1') }}</li>
+      <li v-if="nodeInfo.parentId!=0" style="border-bottom: 1px solid #ccc;" @click="handleMenuClick('edit')">{{ t('device.filetreevu579915-2') }}</li>
+      <li v-if="nodeInfo.parentId!=0" @click="handleMenuClick('delete')">{{ t('device.filetreevu579915-3') }}</li>
 <!--      <li @click="handleMenuClick('copy')">复制</li>-->
     </ul>
   </div>
@@ -61,25 +61,25 @@
       :rules="formRules"
       label-width="80px"
     >
-      <el-form-item label="资料分类名称" prop="name" label-width="110px">
+      <el-form-item :label="t('device.filetreevu579915-4')" prop="name" label-width="110px">
 <!--        <el-input v-model="formData.name" placeholder="请输入资料分类名称" />-->
-        <lang-input v-model="formData.name" placeholder="请输入资料分类名称" />
+        <lang-input v-model="formData.name" :placeholder="t('device.filetreevu579915-0')" />
       </el-form-item>
-      <el-form-item label="显示排序" prop="sort" label-width="110px">
+      <el-form-item :label="t('device.filetreevu579915-5')" prop="sort" label-width="110px">
         <el-input-number v-model="formData.sort" :min="0" controls-position="right" />
       </el-form-item>
-      <el-form-item label="备注" prop="remark" label-width="110px">
+      <el-form-item :label="t('device.filetreevu579915-6')" prop="remark" label-width="110px">
         <el-input
           v-model="formData.remark"
           maxlength="11"
-          placeholder="请输入备注"
+          :placeholder="t('device.filetreevu579915-7')"
           type="textarea"
         />
       </el-form-item>
     </el-form>
     <template #footer>
-      <el-button type="primary" @click="submitForm">确 定</el-button>
-      <el-button @click="dialogVisible = false">取 消</el-button>
+      <el-button type="primary" @click="submitForm">{{ t('device.filetreevu579915-8') }}</el-button>
+      <el-button @click="dialogVisible = false">{{ t('device.filetreevu579915-9') }}</el-button>
     </template>
   </Dialog>
 </template>

+ 59 - 71
src/views/pms/device/IotDeviceForm.vue

@@ -406,7 +406,7 @@ onMounted(() => {
           <div class="page-title">
             <span>{{ pageTitle }}</span>
           </div>
-          <div class="page-subtitle">设备台账信息维护</div>
+          <div class="page-subtitle">{{ t('device.iotdevicef293671-0') }}</div>
         </div>
       </div>
     </div>
@@ -423,7 +423,7 @@ onMounted(() => {
           <div class="info-card__header">
             <div class="info-card__title">
               <span class="info-card__marker"></span>
-              <span>基本信息</span>
+              <span>{{ t('device.iotdevicef293671-1') }}</span>
             </div>
             <el-button link type="primary" class="info-card__toggle" @click="toggleSection('base')">
               <Icon :icon="sectionExpanded.base ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-4px" />
@@ -440,7 +440,7 @@ onMounted(() => {
                 <el-cascader
                   :disabled="formType === 'update' && Boolean(form.yfDeviceCode)"
                   v-model="form.yfClass"
-                  placeholder="请输入编码分类"
+                  :placeholder="t('device.iotdevicef293671-2')"
                   clearable
                   filterable
                   :options="encodingTypeOptions"
@@ -448,16 +448,16 @@ onMounted(() => {
                   @change="changeEncodingType" />
               </el-form-item>
               <el-form-item :label="t('iotDevice.yfCode')" prop="yfDeviceCode">
-                <el-input placeholder="系统生成" disabled v-model="form.yfDeviceCode" />
+                <el-input :placeholder="t('device.iotdevicef293671-3')" disabled v-model="form.yfDeviceCode" />
               </el-form-item>
               <el-form-item :label="t('iotDevice.code')" prop="deviceCode">
                 <el-input
                   :disabled="formType === 'update'"
                   v-model="form.deviceCode"
-                  placeholder="请输入历史编码" />
+                  :placeholder="t('device.iotdevicef293671-4')" />
               </el-form-item>
               <el-form-item :label="t('iotDevice.name')" prop="deviceName">
-                <el-input v-model="form.deviceName" placeholder="请输入设备名称" />
+                <el-input v-model="form.deviceName" :placeholder="t('device.iotdevicef293671-5')" />
               </el-form-item>
               <el-form-item :label="t('iotDevice.dept')" prop="deptId">
                 <el-tree-select
@@ -469,7 +469,7 @@ onMounted(() => {
                   node-key="id"
                   filterable
                   clearable
-                  placeholder="请选择所在部门" />
+                  :placeholder="t('device.iotdevicef293671-6')" />
               </el-form-item>
               <el-form-item :label="t('deviceForm.category')" prop="assetClass">
                 <el-tree-select
@@ -481,13 +481,13 @@ onMounted(() => {
                   node-key="id"
                   clearable
                   filterable
-                  placeholder="请选择设备类别"
+                  :placeholder="t('device.iotdevicef293671-7')"
                   @change="changeAssetClass" />
               </el-form-item>
               <el-form-item :label="t('iotDevice.status')" prop="deviceStatus">
                 <el-select
                   v-model="form.deviceStatus"
-                  placeholder="请选择设备状态"
+                  :placeholder="t('device.iotdevicef293671-8')"
                   :disabled="formType === 'update'"
                   clearable>
                   <el-option
@@ -498,7 +498,7 @@ onMounted(() => {
                 </el-select>
               </el-form-item>
               <el-form-item :label="t('iotDevice.assets')" prop="assetProperty">
-                <el-select v-model="form.assetProperty" placeholder="请选择资产性质" clearable>
+                <el-select v-model="form.assetProperty" :placeholder="t('device.iotdevicef293671-9')" clearable>
                   <el-option
                     v-for="dict in getStrDictOptions(DICT_TYPE.PMS_ASSET_PROPERTY)"
                     :key="dict.value"
@@ -507,7 +507,7 @@ onMounted(() => {
                 </el-select>
               </el-form-item>
               <el-form-item :label="t('iotDevice.brand')" prop="brandName">
-                <el-input v-model="form.brandName" readonly placeholder="请选择品牌">
+                <el-input v-model="form.brandName" readonly :placeholder="t('device.iotdevicef293671-10')">
                   <template #suffix>
                     <Icon
                       v-if="form.brandName"
@@ -517,42 +517,42 @@ onMounted(() => {
                       @click.stop="clearBrand" />
                   </template>
                   <template #append>
-                    <el-button @click="selectBrand">选择</el-button>
+                    <el-button @click="selectBrand">{{ t('device.iotdevicef293671-11') }}</el-button>
                   </template>
                 </el-input>
               </el-form-item>
-              <el-form-item label="车牌号" prop="carNo">
-                <el-input clearable v-model="form.carNo" placeholder="请输入车牌号" />
+              <el-form-item :label="t('device.iotdevicef293671-12')" prop="carNo">
+                <el-input clearable v-model="form.carNo" :placeholder="t('device.iotdevicef293671-13')" />
               </el-form-item>
-              <el-form-item label="设备号" prop="deviceNo">
-                <el-input clearable v-model="form.deviceNo" placeholder="请输入设备号" />
+              <el-form-item :label="t('device.iotdevicef293671-14')" prop="deviceNo">
+                <el-input clearable v-model="form.deviceNo" :placeholder="t('device.iotdevicef293671-15')" />
               </el-form-item>
               <el-form-item :label="t('deviceForm.model')" prop="model">
-                <el-input clearable v-model="form.model" placeholder="请输入或选择规格型号">
+                <el-input clearable v-model="form.model" :placeholder="t('device.iotdevicef293671-16')">
                   <template #append>
-                    <el-button @click="selectModel">选择</el-button>
+                    <el-button @click="selectModel">{{ t('device.iotdevicef293671-11') }}</el-button>
                   </template>
                 </el-input>
               </el-form-item>
               <el-form-item :label="t('deviceForm.useProject')" prop="useProject">
-                <el-input clearable v-model="form.useProject" placeholder="请输入使用项目" />
+                <el-input clearable v-model="form.useProject" :placeholder="t('device.iotdevicef293671-17')" />
               </el-form-item>
-              <el-form-item label="资产归属" prop="assetOwnership">
-                <el-input clearable v-model="form.assetOwnership" placeholder="请输入资产归属" />
+              <el-form-item :label="t('device.iotdevicef293671-18')" prop="assetOwnership">
+                <el-input clearable v-model="form.assetOwnership" :placeholder="t('device.iotdevicef293671-19')" />
               </el-form-item>
-              <el-form-item label="所在地点" prop="address">
-                <el-input clearable v-model="form.address" placeholder="请输入所在地点" />
+              <el-form-item :label="t('device.iotdevicef293671-20')" prop="address">
+                <el-input clearable v-model="form.address" :placeholder="t('device.iotdevicef293671-21')" />
               </el-form-item>
               <el-form-item :label="t('deviceForm.picture')" prop="picUrl" class="image-field">
                 <UploadImg v-model="form.picUrl" height="94px" width="100%" class="size-full" />
               </el-form-item>
-              <el-form-item label="备注" prop="remark" class="remark-field">
+              <el-form-item :label="t('device.iotdevicef293671-22')" prop="remark" class="remark-field">
                 <el-input
                   clearable
                   v-model="form.remark"
                   type="textarea"
                   :rows="4"
-                  placeholder="请输入备注信息" />
+                  :placeholder="t('device.iotdevicef293671-23')" />
               </el-form-item>
             </div>
           </div>
@@ -562,7 +562,7 @@ onMounted(() => {
           <div class="info-card__header">
             <div class="info-card__title">
               <span class="info-card__marker"></span>
-              <span>制造信息</span>
+              <span>{{ t('device.iotdevicef293671-24') }}</span>
             </div>
             <el-button
               link
@@ -592,7 +592,7 @@ onMounted(() => {
                       @click.stop="clearManufacturer" />
                   </template>
                   <template #append>
-                    <el-button @click="selectManufacturer">选择</el-button>
+                    <el-button @click="selectManufacturer">{{ t('device.iotdevicef293671-11') }}</el-button>
                   </template>
                 </el-input>
               </el-form-item>
@@ -617,7 +617,7 @@ onMounted(() => {
                       @click.stop="clearSupplier" />
                   </template>
                   <template #append>
-                    <el-button @click="selectSupplier">选择</el-button>
+                    <el-button @click="selectSupplier">{{ t('device.iotdevicef293671-11') }}</el-button>
                   </template>
                 </el-input>
               </el-form-item>
@@ -651,7 +651,7 @@ onMounted(() => {
           <div class="info-card__header">
             <div class="info-card__title">
               <span class="info-card__marker"></span>
-              <span>财务信息</span>
+              <span>{{ t('device.iotdevicef293671-25') }}</span>
             </div>
             <el-button
               link
@@ -668,7 +668,7 @@ onMounted(() => {
           <div v-show="sectionExpanded.finance" class="info-card__body">
             <div class="form-grid">
               <el-form-item
-                :label="form.assetProperty === 'zy' ? '采购价格' : '租赁价格'"
+                ::label="t('device.iotdevicef293671-26')"
                 prop="plPrice">
                 <el-input-number
                   clearable
@@ -678,23 +678,19 @@ onMounted(() => {
                   align="left"
                   class="w-full!"
                   v-model="form.plPrice"
-                  :placeholder="
-                    form.assetProperty === 'zy' ? '请输入采购价格' : '请输入租赁价格'
-                  " />
+                  ::placeholder="t('device.iotdevicef293671-27')" />
               </el-form-item>
               <el-form-item
-                :label="form.assetProperty === 'zy' ? '采购日期' : '租赁日期'"
+                ::label="t('device.iotdevicef293671-28')"
                 prop="plDate">
                 <el-date-picker
                   v-model="form.plDate"
                   type="date"
                   value-format="x"
-                  :placeholder="
-                    form.assetProperty === 'zy' ? '请选择采购日期' : '请选择租赁日期'
-                  " />
+                  ::placeholder="t('device.iotdevicef293671-29')" />
               </el-form-item>
               <el-form-item
-                :label="form.assetProperty === 'zy' ? '折旧年限' : '租赁年限'"
+                ::label="t('device.iotdevicef293671-30')"
                 prop="plYear">
                 <el-input-number
                   clearable
@@ -704,23 +700,19 @@ onMounted(() => {
                   align="left"
                   class="w-full!"
                   v-model="form.plYear"
-                  :placeholder="
-                    form.assetProperty === 'zy' ? '请输入折旧年限' : '请输入租赁年限'
-                  " />
+                  ::placeholder="t('device.iotdevicef293671-31')" />
               </el-form-item>
               <el-form-item
-                :label="form.assetProperty === 'zy' ? '折旧开始日期' : '租赁开始日期'"
+                ::label="t('device.iotdevicef293671-32')"
                 prop="plStartDate">
                 <el-date-picker
                   v-model="form.plStartDate"
                   type="date"
                   value-format="x"
-                  :placeholder="
-                    form.assetProperty === 'zy' ? '请选择折旧开始日期' : '请选择租赁开始日期'
-                  " />
+                  ::placeholder="t('device.iotdevicef293671-33')" />
               </el-form-item>
               <el-form-item
-                :label="form.assetProperty === 'zy' ? '已提折旧月数' : '已租赁月数'"
+                ::label="t('device.iotdevicef293671-34')"
                 prop="plMonthed">
                 <el-input
                   clearable
@@ -730,12 +722,10 @@ onMounted(() => {
                   align="left"
                   class="w-full!"
                   v-model="form.plMonthed"
-                  :placeholder="
-                    form.assetProperty === 'zy' ? '请输入已提折旧月数' : '请输入已租赁月数'
-                  " />
+                  ::placeholder="t('device.iotdevicef293671-35')" />
               </el-form-item>
               <el-form-item
-                :label="form.assetProperty === 'zy' ? '已提折旧金额' : '已租赁金额'"
+                ::label="t('device.iotdevicef293671-36')"
                 prop="plAmounted">
                 <el-input-number
                   clearable
@@ -745,11 +735,9 @@ onMounted(() => {
                   align="left"
                   class="w-full!"
                   v-model="form.plAmounted"
-                  :placeholder="
-                    form.assetProperty === 'zy' ? '请输入已提折旧金额' : '请输入已租赁金额'
-                  " />
+                  ::placeholder="t('device.iotdevicef293671-37')" />
               </el-form-item>
-              <el-form-item label="剩余金额" prop="remainAmount">
+              <el-form-item :label="t('device.iotdevicef293671-38')" prop="remainAmount">
                 <el-input-number
                   clearable
                   :controls="false"
@@ -758,9 +746,9 @@ onMounted(() => {
                   align="left"
                   class="w-full!"
                   v-model="form.remainAmount"
-                  placeholder="请输入剩余金额" />
+                  :placeholder="t('device.iotdevicef293671-39')" />
               </el-form-item>
-              <el-form-item label="每月折旧金额" prop="monthAmount">
+              <el-form-item :label="t('device.iotdevicef293671-40')" prop="monthAmount">
                 <el-input-number
                   clearable
                   :controls="false"
@@ -769,9 +757,9 @@ onMounted(() => {
                   align="left"
                   class="w-full!"
                   v-model="form.monthAmount"
-                  placeholder="请输入每月折旧金额" />
+                  :placeholder="t('device.iotdevicef293671-41')" />
               </el-form-item>
-              <el-form-item label="总折旧月份" prop="totalMonth">
+              <el-form-item :label="t('device.iotdevicef293671-42')" prop="totalMonth">
                 <el-input-number
                   clearable
                   :controls="false"
@@ -780,10 +768,10 @@ onMounted(() => {
                   align="left"
                   class="w-full!"
                   v-model="form.totalMonth"
-                  placeholder="请输入总折旧月份" />
+                  :placeholder="t('device.iotdevicef293671-43')" />
               </el-form-item>
-              <el-form-item label="币种" prop="currency">
-                <el-input clearable v-model="form.currency" placeholder="请输入币种" />
+              <el-form-item :label="t('device.iotdevicef293671-44')" prop="currency">
+                <el-input clearable v-model="form.currency" :placeholder="t('device.iotdevicef293671-45')" />
               </el-form-item>
             </div>
           </div>
@@ -793,7 +781,7 @@ onMounted(() => {
           <div class="info-card__header">
             <div class="info-card__title">
               <span class="info-card__marker"></span>
-              <span>其他信息</span>
+              <span>{{ t('device.iotdevicef293671-46') }}</span>
             </div>
             <el-button
               link
@@ -820,20 +808,20 @@ onMounted(() => {
                   v-if="field.type === 'text'"
                   clearable
                   v-model="form[field.code]"
-                  :placeholder="`请输入${field.name}`" />
+                  ::placeholder="t('device.iotdevicef293671-47')" />
                 <el-input
                   v-else-if="field.type === 'textarea'"
                   clearable
                   v-model="form[field.code]"
                   type="textarea"
                   :rows="4"
-                  :placeholder="`请输入${field.name}`" />
+                  ::placeholder="t('device.iotdevicef293671-47')" />
                 <el-date-picker
                   v-else-if="field.type === 'date'"
                   v-model="form[field.code]"
                   type="date"
                   value-format="YYYY-MM-DD"
-                  :placeholder="`请选择${field.name}`" />
+                  ::placeholder="t('device.iotdevicef293671-48')" />
                 <el-input-number
                   v-else-if="field.type === 'int'"
                   v-model="form[field.code]"
@@ -842,7 +830,7 @@ onMounted(() => {
                   :min="0"
                   align="left"
                   class="w-full!"
-                  :placeholder="`请输入${field.name}`" />
+                  ::placeholder="t('device.iotdevicef293671-47')" />
                 <el-input-number
                   v-else-if="field.type === 'double'"
                   v-model="form[field.code]"
@@ -851,7 +839,7 @@ onMounted(() => {
                   :min="0"
                   align="left"
                   class="w-full!"
-                  :placeholder="`请输入${field.name}`" />
+                  ::placeholder="t('device.iotdevicef293671-47')" />
               </el-form-item>
             </div>
           </div>
@@ -860,10 +848,10 @@ onMounted(() => {
     </main>
 
     <div class="form-action-bar">
-      <el-button size="default" @click="expandAllSections">一键展开</el-button>
-      <el-button size="default" @click="collapseAllSections">一键收起</el-button>
-      <el-button size="default" @click="handleCancel">取消</el-button>
-      <el-button size="default" type="primary" @click="handleSave">保存</el-button>
+      <el-button size="default" @click="expandAllSections">{{ t('device.iotdevicef293671-49') }}</el-button>
+      <el-button size="default" @click="collapseAllSections">{{ t('device.iotdevicef293671-50') }}</el-button>
+      <el-button size="default" @click="handleCancel">{{ t('device.iotdevicef293671-51') }}</el-button>
+      <el-button size="default" type="primary" @click="handleSave">{{ t('device.iotdevicef293671-52') }}</el-button>
     </div>
   </div>
   <brand-list ref="brandRef" @choose="chooseBrand" />

+ 34 - 46
src/views/pms/device/IotDeviceForm1.vue

@@ -37,7 +37,7 @@
               <el-input
                 v-model="formData.yfDeviceCode"
                 :disabled="formData.yfDeviceCode"
-                placeholder="请输入油服设备编码" />
+                :placeholder="t('device.iotdevicef730970-0')" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -45,12 +45,12 @@
               <el-input
                 v-model="formData.deviceCode"
                 :disabled="formType === 'update'"
-                placeholder="请输入设备编码" />
+                :placeholder="t('device.iotdevicef730970-1')" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item :label="t('iotDevice.name')" prop="deviceName">
-              <lang-input v-model="formData.deviceName" placeholder="请输入设备名称" />
+              <lang-input v-model="formData.deviceName" :placeholder="t('device.iotdevicef730970-2')" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -63,7 +63,7 @@
                 check-strictly
                 node-key="id"
                 filterable
-                placeholder="请选择所在部门" />
+                :placeholder="t('device.iotdevicef730970-3')" />
               <!--              <el-tree-select-->
               <!--                v-model="formData.deptId"-->
               <!--                :data="deptList"-->
@@ -105,7 +105,7 @@
           </el-col>
           <el-col :span="8">
             <el-form-item :label="t('iotDevice.assets')" prop="assetProperty">
-              <el-select v-model="formData.assetProperty" placeholder="请选择" clearable>
+              <el-select v-model="formData.assetProperty" :placeholder="t('device.iotdevicef730970-4')" clearable>
                 <el-option
                   v-for="dict in getStrDictOptions(DICT_TYPE.PMS_ASSET_PROPERTY)"
                   :key="dict.id"
@@ -125,14 +125,14 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="车牌号" prop="carNo">
-              <el-input clearable v-model="formData.carNo" placeholder="请输入车牌号" />
+            <el-form-item :label="t('device.iotdevicef730970-5')" prop="carNo">
+              <el-input clearable v-model="formData.carNo" :placeholder="t('device.iotdevicef730970-6')" />
             </el-form-item>
           </el-col>
 
           <el-col :span="8">
-            <el-form-item label="设备号" prop="deviceNo">
-              <el-input clearable v-model="formData.deviceNo" placeholder="请输入设备号" />
+            <el-form-item :label="t('device.iotdevicef730970-7')" prop="deviceNo">
+              <el-input clearable v-model="formData.deviceNo" :placeholder="t('device.iotdevicef730970-8')" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -143,7 +143,7 @@
                   v-model="formData.model"
                   :placeholder="t('deviceForm.modelHolder')" />
               </el-form-item>
-              <el-button type="info" @click="openModelForm">请选择</el-button>
+              <el-button type="info" @click="openModelForm">{{ t('device.iotdevicef730970-4') }}</el-button>
             </div>
           </el-col>
           <el-col :span="8">
@@ -157,7 +157,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="所在地点" prop="address">
+            <el-form-item :label="t('device.iotdevicef730970-9')" prop="address">
               <el-input v-model="formData.address" height="60px" />
             </el-form-item>
           </el-col>
@@ -264,110 +264,98 @@
         <el-row>
           <el-col :span="8">
             <el-form-item
-              :label="formData.assetProperty === 'zy' ? '采购价格' : '租赁价格'"
+              ::label="t('device.iotdevicef730970-10')"
               prop="plPrice">
               <el-input
                 v-model="formData.plPrice"
                 @input="handleInput(formData.plPrice, 'plPrice')"
-                :placeholder="
-                  formData.assetProperty === 'zy' ? '请输入采购价格' : '请输入租赁价格'
-                " />
+                ::placeholder="t('device.iotdevicef730970-11')" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item
-              :label="formData.assetProperty === 'zy' ? '采购日期' : '租赁日期'"
+              ::label="t('device.iotdevicef730970-12')"
               prop="plDate">
               <el-date-picker
                 style="width: 150%"
                 v-model="formData.plDate"
                 type="date"
                 value-format="x"
-                :placeholder="
-                  formData.assetProperty === 'zy' ? '请输入采购日期' : '请输入租赁日期'
-                " />
+                ::placeholder="t('device.iotdevicef730970-13')" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item
-              :label="formData.assetProperty === 'zy' ? '折旧年限' : '租赁年限'"
+              ::label="t('device.iotdevicef730970-14')"
               prop="plYear">
               <el-input
                 v-model="formData.plYear"
                 type="number"
-                :placeholder="
-                  formData.assetProperty === 'zy' ? '请输入折旧年限' : '请输入租赁年限'
-                " />
+                ::placeholder="t('device.iotdevicef730970-15')" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item
-              :label="formData.assetProperty === 'zy' ? '折旧开始日期' : '租赁开始日期'"
+              ::label="t('device.iotdevicef730970-16')"
               prop="plStartDate">
               <el-date-picker
                 style="width: 150%"
                 v-model="formData.plStartDate"
                 type="date"
                 value-format="x"
-                :placeholder="
-                  formData.assetProperty === 'zy' ? '请选择折旧开始日期' : '请选择租赁开始日期'
-                " />
+                ::placeholder="t('device.iotdevicef730970-17')" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item
-              :label="formData.assetProperty === 'zy' ? '已提折旧月数' : '已租赁月数'"
+              ::label="t('device.iotdevicef730970-18')"
               prop="plMonthed">
               <el-input
                 v-model="formData.plMonthed"
                 type="number"
-                :placeholder="
-                  formData.assetProperty === 'zy' ? '请输入已提折旧月数' : '请输入已租赁月数'
-                " />
+                ::placeholder="t('device.iotdevicef730970-19')" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item
-              :label="formData.assetProperty === 'zy' ? '已提折旧金额' : '已租赁金额'"
+              ::label="t('device.iotdevicef730970-20')"
               prop="plAmounted">
               <el-input
                 v-model="formData.plAmounted"
                 @input="handleInput(formData.plAmounted, 'plAmounted')"
-                :placeholder="
-                  formData.assetProperty === 'zy' ? '请输入已提折旧金额' : '已租赁金额'
-                " />
+                ::placeholder="t('device.iotdevicef730970-21')" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="剩余金额" prop="remainAmount">
+            <el-form-item :label="t('device.iotdevicef730970-22')" prop="remainAmount">
               <el-input
                 v-model="formData.remainAmount"
                 @input="handleInput(formData.remainAmount, 'remainAmount')"
-                placeholder="请输入剩余金额" />
+                :placeholder="t('device.iotdevicef730970-23')" />
             </el-form-item>
           </el-col>
 
           <el-col :span="8">
-            <el-form-item label="每月折旧金额" prop="monthAmount">
+            <el-form-item :label="t('device.iotdevicef730970-24')" prop="monthAmount">
               <el-input
                 v-model="formData.monthAmount"
                 @input="handleInput(formData.monthAmount, 'monthAmount')"
-                placeholder="请输入每月折旧金额" />
+                :placeholder="t('device.iotdevicef730970-25')" />
             </el-form-item>
           </el-col>
 
           <el-col :span="8">
-            <el-form-item label="总折旧月份" prop="totalMonth">
+            <el-form-item :label="t('device.iotdevicef730970-26')" prop="totalMonth">
               <el-input
                 v-model="formData.totalMonth"
                 @input="handleInput(formData.totalMonth, 'totalMonth')"
-                placeholder="请输入总折旧月份" />
+                :placeholder="t('device.iotdevicef730970-27')" />
             </el-form-item>
           </el-col>
 
           <el-col :span="8">
-            <el-form-item label="币种" prop="currency">
-              <el-input v-model="formData.currency" placeholder="请输入币种" />
+            <el-form-item :label="t('device.iotdevicef730970-28')" prop="currency">
+              <el-input v-model="formData.currency" :placeholder="t('device.iotdevicef730970-29')" />
             </el-form-item>
           </el-col>
         </el-row>
@@ -395,13 +383,13 @@
               <el-input
                 v-if="field.type === 'text'"
                 v-model="formData[field.code]"
-                :placeholder="'请输入' + field.name"
+                ::placeholder="t('device.iotdevicef730970-30')"
                 :type="field.type || 'text'" />
 
               <el-select
                 v-else-if="field.type === 'enum'"
                 v-model="formData[field.code]"
-                :placeholder="'请输入' + field.name"
+                ::placeholder="t('device.iotdevicef730970-30')"
                 clearable
                 filterable>
                 <el-option
@@ -427,7 +415,7 @@
                 v-else-if="field.type === 'date'"
                 v-model="formData[field.code]"
                 :type="field.type || 'date'"
-                :placeholder="'请输入' + field.name"
+                ::placeholder="t('device.iotdevicef730970-30')"
                 value-format="YYYY-MM-DD"
                 style="width: 150%" />
             </el-form-item>

+ 34 - 38
src/views/pms/device/IotDeviceFormAdd.vue

@@ -44,7 +44,7 @@
               <el-input
                 v-model="formData.yfDeviceCode"
                 :disabled="formData.yfDeviceCode"
-                placeholder="请输入油服设备编码"
+                :placeholder="t('device.iotdevicef777770-0')"
               />
             </el-form-item>
           </el-col>
@@ -53,14 +53,14 @@
               <el-input
                 v-model="formData.deviceCode"
                 :disabled="formType === 'update'"
-                placeholder="请输入设备编码"
+                :placeholder="t('device.iotdevicef777770-1')"
               />
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item :label="t('iotDevice.name')" prop="deviceName">
               <!--              <el-input v-model="formData.deviceName" placeholder="请输入设备名称" />-->
-              <lang-input v-model="formData.deviceName" placeholder="请输入设备名称" />
+              <lang-input v-model="formData.deviceName" :placeholder="t('device.iotdevicef777770-2')" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -73,7 +73,7 @@
                 check-strictly
                 node-key="id"
                 filterable
-                placeholder="请选择所在部门"
+                :placeholder="t('device.iotdevicef777770-3')"
               />
               <!--              <el-tree-select-->
               <!--                v-model="formData.deptId"-->
@@ -119,7 +119,7 @@
           </el-col>
           <el-col :span="8">
             <el-form-item :label="t('iotDevice.assets')" prop="assetProperty">
-              <el-select v-model="formData.assetProperty" placeholder="请选择" clearable>
+              <el-select v-model="formData.assetProperty" :placeholder="t('device.iotdevicef777770-4')" clearable>
                 <el-option
                   v-for="dict in getStrDictOptions(DICT_TYPE.PMS_ASSET_PROPERTY)"
                   :key="dict.id"
@@ -142,14 +142,14 @@
           </el-col>
 
           <el-col :span="8">
-            <el-form-item label="车牌号" prop="carNo">
-              <el-input clearable v-model="formData.carNo" placeholder="请输入车牌号" />
+            <el-form-item :label="t('device.iotdevicef777770-5')" prop="carNo">
+              <el-input clearable v-model="formData.carNo" :placeholder="t('device.iotdevicef777770-6')" />
             </el-form-item>
           </el-col>
 
           <el-col :span="8">
-            <el-form-item label="设备号" prop="deviceNo">
-              <el-input clearable v-model="formData.deviceNo" placeholder="请输入设备号" />
+            <el-form-item :label="t('device.iotdevicef777770-7')" prop="deviceNo">
+              <el-input clearable v-model="formData.deviceNo" :placeholder="t('device.iotdevicef777770-8')" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -161,7 +161,7 @@
                   :placeholder="t('deviceForm.modelHolder')"
                 />
               </el-form-item>
-              <el-button type="info" @click="openModelForm">请选择</el-button>
+              <el-button type="info" @click="openModelForm">{{ t('device.iotdevicef777770-4') }}</el-button>
             </div>
           </el-col>
           <el-col :span="8">
@@ -175,7 +175,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="所在地点" prop="address">
+            <el-form-item :label="t('device.iotdevicef777770-9')" prop="address">
               <el-input v-model="formData.address" height="60px" />
             </el-form-item>
           </el-col>
@@ -292,19 +292,19 @@
         <el-row>
           <el-col :span="8">
             <el-form-item
-              :label="formData.assetProperty === 'zy' ? '采购价格' : '租赁价格'"
+              ::label="t('device.iotdevicef777770-10')"
               prop="plPrice"
             >
               <el-input
                 v-model="formData.plPrice"
                 @input="handleInput(formData.plPrice, 'plPrice')"
-                :placeholder="formData.assetProperty === 'zy' ? '请输入采购价格' : '请输入租赁价格'"
+                ::placeholder="t('device.iotdevicef777770-11')"
               />
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item
-              :label="formData.assetProperty === 'zy' ? '采购日期' : '租赁日期'"
+              ::label="t('device.iotdevicef777770-12')"
               prop="plDate"
             >
               <el-date-picker
@@ -312,25 +312,25 @@
                 v-model="formData.plDate"
                 type="date"
                 value-format="x"
-                :placeholder="formData.assetProperty === 'zy' ? '请输入采购日期' : '请输入租赁日期'"
+                ::placeholder="t('device.iotdevicef777770-13')"
               />
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item
-              :label="formData.assetProperty === 'zy' ? '折旧年限' : '租赁年限'"
+              ::label="t('device.iotdevicef777770-14')"
               prop="plYear"
             >
               <el-input
                 v-model="formData.plYear"
                 type="number"
-                :placeholder="formData.assetProperty === 'zy' ? '请输入折旧年限' : '请输入租赁年限'"
+                ::placeholder="t('device.iotdevicef777770-15')"
               />
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item
-              :label="formData.assetProperty === 'zy' ? '折旧开始日期' : '租赁开始日期'"
+              ::label="t('device.iotdevicef777770-16')"
               prop="plStartDate"
             >
               <el-date-picker
@@ -338,71 +338,67 @@
                 v-model="formData.plStartDate"
                 type="date"
                 value-format="x"
-                :placeholder="
-                  formData.assetProperty === 'zy' ? '请选择折旧开始日期' : '请选择租赁开始日期'
-                "
+                ::placeholder="t('device.iotdevicef777770-17')"
               />
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item
-              :label="formData.assetProperty === 'zy' ? '已提折旧月数' : '已租赁月数'"
+              ::label="t('device.iotdevicef777770-18')"
               prop="plMonthed"
             >
               <el-input
                 v-model="formData.plMonthed"
                 type="number"
-                :placeholder="
-                  formData.assetProperty === 'zy' ? '请输入已提折旧月数' : '请输入已租赁月数'
-                "
+                ::placeholder="t('device.iotdevicef777770-19')"
               />
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item
-              :label="formData.assetProperty === 'zy' ? '已提折旧金额' : '已租赁金额'"
+              ::label="t('device.iotdevicef777770-20')"
               prop="plAmounted"
             >
               <el-input
                 v-model="formData.plAmounted"
                 @input="handleInput(formData.plAmounted, 'plAmounted')"
-                :placeholder="formData.assetProperty === 'zy' ? '请输入已提折旧金额' : '已租赁金额'"
+                ::placeholder="t('device.iotdevicef777770-21')"
               />
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="剩余金额" prop="remainAmount">
+            <el-form-item :label="t('device.iotdevicef777770-22')" prop="remainAmount">
               <el-input
                 v-model="formData.remainAmount"
                 @input="handleInput(formData.remainAmount, 'remainAmount')"
-                placeholder="请输入剩余金额"
+                :placeholder="t('device.iotdevicef777770-23')"
               />
             </el-form-item>
           </el-col>
 
           <el-col :span="8">
-            <el-form-item label="每月折旧金额" prop="monthAmount">
+            <el-form-item :label="t('device.iotdevicef777770-24')" prop="monthAmount">
               <el-input
                 v-model="formData.monthAmount"
                 @input="handleInput(formData.monthAmount, 'monthAmount')"
-                placeholder="请输入每月折旧金额"
+                :placeholder="t('device.iotdevicef777770-25')"
               />
             </el-form-item>
           </el-col>
 
           <el-col :span="8">
-            <el-form-item label="总折旧月份" prop="totalMonth">
+            <el-form-item :label="t('device.iotdevicef777770-26')" prop="totalMonth">
               <el-input
                 v-model="formData.totalMonth"
                 @input="handleInput(formData.totalMonth, 'totalMonth')"
-                placeholder="请输入总折旧月份"
+                :placeholder="t('device.iotdevicef777770-27')"
               />
             </el-form-item>
           </el-col>
 
           <el-col :span="8">
-            <el-form-item label="币种" prop="currency">
-              <el-input v-model="formData.currency" placeholder="请输入币种" />
+            <el-form-item :label="t('device.iotdevicef777770-28')" prop="currency">
+              <el-input v-model="formData.currency" :placeholder="t('device.iotdevicef777770-29')" />
             </el-form-item>
           </el-col>
         </el-row>
@@ -432,14 +428,14 @@
               <el-input
                 v-if="field.type === 'text'"
                 v-model="formData[field.code]"
-                :placeholder="'请输入' + field.name"
+                ::placeholder="t('device.iotdevicef777770-30')"
                 :type="field.type || 'text'"
               />
 
               <el-select
                 v-else-if="field.type === 'enum'"
                 v-model="formData[field.code]"
-                :placeholder="'请输入' + field.name"
+                ::placeholder="t('device.iotdevicef777770-30')"
                 clearable
                 filterable
               >
@@ -469,7 +465,7 @@
                 v-else-if="field.type === 'date'"
                 v-model="formData[field.code]"
                 :type="field.type || 'date'"
-                :placeholder="'请输入' + field.name"
+                ::placeholder="t('device.iotdevicef777770-30')"
                 value-format="YYYY-MM-DD"
                 style="width: 150%"
               />

+ 2 - 2
src/views/pms/device/MaterialListDrawerDevice.vue

@@ -14,7 +14,7 @@
 
         <div class="info-header">
           <div class="info-item">
-            <span class="info-label">设备分类:</span>
+            <span class="info-label">{{ t('device.materialli127293-0') }}</span>
             <span class="info-value">{{ rowInfo.deviceCategoryName }}</span>
           </div>
           <div class="separator"></div> <!-- 分隔线 -->
@@ -40,7 +40,7 @@
                     v-model.number="scope.row.quantity"
                     type="number"
                     size="small"
-                    placeholder="请输入数量"
+                    :placeholder="t('device.materialli127293-1')"
                     @blur="clearQuantityError(scope.row)"
                     @keyup.enter="handleUpdate(scope.row)"
                     :class="{ 'error-input': scope.row.quantityError }"

+ 12 - 10
src/views/pms/device/ModelList.vue

@@ -1,5 +1,5 @@
 <template>
-  <Dialog v-model="dialogVisible" title="选择规格型号" style="width: 1100px; min-height: 500px">
+  <Dialog v-model="dialogVisible" :title="t('device.modellistv464422-0')" style="width: 1100px; min-height: 500px">
     <ContentWrap>
       <el-form
         class="-mb-15px"
@@ -8,18 +8,18 @@
         :inline="true"
         label-width="68px"
       >
-        <el-form-item label="型号名称" prop="name">
+        <el-form-item :label="t('device.modellistv464422-1')" prop="name">
           <el-input
             v-model="queryParams.name"
-            placeholder="请输入型号名称"
+            :placeholder="t('device.modellistv464422-2')"
             clearable
             @keyup.enter="handleQuery"
             class="!w-240px"
           />
         </el-form-item>
         <el-form-item>
-          <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
-          <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
+          <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" />{{ t('device.modellistv464422-3') }}</el-button>
+          <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" />{{ t('device.modellistv464422-4') }}</el-button>
         </el-form-item>
       </el-form>
     </ContentWrap>
@@ -31,7 +31,7 @@
         :show-overflow-tooltip="true"
         @row-click="handleRowClick"
       >
-        <el-table-column width="60" label="选择">
+        <el-table-column width="60" :label="t('device.modellistv464422-5')">
           <template #default="{ row }">
             <el-radio
               :model-value="selectedRow?.id"
@@ -41,15 +41,15 @@
             />
           </template>
         </el-table-column>
-        <el-table-column label="型号名称" align="center" prop="name" />
-        <el-table-column label="符合标准" align="center" prop="standard" />
-        <el-table-column label="状态" align="center" prop="status">
+        <el-table-column :label="t('device.modellistv464422-1')" align="center" prop="name" />
+        <el-table-column :label="t('device.modellistv464422-6')" align="center" prop="standard" />
+        <el-table-column :label="t('device.modellistv464422-7')" align="center" prop="status">
           <template #default="scope">
             <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
           </template>
         </el-table-column>
         <el-table-column
-          label="创建时间"
+          :label="t('device.modellistv464422-8')"
           align="center"
           prop="createTime"
           width="180"
@@ -69,10 +69,12 @@
 
 <script setup lang="ts">
 import { DictDataVO } from '@/api/system/dict/dict.data'
+import { useI18n } from 'vue-i18n'
 import * as ModelApi from '@/api/pms/model'
 import { DICT_TYPE } from '@/utils/dict'
 import { dateFormatter } from '@/utils/formatTime'
 import {propTypes} from "@/utils/propTypes";
+const { t } = useI18n()
 
 const emit = defineEmits(['choose']) // 定义 success 事件,用于操作成功后的回调
 const dialogVisible = ref(false) // 弹窗的是否展示

+ 4 - 6
src/views/pms/device/allotlog/ConfigDeviceAllot.vue

@@ -71,7 +71,7 @@
         <el-form class="target-form" label-position="top" size="default">
           <el-form-item>
             <template #label>
-              <span>调拨部门</span>
+              <span>{{ t('device.configdevi641838-0') }}</span>
               <span class="required-star">*</span>
             </template>
             <el-tree-select
@@ -116,9 +116,7 @@
             </el-select>
           </el-form-item>
 
-          <div class="target-tip">
-            选择目标部门后会加载该部门人员,调拨记录会按设备逐条生成预览。
-          </div>
+          <div class="target-tip">{{ t('device.configdevi641838-1') }}</div>
         </el-form>
       </section>
     </div>
@@ -165,8 +163,8 @@
         settings-cache-key="pms-device-allot-config-record"
         class="record-table">
         <ZmTableColumn prop="deviceNames" :label="t('deviceStatus.deviceName')" min-width="240" />
-        <ZmTableColumn prop="oldDeptName" label="原部门" min-width="160" />
-        <ZmTableColumn prop="deptName" label="调拨部门" min-width="160" />
+        <ZmTableColumn prop="oldDeptName" :label="t('device.configdevi641838-2')" min-width="160" />
+        <ZmTableColumn prop="deptName" :label="t('device.configdevi641838-0')" min-width="160" />
         <ZmTableColumn prop="personNames" :label="t('devicePerson.rp')" min-width="220">
           <template #default="{ row }">
             <span>{{ row.personNames || '未选择责任人' }}</span>

+ 8 - 12
src/views/pms/device/allotlog/DeviceAllot.vue

@@ -160,7 +160,7 @@ onMounted(() => {
       ref="queryFormRef"
       :model="queryParams"
       size="default"
-      label-width="68px"
+      label-width="auto"
       class="device-allot-query bg-white dark:bg-[#1d1e1f] rounded-lg shadow px-6 py-3 min-w-0">
       <div class="query-row">
         <el-form-item :label="t('devicePerson.deviceCode')" prop="deviceCode">
@@ -179,7 +179,7 @@ onMounted(() => {
             class="query-control"
             @keyup.enter="handleQuery" />
         </el-form-item>
-        <el-form-item :label="t('deviceStatus.transfer')" prop="setFlag" label-width="90px">
+        <el-form-item :label="t('deviceStatus.transfer')" prop="setFlag">
           <el-select
             v-model="queryParams.setFlag"
             :placeholder="t('deviceStatus.choose')"
@@ -192,22 +192,18 @@ onMounted(() => {
               :value="dict.value" />
           </el-select>
         </el-form-item>
-        <el-form-item label="创建时间" prop="createTime">
+        <el-form-item :label="t('device.deviceallo663824-0')" prop="createTime">
           <el-date-picker
             v-model="queryParams.createTime"
             value-format="YYYY-MM-DD HH:mm:ss"
             type="daterange"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
+            start-:placeholder="t('device.deviceallo663824-1')"
+            end-:placeholder="t('device.deviceallo663824-2')"
             :shortcuts="rangeShortcuts"
             :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
             class="query-control query-control--date" />
         </el-form-item>
-        <el-form-item
-          v-show="ifShow"
-          :label="t('devicePerson.status')"
-          prop="deviceStatus"
-          label-width="85px">
+        <el-form-item v-show="ifShow" :label="t('devicePerson.status')" prop="deviceStatus">
           <el-select
             v-model="queryParams.deviceStatus"
             :placeholder="t('devicePerson.status')"
@@ -269,8 +265,8 @@ onMounted(() => {
           :loading="exportLoading"
           @click="handleExport"
           v-hasPermi="['rq:iot-device:export']">
-          <Icon icon="ep:download" class="mr-5px" />导出
-        </el-button>
+          <Icon icon="ep:download" class="mr-5px" />{{ t('device.deviceallo663824-3') }}</el-button
+        >
       </el-form-item>
     </el-form>
 

+ 1 - 1
src/views/pms/device/allotlog/DeviceAllotLogDrawer.vue

@@ -16,7 +16,7 @@
           </div>
           <div>
             <div class="drawer-title">{{ t('configPerson.adjustmentRecords') }}</div>
-            <div class="drawer-subtitle">查看设备调拨前后的部门变化记录</div>
+            <div class="drawer-subtitle">{{ t('device.deviceallo873237-0') }}</div>
           </div>
         </div>
         <el-button circle size="default" @click="handleClose">

+ 10 - 10
src/views/pms/device/bom/BomInfo.vue

@@ -16,18 +16,18 @@
             :inline="true"
             label-width="68px"
           >
-            <el-form-item label="物料名称" prop="name">
+            <el-form-item :label="t('device.bominfovue772542-0')" prop="name">
               <el-input
                 v-model="queryParams.name"
-                placeholder="请输入物料名称"
+                :placeholder="t('device.bominfovue772542-1')"
                 clearable
                 @keyup.enter="handleQuery"
                 class="!w-240px"
               />
             </el-form-item>
             <el-form-item>
-              <el-button @click="handleQuery"><Icon icon="ep:search" />搜索</el-button>
-              <el-button @click="resetQuery"><Icon icon="ep:refresh" />重置</el-button>
+              <el-button @click="handleQuery"><Icon icon="ep:search" />{{ t('device.bominfovue772542-2') }}</el-button>
+              <el-button @click="resetQuery"><Icon icon="ep:refresh" />{{ t('device.bominfovue772542-3') }}</el-button>
             </el-form-item>
           </el-form>
         </ContentWrap>
@@ -38,13 +38,13 @@
             :stripe="true"
             :show-overflow-tooltip="true"
           >
-            <el-table-column label="物料编码" align="center" prop="code" />
-            <el-table-column label="物料名称" align="center" prop="name" />
-            <el-table-column label="规格型号" align="center" prop="model" />
-            <el-table-column label="单位" align="center" prop="unit" />
-            <el-table-column label="备注" align="center" prop="remark" />
+            <el-table-column :label="t('device.bominfovue772542-4')" align="center" prop="code" />
+            <el-table-column :label="t('device.bominfovue772542-0')" align="center" prop="name" />
+            <el-table-column :label="t('device.bominfovue772542-5')" align="center" prop="model" />
+            <el-table-column :label="t('device.bominfovue772542-6')" align="center" prop="unit" />
+            <el-table-column :label="t('device.bominfovue772542-7')" align="center" prop="remark" />
             <el-table-column
-              label="创建时间"
+              :label="t('device.bominfovue772542-8')"
               align="center"
               prop="createTime"
               :formatter="dateFormatter"

+ 42 - 52
src/views/pms/device/bom/BomList.vue

@@ -1,7 +1,9 @@
 <template>
-  <doc-alert title="用户体系" url="https://doc.iocoder.cn/user-center/" />
-  <doc-alert title="三方登陆" url="https://doc.iocoder.cn/social-user/" />
-  <doc-alert title="Excel 导入导出" url="https://doc.iocoder.cn/excel-import-and-export/" />
+  <doc-alert :title="t('device.bomlistvue481710-0')" url="https://doc.iocoder.cn/user-center/" />
+  <doc-alert :title="t('device.bomlistvue481710-1')" url="https://doc.iocoder.cn/social-user/" />
+  <doc-alert
+    :title="t('device.bomlistvue481710-2')"
+    url="https://doc.iocoder.cn/excel-import-and-export/" />
 
   <!-- 搜索 -->
   <ContentWrap>
@@ -10,43 +12,40 @@
       :model="queryParams"
       ref="queryFormRef"
       :inline="true"
-      label-width="110px"
-    >
+      label-width="110px">
       <el-form-item :label="t('bomList.bomNodeName')" prop="name">
         <el-input
           v-model="queryParams.name"
           :placeholder="t('bomList.nameHolder')"
           clearable
           @keyup.enter="handleQuery"
-          class="!w-240px"
-        />
+          class="!w-240px" />
       </el-form-item>
       <el-form-item :label="t('bomList.bomNode')" prop="status">
         <el-select
           v-model="queryParams.status"
           :placeholder="t('bomList.nodeHolder')"
           clearable
-          class="!w-240px"
-        >
+          class="!w-240px">
           <el-option
             v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
             :key="dict.value"
             :label="dict.label"
-            :value="dict.value"
-          />
+            :value="dict.value" />
         </el-select>
       </el-form-item>
       <el-form-item>
-        <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" />
-          {{ t('bomList.search') }}</el-button>
-        <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" />
-          {{ t('bomList.reset') }}</el-button>
+        <el-button @click="handleQuery"
+          ><Icon icon="ep:search" class="mr-5px" /> {{ t('bomList.search') }}</el-button
+        >
+        <el-button @click="resetQuery"
+          ><Icon icon="ep:refresh" class="mr-5px" /> {{ t('bomList.reset') }}</el-button
+        >
         <el-button
           type="primary"
           plain
           @click="openForm('create', null)"
-          v-hasPermi="['rq:iot-bom:create']"
-        >
+          v-hasPermi="['rq:iot-bom:create']">
           <Icon icon="ep:plus" class="mr-5px" />
           {{ t('bomList.add') }}
         </el-button>
@@ -67,17 +66,15 @@
       row-key="id"
       :default-expand-all="isExpandAll"
       v-if="refreshTable"
-      style="width: 100%"
-    >
+      style="width: 100%">
       <el-table-column prop="name" :label="t('bomList.bomNodeName')">
         <template #default="scope">
           <!-- 使用 el-tooltip 包裹内容 -->
           <el-tooltip
             effect="dark"
-            :content="`设备分类:${scope.row.deviceCategoryName || '暂无'}`"
+            ::content="t('device.bomlistvue481710-3')"
             placement="top-start"
-            :disabled="!scope.row.deviceCategoryName"
-          >
+            :disabled="!scope.row.deviceCategoryName">
             <!-- 原有显示名称 -->
             <span class="bom-node-name">
               {{ scope.row.name }}
@@ -87,24 +84,22 @@
       </el-table-column>
       <!-- <el-table-column prop="deviceCategoryName" :label="t('info.deviceClass')" /> -->
       <el-table-column prop="sort" :label="t('common.sort')" />
-      <el-table-column label="维修" width="100">
+      <el-table-column :label="t('device.bomlistvue481710-4')" width="100">
         <template #default="scope">
           <el-switch
             :model-value="scope.row.type?.includes(1)"
             active-value
             inactive-value
-            disabled
-          />
+            disabled />
         </template>
       </el-table-column>
-      <el-table-column label="保养" width="100">
+      <el-table-column :label="t('device.bomlistvue481710-5')" width="100">
         <template #default="scope">
           <el-switch
             :model-value="scope.row.type?.includes(2)"
             active-value
             inactive-value
-            disabled
-          />
+            disabled />
         </template>
       </el-table-column>
       <!-- <el-table-column prop="status" :label="t('common.status')">
@@ -119,32 +114,28 @@
             link
             type="primary"
             @click="openForm('update', scope.row)"
-            v-hasPermi="['rq:iot-bom:update']"
-          >
+            v-hasPermi="['rq:iot-bom:update']">
             {{ t('modelTemplate.update') }}
           </el-button>
           <el-button
             link
             type="primary"
             @click="openSelectMaterialForm(scope.row)"
-            v-hasPermi="['rq:iot-bom:update']"
-          >
+            v-hasPermi="['rq:iot-bom:update']">
             {{ t('workOrderMaterial.added') }}
           </el-button>
           <el-button
             link
             type="primary"
             @click="handleView(scope.row)"
-            v-hasPermi="['rq:iot-bom:update']"
-          >
+            v-hasPermi="['rq:iot-bom:update']">
             {{ t('bomList.materialDetail') }}
           </el-button>
           <el-button
             link
             type="danger"
             @click="handleDelete(scope.row.id)"
-            v-hasPermi="['rq:iot-bom:delete']"
-          >
+            v-hasPermi="['rq:iot-bom:delete']">
             {{ t('action.del') }}
           </el-button>
         </template>
@@ -153,7 +144,7 @@
   </ContentWrap>
 
   <!-- 添加或修改 Bom树节点 对话框 -->
-  <BomFormDevice ref="formRef"  :deviceId="props.deviceId" @success="getList" />
+  <BomFormDevice ref="formRef" :deviceId="props.deviceId" @success="getList" />
   <!-- 添加物料列表 -->
   <MaterialList ref="materialListRef" @choose="chooseMaterial" />
   <!-- 抽屉组件 -->
@@ -161,11 +152,10 @@
     :model-value="drawerVisible"
     @update:model-value="(val) => (drawerVisible = val)"
     :node-id="currentBomNodeId"
-    :deviceId = "props.deviceId"
+    :deviceId="props.deviceId"
     ref="showDrawer"
     :row-info="currentRowInfo"
-    @refresh="handleDrawerClosed"
-  />
+    @refresh="handleDrawerClosed" />
 </template>
 <script lang="ts" setup>
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
@@ -190,7 +180,7 @@ const loading = ref(true) // 列表的加载中
 const currentBomNodeId = ref() // 当前选中的bom节点
 const refreshTable = ref(true) // 重新渲染表格状态
 const list = ref() // 列表的数据
-const props = defineProps<{ deviceId?: number , deviceCategoryName?:string }>()
+const props = defineProps<{ deviceId?: number; deviceCategoryName?: string }>()
 
 // 添加存储当前行信息的变量 抽屉页面使用
 const currentRowInfo = ref({
@@ -215,7 +205,7 @@ const CommonBomMaterialData = ref({
   code: undefined,
   materialId: undefined,
   quantity: undefined,
-  deviceId: undefined,
+  deviceId: undefined
 })
 
 // 从 Store 中获取左侧设备分类树选中的 节点ID
@@ -262,7 +252,7 @@ const handleView = async (row) => {
 const chooseMaterial = async (selectedMaterials) => {
   // 将物料关联到设备bom节点
   try {
-    const materialsData = selectedMaterials.map(material => ({
+    const materialsData = selectedMaterials.map((material) => ({
       deviceCategoryId: CommonBomMaterialData.value.deviceCategoryId,
       deviceId: props.deviceId,
       bomNodeId: currentBomNodeId.value,
@@ -327,7 +317,7 @@ const openForm = (type: string, row) => {
   formRef.value.open(type, null)
 }
 
-/** 展开/折叠操作 */
+/** {{t('common.toggle')}}操作 */
 const toggleExpandAll = () => {
   refreshTable.value = false
   isExpandAll.value = !isExpandAll.value
@@ -347,28 +337,28 @@ const findNodeById = (nodes: any[], id: number): any | undefined => {
   // 遍历当前层级节点
   for (const node of nodes) {
     // 1. 检查当前节点是否匹配
-    if (node.id === id) return node;
+    if (node.id === id) return node
 
     // 2. 检查当前节点是否有子节点
     if (node.children && node.children.length > 0) {
       // 递归搜索子节点
-      const foundInChildren = findNodeById(node.children, id);
-      if (foundInChildren) return foundInChildren;
+      const foundInChildren = findNodeById(node.children, id)
+      if (foundInChildren) return foundInChildren
     }
   }
 
-  return undefined; // 未找到
-};
+  return undefined // 未找到
+}
 
 /** 删除按钮操作 */
 const handleDelete = async (id: number) => {
   try {
     // 查找目标节点及其在树中的位置
-    const targetNode = findNodeById(list.value, id);
+    const targetNode = findNodeById(list.value, id)
     // 检查是否存在子节点(使用 children 属性)
     if (targetNode && targetNode.children && targetNode.children.length > 0) {
-      message.error('当前BOM节点包含子节点,不可删除');
-      return;
+      message.error('当前BOM节点包含子节点,不可删除')
+      return
     }
 
     // 删除的二次确认

+ 12 - 12
src/views/pms/device/bom/BomTree.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <el-input v-model="deptName" class="mb-20px" clearable placeholder="请输入BOM名称">
+    <el-input v-model="deptName" class="mb-20px" clearable :placeholder="t('device.bomtreevue000110-0')">
       <template #prefix>
         <Icon icon="ep:search" />
       </template>
@@ -42,10 +42,10 @@
   </div>
   <div v-show="menuVisible" ref="contextMenuRef" class="custom-menu" :style="{ left: menuX + 'px', top: menuY + 'px' }">
     <ul>
-      <li style="border-bottom: 1px solid #ccc;" @click="handleMenuClick('add')">新增子节点</li>
-      <li style="border-bottom: 1px solid #ccc;" @click="handleMenuClick('edit')">编辑节点</li>
-      <li @click="handleMenuClick('delete')">删除节点</li>
-      <li @click="handleMenuClick('copy')">复制</li>
+      <li style="border-bottom: 1px solid #ccc;" @click="handleMenuClick('add')">{{ t('device.bomtreevue000110-1') }}</li>
+      <li style="border-bottom: 1px solid #ccc;" @click="handleMenuClick('edit')">{{ t('device.bomtreevue000110-2') }}</li>
+      <li @click="handleMenuClick('delete')">{{ t('device.bomtreevue000110-3') }}</li>
+      <li @click="handleMenuClick('copy')">{{ t('device.bomtreevue000110-4') }}</li>
     </ul>
   </div>
 
@@ -57,24 +57,24 @@
       :rules="formRules"
       label-width="80px"
     >
-      <el-form-item label="资料分类名称" prop="name" label-width="110px">
-        <el-input v-model="formData.name" placeholder="请输入资料分类名称" />
+      <el-form-item :label="t('device.bomtreevue000110-5')" prop="name" label-width="110px">
+        <el-input v-model="formData.name" :placeholder="t('device.bomtreevue000110-6')" />
       </el-form-item>
-      <el-form-item label="显示排序" prop="sort" label-width="110px">
+      <el-form-item :label="t('device.bomtreevue000110-7')" prop="sort" label-width="110px">
         <el-input-number v-model="formData.sort" :min="0" controls-position="right" />
       </el-form-item>
-      <el-form-item label="备注" prop="remark" label-width="110px">
+      <el-form-item :label="t('device.bomtreevue000110-8')" prop="remark" label-width="110px">
         <el-input
           v-model="formData.remark"
           maxlength="11"
-          placeholder="请输入备注"
+          :placeholder="t('device.bomtreevue000110-9')"
           type="textarea"
         />
       </el-form-item>
     </el-form>
     <template #footer>
-      <el-button type="primary" @click="submitForm">确 定</el-button>
-      <el-button @click="dialogVisible = false">取 消</el-button>
+      <el-button type="primary" @click="submitForm">{{ t('device.bomtreevue000110-10') }}</el-button>
+      <el-button @click="dialogVisible = false">{{ t('device.bomtreevue000110-11') }}</el-button>
     </template>
   </Dialog>
 </template>

+ 34 - 32
src/views/pms/device/completeKanban/index.vue

@@ -55,11 +55,11 @@
 
             <div class="space-y-3">
               <!-- <DataRow label="氧气纯度" value="99.66 %" button="启停按钮" button-color="green" /> -->
-              <DataRow label="氧气压力" value="0.54 MPa" />
-              <DataRow label="氧气瞬时流量" value="3002.10 Nm³" />
-              <DataRow label="氧气累计流量" value="219.6217 万Nm³" />
+              <DataRow :label="t('device.indexvue257540-0')" value="0.54 MPa" />
+              <DataRow :label="t('device.indexvue257540-1')" value="3002.10 Nm³" />
+              <DataRow :label="t('device.indexvue257540-2')" value="219.6217 万Nm³" />
               <div class="flex items-center justify-between mt-4">
-                <span class="text-cyan-200">运行状态</span>
+                <span class="text-cyan-200">{{ t('device.indexvue257540-3') }}</span>
                 <div class="status-indicator status-active"></div>
               </div>
             </div>
@@ -68,19 +68,19 @@
           <!-- 空气处理参数 -->
           <div class="panel">
             <div class="flex justify-between items-center panel-title">
-              <h4>空气处理参数</h4>
+              <h4>{{ t('device.indexvue257540-4') }}</h4>
               <dv-decoration3 style="width: 120px; height: 30px" />
             </div>
             <div class="space-y-3">
               <!-- <DataRow label="出口温度" value="6.7 ℃" button="启停按钮" button-color="green" /> -->
-              <DataRow label="出口压力" value="0.6 MPa" />
+              <DataRow :label="t('device.indexvue257540-5')" value="0.6 MPa" />
               <div class="flex items-center justify-between mt-4">
-                <span class="text-cyan-200">冷干机运行状态</span>
+                <span class="text-cyan-200">{{ t('device.indexvue257540-6') }}</span>
                 <div class="status-indicator status-inactive"></div>
               </div>
 
               <div class="flex items-center justify-between mt-4">
-                <span class="text-cyan-200">风机运行状态</span>
+                <span class="text-cyan-200">{{ t('device.indexvue257540-7') }}</span>
                 <div class="status-indicator status-active"></div>
               </div>
             </div>
@@ -95,10 +95,10 @@
 
             <div class="space-y-3">
               <!-- <DataRow label="排气压力" value="3.47 MPa" button="启停按钮" button-color="green" /> -->
-              <DataRow label="排气温度" value="107.0 ℃" />
-              <DataRow label="总用电能" value="247406.4 kWh" />
+              <DataRow :label="t('device.indexvue257540-8')" value="107.0 ℃" />
+              <DataRow :label="t('device.indexvue257540-9')" value="247406.4 kWh" />
               <div class="flex items-center justify-between mt-4">
-                <span class="text-cyan-200">运行状态</span>
+                <span class="text-cyan-200">{{ t('device.indexvue257540-3') }}</span>
                 <div class="status-indicator status-active"></div>
               </div>
             </div>
@@ -125,15 +125,15 @@
               <div v-for="(unit, i) in compressorUnits" :key="i" class="space-y-2 text-center">
                 <div class="text-cyan-300 font-bold mb-2">{{ unit.name }}</div>
                 <div class="text-sm">
-                  <div class="text-cyan-200">排气压力</div>
+                  <div class="text-cyan-200">{{ t('device.indexvue257540-10') }}</div>
                   <div class="text-white font-mono">{{ unit.pressure }}</div>
                 </div>
                 <div class="text-sm">
-                  <div class="text-cyan-200">排气温度</div>
+                  <div class="text-cyan-200">{{ t('device.indexvue257540-8') }}</div>
                   <div class="text-white font-mono">{{ unit.temp }}</div>
                 </div>
                 <div class="text-sm">
-                  <div class="text-cyan-200">总用电能</div>
+                  <div class="text-cyan-200">{{ t('device.indexvue257540-9') }}</div>
                   <div class="text-white font-mono text-xs">{{ unit.energy }}</div>
                 </div>
                 <div
@@ -151,27 +151,27 @@
         <div class="col-span-3">
           <div class="panel h-full">
             <div class="flex items-center justify-between mb-4 border-b border-cyan-500/30 pb-2">
-              <h3 class="text-cyan-300 text-lg font-bold">液驱压缩机参数</h3>
+              <h3 class="text-cyan-300 text-lg font-bold">{{ t('device.indexvue257540-11') }}</h3>
               <dv-decoration8 :reverse="true" style="width: 110px; height: 20px" />
             </div>
             <div class="space-y-2 text-sm overflow-y-auto overflow-x-hidden">
-              <DataRow label="入口压力" value="3.30 MPa" :compact="true" />
-              <DataRow label="一级入口压力" value="3.32 MPa" :compact="true" />
-              <DataRow label="A级一级出口温度" value="104.5 ℃" :compact="true" />
-              <DataRow label="A级一级冷却后温度" value="16.6 ℃" :compact="true" />
-              <DataRow label="A级二级入口压力" value="8.40 MPa" :compact="true" />
-              <DataRow label="A级二级出口温度" value="134.3 ℃" :compact="true" />
-              <DataRow label="A级二级冷却后温度" value="27.6 ℃" :compact="true" />
-              <DataRow label="A级三级入口压力" value="22.57 MPa" :compact="true" />
-              <DataRow label="B级一级出口温度" value="109.6 ℃" :compact="true" />
-              <DataRow label="B级一级冷却后温度" value="16.5 ℃" :compact="true" />
-              <DataRow label="B级二级入口压力" value="8.23 MPa" :compact="true" />
-              <DataRow label="B级二级出口温度" value="130.0 ℃" :compact="true" />
-              <DataRow label="B级二级冷却后温度" value="21.5 ℃" :compact="true" />
-              <DataRow label="B级三级入口压力" value="22.46 MPa" :compact="true" />
-              <DataRow label="三级出口温度" value="83.6 ℃" :compact="true" />
-              <DataRow label="总出口温度" value="26.1 ℃" :compact="true" />
-              <DataRow label="总出口压力" value="40.82 MPa" :compact="true" />
+              <DataRow :label="t('device.indexvue257540-12')" value="3.30 MPa" :compact="true" />
+              <DataRow :label="t('device.indexvue257540-13')" value="3.32 MPa" :compact="true" />
+              <DataRow :label="t('device.indexvue257540-14')" value="104.5 ℃" :compact="true" />
+              <DataRow :label="t('device.indexvue257540-15')" value="16.6 ℃" :compact="true" />
+              <DataRow :label="t('device.indexvue257540-16')" value="8.40 MPa" :compact="true" />
+              <DataRow :label="t('device.indexvue257540-17')" value="134.3 ℃" :compact="true" />
+              <DataRow :label="t('device.indexvue257540-18')" value="27.6 ℃" :compact="true" />
+              <DataRow :label="t('device.indexvue257540-19')" value="22.57 MPa" :compact="true" />
+              <DataRow :label="t('device.indexvue257540-20')" value="109.6 ℃" :compact="true" />
+              <DataRow :label="t('device.indexvue257540-21')" value="16.5 ℃" :compact="true" />
+              <DataRow :label="t('device.indexvue257540-22')" value="8.23 MPa" :compact="true" />
+              <DataRow :label="t('device.indexvue257540-23')" value="130.0 ℃" :compact="true" />
+              <DataRow :label="t('device.indexvue257540-24')" value="21.5 ℃" :compact="true" />
+              <DataRow :label="t('device.indexvue257540-25')" value="22.46 MPa" :compact="true" />
+              <DataRow :label="t('device.indexvue257540-26')" value="83.6 ℃" :compact="true" />
+              <DataRow :label="t('device.indexvue257540-27')" value="26.1 ℃" :compact="true" />
+              <DataRow :label="t('device.indexvue257540-28')" value="40.82 MPa" :compact="true" />
             </div>
           </div>
         </div>
@@ -184,7 +184,9 @@
 
 <script setup lang="ts">
 import DataRow from './data-row.vue'
+import { useI18n } from 'vue-i18n'
 import ModelViewer from '@/components/ModelViewer.vue'
+const { t } = useI18n()
 const leftNavItems = ['箱变', '1050空压机', 'PSA数据', '空气处理镜']
 const rightNavItems = ['主界面', '液驱及中压', '报警监控']
 

+ 8 - 8
src/views/pms/device/completeSet/AssociationDevices.vue

@@ -9,10 +9,10 @@
         :inline="true"
         label-width="68px"
       >
-        <el-form-item label="设备编码" prop="deviceCode">
+        <el-form-item :label="t('device.associatio458387-0')" prop="deviceCode">
           <el-input
             v-model="queryParams.deviceCode"
-            placeholder="请输入设备编码"
+            :placeholder="t('device.associatio458387-1')"
             clearable
             @keyup.enter="handleQuery"
             class="!w-200px"
@@ -35,17 +35,17 @@
           {{ scope.$index + 1 }}
         </template>
       </el-table-column>
-      <el-table-column prop="groupName" label="成套名称" align="center" />
+      <el-table-column prop="groupName" :label="t('device.associatio458387-2')" align="center" />
       <el-table-column prop="deviceName" :label="t('iotDevice.name')" align="center" />
-      <el-table-column prop="deviceCode" label="设备编码" align="center" />
-      <el-table-column prop="ifMaster" label="是否主设备" align="center">
+      <el-table-column prop="deviceCode" :label="t('device.associatio458387-0')" align="center" />
+      <el-table-column prop="ifMaster" :label="t('device.associatio458387-3')" align="center">
         <template #default="scope">
-          <el-tag v-if="scope.row.ifMaster" class="text-[#62a66a]"></el-tag>
+          <el-tag v-if="scope.row.ifMaster" class="text-[#62a66a]">{{ t('device.associatio458387-4') }}</el-tag>
 
-          <el-tag v-else class="text-[#9093a6]" type="info"></el-tag>
+          <el-tag v-else class="text-[#9093a6]" type="info">{{ t('device.associatio458387-5') }}</el-tag>
         </template>
       </el-table-column>
-      <el-table-column prop="ifMaster" label="创建时间" align="center">
+      <el-table-column prop="ifMaster" :label="t('device.associatio458387-6')" align="center">
         <template #default="scope">
           {{ formatToDate(scope.row.createTime) }}
         </template>

+ 46 - 31
src/views/pms/device/completeSet/DeviceCompleteSet.vue

@@ -11,7 +11,7 @@
           ref="queryFormRef"
           :inline="true"
           @submit.prevent
-          label-width="68px">
+          label-width="auto">
           <!-- <el-form-item label="部门名称" prop="deptName" style="margin-left: 20px">
             <el-input
               v-model="queryParams.deptName"
@@ -21,17 +21,17 @@
               class="!w-200px"
             />
           </el-form-item> -->
-          <el-form-item label="成套名称" prop="name">
+          <el-form-item :label="t('device.devicecomp596172-0')" prop="name">
             <el-input
               v-model="queryParams.name"
-              placeholder="请输入成套名称"
+              :placeholder="t('device.devicecomp596172-1')"
               clearable
               @keyup.enter="handleQuery"
               class="!w-200px" />
           </el-form-item>
           <el-form-item>
             <el-button @click="handleAdd" type="primary"
-              ><Icon icon="ep:plus" class="mr-5px" />新增成套</el-button
+              ><Icon icon="ep:plus" class="mr-5px" />{{ t('device.devicecomp596172-2') }}</el-button
             >
             <el-button @click="handleQuery"
               ><Icon icon="ep:search" class="mr-5px" /> {{ t('devicePerson.search') }}</el-button
@@ -51,30 +51,38 @@
               {{ scope.$index + 1 }}
             </template>
           </zm-table-column>
-          <zm-table-column label="部门名称" align="center" prop="deptName" />
-          <zm-table-column label="成套名称" align="center" prop="name" />
-          <zm-table-column label="成套类型" align="center">
+          <zm-table-column :label="t('device.devicecomp596172-3')" align="center" prop="deptName" />
+          <zm-table-column :label="t('device.devicecomp596172-0')" align="center" prop="name" />
+          <zm-table-column :label="t('device.devicecomp596172-4')" align="center">
             <template #default="scope">
               <dict-tag :type="DICT_TYPE.DEVICE_GROUP_TYPE" :value="scope.row.type" />
             </template>
           </zm-table-column>
 
-          <zm-table-column label="在线状态" align="center">
+          <zm-table-column :label="t('device.devicecomp596172-5')" align="center">
             <template #default="scope">
-              <el-tag type="success" :underline="false" v-if="scope.row.ifOnline === true"
-                >在线</el-tag
-              >
-              <el-tag type="info" :underline="false" v-else>离线</el-tag>
+              <el-tag type="success" :underline="false" v-if="scope.row.ifOnline === true">{{
+                t('device.devicecomp596172-6')
+              }}</el-tag>
+              <el-tag type="info" :underline="false" v-else>{{
+                t('device.devicecomp596172-7')
+              }}</el-tag>
             </template>
           </zm-table-column>
 
-          <zm-table-column label="描述" align="center" prop="remark" />
-          <zm-table-column label="设备数量" align="center" prop="deviceCount">
+          <zm-table-column :label="t('device.devicecomp596172-8')" align="center" prop="remark" />
+          <zm-table-column
+            :label="t('device.devicecomp596172-9')"
+            align="center"
+            prop="deviceCount">
             <template #default="scope">
               {{ (scope.row.details && scope.row.details.length) || 0 }}
             </template>
           </zm-table-column>
-          <zm-table-column label="主设备" align="center" prop="mainDeviceName">
+          <zm-table-column
+            :label="t('device.devicecomp596172-10')"
+            align="center"
+            prop="mainDeviceName">
             <template #default="scope">
               {{
                 scope.row.details.filter((item) => item.ifMaster)[0]?.deviceName +
@@ -90,8 +98,12 @@
             min-width="120px"
             action>
             <template #default="scope">
-              <el-button link type="primary" @click="handleEdit(scope.row)"> 编辑 </el-button>
-              <el-button link type="danger" @click="handleDelete(scope.row.id)"> 删除 </el-button>
+              <el-button link type="primary" @click="handleEdit(scope.row)">{{
+                t('device.devicecomp596172-11')
+              }}</el-button>
+              <el-button link type="danger" @click="handleDelete(scope.row.id)">{{
+                t('device.devicecomp596172-12')
+              }}</el-button>
             </template>
           </zm-table-column>
         </zm-table>
@@ -112,19 +124,19 @@
         <span>{{ dialogTitle }}</span>
       </div>
     </template>
-    <el-form ref="formRef" :model="formData" :rules="formRules" label-width="80px">
+    <el-form ref="formRef" :model="formData" :rules="formRules" label-width="auto">
       <el-row :gutter="20">
         <el-col :span="8">
-          <el-form-item label="成套名称" prop="name">
-            <el-input v-model="formData.name" placeholder="请输入成套名称" />
+          <el-form-item :label="t('device.devicecomp596172-0')" prop="name">
+            <el-input v-model="formData.name" :placeholder="t('device.devicecomp596172-1')" />
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
-          <el-form-item label="成套类型" prop="type">
+          <el-form-item :label="t('device.devicecomp596172-4')" prop="type">
             <el-select
               v-model="formData.type"
-              placeholder="请选择成套类型"
+              :placeholder="t('device.devicecomp596172-13')"
               clearable
               class="!w-240px">
               <el-option
@@ -145,7 +157,7 @@
               check-strictly
               node-key="id"
               filterable
-              placeholder="请选择所在部门"
+              :placeholder="t('device.devicecomp596172-14')"
               @change="handleDeptChange" />
           </el-form-item>
         </el-col>
@@ -153,11 +165,11 @@
 
       <el-row :gutter="20">
         <el-col :span="24">
-          <el-form-item label="描述" prop="remark">
+          <el-form-item :label="t('device.devicecomp596172-8')" prop="remark">
             <el-input
               v-model="formData.remark"
               type="textarea"
-              placeholder="请输入描述"
+              :placeholder="t('device.devicecomp596172-15')"
               :rows="2" />
           </el-form-item>
         </el-col>
@@ -165,7 +177,7 @@
 
       <el-row :gutter="20">
         <el-col :span="24">
-          <el-form-item label="选择设备" prop="devices">
+          <el-form-item :label="t('device.devicecomp596172-16')" prop="devices">
             <div class="transfer-container">
               <el-transfer
                 v-model="selectedDeviceIds"
@@ -174,7 +186,7 @@
                 :button-texts="['移除', '添加']"
                 filterable
                 :filter-method="filterDeviceMethod"
-                filter-placeholder="请输入设备名称"
+                filter-:placeholder="t('device.devicecomp596172-17')"
                 @change="rightDeviceChange">
                 <template #left-empty>
                   <el-empty :image-size="60" :description="isEdit ? '加载中...' : '请选择设备'" />
@@ -190,10 +202,13 @@
 
       <el-row :gutter="20" v-if="selectedDevices.length > 0">
         <el-col :span="12">
-          <el-form-item label="设置主设备" prop="mainDevice" label-width="100">
+          <el-form-item
+            :label="t('device.devicecomp596172-18')"
+            prop="mainDevice"
+            label-width="100">
             <el-select
               v-model="mainDeviceId"
-              placeholder="请选择主设备"
+              :placeholder="t('device.devicecomp596172-19')"
               clearable
               filterable
               @change="setMainDevice">
@@ -209,8 +224,8 @@
     </el-form>
 
     <template #footer>
-      <el-button @click="cancel">取 消</el-button>
-      <el-button type="primary" @click="submit">确 定</el-button>
+      <el-button @click="cancel">{{ t('device.devicecomp596172-20') }}</el-button>
+      <el-button type="primary" @click="submit">{{ t('device.devicecomp596172-21') }}</el-button>
     </template>
   </el-dialog>
 </template>

+ 1 - 1
src/views/pms/device/components/dashboard/DeviceClassifyTopCard.vue

@@ -178,7 +178,7 @@ onBeforeUnmount(() => {
   <section class="device-classify-card">
     <div class="card-header">
       <div>
-        <h3>分类 Top</h3>
+        <h3>{{ $t('device.devicestat786447-1') }}</h3>
       </div>
       <span class="soft-badge">Top {{ displayData.length }}</span>
     </div>

+ 4 - 2
src/views/pms/device/components/dashboard/DeviceStatusCard.vue

@@ -1,5 +1,7 @@
 <script setup lang="ts">
 import * as echarts from 'echarts'
+import { useI18n } from 'vue-i18n'
+const { t } = useI18n()
 
 type StatItem = {
   name?: string
@@ -149,7 +151,7 @@ onBeforeUnmount(() => {
   <section class="device-status-card">
     <div class="card-header">
       <div>
-        <h3>设备状态</h3>
+        <h3>{{ t('device.devicestat181259-0') }}</h3>
       </div>
       <span class="soft-badge">{{ chartData.length }} 类</span>
     </div>
@@ -161,7 +163,7 @@ onBeforeUnmount(() => {
           {{ loading ? '加载中...' : '暂无状态数据' }}
         </div>
         <div v-if="chartData.length > 0 && !loading" class="chart-center">
-          <span>合计</span>
+          <span>{{ t('device.devicestat181259-1') }}</span>
           <strong>{{ total }}</strong>
         </div>
       </div>

+ 6 - 6
src/views/pms/device/components/dashboard/DeviceTotalCard.vue

@@ -1,4 +1,6 @@
-<script setup lang="ts">
+<script setup lang="ts">import { useI18n } from 'vue-i18n'
+const { t } = useI18n()
+
 defineProps<{
   total: number
   loading?: boolean
@@ -12,8 +14,8 @@ defineProps<{
         <Icon icon="ep:histogram" :size="26" />
       </div>
       <div class="metric-meta">
-        <span>设备总览</span>
-        <strong>设备总数</strong>
+        <span>{{ t('device.devicetota735835-0') }}</span>
+        <strong>{{ t('device.devicetota735835-1') }}</strong>
       </div>
     </div>
 
@@ -24,9 +26,7 @@ defineProps<{
 
     <div class="metric-footer">
       <span class="trend-pill">
-        <Icon icon="ep:top" :size="12" />
-        设备台账
-      </span>
+        <Icon icon="ep:top" :size="12" />{{ t('device.devicetota735835-2') }}</span>
     </div>
   </section>
 </template>

+ 18 - 22
src/views/pms/device/components/select-list/brand-list.vue

@@ -1,9 +1,11 @@
 <script lang="ts" setup>
 import * as DictDataApi from '@/api/system/dict/dict.data'
+import { useI18n } from 'vue-i18n'
 import type { DictDataVO } from '@/api/system/dict/dict.data'
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import { dateFormatter } from '@/utils/formatTime'
 import { useTableComponents } from '@/components/ZmTable/useTableComponents'
+const { t } = useI18n()
 
 const emit = defineEmits<{
   choose: [row: DictDataVO]
@@ -74,7 +76,7 @@ defineExpose({ open })
 </script>
 
 <template>
-  <Dialog v-model="visible" title="选择品牌" style="width: 1100px" class="brand-select-dialog">
+  <Dialog v-model="visible" :title="t('device.brandlistv345436-0')" style="width: 1100px" class="brand-select-dialog">
     <div class="brand-select">
       <el-form
         ref="queryFormRef"
@@ -83,18 +85,18 @@ defineExpose({ open })
         label-width="68px"
         size="default">
         <div class="brand-select__filters">
-          <el-form-item label="字典标签" prop="label">
+          <el-form-item :label="t('device.brandlistv345436-1')" prop="label">
             <el-input
               v-model="queryParams.label"
-              placeholder="请输入字典标签"
+              :placeholder="t('device.brandlistv345436-2')"
               clearable
               class="brand-select__control"
               @keyup.enter="handleQuery" />
           </el-form-item>
-          <el-form-item label="状态" prop="status">
+          <el-form-item :label="t('device.brandlistv345436-3')" prop="status">
             <el-select
               v-model="queryParams.status"
-              placeholder="数据状态"
+              :placeholder="t('device.brandlistv345436-4')"
               clearable
               class="brand-select__control">
               <el-option
@@ -107,13 +109,9 @@ defineExpose({ open })
         </div>
         <div class="brand-select__actions">
           <el-button type="primary" @click="handleQuery">
-            <Icon icon="ep:search" class="mr-5px" />
-            搜索
-          </el-button>
+            <Icon icon="ep:search" class="mr-5px" />{{ t('device.brandlistv345436-5') }}</el-button>
           <el-button @click="resetQuery">
-            <Icon icon="ep:refresh" class="mr-5px" />
-            重置
-          </el-button>
+            <Icon icon="ep:refresh" class="mr-5px" />{{ t('device.brandlistv345436-6') }}</el-button>
         </div>
       </el-form>
 
@@ -125,7 +123,7 @@ defineExpose({ open })
           :show-border="true"
           align="center"
           @row-click="chooseRow">
-          <ZmTableColumn label="选择" width="70" hide-in-column-settings>
+          <ZmTableColumn :label="t('device.brandlistv345436-7')" width="70" hide-in-column-settings>
             <template #default="{ row }">
               <el-radio
                 :model-value="selectedRow?.id"
@@ -134,18 +132,18 @@ defineExpose({ open })
                 @click.stop="chooseRow(row)" />
             </template>
           </ZmTableColumn>
-          <ZmTableColumn prop="id" label="字典编码" width="120" />
-          <ZmTableColumn prop="label" label="字典标签" min-width="180" />
-          <ZmTableColumn prop="value" label="字典键值" min-width="180" />
-          <ZmTableColumn prop="status" label="状态" width="120">
+          <ZmTableColumn prop="id" :label="t('device.brandlistv345436-8')" width="120" />
+          <ZmTableColumn prop="label" :label="t('device.brandlistv345436-1')" min-width="180" />
+          <ZmTableColumn prop="value" :label="t('device.brandlistv345436-9')" min-width="180" />
+          <ZmTableColumn prop="status" :label="t('device.brandlistv345436-3')" width="120">
             <template #default="{ row }">
               <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="row.status ?? 0" />
             </template>
           </ZmTableColumn>
-          <ZmTableColumn prop="remark" label="备注" min-width="160" />
+          <ZmTableColumn prop="remark" :label="t('device.brandlistv345436-10')" min-width="160" />
           <ZmTableColumn
             prop="createTime"
-            label="创建时间"
+            :label="t('device.brandlistv345436-11')"
             width="180"
             :formatter="dateFormatter" />
         </ZmTable>
@@ -160,10 +158,8 @@ defineExpose({ open })
       </div>
 
       <div class="brand-select__footer">
-        <el-button size="default" @click="cancelChoose">取消</el-button>
-        <el-button size="default" type="primary" :disabled="!selectedRow" @click="confirmChoose">
-          确定
-        </el-button>
+        <el-button size="default" @click="cancelChoose">{{ t('device.brandlistv345436-12') }}</el-button>
+        <el-button size="default" type="primary" :disabled="!selectedRow" @click="confirmChoose">{{ t('device.brandlistv345436-13') }}</el-button>
       </div>
     </div>
   </Dialog>

+ 16 - 20
src/views/pms/device/components/select-list/customer-list.vue

@@ -1,8 +1,10 @@
 <script lang="ts" setup>
 import { Api, type SupplierVO } from '@/api/supplier/base'
+import { useI18n } from 'vue-i18n'
 import { DICT_TYPE } from '@/utils/dict'
 import { dateFormatter } from '@/utils/formatTime'
 import { useTableComponents } from '@/components/ZmTable/useTableComponents'
+const { t } = useI18n()
 
 interface SupplierRow extends SupplierVO {
   createTime?: string | number | Date
@@ -87,18 +89,18 @@ defineExpose({ open })
         label-width="68px"
         size="default">
         <div class="customer-select__filters">
-          <el-form-item label="客商名称" prop="name">
+          <el-form-item :label="t('device.customerli184037-0')" prop="name">
             <el-input
               v-model="queryParams.name"
-              placeholder="请输入客商名称"
+              :placeholder="t('device.customerli184037-1')"
               clearable
               class="customer-select__control"
               @keyup.enter="handleQuery" />
           </el-form-item>
-          <el-form-item label="客商编号" prop="code">
+          <el-form-item :label="t('device.customerli184037-2')" prop="code">
             <el-input
               v-model="queryParams.code"
-              placeholder="请输入客商编号"
+              :placeholder="t('device.customerli184037-3')"
               clearable
               class="customer-select__control"
               @keyup.enter="handleQuery" />
@@ -106,13 +108,9 @@ defineExpose({ open })
         </div>
         <div class="customer-select__actions">
           <el-button type="primary" @click="handleQuery">
-            <Icon icon="ep:search" class="mr-5px" />
-            搜索
-          </el-button>
+            <Icon icon="ep:search" class="mr-5px" />{{ t('device.customerli184037-4') }}</el-button>
           <el-button @click="resetQuery">
-            <Icon icon="ep:refresh" class="mr-5px" />
-            重置
-          </el-button>
+            <Icon icon="ep:refresh" class="mr-5px" />{{ t('device.customerli184037-5') }}</el-button>
         </div>
       </el-form>
 
@@ -124,7 +122,7 @@ defineExpose({ open })
           :show-border="true"
           align="center"
           @row-click="chooseRow">
-          <ZmTableColumn label="选择" width="70" hide-in-column-settings>
+          <ZmTableColumn :label="t('device.customerli184037-6')" width="70" hide-in-column-settings>
             <template #default="{ row }">
               <el-radio
                 :model-value="selectedRow?.id"
@@ -133,21 +131,21 @@ defineExpose({ open })
                 @click.stop="chooseRow(row)" />
             </template>
           </ZmTableColumn>
-          <ZmTableColumn prop="name" label="客商名称" min-width="180" />
-          <ZmTableColumn prop="code" label="客商编号" min-width="150" />
-          <ZmTableColumn prop="classification" label="客商分类" width="140">
+          <ZmTableColumn prop="name" :label="t('device.customerli184037-0')" min-width="180" />
+          <ZmTableColumn prop="code" :label="t('device.customerli184037-2')" min-width="150" />
+          <ZmTableColumn prop="classification" :label="t('device.customerli184037-7')" width="140">
             <template #default="{ row }">
               <dict-tag :type="DICT_TYPE.SUPPLIER_TYPE" :value="row.classification ?? 0" />
             </template>
           </ZmTableColumn>
-          <ZmTableColumn prop="status" label="状态" width="120">
+          <ZmTableColumn prop="status" :label="t('device.customerli184037-8')" width="120">
             <template #default="{ row }">
               <dict-tag :type="DICT_TYPE.SUPPLIER_STATUS" :value="row.status ?? 0" />
             </template>
           </ZmTableColumn>
           <ZmTableColumn
             prop="createTime"
-            label="创建时间"
+            :label="t('device.customerli184037-9')"
             width="180"
             :formatter="dateFormatter" />
         </ZmTable>
@@ -162,10 +160,8 @@ defineExpose({ open })
       </div>
 
       <div class="customer-select__footer">
-        <el-button size="default" @click="cancelChoose">取消</el-button>
-        <el-button size="default" type="primary" :disabled="!selectedRow" @click="confirmChoose">
-          确定
-        </el-button>
+        <el-button size="default" @click="cancelChoose">{{ t('device.customerli184037-10') }}</el-button>
+        <el-button size="default" type="primary" :disabled="!selectedRow" @click="confirmChoose">{{ t('device.customerli184037-11') }}</el-button>
       </div>
     </div>
   </Dialog>

+ 16 - 20
src/views/pms/device/components/select-list/model-list.vue

@@ -1,8 +1,10 @@
 <script lang="ts" setup>
 import { IotModelApi, type IotModelVO } from '@/api/pms/model'
+import { useI18n } from 'vue-i18n'
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import { dateFormatter } from '@/utils/formatTime'
 import { useTableComponents } from '@/components/ZmTable/useTableComponents'
+const { t } = useI18n()
 
 type BrandValue = number | string | Array<number | string>
 
@@ -84,7 +86,7 @@ defineExpose({ open })
 </script>
 
 <template>
-  <Dialog v-model="visible" title="选择规格型号" style="width: 1100px" class="model-select-dialog">
+  <Dialog v-model="visible" :title="t('device.modellistv210042-0')" style="width: 1100px" class="model-select-dialog">
     <div class="model-select">
       <el-form
         ref="queryFormRef"
@@ -93,18 +95,18 @@ defineExpose({ open })
         label-width="68px"
         size="default">
         <div class="model-select__filters">
-          <el-form-item label="型号名称" prop="name">
+          <el-form-item :label="t('device.modellistv210042-1')" prop="name">
             <el-input
               v-model="queryParams.name"
-              placeholder="请输入型号名称"
+              :placeholder="t('device.modellistv210042-2')"
               clearable
               class="model-select__control"
               @keyup.enter="handleQuery" />
           </el-form-item>
-          <el-form-item label="状态" prop="status">
+          <el-form-item :label="t('device.modellistv210042-3')" prop="status">
             <el-select
               v-model="queryParams.status"
-              placeholder="数据状态"
+              :placeholder="t('device.modellistv210042-4')"
               clearable
               class="model-select__control">
               <el-option
@@ -117,13 +119,9 @@ defineExpose({ open })
         </div>
         <div class="model-select__actions">
           <el-button type="primary" @click="handleQuery">
-            <Icon icon="ep:search" class="mr-5px" />
-            搜索
-          </el-button>
+            <Icon icon="ep:search" class="mr-5px" />{{ t('device.modellistv210042-5') }}</el-button>
           <el-button @click="resetQuery">
-            <Icon icon="ep:refresh" class="mr-5px" />
-            重置
-          </el-button>
+            <Icon icon="ep:refresh" class="mr-5px" />{{ t('device.modellistv210042-6') }}</el-button>
         </div>
       </el-form>
 
@@ -135,7 +133,7 @@ defineExpose({ open })
           :show-border="true"
           align="center"
           @row-click="chooseRow">
-          <ZmTableColumn label="选择" width="70" hide-in-column-settings>
+          <ZmTableColumn :label="t('device.modellistv210042-7')" width="70" hide-in-column-settings>
             <template #default="{ row }">
               <el-radio
                 :model-value="selectedRow?.id"
@@ -144,16 +142,16 @@ defineExpose({ open })
                 @click.stop="chooseRow(row)" />
             </template>
           </ZmTableColumn>
-          <ZmTableColumn prop="name" label="型号名称" min-width="180" />
-          <ZmTableColumn prop="standard" label="符合标准" min-width="180" />
-          <ZmTableColumn prop="status" label="状态" width="120">
+          <ZmTableColumn prop="name" :label="t('device.modellistv210042-1')" min-width="180" />
+          <ZmTableColumn prop="standard" :label="t('device.modellistv210042-8')" min-width="180" />
+          <ZmTableColumn prop="status" :label="t('device.modellistv210042-3')" width="120">
             <template #default="{ row }">
               <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="row.status ?? 0" />
             </template>
           </ZmTableColumn>
           <ZmTableColumn
             prop="createTime"
-            label="创建时间"
+            :label="t('device.modellistv210042-9')"
             width="180"
             :formatter="dateFormatter" />
         </ZmTable>
@@ -168,10 +166,8 @@ defineExpose({ open })
       </div>
 
       <div class="model-select__footer">
-        <el-button size="default" @click="cancelChoose">取消</el-button>
-        <el-button size="default" type="primary" :disabled="!selectedRow" @click="confirmChoose">
-          确定
-        </el-button>
+        <el-button size="default" @click="cancelChoose">{{ t('device.modellistv210042-10') }}</el-button>
+        <el-button size="default" type="primary" :disabled="!selectedRow" @click="confirmChoose">{{ t('device.modellistv210042-11') }}</el-button>
       </div>
     </div>
   </Dialog>

+ 120 - 120
src/views/pms/device/index.vue

@@ -16,7 +16,7 @@
       ref="queryFormRef"
       :model="queryParams"
       size="default"
-      label-width="68px"
+      label-width="auto"
       class="bg-white dark:bg-[#1d1e1f] rounded-lg shadow px-8 py-2 flex items-center flex-wrap min-w-0">
       <div class="flex items-center gap-4 flex-wrap">
         <el-form-item :label="t('iotDevice.yfCode')" prop="yfDeviceCode">
@@ -43,19 +43,19 @@
             @keyup.enter="handleQuery"
             class="!w-200px" />
         </el-form-item>
-        <el-form-item label="车牌号" prop="carNo">
+        <el-form-item :label="t('device.indexvue100657-0')" prop="carNo">
           <el-input
             v-model="queryParams.carNo"
-            placeholder="请输入车牌号"
+            :placeholder="t('device.indexvue100657-1')"
             clearable
             @keyup.enter="handleQuery"
             class="!w-200px" />
         </el-form-item>
 
-        <el-form-item label="设备号" prop="deviceNo">
+        <el-form-item :label="t('device.indexvue100657-2')" prop="deviceNo">
           <el-input
             v-model="queryParams.deviceNo"
-            placeholder="请输入设备号"
+            :placeholder="t('device.indexvue100657-3')"
             clearable
             @keyup.enter="handleQuery"
             class="!w-200px" />
@@ -138,8 +138,8 @@
             @click="handleExport"
             :loading="exportLoading"
             v-hasPermi="['rq:iot-device:export']">
-            <Icon icon="ep:download" class="mr-5px" /> 导出
-          </el-button>
+            <Icon icon="ep:download" class="mr-5px" />{{ t('device.indexvue100657-4') }}</el-button
+          >
         </el-form-item>
       </div>
     </el-form>
@@ -186,23 +186,23 @@
                   <div class="p-2">
                     <el-input
                       :model-value="filterModelValue"
-                      placeholder="请输入油服编码"
+                      :placeholder="t('device.indexvue100657-5')"
                       clearable
                       @update:model-value="updateFilterModelValue"
                       @keyup.enter="() => confirmColumnFilter(close)" />
                     <div class="mt-2 flex justify-end gap-2">
                       <el-button
                         size="small"
-                        @click="() => clearColumnFilter(updateFilterModelValue, close)">
-                        清空
-                      </el-button>
+                        @click="() => clearColumnFilter(updateFilterModelValue, close)"
+                        >{{ t('device.indexvue100657-6') }}</el-button
+                      >
                       <el-button
                         size="small"
                         type="primary"
                         :icon="Search"
-                        @click="() => confirmColumnFilter(close)">
-                        搜索
-                      </el-button>
+                        @click="() => confirmColumnFilter(close)"
+                        >{{ t('device.indexvue100657-7') }}</el-button
+                      >
                     </div>
                   </div>
                 </template>
@@ -221,23 +221,23 @@
                   <div class="p-2">
                     <el-input
                       :model-value="filterModelValue"
-                      placeholder="请输入历史编码"
+                      :placeholder="t('device.indexvue100657-8')"
                       clearable
                       @update:model-value="updateFilterModelValue"
                       @keyup.enter="() => confirmColumnFilter(close)" />
                     <div class="mt-2 flex justify-end gap-2">
                       <el-button
                         size="small"
-                        @click="() => clearColumnFilter(updateFilterModelValue, close)">
-                        清空
-                      </el-button>
+                        @click="() => clearColumnFilter(updateFilterModelValue, close)"
+                        >{{ t('device.indexvue100657-6') }}</el-button
+                      >
                       <el-button
                         size="small"
                         type="primary"
                         :icon="Search"
-                        @click="() => confirmColumnFilter(close)">
-                        搜索
-                      </el-button>
+                        @click="() => confirmColumnFilter(close)"
+                        >{{ t('device.indexvue100657-7') }}</el-button
+                      >
                     </div>
                   </div>
                 </template>
@@ -256,23 +256,23 @@
                   <div class="p-2">
                     <el-input
                       :model-value="filterModelValue"
-                      placeholder="请输入设备名称"
+                      :placeholder="t('device.indexvue100657-9')"
                       clearable
                       @update:model-value="updateFilterModelValue"
                       @keyup.enter="() => confirmColumnFilter(close)" />
                     <div class="mt-2 flex justify-end gap-2">
                       <el-button
                         size="small"
-                        @click="() => clearColumnFilter(updateFilterModelValue, close)">
-                        清空
-                      </el-button>
+                        @click="() => clearColumnFilter(updateFilterModelValue, close)"
+                        >{{ t('device.indexvue100657-6') }}</el-button
+                      >
                       <el-button
                         size="small"
                         type="primary"
                         :icon="Search"
-                        @click="() => confirmColumnFilter(close)">
-                        搜索
-                      </el-button>
+                        @click="() => confirmColumnFilter(close)"
+                        >{{ t('device.indexvue100657-7') }}</el-button
+                      >
                     </div>
                   </div>
                 </template>
@@ -284,7 +284,7 @@
                 </template>
               </zm-table-column>
               <zm-table-column
-                label="设备号"
+                :label="t('device.indexvue100657-2')"
                 align="center"
                 prop="deviceNo"
                 width="120"
@@ -296,23 +296,23 @@
                   <div class="p-2">
                     <el-input
                       :model-value="filterModelValue"
-                      placeholder="请输入设备号"
+                      :placeholder="t('device.indexvue100657-3')"
                       clearable
                       @update:model-value="updateFilterModelValue"
                       @keyup.enter="() => confirmColumnFilter(close)" />
                     <div class="mt-2 flex justify-end gap-2">
                       <el-button
                         size="small"
-                        @click="() => clearColumnFilter(updateFilterModelValue, close)">
-                        清空
-                      </el-button>
+                        @click="() => clearColumnFilter(updateFilterModelValue, close)"
+                        >{{ t('device.indexvue100657-6') }}</el-button
+                      >
                       <el-button
                         size="small"
                         type="primary"
                         :icon="Search"
-                        @click="() => confirmColumnFilter(close)">
-                        搜索
-                      </el-button>
+                        @click="() => confirmColumnFilter(close)"
+                        >{{ t('device.indexvue100657-7') }}</el-button
+                      >
                     </div>
                   </div>
                 </template>
@@ -333,22 +333,22 @@
                       check-strictly
                       node-key="id"
                       filterable
-                      placeholder="请选择所在部门"
+                      :placeholder="t('device.indexvue100657-10')"
                       class="w-full"
                       @update:model-value="updateFilterModelValue" />
                     <div class="mt-2 flex justify-end gap-2">
                       <el-button
                         size="small"
-                        @click="() => clearColumnFilter(updateFilterModelValue, close)">
-                        清空
-                      </el-button>
+                        @click="() => clearColumnFilter(updateFilterModelValue, close)"
+                        >{{ t('device.indexvue100657-6') }}</el-button
+                      >
                       <el-button
                         size="small"
                         type="primary"
                         :icon="Search"
-                        @click="() => confirmColumnFilter(close)">
-                        搜索
-                      </el-button>
+                        @click="() => confirmColumnFilter(close)"
+                        >{{ t('device.indexvue100657-7') }}</el-button
+                      >
                     </div>
                   </div>
                 </template>
@@ -364,7 +364,7 @@
                   <div class="p-2">
                     <el-select
                       :model-value="filterModelValue"
-                      placeholder="请选择设备状态"
+                      :placeholder="t('device.indexvue100657-11')"
                       clearable
                       class="w-full"
                       @update:model-value="updateFilterModelValue">
@@ -377,16 +377,16 @@
                     <div class="mt-2 flex justify-end gap-2">
                       <el-button
                         size="small"
-                        @click="() => clearColumnFilter(updateFilterModelValue, close)">
-                        清空
-                      </el-button>
+                        @click="() => clearColumnFilter(updateFilterModelValue, close)"
+                        >{{ t('device.indexvue100657-6') }}</el-button
+                      >
                       <el-button
                         size="small"
                         type="primary"
                         :icon="Search"
-                        @click="() => confirmColumnFilter(close)">
-                        搜索
-                      </el-button>
+                        @click="() => confirmColumnFilter(close)"
+                        >{{ t('device.indexvue100657-7') }}</el-button
+                      >
                     </div>
                   </div>
                 </template>
@@ -405,23 +405,23 @@
                   <div class="p-2">
                     <el-input
                       :model-value="filterModelValue"
-                      placeholder="请输入规格型号"
+                      :placeholder="t('device.indexvue100657-12')"
                       clearable
                       @update:model-value="updateFilterModelValue"
                       @keyup.enter="() => confirmColumnFilter(close)" />
                     <div class="mt-2 flex justify-end gap-2">
                       <el-button
                         size="small"
-                        @click="() => clearColumnFilter(updateFilterModelValue, close)">
-                        清空
-                      </el-button>
+                        @click="() => clearColumnFilter(updateFilterModelValue, close)"
+                        >{{ t('device.indexvue100657-6') }}</el-button
+                      >
                       <el-button
                         size="small"
                         type="primary"
                         :icon="Search"
-                        @click="() => confirmColumnFilter(close)">
-                        搜索
-                      </el-button>
+                        @click="() => confirmColumnFilter(close)"
+                        >{{ t('device.indexvue100657-7') }}</el-button
+                      >
                     </div>
                   </div>
                 </template>
@@ -441,7 +441,7 @@
                       :teleported="false"
                       :loading="brandList.length === 0"
                       loading-text="数据加载中..."
-                      placeholder="请选择制造厂家"
+                      :placeholder="t('device.indexvue100657-13')"
                       class="w-full"
                       @update:model-value="updateFilterModelValue"
                       @visible-change="handleBrandChange">
@@ -454,23 +454,23 @@
                     <div class="mt-2 flex justify-end gap-2">
                       <el-button
                         size="small"
-                        @click="() => clearColumnFilter(updateFilterModelValue, close)">
-                        清空
-                      </el-button>
+                        @click="() => clearColumnFilter(updateFilterModelValue, close)"
+                        >{{ t('device.indexvue100657-6') }}</el-button
+                      >
                       <el-button
                         size="small"
                         type="primary"
                         :icon="Search"
-                        @click="() => confirmColumnFilter(close)">
-                        搜索
-                      </el-button>
+                        @click="() => confirmColumnFilter(close)"
+                        >{{ t('device.indexvue100657-7') }}</el-button
+                      >
                     </div>
                   </div>
                 </template>
               </zm-table-column>
 
               <zm-table-column
-                label="车牌号"
+                :label="t('device.indexvue100657-0')"
                 align="center"
                 prop="carNo"
                 min-width="170"
@@ -480,23 +480,23 @@
                   <div class="p-2">
                     <el-input
                       :model-value="filterModelValue"
-                      placeholder="请输入车牌号"
+                      :placeholder="t('device.indexvue100657-1')"
                       clearable
                       @update:model-value="updateFilterModelValue"
                       @keyup.enter="() => confirmColumnFilter(close)" />
                     <div class="mt-2 flex justify-end gap-2">
                       <el-button
                         size="small"
-                        @click="() => clearColumnFilter(updateFilterModelValue, close)">
-                        清空
-                      </el-button>
+                        @click="() => clearColumnFilter(updateFilterModelValue, close)"
+                        >{{ t('device.indexvue100657-6') }}</el-button
+                      >
                       <el-button
                         size="small"
                         type="primary"
                         :icon="Search"
-                        @click="() => confirmColumnFilter(close)">
-                        搜索
-                      </el-button>
+                        @click="() => confirmColumnFilter(close)"
+                        >{{ t('device.indexvue100657-7') }}</el-button
+                      >
                     </div>
                   </div>
                 </template>
@@ -513,23 +513,23 @@
                   <div class="p-2">
                     <el-input
                       :model-value="filterModelValue"
-                      placeholder="请输入品牌"
+                      :placeholder="t('device.indexvue100657-14')"
                       clearable
                       @update:model-value="updateFilterModelValue"
                       @keyup.enter="() => confirmColumnFilter(close)" />
                     <div class="mt-2 flex justify-end gap-2">
                       <el-button
                         size="small"
-                        @click="() => clearColumnFilter(updateFilterModelValue, close)">
-                        清空
-                      </el-button>
+                        @click="() => clearColumnFilter(updateFilterModelValue, close)"
+                        >{{ t('device.indexvue100657-6') }}</el-button
+                      >
                       <el-button
                         size="small"
                         type="primary"
                         :icon="Search"
-                        @click="() => confirmColumnFilter(close)">
-                        搜索
-                      </el-button>
+                        @click="() => confirmColumnFilter(close)"
+                        >{{ t('device.indexvue100657-7') }}</el-button
+                      >
                     </div>
                   </div>
                 </template>
@@ -557,16 +557,16 @@
                     <div class="mt-2 flex justify-end gap-2">
                       <el-button
                         size="small"
-                        @click="() => clearColumnFilter(updateFilterModelValue, close)">
-                        清空
-                      </el-button>
+                        @click="() => clearColumnFilter(updateFilterModelValue, close)"
+                        >{{ t('device.indexvue100657-6') }}</el-button
+                      >
                       <el-button
                         size="small"
                         type="primary"
                         :icon="Search"
-                        @click="() => confirmColumnFilter(close)">
-                        搜索
-                      </el-button>
+                        @click="() => confirmColumnFilter(close)"
+                        >{{ t('device.indexvue100657-7') }}</el-button
+                      >
                     </div>
                   </div>
                 </template>
@@ -596,16 +596,16 @@
                     <div class="mt-2 flex justify-end gap-2">
                       <el-button
                         size="small"
-                        @click="() => clearColumnFilter(updateFilterModelValue, close)">
-                        清空
-                      </el-button>
+                        @click="() => clearColumnFilter(updateFilterModelValue, close)"
+                        >{{ t('device.indexvue100657-6') }}</el-button
+                      >
                       <el-button
                         size="small"
                         type="primary"
                         :icon="Search"
-                        @click="() => confirmColumnFilter(close)">
-                        搜索
-                      </el-button>
+                        @click="() => confirmColumnFilter(close)"
+                        >{{ t('device.indexvue100657-7') }}</el-button
+                      >
                     </div>
                   </div>
                 </template>
@@ -625,23 +625,23 @@
                   <div class="p-2">
                     <el-input
                       :model-value="filterModelValue"
-                      placeholder="请输入责任人"
+                      :placeholder="t('device.indexvue100657-15')"
                       clearable
                       @update:model-value="updateFilterModelValue"
                       @keyup.enter="() => confirmColumnFilter(close)" />
                     <div class="mt-2 flex justify-end gap-2">
                       <el-button
                         size="small"
-                        @click="() => clearColumnFilter(updateFilterModelValue, close)">
-                        清空
-                      </el-button>
+                        @click="() => clearColumnFilter(updateFilterModelValue, close)"
+                        >{{ t('device.indexvue100657-6') }}</el-button
+                      >
                       <el-button
                         size="small"
                         type="primary"
                         :icon="Search"
-                        @click="() => confirmColumnFilter(close)">
-                        搜索
-                      </el-button>
+                        @click="() => confirmColumnFilter(close)"
+                        >{{ t('device.indexvue100657-7') }}</el-button
+                      >
                     </div>
                   </div>
                 </template>
@@ -657,23 +657,23 @@
                   <div class="p-2">
                     <el-input
                       :model-value="filterModelValue"
-                      placeholder="请输入使用项目"
+                      :placeholder="t('device.indexvue100657-16')"
                       clearable
                       @update:model-value="updateFilterModelValue"
                       @keyup.enter="() => confirmColumnFilter(close)" />
                     <div class="mt-2 flex justify-end gap-2">
                       <el-button
                         size="small"
-                        @click="() => clearColumnFilter(updateFilterModelValue, close)">
-                        清空
-                      </el-button>
+                        @click="() => clearColumnFilter(updateFilterModelValue, close)"
+                        >{{ t('device.indexvue100657-6') }}</el-button
+                      >
                       <el-button
                         size="small"
                         type="primary"
                         :icon="Search"
-                        @click="() => confirmColumnFilter(close)">
-                        搜索
-                      </el-button>
+                        @click="() => confirmColumnFilter(close)"
+                        >{{ t('device.indexvue100657-7') }}</el-button
+                      >
                     </div>
                   </div>
                 </template>
@@ -689,29 +689,29 @@
                   <div class="p-2">
                     <el-input
                       :model-value="filterModelValue"
-                      placeholder="请输入资产归属"
+                      :placeholder="t('device.indexvue100657-17')"
                       clearable
                       @update:model-value="updateFilterModelValue"
                       @keyup.enter="() => confirmColumnFilter(close)" />
                     <div class="mt-2 flex justify-end gap-2">
                       <el-button
                         size="small"
-                        @click="() => clearColumnFilter(updateFilterModelValue, close)">
-                        清空
-                      </el-button>
+                        @click="() => clearColumnFilter(updateFilterModelValue, close)"
+                        >{{ t('device.indexvue100657-6') }}</el-button
+                      >
                       <el-button
                         size="small"
                         type="primary"
                         :icon="Search"
-                        @click="() => confirmColumnFilter(close)">
-                        搜索
-                      </el-button>
+                        @click="() => confirmColumnFilter(close)"
+                        >{{ t('device.indexvue100657-7') }}</el-button
+                      >
                     </div>
                   </div>
                 </template>
               </zm-table-column>
               <zm-table-column
-                label="所在地点"
+                :label="t('device.indexvue100657-18')"
                 min-width="120"
                 align="center"
                 prop="address"
@@ -721,23 +721,23 @@
                   <div class="p-2">
                     <el-input
                       :model-value="filterModelValue"
-                      placeholder="请输入所在地点"
+                      :placeholder="t('device.indexvue100657-19')"
                       clearable
                       @update:model-value="updateFilterModelValue"
                       @keyup.enter="() => confirmColumnFilter(close)" />
                     <div class="mt-2 flex justify-end gap-2">
                       <el-button
                         size="small"
-                        @click="() => clearColumnFilter(updateFilterModelValue, close)">
-                        清空
-                      </el-button>
+                        @click="() => clearColumnFilter(updateFilterModelValue, close)"
+                        >{{ t('device.indexvue100657-6') }}</el-button
+                      >
                       <el-button
                         size="small"
                         type="primary"
                         :icon="Search"
-                        @click="() => confirmColumnFilter(close)">
-                        搜索
-                      </el-button>
+                        @click="() => confirmColumnFilter(close)"
+                        >{{ t('device.indexvue100657-7') }}</el-button
+                      >
                     </div>
                   </div>
                 </template>

+ 50 - 54
src/views/pms/device/maintenance/MaintenanceDetail.vue

@@ -10,17 +10,17 @@
       <div class="base-expandable-content">
         <el-row>
           <el-col :span="8">
-            <el-form-item label="工单名称" prop="name">
+            <el-form-item :label="t('device.maintenanc595783-0')" prop="name">
               <el-input type="text" v-model="formData.name" disabled />
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="工单编号" prop="orderNumber">
+            <el-form-item :label="t('device.maintenanc595783-1')" prop="orderNumber">
               <el-input type="text" v-model="formData.orderNumber" disabled />
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="责任人" prop="responsiblePerson">
+            <el-form-item :label="t('device.maintenanc595783-2')" prop="responsiblePerson">
               <el-select
                 v-model="formData.responsiblePerson"
                 filterable
@@ -36,7 +36,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="工单类型" prop="type">
+            <el-form-item :label="t('device.maintenanc595783-3')" prop="type">
               <el-select disabled v-model="formData.type" clearable>
                 <el-option
                   v-for="dict in getIntDictOptions(DICT_TYPE.PMS_MAIN_WORK_ORDER_TYPE)"
@@ -47,7 +47,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="保养结果" prop="result">
+            <el-form-item :label="t('device.maintenanc595783-4')" prop="result">
               <el-select disabled v-model="formData.result" clearable>
                 <el-option
                   v-for="dict in getIntDictOptions(DICT_TYPE.PMS_MAIN_WORK_ORDER_RESULT)"
@@ -58,43 +58,43 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="保养费用(元)" prop="cost">
+            <el-form-item :label="t('device.maintenanc595783-5')" prop="cost">
               <el-input type="text" v-model="formData.cost" disabled />
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="实际保养开始时间" prop="actualStartTime">
+            <el-form-item :label="t('device.maintenanc595783-6')" prop="actualStartTime">
               <el-date-picker
                 style="width: 150%"
                 v-model="formData.actualStartTime"
                 type="datetime"
                 value-format="x"
-                placeholder="实际保养开始时间"
+                :placeholder="t('device.maintenanc595783-6')"
                 disabled />
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="实际保养结束时间" prop="actualEndTime">
+            <el-form-item :label="t('device.maintenanc595783-7')" prop="actualEndTime">
               <el-date-picker
                 style="width: 150%"
                 v-model="formData.actualEndTime"
                 type="datetime"
                 value-format="x"
-                placeholder="实际保养结束时间"
+                :placeholder="t('device.maintenanc595783-7')"
                 disabled />
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="其他费用(元)" prop="otherCost">
+            <el-form-item :label="t('device.maintenanc595783-8')" prop="otherCost">
               <el-input type="text" v-model="formData.otherCost" disabled />
             </el-form-item>
           </el-col>
           <el-col :span="24">
-            <el-form-item label="备注" prop="remark">
+            <el-form-item :label="t('device.maintenanc595783-9')" prop="remark">
               <el-input
                 v-model="formData.remark"
                 type="textarea"
-                placeholder="请输入备注"
+                :placeholder="t('device.maintenanc595783-10')"
                 disabled />
             </el-form-item>
           </el-col>
@@ -124,22 +124,22 @@
     <ContentWrap>
       <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
         <!-- 添加序号列 -->
-        <el-table-column type="index" label="序号" width="60" align="center" />
-        <el-table-column label="bom节点" align="center" prop="bomNodeId" v-if="false" />
-        <el-table-column label="设备编码" align="center" prop="deviceCode" />
-        <el-table-column label="设备名称" align="center" prop="deviceName" />
+        <el-table-column type="index" :label="t('device.maintenanc595783-11')" width="60" align="center" />
+        <el-table-column :label="t('device.maintenanc595783-12')" align="center" prop="bomNodeId" v-if="false" />
+        <el-table-column :label="t('device.maintenanc595783-13')" align="center" prop="deviceCode" />
+        <el-table-column :label="t('device.maintenanc595783-14')" align="center" prop="deviceName" />
         <el-table-column
-          label="累计运行时间(H)"
+          :label="t('device.maintenanc595783-15')"
           align="center"
           prop="totalRunTime"
           :formatter="erpPriceTableColumnFormatter" />
         <el-table-column
-          label="累计运行公里数(KM)"
+          :label="t('device.maintenanc595783-16')"
           align="center"
           prop="totalMileage"
           :formatter="erpPriceTableColumnFormatter" />
-        <el-table-column label="保养项" align="center" prop="name" />
-        <el-table-column label="运行里程" key="mileageRule" width="80">
+        <el-table-column :label="t('device.maintenanc595783-17')" align="center" prop="name" />
+        <el-table-column :label="t('device.maintenanc595783-18')" key="mileageRule" width="80">
           <template #default="scope">
             <el-switch
               v-model="scope.row.mileageRule"
@@ -148,7 +148,7 @@
               :disabled="true" />
           </template>
         </el-table-column>
-        <el-table-column label="运行时间" key="runningTimeRule" width="80">
+        <el-table-column :label="t('device.maintenanc595783-19')" key="runningTimeRule" width="80">
           <template #default="scope">
             <el-switch
               v-model="scope.row.runningTimeRule"
@@ -157,7 +157,7 @@
               :disabled="true" />
           </template>
         </el-table-column>
-        <el-table-column label="自然日期" key="naturalDateRule" width="80">
+        <el-table-column :label="t('device.maintenanc595783-20')" key="naturalDateRule" width="80">
           <template #default="scope">
             <el-switch
               v-model="scope.row.naturalDateRule"
@@ -166,19 +166,17 @@
               :disabled="true" />
           </template>
         </el-table-column>
-        <el-table-column label="已选物料" align="center" width="100">
+        <el-table-column :label="t('device.maintenanc595783-21')" align="center" width="100">
           <template #default="scope">
             {{ hasMaterial(scope.row.bomNodeId) ? '是' : '否' }}
           </template>
         </el-table-column>
-        <el-table-column label="操作" align="center" min-width="120px">
+        <el-table-column :label="t('device.maintenanc595783-22')" align="center" min-width="120px">
           <template #default="scope">
             <div style="display: flex; justify-content: center; align-items: center; width: 100%">
               <!-- 新增配置按钮 -->
               <div style="margin-left: 12px">
-                <el-button link type="primary" @click="openConfigDialog(scope.row)">
-                  配置
-                </el-button>
+                <el-button link type="primary" @click="openConfigDialog(scope.row)">{{ t('device.maintenanc595783-23') }}</el-button>
               </div>
               <!--
               <div style="margin-left: 12px">
@@ -195,9 +193,7 @@
                 <el-button
                   link
                   type="primary"
-                  @click="handleView(scope.row.id, scope.row.bomNodeId)">
-                  物料详情
-                </el-button>
+                  @click="handleView(scope.row.id, scope.row.bomNodeId)">{{ t('device.maintenanc595783-24') }}</el-button>
               </div>
             </div>
           </template>
@@ -213,31 +209,31 @@
         :stripe="true"
         :show-overflow-tooltip="true"
         v-if="false">
-        <el-table-column label="bom节点" align="center" prop="bomNodeId" />
-        <el-table-column label="物料编码" align="center" prop="materialCode" />
-        <el-table-column label="物料名称" align="center" prop="materialName" />
-        <el-table-column label="单位" align="center" prop="unit" />
+        <el-table-column :label="t('device.maintenanc595783-12')" align="center" prop="bomNodeId" />
+        <el-table-column :label="t('device.maintenanc595783-25')" align="center" prop="materialCode" />
+        <el-table-column :label="t('device.maintenanc595783-26')" align="center" prop="materialName" />
+        <el-table-column :label="t('device.maintenanc595783-27')" align="center" prop="unit" />
         <el-table-column
-          label="单价(CNY/元)"
+          :label="t('device.maintenanc595783-28')"
           align="center"
           prop="unitPrice"
           :formatter="erpPriceTableColumnFormatter" />
-        <el-table-column label="消耗数量" align="center" prop="quantity" />
-        <el-table-column label="总库存数量" align="center" prop="totalInventoryQuantity" />
+        <el-table-column :label="t('device.maintenanc595783-29')" align="center" prop="quantity" />
+        <el-table-column :label="t('device.maintenanc595783-30')" align="center" prop="totalInventoryQuantity" />
       </el-table>
     </ContentWrap>
   </ContentWrap>
   <ContentWrap>
     <el-form>
       <el-form-item style="float: right">
-        <el-button @click="close">取 消</el-button>
+        <el-button @click="close">{{ t('device.maintenanc595783-31') }}</el-button>
       </el-form-item>
     </el-form>
   </ContentWrap>
   <!-- 新增配置对话框 -->
   <el-dialog
     v-model="configDialog.visible"
-    :title="`设备 ${configDialog.current?.deviceCode + '-' + configDialog.current?.name} 保养配置`"
+    ::title="t('device.maintenanc595783-32')"
     width="600px">
     <el-form
       :model="configDialog.form"
@@ -247,7 +243,7 @@
       <!-- 里程配置 -->
       <el-form-item
         v-if="configDialog.current?.mileageRule === 0"
-        label="上次保养里程数(KM)"
+        :label="t('device.maintenanc595783-33')"
         prop="lastRunningKilometers">
         <el-input-number
           v-model="configDialog.form.lastRunningKilometers"
@@ -259,7 +255,7 @@
       <!-- 推迟公里数 -->
       <el-form-item
         v-if="configDialog.current?.mileageRule === 0"
-        label="推迟公里数(KM)"
+        :label="t('device.maintenanc595783-34')"
         prop="delayKilometers">
         <el-input-number
           v-model="configDialog.form.delayKilometers"
@@ -270,7 +266,7 @@
       <!-- 运行时间配置 -->
       <el-form-item
         v-if="configDialog.current?.runningTimeRule === 0"
-        label="上次保养运行时间(H)"
+        :label="t('device.maintenanc595783-35')"
         prop="lastRunningTime">
         <el-input-number
           v-model="configDialog.form.lastRunningTime"
@@ -282,7 +278,7 @@
       <!-- 推迟时长 -->
       <el-form-item
         v-if="configDialog.current?.runningTimeRule === 0"
-        label="推迟时长(H)"
+        :label="t('device.maintenanc595783-36')"
         prop="delayDuration">
         <el-input-number
           v-model="configDialog.form.delayDuration"
@@ -294,12 +290,12 @@
       <!-- 自然日期配置 -->
       <el-form-item
         v-if="configDialog.current?.naturalDateRule === 0"
-        label="上次保养自然日期(D)"
+        :label="t('device.maintenanc595783-37')"
         prop="lastNaturalDate">
         <el-date-picker
           v-model="configDialog.form.lastNaturalDate"
           type="date"
-          placeholder="选择日期"
+          :placeholder="t('device.maintenanc595783-38')"
           format="YYYY-MM-DD"
           value-format="YYYY-MM-DD"
           :disabled="true" />
@@ -307,7 +303,7 @@
       <!-- 推迟自然日期 -->
       <el-form-item
         v-if="configDialog.current?.naturalDateRule === 0"
-        label="推迟自然日期(D)"
+        :label="t('device.maintenanc595783-39')"
         prop="delayNaturalDate">
         <el-input-number
           v-model="configDialog.form.delayNaturalDate"
@@ -319,7 +315,7 @@
       <!-- 保养规则周期值 + 提前量 -->
       <el-form-item
         v-if="configDialog.current?.mileageRule === 0"
-        label="运行里程周期(KM)"
+        :label="t('device.maintenanc595783-40')"
         prop="nextRunningKilometers">
         <el-input-number
           v-model="configDialog.form.nextRunningKilometers"
@@ -330,7 +326,7 @@
       </el-form-item>
       <el-form-item
         v-if="configDialog.current?.mileageRule === 0"
-        label="运行里程周期-提前量(KM)"
+        :label="t('device.maintenanc595783-41')"
         prop="kiloCycleLead">
         <el-input-number
           v-model="configDialog.form.kiloCycleLead"
@@ -341,7 +337,7 @@
       </el-form-item>
       <el-form-item
         v-if="configDialog.current?.runningTimeRule === 0"
-        label="运行时间周期(H)"
+        :label="t('device.maintenanc595783-42')"
         prop="nextRunningTime">
         <el-input-number
           v-model="configDialog.form.nextRunningTime"
@@ -352,7 +348,7 @@
       </el-form-item>
       <el-form-item
         v-if="configDialog.current?.runningTimeRule === 0"
-        label="运行时间周期-提前量(H)"
+        :label="t('device.maintenanc595783-43')"
         prop="timePeriodLead">
         <el-input-number
           v-model="configDialog.form.timePeriodLead"
@@ -363,7 +359,7 @@
       </el-form-item>
       <el-form-item
         v-if="configDialog.current?.naturalDateRule === 0"
-        label="自然日周期(D)"
+        :label="t('device.maintenanc595783-44')"
         prop="nextNaturalDate">
         <el-input-number
           v-model="configDialog.form.nextNaturalDate"
@@ -373,7 +369,7 @@
       </el-form-item>
       <el-form-item
         v-if="configDialog.current?.naturalDateRule === 0"
-        label="自然日周期-提前量(D)"
+        :label="t('device.maintenanc595783-45')"
         prop="naturalDatePeriodLead">
         <el-input-number
           v-model="configDialog.form.naturalDatePeriodLead"
@@ -383,7 +379,7 @@
       </el-form-item>
     </el-form>
     <template #footer>
-      <el-button @click="configDialog.visible = false">取消</el-button>
+      <el-button @click="configDialog.visible = false">{{ t('device.maintenanc595783-46') }}</el-button>
     </template>
   </el-dialog>
   <!-- 表单弹窗:添加/修改 -->

+ 47 - 32
src/views/pms/device/monitor/IotAlarmSettingForm.vue

@@ -4,46 +4,54 @@
       ref="formRef"
       :model="formData"
       :rules="formRules"
-      label-width="100px"
-      v-loading="formLoading"
-    >
-      <el-form-item label="分类名称" prop="classifyName">
+      label-width="auto"
+      v-loading="formLoading">
+      <el-form-item :label="t('device.iotalarmse931035-0')" prop="classifyName">
         <el-input v-model="formData.classifyName" disabled />
       </el-form-item>
-      <el-form-item label="设备编码" prop="deviceName" v-if="ifDevice">
+      <el-form-item :label="t('device.iotalarmse931035-1')" prop="deviceName" v-if="ifDevice">
         <el-input v-model="formData.deviceName" disabled />
       </el-form-item>
-      <el-form-item label="告警属性" prop="alarmProperty">
-<!--        <el-input v-model="formData.alarmProperty" placeholder="请输入告警属性" />-->
-        <el-select v-model="formData.alarmProperty" placeholder="请选择告警属性" clearable filterable @change="propertyChange">
+      <el-form-item :label="t('device.iotalarmse931035-2')" prop="alarmProperty">
+        <!--        <el-input v-model="formData.alarmProperty" placeholder="请输入告警属性" />-->
+        <el-select
+          v-model="formData.alarmProperty"
+          :placeholder="t('device.iotalarmse931035-3')"
+          clearable
+          filterable
+          @change="propertyChange">
           <el-option
             v-for="dict in specs"
             :key="dict.identifier"
             :label="dict.modelName"
-            :value="dict.modelName"
-          />
+            :value="dict.modelName" />
         </el-select>
       </el-form-item>
-      <el-form-item label="属性标识" prop="propertyCode">
-        <el-input v-model="formData.propertyCode" placeholder="请输入属性标识" disabled />
+      <el-form-item :label="t('device.iotalarmse931035-4')" prop="propertyCode">
+        <el-input
+          v-model="formData.propertyCode"
+          :placeholder="t('device.iotalarmse931035-5')"
+          disabled />
       </el-form-item>
-      <el-form-item label="上限值" prop="maxValue">
-        <el-input v-model="formData.maxValue" placeholder="请输入上限" />
+      <el-form-item :label="t('device.iotalarmse931035-6')" prop="maxValue">
+        <el-input v-model="formData.maxValue" :placeholder="t('device.iotalarmse931035-7')" />
       </el-form-item>
-      <el-form-item label="下限值" prop="minValue">
-        <el-input v-model="formData.minValue" placeholder="请输入下限" />
+      <el-form-item :label="t('device.iotalarmse931035-8')" prop="minValue">
+        <el-input v-model="formData.minValue" :placeholder="t('device.iotalarmse931035-9')" />
       </el-form-item>
     </el-form>
     <template #footer>
-      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
-      <el-button @click="dialogVisible = false">取 消</el-button>
+      <el-button @click="submitForm" type="primary" :disabled="formLoading">{{
+        t('device.iotalarmse931035-10')
+      }}</el-button>
+      <el-button @click="dialogVisible = false">{{ t('device.iotalarmse931035-11') }}</el-button>
     </template>
   </Dialog>
 </template>
 <script setup lang="ts">
 import { IotAlarmSettingApi, IotAlarmSettingVO } from '@/api/pms/alarm'
-import {IotDeviceApi} from "@/api/pms/device";
-import {DICT_TYPE, getStrDictOptions} from "@/utils/dict";
+import { IotDeviceApi } from '@/api/pms/device'
+import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
 
 /** 告警设置 表单 */
 defineOptions({ name: 'IotAlarmSettingForm' })
@@ -65,12 +73,12 @@ const formData = ref({
   maxValue: undefined,
   minValue: undefined,
   alarmProperty: undefined,
-  propertyCode: undefined,
+  propertyCode: undefined
 })
 const formRules = reactive({
   classifyName: [{ required: true, message: '分类不能为空', trigger: 'blur' }],
   alarmProperty: [{ required: true, message: '告警属性不能为空', trigger: 'blur' }],
-  propertyCode: [{ required: true, message: '属性标识不能为空', trigger: 'blur' }],
+  propertyCode: [{ required: true, message: '属性标识不能为空', trigger: 'blur' }]
   // maxValue: [{ required: true, message: '上限不能为空', trigger: 'blur' }],
   // minValue: [{ required: true, message: '下限不能为空', trigger: 'blur' }],
 })
@@ -78,17 +86,24 @@ const formRef = ref() // 表单 Ref
 const ifDevice = ref(false)
 
 /** 打开弹窗 */
-const open = async (type: string, id?: number,classId:any, className:any,deviceId:any, deviceName:any) => {
+const open = async (
+  type: string,
+  id?: number,
+  classId: any,
+  className: any,
+  deviceId: any,
+  deviceName: any
+) => {
   debugger
   dialogVisible.value = true
   dialogTitle.value = '新增设置'
   formType.value = type
   resetForm()
-  formData.value.classifyId = classId;
-  formData.value.classifyName = className;
-  formData.value.deviceId = deviceId;
-  formData.value.deviceName = deviceName;
-  ifDevice.value = !(deviceId === '' || deviceId === undefined);
+  formData.value.classifyId = classId
+  formData.value.classifyName = className
+  formData.value.deviceId = deviceId
+  formData.value.deviceName = deviceName
+  ifDevice.value = !(deviceId === '' || deviceId === undefined)
   // 修改时,设置数据
   if (id) {
     dialogTitle.value = '编辑设置'
@@ -100,7 +115,7 @@ const open = async (type: string, id?: number,classId:any, className:any,deviceI
     }
   }
   if (deviceId) {
-    await IotDeviceApi.getIotDeviceTds(deviceId).then(res => {
+    await IotDeviceApi.getIotDeviceTds(deviceId).then((res) => {
       specs.value = res
       specs.value = specs.value.sort((a, b) => {
         return b.modelOrder - a.modelOrder
@@ -128,13 +143,13 @@ const submitForm = async () => {
     }
     dialogVisible.value = false
     // 发送操作成功的事件
-    emit('success',ifDevice.value?'2':'1')
+    emit('success', ifDevice.value ? '2' : '1')
   } finally {
     formLoading.value = false
   }
 }
 
-const propertyChange = (value) =>{
+const propertyChange = (value) => {
   debugger
   const model = specs.value.filter((item) => item.modelName === value)
   formData.value.propertyCode = model[0].identifier
@@ -150,7 +165,7 @@ const resetForm = () => {
     deviceName: undefined,
     maxValue: undefined,
     minValue: undefined,
-    alarmProperty: undefined,
+    alarmProperty: undefined
   }
   formRef.value?.resetFields()
 }

+ 190 - 128
src/views/pms/device/monitor/RangeSet.vue

@@ -11,28 +11,57 @@
       <ContentWrap>
         <ContentWrap>
           <ContentWrap v-if="selectedNode">
-            <div style="display: flex;flex-direction: row; justify-content: space-between; vertical-align: center">
-              <div style="display: flex;flex-direction: row; ">
-                <el-radio v-model="ifDevice" label="1" size="large" @input="handleClassifyRadio" border>分类告警区间设置</el-radio>
-                <el-radio v-model="ifDevice" label="2" size="large" @input="handleDeviceRadio" border>设备告警区间设置</el-radio>
+            <div
+              style="
+                display: flex;
+                flex-direction: row;
+                justify-content: space-between;
+                vertical-align: center;
+              ">
+              <div style="display: flex; flex-direction: row">
+                <el-radio
+                  v-model="ifDevice"
+                  label="1"
+                  size="large"
+                  @input="handleClassifyRadio"
+                  border
+                  >{{ t('device.rangesetvu328011-0') }}</el-radio
+                >
+                <el-radio
+                  v-model="ifDevice"
+                  label="2"
+                  size="large"
+                  @input="handleDeviceRadio"
+                  border
+                  >{{ t('device.rangesetvu328011-1') }}</el-radio
+                >
               </div>
-<!--              <el-select-->
-<!--                style="width: 200px;"-->
-<!--                v-if="selectedNode&&ifDevice==='2'"-->
-<!--                :placeholder="t('faultForm.choose')"-->
-<!--                clearable-->
-<!--                @change="handleDeviceSelected"-->
-<!--                @clear="handleClear"-->
-<!--              />-->
-              <el-select style="width: 250px" v-model="selectedDeviceId" v-if="selectedNode&&ifDevice==='2'" :placeholder="t('iotMaintain.deviceHolder')"
-                         @clear="handleClear" @change="handleDeviceSelected" :class="{ 'shake-highlight': isDeviceSelectShake }" filterable>
+              <!--              <el-select-->
+              <!--                style="width: 200px;"-->
+              <!--                v-if="selectedNode&&ifDevice==='2'"-->
+              <!--                :placeholder="t('faultForm.choose')"-->
+              <!--                clearable-->
+              <!--                @change="handleDeviceSelected"-->
+              <!--                @clear="handleClear"-->
+              <!--              />-->
+              <el-select
+                style="width: 250px"
+                v-model="selectedDeviceId"
+                v-if="selectedNode && ifDevice === '2'"
+                :placeholder="t('iotMaintain.deviceHolder')"
+                @clear="handleClear"
+                @change="handleDeviceSelected"
+                :class="{ 'shake-highlight': isDeviceSelectShake }"
+                filterable>
                 <el-option
                   v-for="item in devices"
                   :key="item.id"
                   :label="item.deviceCode"
                   :value="item.id">
                   <span style="float: left">{{ item.deviceCode }}</span>
-                  <span style="float: right; color: #8492a6; font-size: 13px">{{ item.deviceName }}</span>
+                  <span style="float: right; color: #8492a6; font-size: 13px">{{
+                    item.deviceName
+                  }}</span>
                 </el-option>
               </el-select>
             </div>
@@ -41,11 +70,10 @@
           <div v-if="selectedNode" class="selected-info-bar">
             <div class="selected-info">
               <Icon icon="fa:foursquare" />
-              <h2 class="selected-name">{{ifDevice==='1'?selectedName:selectedDeviceName }}</h2>
-              <el-tag
-                :type="ifDevice === '1' ? 'success' : 'primary'"
-                class="node-type-tag"
-              >
+              <h2 class="selected-name">{{
+                ifDevice === '1' ? selectedName : selectedDeviceName
+              }}</h2>
+              <el-tag :type="ifDevice === '1' ? 'success' : 'primary'" class="node-type-tag">
                 {{ ifDevice === '1' ? '分类' : '设备' }}
               </el-tag>
             </div>
@@ -55,43 +83,33 @@
                 type="warning"
                 @click="handleQuery"
                 class="add-property-btn"
-                size="default"
+                size="default">
+                <template #icon> <Icon icon="ep:search" /> </template
+                >{{ t('device.rangesetvu328011-2') }}</el-button
               >
-                <template #icon>
-                  <Icon icon="ep:search" />
-                </template>
-                查询
-              </el-button>
               <el-button
                 type="primary"
                 @click="openForm('create')"
                 class="add-property-btn"
-                size="default"
+                size="default">
+                <template #icon> <Plus /> </template>{{ t('device.rangesetvu328011-3') }}</el-button
               >
-                <template #icon>
-                  <Plus />
-                </template>
-                添加属性
-              </el-button>
               <el-button
                 type="success"
                 @click="saveAllProperties"
                 :loading="saveLoading"
-                size="default"
+                size="default">
+                <template #icon> <Check /> </template
+                >{{ t('device.rangesetvu328011-4') }}</el-button
               >
-                <template #icon>
-                  <Check />
-                </template>
-                保存配置
-              </el-button>
             </div>
           </div>
           <!-- 未选择任何项时的空状态 -->
           <div v-else class="empty-state">
-            <el-empty description="请从左侧选择一个设备或分类" class="main-empty-state">
+            <el-empty :description="t('device.tip')" class="main-empty-state">
               <template #image>
                 <div class="empty-image-container">
-                  <Icon :size="40" icon="fa-solid:empty-set"/>
+                  <Icon :size="40" icon="fa-solid:empty-set" />
                 </div>
               </template>
             </el-empty>
@@ -99,9 +117,19 @@
         </ContentWrap>
 
         <ContentWrap>
-          <el-row v-if="selectedNode&&list.length>0" :gutter="16">
-            <el-col v-for="item in list" :key="item.id" :lg="6" :md="12" :sm="12" :xs="24" class="mb-4">
-              <el-card v-loading="loading" :body-style="{ padding: '0' }" class="h-full transition-colors">
+          <el-row v-if="selectedNode && list.length > 0" :gutter="16">
+            <el-col
+              v-for="item in list"
+              :key="item.id"
+              :lg="6"
+              :md="12"
+              :sm="12"
+              :xs="24"
+              class="mb-4">
+              <el-card
+                v-loading="loading"
+                :body-style="{ padding: '0' }"
+                class="h-full transition-colors">
                 <!-- 内容区域 -->
                 <div class="p-4">
                   <!-- 标题区域 -->
@@ -115,19 +143,27 @@
                   <!-- 信息区域 -->
                   <div class="flex items-center text-[14px]">
                     <div class="flex-1">
-<!--                      <div class="mb-2.5 last:mb-0">-->
-<!--                        <span class="text-[#717c8e] mr-2.5">属性标识</span>-->
-<!--&lt;!&ndash;                        <div style="width: 300px;  padding: 0px;">&ndash;&gt;-->
-<!--                          &lt;!&ndash; 为span添加换行样式类 &ndash;&gt;-->
-<!--                          <span class="auto-wrap" style="color: dodgerblue; width: 200px">{{ item.propertyCode }}</span>-->
-<!--&lt;!&ndash;                        </div>&ndash;&gt;-->
-<!--                      </div>-->
+                      <!--                      <div class="mb-2.5 last:mb-0">-->
+                      <!--                        <span class="text-[#717c8e] mr-2.5">属性标识</span>-->
+                      <!--&lt;!&ndash;                        <div style="width: 300px;  padding: 0px;">&ndash;&gt;-->
+                      <!--                          &lt;!&ndash; 为span添加换行样式类 &ndash;&gt;-->
+                      <!--                          <span class="auto-wrap" style="color: dodgerblue; width: 200px">{{ item.propertyCode }}</span>-->
+                      <!--&lt;!&ndash;                        </div>&ndash;&gt;-->
+                      <!--                      </div>-->
                       <div class="mb-2.5 last:mb-0">
-                        <span class="text-[#717c8e] mr-2.5">设备名称</span>
-                          <el-tag><span class="auto-wrap" style="color: dodgerblue">{{ item.deviceName }}</span></el-tag>
+                        <span class="text-[#717c8e] mr-2.5">{{
+                          t('device.rangesetvu328011-5')
+                        }}</span>
+                        <el-tag
+                          ><span class="auto-wrap" style="color: dodgerblue">{{
+                            item.deviceName
+                          }}</span></el-tag
+                        >
                       </div>
                       <div class="mb-2.5 last:mb-0">
-                        <span class="text-[#717c8e] mr-2">上限数值</span>
+                        <span class="text-[#717c8e] mr-2">{{
+                          t('device.rangesetvu328011-6')
+                        }}</span>
                         <el-input
                           v-model.number="item.maxValue"
                           type="number"
@@ -135,9 +171,10 @@
                           style="width: 80px"
                           size="small"
                           step="any"
-                        :min="item.minValue !== null ? item.minValue : -Infinity"
-                        />
-                        <span class="text-[#717c8e] mr-2 ml-2">下限数值</span>
+                          :min="item.minValue !== null ? item.minValue : -Infinity" />
+                        <span class="text-[#717c8e] mr-2 ml-2">{{
+                          t('device.rangesetvu328011-7')
+                        }}</span>
                         <el-input
                           v-model.number="item.minValue"
                           type="number"
@@ -145,16 +182,13 @@
                           style="width: 80px"
                           size="small"
                           step="any"
-                          :max="item.maxValue !== null ? item.maxValue : Infinity"
-                        />
-                      </div>
-                      <div class="mb-2.5 last:mb-0">
-
+                          :max="item.maxValue !== null ? item.maxValue : Infinity" />
                       </div>
+                      <div class="mb-2.5 last:mb-0"> </div>
                     </div>
-<!--                    <div class="w-[100px] h-[80px]">-->
-<!--                      <el-image :src="defaultPicUrl" class="w-full h-full" />-->
-<!--                    </div>-->
+                    <!--                    <div class="w-[100px] h-[80px]">-->
+                    <!--                      <el-image :src="defaultPicUrl" class="w-full h-full" />-->
+                    <!--                    </div>-->
                   </div>
 
                   <!-- 分隔线 -->
@@ -166,49 +200,47 @@
                       class="flex-1 !px-2 !h-[32px] text-[13px]"
                       plain
                       type="primary"
-                      @click="openUpdateForm('update', item)"
+                      @click="openUpdateForm('update', item)">
+                      <Icon class="mr-1" icon="ep:edit-pen" />{{
+                        t('device.rangesetvu328011-8')
+                      }}</el-button
                     >
-                      <Icon class="mr-1" icon="ep:edit-pen" />
-                      编辑
-                    </el-button>
-<!--                    <el-button-->
-<!--                      class="flex-1 !px-2 !h-[32px] !ml-[10px] text-[13px]"-->
-<!--                      plain-->
-<!--                      type="warning"-->
-<!--                      @click="openDetail(item.id)"-->
-<!--                    >-->
-<!--                      <Icon class="mr-1" icon="ep:view" />-->
-<!--                      详情-->
-<!--                    </el-button>-->
-<!--                    <el-button-->
-<!--                      class="flex-1 !px-2 !h-[32px] !ml-[10px] text-[13px]"-->
-<!--                      plain-->
-<!--                      type="success"-->
-<!--                      @click="openObjectModel(item)"-->
-<!--                    >-->
-<!--                      <Icon class="mr-1" icon="ep:scale-to-original" />-->
-<!--                      物模型-->
-<!--                    </el-button>-->
+                    <!--                    <el-button-->
+                    <!--                      class="flex-1 !px-2 !h-[32px] !ml-[10px] text-[13px]"-->
+                    <!--                      plain-->
+                    <!--                      type="warning"-->
+                    <!--                      @click="openDetail(item.id)"-->
+                    <!--                    >-->
+                    <!--                      <Icon class="mr-1" icon="ep:view" />-->
+                    <!--                      详情-->
+                    <!--                    </el-button>-->
+                    <!--                    <el-button-->
+                    <!--                      class="flex-1 !px-2 !h-[32px] !ml-[10px] text-[13px]"-->
+                    <!--                      plain-->
+                    <!--                      type="success"-->
+                    <!--                      @click="openObjectModel(item)"-->
+                    <!--                    >-->
+                    <!--                      <Icon class="mr-1" icon="ep:scale-to-original" />-->
+                    <!--                      物模型-->
+                    <!--                    </el-button>-->
                     <el-button
                       class="flex-1 !px-2 !h-[32px] !ml-[10px] text-[13px]"
                       plain
                       type="danger"
-                      @click="handleDelete(item.id)"
+                      @click="handleDelete(item.id)">
+                      <Icon icon="ep:delete" />{{ t('device.rangesetvu328011-9') }}</el-button
                     >
-                      <Icon icon="ep:delete" />删除
-                    </el-button>
                   </div>
                 </div>
               </el-card>
             </el-col>
           </el-row>
           <Pagination
-            v-if="selectedNode&&list.length>0"
+            v-if="selectedNode && list.length > 0"
             v-model:limit="queryParams.pageSize"
             v-model:page="queryParams.pageNo"
             :total="total"
-            @pagination="getList"
-          />
+            @pagination="getList" />
         </ContentWrap>
         <!-- 有选中项但无属性时的空状态 -->
         <div v-if="selectedNode && list.length === 0" class="no-properties-state">
@@ -220,11 +252,9 @@
             </template>
             <template #bottom>
               <el-button type="primary" @click="showAddPropertyDialog" size="default">
-                <template #icon>
-                  <Plus />
-                </template>
-                添加第一个属性
-              </el-button>
+                <template #icon> <Plus /> </template
+                >{{ t('device.rangesetvu328011-10') }}</el-button
+              >
             </template>
           </el-empty>
         </div>
@@ -241,10 +271,10 @@ import { useTreeStore } from '@/store/modules/attrTemplateTreeStore'
 import { Check, Plus } from '@element-plus/icons-vue'
 import { nextTick, reactive, ref } from 'vue'
 import { IotAlarmSettingApi } from '@/api/pms/alarm'
-import IotAlarmSettingForm from "@/views/pms/device/monitor/IotAlarmSettingForm.vue";
+import IotAlarmSettingForm from '@/views/pms/device/monitor/IotAlarmSettingForm.vue'
 import defaultIconUrl from '@/assets/svgs/iot/cube.svg'
 import defaultPicUrl from '@/assets/svgs/iot/arrange.svg'
-import {IotDeviceApi} from "@/api/pms/device";
+import { IotDeviceApi } from '@/api/pms/device'
 
 defineOptions({ name: 'IotAlarmSet' })
 
@@ -279,46 +309,46 @@ const ifDevice = ref('')
 const devices = ref([])
 const isDeviceSelectShake = ref(false)
 
-const handleDeviceSelected = async (row) =>{
+const handleDeviceSelected = async (row) => {
   debugger
   // selectedDeviceId.value = row.id
-  const device = devices.value.find(item => item.id === row)
+  const device = devices.value.find((item) => item.id === row)
   if (device) {
-    selectedDeviceName.value = device.deviceCode+device.deviceName
+    selectedDeviceName.value = device.deviceCode + device.deviceName
   }
   queryParams.deviceId = row
-  await getList("2");
+  await getList('2')
 }
-const handleClear = () =>{
+const handleClear = () => {
   selectedDeviceId.value = ''
   selectedDeviceName.value = ''
 }
-const handleDeviceRadio = async () =>{
+const handleDeviceRadio = async () => {
   selectedDeviceName.value = ''
   //置空分类名称
   // selectedName.value = ''
   const deviceParams = {
     assetClass: selectedId.value,
-    pageNo:1,
+    pageNo: 1
   }
   // queryParams.deviceId  = selectedDeviceId.value
   const data = await IotDeviceApi.getAllDeviceParams(deviceParams)
   debugger
-  devices.value = data;
+  devices.value = data
   // if (selectedDeviceId.value===''||selectedDeviceId.value===undefined) {
   //   list.value = []
   // } else {
-    await getList("2")
+  await getList('2')
   // }
-};
-const handleClassifyRadio = async () =>{
+}
+const handleClassifyRadio = async () => {
   queryParams.classifyId = selectedId.value
   queryParams.deviceId = null
   selectedDeviceId.value = ''
-  await getList("1")
-};
+  await getList('1')
+}
 /** 查询 设备属性模板 列表 */
-const getList = async (ifdevice:string) => {
+const getList = async (ifdevice: string) => {
   loading.value = true
   try {
     debugger
@@ -356,14 +386,19 @@ const handleDeviceCategoryTreeNodeClick = async (row) => {
   selectedName.value = row.name
   queryParams.classifyId = row.id
   ifDevice.value = '1'
-  await getList("1")
+  await getList('1')
 }
 
 /** 添加/修改操作 */
 const formRef = ref()
 const openForm = (type: string, id?: number) => {
-  if (ifDevice.value === '2'&&(selectedDeviceId.value === ''||selectedDeviceId.value === null||selectedDeviceId.value === undefined)) {
-    message.error('请先选择设备');
+  if (
+    ifDevice.value === '2' &&
+    (selectedDeviceId.value === '' ||
+      selectedDeviceId.value === null ||
+      selectedDeviceId.value === undefined)
+  ) {
+    message.error('请先选择设备')
     // 触发抖动效果
     isDeviceSelectShake.value = true
     // 1秒后移除抖动类名,以便下次可以重新触发
@@ -372,14 +407,28 @@ const openForm = (type: string, id?: number) => {
     }, 1000)
     return
   }
-  formRef.value.open(type, id, selectedId.value, selectedName.value, selectedDeviceId.value, selectedDeviceName.value)
+  formRef.value.open(
+    type,
+    id,
+    selectedId.value,
+    selectedName.value,
+    selectedDeviceId.value,
+    selectedDeviceName.value
+  )
 }
 
 const openUpdateForm = (type: string, item?: any) => {
   debugger
   selectedDeviceId.value = item.deviceId
   selectedDeviceName.value = item.deviceName
-  formRef.value.open(type, item.id, selectedId.value, selectedName.value, selectedDeviceId.value, selectedDeviceName.value)
+  formRef.value.open(
+    type,
+    item.id,
+    selectedId.value,
+    selectedName.value,
+    selectedDeviceId.value,
+    selectedDeviceName.value
+  )
 }
 /** 打开详情 */
 const openDetail = (row) => {
@@ -443,8 +492,8 @@ const saveAllProperties = async () => {
   }
 
   // 筛选出有修改的属性
-  const modifiedItems = list.value.filter(item =>
-    item.maxValue !== undefined || item.minValue !== undefined
+  const modifiedItems = list.value.filter(
+    (item) => item.maxValue !== undefined || item.minValue !== undefined
   )
 
   if (modifiedItems.length === 0) {
@@ -470,7 +519,7 @@ const saveAllProperties = async () => {
 /** 初始化 */
 onMounted(() => {
   //一进来先查询分类的属性
-  getList("1")
+  getList('1')
 })
 </script>
 <style scoped>
@@ -535,22 +584,35 @@ onMounted(() => {
   vertical-align: middle;
 }
 .shake-highlight {
-  animation: shake 0.5s cubic-bezier(.36,.07,.19,.97) both;
+  animation: shake 0.5s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
   background-color: red !important;
   box-shadow: 0 0 0 1px rgba(245, 108, 108, 0.2) !important;
 }
 
 @keyframes shake {
-  10%, 90% { transform: translateX(-1px); }
-  20%, 80% { transform: translateX(2px); }
-  30%, 50%, 70% { transform: translateX(-3px); }
-  40%, 60% { transform: translateX(3px); }
+  10%,
+  90% {
+    transform: translateX(-1px);
+  }
+  20%,
+  80% {
+    transform: translateX(2px);
+  }
+  30%,
+  50%,
+  70% {
+    transform: translateX(-3px);
+  }
+  40%,
+  60% {
+    transform: translateX(3px);
+  }
 }
 :deep(.el-select__selection) {
   height: 32px; /* 自定义高度 */
 }
-:deep(.el-select__placeholder.is-transparent){
-  color: #409EFF;
+:deep(.el-select__placeholder.is-transparent) {
+  color: #409eff;
 }
 .auto-wrap {
   /* 关键样式:确保文本能在容器内自动换行 */

+ 261 - 272
src/views/pms/device/monitor/RangeSetting.vue

@@ -3,14 +3,17 @@
     <!-- 页面标题与导航 -->
     <el-page-header
       @back="handleBack"
-      content="设备属性管理"
-      class="page-header"
-    >
+      :content="t('device.rangesetti238585-0')"
+      class="page-header">
       <template #extra>
         <el-breadcrumb separator="/" class="breadcrumb">
-          <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
-          <el-breadcrumb-item :to="{ path: '/devices' }">设备管理</el-breadcrumb-item>
-          <el-breadcrumb-item>属性配置</el-breadcrumb-item>
+          <el-breadcrumb-item :to="{ path: '/' }">{{
+            t('device.rangesetti238585-1')
+          }}</el-breadcrumb-item>
+          <el-breadcrumb-item :to="{ path: '/devices' }">{{
+            t('device.rangesetti238585-2')
+          }}</el-breadcrumb-item>
+          <el-breadcrumb-item>{{ t('device.rangesetti238585-3') }}</el-breadcrumb-item>
         </el-breadcrumb>
       </template>
     </el-page-header>
@@ -21,13 +24,12 @@
         <el-card class="sidebar-card">
           <template #header>
             <div class="sidebar-header">
-              <h3 class="sidebar-title">设备与分类</h3>
+              <h3 class="sidebar-title">{{ t('device.rangesetti238585-4') }}</h3>
               <el-input
                 v-model="searchQuery"
-                placeholder="搜索设备或分类..."
+                :placeholder="t('device.rangesetti238585-5')"
                 size="small"
-                class="search-input"
-              >
+                class="search-input">
                 <template #prefix>
                   <el-icon class="search-icon"><Search /></el-icon>
                 </template>
@@ -44,8 +46,7 @@
             default-expand-all
             @node-click="handleNodeSelect"
             class="device-tree"
-            :highlight-current="true"
-          >
+            :highlight-current="true">
             <!-- 树形节点自定义插槽 -->
             <template #default="{ node, data }">
               <div class="tree-node">
@@ -62,8 +63,7 @@
                   v-if="data.propertyCount"
                   :value="data.propertyCount"
                   class="property-count-badge"
-                  size="small"
-                />
+                  size="small" />
               </div>
             </template>
           </el-tree>
@@ -84,7 +84,9 @@
               </template>
             </el-icon>
             <h2 class="selected-name">{{ selectedNode.label }}</h2>
-            <el-tag :type="selectedNode.type === 'category' ? 'info' : 'primary'" class="node-type-tag">
+            <el-tag
+              :type="selectedNode.type === 'category' ? 'info' : 'primary'"
+              class="node-type-tag">
               {{ selectedNode.type === 'category' ? '分类' : '设备' }}
             </el-tag>
           </div>
@@ -94,33 +96,22 @@
               type="primary"
               @click="showAddPropertyDialog"
               class="add-property-btn"
-              size="default"
+              size="default">
+              <template #icon> <Plus /> </template>{{ t('device.rangesetti238585-6') }}</el-button
             >
-              <template #icon>
-                <Plus />
-              </template>
-              添加属性
-            </el-button>
             <el-button
               type="success"
               @click="saveAllProperties"
               :loading="saveLoading"
-              size="default"
+              size="default">
+              <template #icon> <Check /> </template>{{ t('device.rangesetti238585-7') }}</el-button
             >
-              <template #icon>
-                <Check />
-              </template>
-              保存配置
-            </el-button>
           </div>
         </div>
 
         <!-- 未选择任何项时的空状态 -->
         <div v-else class="empty-state">
-          <el-empty
-            description="请从左侧选择一个设备或分类"
-            class="main-empty-state"
-          >
+          <el-empty :description="t('device.tip')" class="main-empty-state">
             <template #image>
               <div class="empty-image-container">
                 <el-icon class="empty-icon"><Icon icon="ep:add" /></el-icon>
@@ -138,11 +129,10 @@
             :property="property"
             @update-property="handlePropertyUpdate(index, $event)"
             @delete-property="handlePropertyDelete(index)"
-            class="property-card-item"
-          >
+            class="property-card-item">
             <!-- 卡片底部插槽示例 - 可以根据需要自定义内容 -->
             <template #footer-actions>
-              <el-tooltip content="查看历史记录">
+              <el-tooltip :content="t('device.rangesetti238585-8')">
                 <el-button icon="Clock" size="mini" class="history-btn" />
               </el-tooltip>
             </template>
@@ -151,25 +141,16 @@
 
         <!-- 有选中项但无属性时的空状态 -->
         <div v-if="selectedNode && properties.length === 0" class="no-properties-state">
-          <el-empty
-            description="暂无属性,请点击添加属性按钮创建"
-          >
+          <el-empty description="暂无属性,请点击添加属性按钮创建">
             <template #image>
               <div class="no-properties-image">
                 <el-icon class="no-properties-icon"><Icon icon="ep:add" /></el-icon>
               </div>
             </template>
             <template #bottom>
-              <el-button
-                type="primary"
-                @click="showAddPropertyDialog"
-                size="default"
+              <el-button type="primary" @click="showAddPropertyDialog" size="default">
+                <template #icon> <Plus /> </template>{{ t('device.rangesetti238585-9') }}</el-button
               >
-                <template #icon>
-                  <Plus />
-                </template>
-                添加第一个属性
-              </el-button>
             </template>
           </el-empty>
         </div>
@@ -179,103 +160,94 @@
     <!-- 添加/编辑属性对话框 -->
     <el-dialog
       v-model="propertyDialogVisible"
-      :title="isEditing ? '编辑属性' : '添加新属性'"
+      ::title="t('device.rangesetti238585-10')"
       :width="500"
       @close="resetPropertyForm"
-      class="property-dialog"
-    >
+      class="property-dialog">
       <el-form
         ref="propertyForm"
         :model="currentProperty"
         :rules="propertyRules"
         label-width="120px"
-        class="property-form"
-      >
-        <el-form-item label="属性名称" prop="name">
+        class="property-form">
+        <el-form-item :label="t('device.rangesetti238585-11')" prop="name">
           <el-input
             v-model="currentProperty.name"
-            placeholder="请输入属性名称"
-            maxlength="50"
-          />
+            :placeholder="t('device.rangesetti238585-12')"
+            maxlength="50" />
         </el-form-item>
 
-        <el-form-item label="属性标识" prop="code">
+        <el-form-item :label="t('device.rangesetti238585-13')" prop="code">
           <el-input
             v-model="currentProperty.code"
-            placeholder="请输入属性唯一标识"
+            :placeholder="t('device.rangesetti238585-14')"
             maxlength="30"
-            :disabled="isEditing"
-          />
-          <div class="form-hint">标识用于系统内部识别,添加后不可修改</div>
+            :disabled="isEditing" />
+          <div class="form-hint">{{ t('device.rangesetti238585-15') }}</div>
         </el-form-item>
 
-        <el-form-item label="数据类型" prop="dataType">
+        <el-form-item :label="t('device.rangesetti238585-16')" prop="dataType">
           <el-select
             v-model="currentProperty.dataType"
-            placeholder="请选择数据类型"
-            @change="handleDataTypeChange"
-          >
-            <el-option label="整数" value="integer" />
-            <el-option label="浮点数" value="float" />
-            <el-option label="布尔值" value="boolean" />
+            :placeholder="t('device.rangesetti238585-17')"
+            @change="handleDataTypeChange">
+            <el-option :label="t('device.rangesetti238585-18')" value="integer" />
+            <el-option :label="t('device.rangesetti238585-19')" value="float" />
+            <el-option :label="t('device.rangesetti238585-20')" value="boolean" />
           </el-select>
         </el-form-item>
 
-        <el-form-item label="单位" prop="unit">
+        <el-form-item :label="t('device.rangesetti238585-21')" prop="unit">
           <el-input
             v-model="currentProperty.unit"
-            placeholder="例如:℃、%、m"
-            maxlength="10"
-          />
+            :placeholder="t('device.rangesetti238585-22')"
+            maxlength="10" />
         </el-form-item>
 
         <el-row :gutter="16" class="limit-inputs-row">
           <el-col :span="12">
-            <el-form-item label="最小值" prop="minValue">
+            <el-form-item :label="t('device.rangesetti238585-23')" prop="minValue">
               <el-input-number
                 v-model.number="currentProperty.minValue"
                 :precision="currentProperty.dataType === 'float' ? 2 : 0"
                 :step="currentProperty.dataType === 'float' ? 0.1 : 1"
-                placeholder="请输入最小值"
-                :disabled="currentProperty.dataType === 'boolean'"
-              />
+                :placeholder="t('device.rangesetti238585-24')"
+                :disabled="currentProperty.dataType === 'boolean'" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="最大值" prop="maxValue">
+            <el-form-item :label="t('device.rangesetti238585-25')" prop="maxValue">
               <el-input-number
                 v-model.number="currentProperty.maxValue"
                 :precision="currentProperty.dataType === 'float' ? 2 : 0"
                 :step="currentProperty.dataType === 'float' ? 0.1 : 1"
-                placeholder="请输入最大值"
-                :disabled="currentProperty.dataType === 'boolean'"
-              />
+                :placeholder="t('device.rangesetti238585-26')"
+                :disabled="currentProperty.dataType === 'boolean'" />
             </el-form-item>
           </el-col>
         </el-row>
 
-        <el-form-item label="描述信息" prop="description">
+        <el-form-item :label="t('device.rangesetti238585-27')" prop="description">
           <el-input
             v-model="currentProperty.description"
-            placeholder="请输入属性描述(可选)"
+            :placeholder="t('device.rangesetti238585-28')"
             type="textarea"
             :rows="3"
-            maxlength="200"
-          />
+            maxlength="200" />
         </el-form-item>
 
         <el-form-item>
-          <el-checkbox v-model="currentProperty.required">设为必填属性</el-checkbox>
+          <el-checkbox v-model="currentProperty.required">{{
+            t('device.rangesetti238585-29')
+          }}</el-checkbox>
         </el-form-item>
       </el-form>
 
       <template #footer>
-        <el-button @click="propertyDialogVisible = false">取消</el-button>
-        <el-button
-          type="primary"
-          @click="confirmPropertyAction"
-          :loading="dialogLoading"
-        >
+        <el-button @click="propertyDialogVisible = false">{{
+          t('device.rangesetti238585-30')
+        }}</el-button>
+        <el-button type="primary" @click="confirmPropertyAction" :loading="dialogLoading">
           {{ isEditing ? '更新属性' : '创建属性' }}
         </el-button>
       </template>
@@ -284,12 +256,21 @@
 </template>
 
 <script setup>
-import { ref, reactive, watch, nextTick, computed } from 'vue';
+import { ref, reactive, watch, nextTick, computed } from 'vue'
+import { useI18n } from 'vue-i18n'
+const { t } = useI18n()
 import {
-  Search, FolderOpened, Monitor, Plus, Check,
-  Edit, Delete, InfoFilled, Clock
-} from '@element-plus/icons-vue';
-import { ElMessage, ElMessageBox, ElNotification } from 'element-plus';
+  Search,
+  FolderOpened,
+  Monitor,
+  Plus,
+  Check,
+  Edit,
+  Delete,
+  InfoFilled,
+  Clock
+} from '@element-plus/icons-vue'
+import { ElMessage, ElMessageBox, ElNotification } from 'element-plus'
 
 // 属性卡片组件(使用slot)
 const PropertyCard = {
@@ -418,42 +399,42 @@ const PropertyCard = {
     // 获取数据类型显示名称
     getTypeName(type) {
       const types = {
-        'integer': '整数',
-        'float': '浮点数',
-        'boolean': '布尔值'
-      };
-      return types[type] || type;
+        integer: '整数',
+        float: '浮点数',
+        boolean: '布尔值'
+      }
+      return types[type] || type
     },
     // 获取数据类型标签样式
     getTypeTagType(type) {
       const types = {
-        'integer': 'primary',
-        'float': 'success',
-        'boolean': 'warning'
-      };
-      return types[type] || 'info';
+        integer: 'primary',
+        float: 'success',
+        boolean: 'warning'
+      }
+      return types[type] || 'info'
     },
     // 处理上下限变化
     handleLimitChange() {
-      this.$emit('update-property', { ...this.property });
+      this.$emit('update-property', { ...this.property })
     },
     // 处理布尔值变化
     handleBooleanChange() {
-      this.$emit('update-property', { ...this.property });
+      this.$emit('update-property', { ...this.property })
     },
     // 格式化日期
     formatDate(timestamp) {
-      if (!timestamp) return '未更新';
-      const date = new Date(timestamp);
-      return date.toLocaleString();
+      if (!timestamp) return '未更新'
+      const date = new Date(timestamp)
+      return date.toLocaleString()
     }
   }
-};
+}
 
 // 生成唯一ID
 const generateId = () => {
-  return Date.now().toString(36) + Math.random().toString(36).substr(2, 8);
-};
+  return Date.now().toString(36) + Math.random().toString(36).substr(2, 8)
+}
 
 // 设备树形结构数据
 const deviceTreeData = ref([
@@ -497,24 +478,24 @@ const deviceTreeData = ref([
       }
     ]
   }
-]);
+])
 
 // 树形结构配置
 const treeProps = {
   children: 'children',
   label: 'label'
-};
+}
 
 // 状态管理
-const searchQuery = ref('');
-const deviceTree = ref(null);
-const selectedNode = ref(null);
-const properties = ref([]);
-const saveLoading = ref(false);
-const dialogLoading = ref(false);
-const propertyDialogVisible = ref(false);
-const isEditing = ref(false);
-const currentEditIndex = ref(-1);
+const searchQuery = ref('')
+const deviceTree = ref(null)
+const selectedNode = ref(null)
+const properties = ref([])
+const saveLoading = ref(false)
+const dialogLoading = ref(false)
+const propertyDialogVisible = ref(false)
+const isEditing = ref(false)
+const currentEditIndex = ref(-1)
 
 // 属性表单数据
 const currentProperty = reactive({
@@ -529,7 +510,7 @@ const currentProperty = reactive({
   description: '',
   required: false,
   updatedAt: null
-});
+})
 
 // 属性表单验证规则
 const propertyRules = {
@@ -542,9 +523,7 @@ const propertyRules = {
     { pattern: /^[a-zA-Z0-9_]+$/, message: '标识只能包含字母、数字和下划线', trigger: 'blur' },
     { max: 30, message: '属性标识不能超过30个字符', trigger: 'blur' }
   ],
-  dataType: [
-    { required: true, message: '请选择数据类型', trigger: 'change' }
-  ],
+  dataType: [{ required: true, message: '请选择数据类型', trigger: 'change' }],
   minValue: [
     {
       required: () => currentProperty.dataType !== 'boolean',
@@ -557,15 +536,15 @@ const propertyRules = {
       trigger: 'blur',
       validator: (rule, value, callback) => {
         if (currentProperty.dataType === 'boolean') {
-          return callback();
+          return callback()
         }
         if (value === null || value === undefined) {
-          return callback(new Error('请输入最小值'));
+          return callback(new Error('请输入最小值'))
         }
         if (currentProperty.maxValue !== null && value > currentProperty.maxValue) {
-          return callback(new Error('最小值不能大于最大值'));
+          return callback(new Error('最小值不能大于最大值'))
         }
-        callback();
+        callback()
       }
     }
   ],
@@ -581,30 +560,30 @@ const propertyRules = {
       trigger: 'blur',
       validator: (rule, value, callback) => {
         if (currentProperty.dataType === 'boolean') {
-          return callback();
+          return callback()
         }
         if (value === null || value === undefined) {
-          return callback(new Error('请输入最大值'));
+          return callback(new Error('请输入最大值'))
         }
         if (currentProperty.minValue !== null && value < currentProperty.minValue) {
-          return callback(new Error('最大值不能小于最小值'));
+          return callback(new Error('最大值不能小于最小值'))
         }
-        callback();
+        callback()
       }
     }
   ]
-};
+}
 
 // 过滤节点方法
 const filterNode = (value, data) => {
-  if (!value) return true;
-  return data.label.toLowerCase().includes(value.toLowerCase());
-};
+  if (!value) return true
+  return data.label.toLowerCase().includes(value.toLowerCase())
+}
 
 // 监听搜索关键词变化
 watch(searchQuery, (value) => {
-  deviceTree.value?.filter(value);
-});
+  deviceTree.value?.filter(value)
+})
 
 // 处理节点选择
 const handleNodeSelect = (data) => {
@@ -618,28 +597,31 @@ const handleNodeSelect = (data) => {
         cancelButtonText: '取消',
         type: 'warning'
       }
-    ).then(() => {
-      loadNodeProperties(data);
-    }).catch(() => {
-      // 取消切换,恢复之前的选择
-      nextTick(() => {
-        deviceTree.value.setCurrentKey(selectedNode.value?.id);
-      });
-    });
+    )
+      .then(() => {
+        loadNodeProperties(data)
+      })
+      .catch(() => {
+        // 取消切换,恢复之前的选择
+        nextTick(() => {
+          deviceTree.value.setCurrentKey(selectedNode.value?.id)
+        })
+      })
   } else {
-    loadNodeProperties(data);
+    loadNodeProperties(data)
   }
-};
+}
 
 // 加载节点属性
 const loadNodeProperties = (data) => {
-  selectedNode.value = data;
+  selectedNode.value = data
   // 模拟API加载属性数据
-  saveLoading.value = true;
+  saveLoading.value = true
 
   setTimeout(() => {
     // 根据不同节点加载不同的属性示例数据
-    if (data.id === 'dev11') { // 室内温度计
+    if (data.id === 'dev11') {
+      // 室内温度计
       properties.value = [
         {
           id: generateId(),
@@ -676,8 +658,9 @@ const loadNodeProperties = (data) => {
           required: true,
           updatedAt: Date.now()
         }
-      ];
-    } else if (data.id === 'cat1') { // 温度设备分类
+      ]
+    } else if (data.id === 'cat1') {
+      // 温度设备分类
       properties.value = [
         {
           id: generateId(),
@@ -703,165 +686,169 @@ const loadNodeProperties = (data) => {
           description: '设备存储的环境温度范围',
           updatedAt: Date.now() - 86400000
         }
-      ];
+      ]
     } else {
       // 其他节点的默认属性
-      properties.value = [];
+      properties.value = []
     }
 
-    saveLoading.value = false;
+    saveLoading.value = false
     ElNotification({
       title: '已加载',
       message: `已加载 ${data.label} 的 ${properties.value.length} 个属性`,
       duration: 1500,
       position: 'bottom-right'
-    });
-  }, 600);
-};
+    })
+  }, 600)
+}
 
 // 检查是否有未保存的更改
-const hasUnsavedChanges = ref(false);
+const hasUnsavedChanges = ref(false)
 
 // 监听属性变化
-watch(properties, (newVal) => {
-  hasUnsavedChanges.value = true;
-}, { deep: true });
+watch(
+  properties,
+  (newVal) => {
+    hasUnsavedChanges.value = true
+  },
+  { deep: true }
+)
 
 // 显示添加属性对话框
 const showAddPropertyDialog = () => {
-  resetPropertyForm();
-  isEditing.value = false;
-  currentProperty.id = generateId();
-  propertyDialogVisible.value = true;
+  resetPropertyForm()
+  isEditing.value = false
+  currentProperty.id = generateId()
+  propertyDialogVisible.value = true
 
   // 自动聚焦到第一个输入框
   nextTick(() => {
-    const firstInput = document.querySelector('.property-dialog .el-input__inner');
-    if (firstInput) firstInput.focus();
-  });
-};
+    const firstInput = document.querySelector('.property-dialog .el-input__inner')
+    if (firstInput) firstInput.focus()
+  })
+}
 
 // 显示编辑属性对话框
 const showEditPropertyDialog = (index, property) => {
-  resetPropertyForm();
-  isEditing.value = true;
-  currentEditIndex.value = index;
+  resetPropertyForm()
+  isEditing.value = true
+  currentEditIndex.value = index
 
   // 复制属性数据到表单
-  Object.assign(currentProperty, { ...property });
+  Object.assign(currentProperty, { ...property })
 
-  propertyDialogVisible.value = true;
+  propertyDialogVisible.value = true
   nextTick(() => {
-    const firstInput = document.querySelector('.property-dialog .el-input__inner');
-    if (firstInput) firstInput.focus();
-  });
-};
+    const firstInput = document.querySelector('.property-dialog .el-input__inner')
+    if (firstInput) firstInput.focus()
+  })
+}
 
 // 重置属性表单
 const resetPropertyForm = () => {
-  currentProperty.name = '';
-  currentProperty.code = '';
-  currentProperty.dataType = 'float';
-  currentProperty.unit = '';
-  currentProperty.minValue = null;
-  currentProperty.maxValue = null;
-  currentProperty.booleanValue = false;
-  currentProperty.description = '';
-  currentProperty.required = false;
+  currentProperty.name = ''
+  currentProperty.code = ''
+  currentProperty.dataType = 'float'
+  currentProperty.unit = ''
+  currentProperty.minValue = null
+  currentProperty.maxValue = null
+  currentProperty.booleanValue = false
+  currentProperty.description = ''
+  currentProperty.required = false
 
   // 重置表单验证
   nextTick(() => {
-    propertyForm.value?.clearValidate();
-  });
-};
+    propertyForm.value?.clearValidate()
+  })
+}
 
 // 处理数据类型变化
 const handleDataTypeChange = (type) => {
   // 根据数据类型重置相关值
   if (type === 'boolean') {
-    currentProperty.minValue = null;
-    currentProperty.maxValue = null;
+    currentProperty.minValue = null
+    currentProperty.maxValue = null
   } else if (type === 'integer') {
-    currentProperty.minValue = currentProperty.minValue !== null ? Math.round(currentProperty.minValue) : 0;
-    currentProperty.maxValue = currentProperty.maxValue !== null ? Math.round(currentProperty.maxValue) : 100;
+    currentProperty.minValue =
+      currentProperty.minValue !== null ? Math.round(currentProperty.minValue) : 0
+    currentProperty.maxValue =
+      currentProperty.maxValue !== null ? Math.round(currentProperty.maxValue) : 100
   }
-};
+}
 
 // 确认属性操作(添加或编辑)
-const propertyForm = ref(null);
+const propertyForm = ref(null)
 const confirmPropertyAction = () => {
   propertyForm.value.validate((valid) => {
     if (valid) {
-      dialogLoading.value = true;
+      dialogLoading.value = true
 
       // 模拟API请求延迟
       setTimeout(() => {
-        const newProperty = { ...currentProperty };
-        newProperty.updatedAt = Date.now();
+        const newProperty = { ...currentProperty }
+        newProperty.updatedAt = Date.now()
 
         if (isEditing.value) {
           // 编辑现有属性
-          properties.value.splice(currentEditIndex.value, 1, newProperty);
-          ElMessage.success('属性已更新');
+          properties.value.splice(currentEditIndex.value, 1, newProperty)
+          ElMessage.success('属性已更新')
         } else {
           // 添加新属性
-          properties.value.push(newProperty);
+          properties.value.push(newProperty)
           // 更新节点的属性计数
           if (selectedNode.value) {
-            selectedNode.value.propertyCount = (selectedNode.value.propertyCount || 0) + 1;
+            selectedNode.value.propertyCount = (selectedNode.value.propertyCount || 0) + 1
           }
-          ElMessage.success('新属性已添加');
+          ElMessage.success('新属性已添加')
         }
 
-        dialogLoading.value = false;
-        propertyDialogVisible.value = false;
-      }, 500);
+        dialogLoading.value = false
+        propertyDialogVisible.value = false
+      }, 500)
     }
-  });
-};
+  })
+}
 
 // 处理属性更新
 const handlePropertyUpdate = (index, updatedProperty) => {
-  updatedProperty.updatedAt = Date.now();
-  properties.value.splice(index, 1, updatedProperty);
-};
+  updatedProperty.updatedAt = Date.now()
+  properties.value.splice(index, 1, updatedProperty)
+}
 
 // 处理属性删除
 const handlePropertyDelete = (index) => {
-  const property = properties.value[index];
-  ElMessageBox.confirm(
-    `确定要删除属性"${property.name}"吗?此操作不可撤销。`,
-    '确认删除',
-    {
-      confirmButtonText: '确定',
-      cancelButtonText: '取消',
-      type: 'danger'
-    }
-  ).then(() => {
-    properties.value.splice(index, 1);
-    // 更新节点的属性计数
-    if (selectedNode.value) {
-      selectedNode.value.propertyCount = Math.max(0, (selectedNode.value.propertyCount || 0) - 1);
-    }
-    ElMessage.success('属性已删除');
-  }).catch(() => {
-    // 取消删除
-  });
-};
+  const property = properties.value[index]
+  ElMessageBox.confirm(`确定要删除属性"${property.name}"吗?此操作不可撤销。`, '确认删除', {
+    confirmButtonText: '确定',
+    cancelButtonText: '取消',
+    type: 'danger'
+  })
+    .then(() => {
+      properties.value.splice(index, 1)
+      // 更新节点的属性计数
+      if (selectedNode.value) {
+        selectedNode.value.propertyCount = Math.max(0, (selectedNode.value.propertyCount || 0) - 1)
+      }
+      ElMessage.success('属性已删除')
+    })
+    .catch(() => {
+      // 取消删除
+    })
+}
 
 // 保存所有属性配置
 const saveAllProperties = () => {
   if (properties.value.length === 0) {
-    ElMessage.warning('没有可保存的属性');
-    return;
+    ElMessage.warning('没有可保存的属性')
+    return
   }
 
-  saveLoading.value = true;
+  saveLoading.value = true
 
   // 模拟API保存
   setTimeout(() => {
-    saveLoading.value = false;
-    hasUnsavedChanges.value = false;
+    saveLoading.value = false
+    hasUnsavedChanges.value = false
 
     ElNotification({
       title: '保存成功',
@@ -869,44 +856,44 @@ const saveAllProperties = () => {
       type: 'success',
       duration: 2000,
       position: 'bottom-right'
-    });
-  }, 800);
-};
+    })
+  }, 800)
+}
 
 // 返回操作
 const handleBack = () => {
   if (hasUnsavedChanges.value) {
-    ElMessageBox.confirm(
-      '当前有未保存的修改,离开页面将丢失这些更改,是否继续?',
-      '确认离开',
-      {
-        confirmButtonText: '离开',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }
-    ).then(() => {
+    ElMessageBox.confirm('当前有未保存的修改,离开页面将丢失这些更改,是否继续?', '确认离开', {
+      confirmButtonText: '离开',
+      cancelButtonText: '取消',
+      type: 'warning'
+    }).then(() => {
       // 实际应用中这里会执行路由跳转
-      ElMessage.info('已返回上一页');
-    });
+      ElMessage.info('已返回上一页')
+    })
   } else {
     // 实际应用中这里会执行路由跳转
-    ElMessage.info('已返回上一页');
+    ElMessage.info('已返回上一页')
   }
-};
+}
 
 // 页面加载时默认选中第一个设备
-watch(() => deviceTreeData.value.length, (length) => {
-  if (length > 0 && !selectedNode.value) {
-    // 尝试选择第一个设备节点
-    const firstDevice = deviceTreeData.value[0]?.children?.[0];
-    if (firstDevice) {
-      nextTick(() => {
-        handleNodeSelect(firstDevice);
-        deviceTree.value.setCurrentKey(firstDevice.id);
-      });
+watch(
+  () => deviceTreeData.value.length,
+  (length) => {
+    if (length > 0 && !selectedNode.value) {
+      // 尝试选择第一个设备节点
+      const firstDevice = deviceTreeData.value[0]?.children?.[0]
+      if (firstDevice) {
+        nextTick(() => {
+          handleNodeSelect(firstDevice)
+          deviceTree.value.setCurrentKey(firstDevice.id)
+        })
+      }
     }
-  }
-}, { immediate: true });
+  },
+  { immediate: true }
+)
 </script>
 
 <style scoped>
@@ -1315,7 +1302,7 @@ watch(() => deviceTreeData.value.length, (length) => {
 
 .no-properties-icon {
   font-size: 100px;
-  color: #c9cdD4;
+  color: #c9cdd4;
 }
 
 /* 对话框样式 */
@@ -1360,7 +1347,9 @@ watch(() => deviceTreeData.value.length, (length) => {
 
 /* 动画效果 */
 .el-collapse-transition {
-  transition: height 0.3s ease, opacity 0.3s ease;
+  transition:
+    height 0.3s ease,
+    opacity 0.3s ease;
 }
 
 /* 响应式调整 */

+ 21 - 30
src/views/pms/device/monitor/TdDeviceInfo copy.vue

@@ -1,5 +1,6 @@
 <script setup lang="ts">
 import { Odometer, CircleCheckFilled, CircleCloseFilled } from '@element-plus/icons-vue'
+import { useI18n } from 'vue-i18n'
 import { IotDeviceApi } from '@/api/pms/device'
 import dayjs from 'dayjs'
 import { rangeShortcuts } from '@/utils/formatTime'
@@ -7,6 +8,7 @@ import { IotStatApi, cancelAllRequests } from '@/api/pms/stat'
 
 import * as echarts from 'echarts'
 import { colors } from '@/utils/td-color'
+const { t } = useI18n()
 
 const { query } = useRoute()
 
@@ -514,38 +516,31 @@ onUnmounted(() => {
     id="td-device-info"
   >
     <h2 class="flex items-center gap-2">
-      <el-icon class="text-sky!"><Odometer /></el-icon> 设备基础信息
-    </h2>
+      <el-icon class="text-sky!"><Odometer /></el-icon>{{ t('device.tddevicein208875-0') }}</h2>
     <el-form size="large" label-position="top" class="mt-4 grid grid-cols-3 gap-4">
-      <el-form-item label="资产编码"> {{ data.deviceCode }} </el-form-item>
-      <el-form-item label="设备类别"> {{ data.deviceName }} </el-form-item>
-      <el-form-item label="所在部门"> {{ data.dept }} </el-form-item>
-      <el-form-item label="网关状态" class="online" type="plain">
+      <el-form-item :label="t('device.tddevicein208875-1')"> {{ data.deviceCode }} </el-form-item>
+      <el-form-item :label="t('device.tddevicein208875-2')"> {{ data.deviceName }} </el-form-item>
+      <el-form-item :label="t('device.tddevicein208875-3')"> {{ data.dept }} </el-form-item>
+      <el-form-item :label="t('device.tddevicein208875-4')" class="online" type="plain">
         <el-tag
           v-if="data.ifInline === '3'"
           type="success"
           size="default"
           class="flex items-center"
         >
-          <el-icon class="text-emerald!"><CircleCheckFilled /></el-icon>
-          在线
-        </el-tag>
+          <el-icon class="text-emerald!"><CircleCheckFilled /></el-icon>{{ t('device.tddevicein208875-5') }}</el-tag>
 
         <el-tag v-if="data.ifInline === '4'" type="danger" size="default" class="flex items-center">
-          <el-icon class="text-rose"><CircleCloseFilled /></el-icon>
-          离线
-        </el-tag>
+          <el-icon class="text-rose"><CircleCloseFilled /></el-icon>{{ t('device.tddevicein208875-6') }}</el-tag>
       </el-form-item>
-      <el-form-item v-if="data.carOnline" label="中航北斗" class="online" type="plain">
+      <el-form-item v-if="data.carOnline" :label="t('device.tddevicein208875-7')" class="online" type="plain">
         <el-tag
           v-if="data.carOnline === 'true'"
           type="success"
           size="default"
           class="flex items-center"
         >
-          <el-icon class="text-emerald!"><CircleCheckFilled /></el-icon>
-          在线
-        </el-tag>
+          <el-icon class="text-emerald!"><CircleCheckFilled /></el-icon>{{ t('device.tddevicein208875-5') }}</el-tag>
 
         <el-tag
           v-if="data.carOnline === 'false'"
@@ -553,16 +548,14 @@ onUnmounted(() => {
           size="default"
           class="flex items-center"
         >
-          <el-icon class="text-rose"><CircleCloseFilled /></el-icon>
-          离线
-        </el-tag>
+          <el-icon class="text-rose"><CircleCloseFilled /></el-icon>{{ t('device.tddevicein208875-6') }}</el-tag>
       </el-form-item>
-      <el-form-item label="最后数据时间"> {{ data.lastInlineTime }} </el-form-item>
-      <el-form-item v-if="data.vehicle" label="车牌号码"> {{ data.vehicle }} </el-form-item>
+      <el-form-item :label="t('device.tddevicein208875-8')"> {{ data.lastInlineTime }} </el-form-item>
+      <el-form-item v-if="data.vehicle" :label="t('device.tddevicein208875-9')"> {{ data.vehicle }} </el-form-item>
     </el-form>
   </div>
   <div class="mt-4 w-full rounded-lg bg-gradient-to-r from-blue-100 to-white p-4 shadow min-h-50">
-    <header class="font-medium text-center w-full">网关数采</header>
+    <header class="font-medium text-center w-full">{{ t('device.tddevicein208875-10') }}</header>
     <div
       v-loading="dimensionLoading"
       element-loading-background="transparent"
@@ -592,7 +585,7 @@ onUnmounted(() => {
     v-if="carDimensions.length"
     class="mt-4 w-full rounded-lg bg-gradient-to-r from-blue-100 to-white p-4 shadow"
   >
-    <header class="font-medium text-center w-full">中航北斗</header>
+    <header class="font-medium text-center w-full">{{ t('device.tddevicein208875-7') }}</header>
     <div class="w-full mt-4 grid grid-cols-4 gap-4" id="dimension">
       <button
         v-for="item in carDimensions"
@@ -616,19 +609,17 @@ onUnmounted(() => {
   <div class="w-full mt-4 bg-gradient-to-r from-blue-100 to-white min-h-175 rounded-lg p-6 shadow">
     <header class="flex items-center justify-between">
       <h3 class="flex items-center gap-2">
-        <div class="i-material-symbols:area-chart-outline-rounded text-sky size-6" text-sky></div>
-        数据趋势
-      </h3>
+        <div class="i-material-symbols:area-chart-outline-rounded text-sky size-6" text-sky></div>{{ t('device.tddevicein208875-11') }}</h3>
       <div class="flex gap-4">
-        <el-button type="primary" size="default" @click="exportChart">导出为图片</el-button>
-        <el-button size="default" @click="reset">重置</el-button>
+        <el-button type="primary" size="default" @click="exportChart">{{ t('device.tddevicein208875-12') }}</el-button>
+        <el-button size="default" @click="reset">{{ t('device.tddevicein208875-13') }}</el-button>
         <el-date-picker
           v-model="selectedDate"
           value-format="YYYY-MM-DD HH:mm:ss"
           type="datetimerange"
           unlink-panels
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
+          start-:placeholder="t('device.tddevicein208875-14')"
+          end-:placeholder="t('device.tddevicein208875-15')"
           :shortcuts="rangeShortcuts"
           size="default"
           class="w-100!"

+ 22 - 13
src/views/pms/device/monitor/TdDeviceInfo.vue

@@ -1,5 +1,6 @@
 <script lang="ts" setup>
 import { computed, ref } from 'vue'
+import { useI18n } from 'vue-i18n'
 import { useRoute } from 'vue-router'
 import { IotDeviceApi } from '@/api/pms/device'
 import {
@@ -20,7 +21,7 @@ import { rangeShortcuts } from '@/utils/formatTime'
 import { Dimensions, formatIotValue, HeaderItem } from '@/utils/useSocketBus'
 import { useFullscreen } from '@vueuse/core'
 import { snapdom } from '@zumer/snapdom'
-
+const { t } = useI18n()
 const { query } = useRoute()
 
 const data = ref({
@@ -626,7 +627,9 @@ const { toggle, isFullscreen } = useFullscreen(targetArea)
           <el-icon :size="24"><Odometer /></el-icon>
         </div>
         <div>
-          <div class="text-xs text-gray-400 font-medium tracking-wider">资产编码</div>
+          <div class="text-xs text-gray-400 font-medium tracking-wider">{{
+            t('device.tddevicein018010-0')
+          }}</div>
           <div class="text-xl font-bold font-mono text-gray-800">{{ data.deviceCode }}</div>
         </div>
       </div>
@@ -645,11 +648,13 @@ const { toggle, isFullscreen } = useFullscreen(targetArea)
           <div class="text-center" v-if="item.judgment ? Boolean(query[item.key]) : true">
             <div class="text-xs text-gray-400 mb-1">{{ item.label }}</div>
             <el-tag v-if="data[item.key]" type="success" v-bind="tagProps">
-              <el-icon class="mr-1"><CircleCheckFilled /></el-icon>在线
-            </el-tag>
+              <el-icon class="mr-1"><CircleCheckFilled /></el-icon
+              >{{ t('device.tddevicein018010-1') }}</el-tag
+            >
             <el-tag v-else type="danger" v-bind="tagProps">
-              <el-icon class="mr-1"><CircleCloseFilled /></el-icon>离线
-            </el-tag>
+              <el-icon class="mr-1"><CircleCloseFilled /></el-icon
+              >{{ t('device.tddevicein018010-2') }}</el-tag
+            >
           </div>
         </template>
       </div>
@@ -733,19 +738,23 @@ const { toggle, isFullscreen } = useFullscreen(targetArea)
             <h3 class="flex items-center gap-2">
               <div
                 class="i-material-symbols:area-chart-outline-rounded text-sky size-6"
-                text-sky></div>
-              数据趋势
-            </h3>
+                text-sky></div
+              >{{ t('device.tddevicein018010-3') }}</h3
+            >
             <div class="flex gap-4">
-              <el-button type="primary" size="default" @click="exportChart">导出为图片</el-button>
-              <el-button size="default" @click="reset">重置</el-button>
+              <el-button type="primary" size="default" @click="exportChart">{{
+                t('device.tddevicein018010-4')
+              }}</el-button>
+              <el-button size="default" @click="reset">{{
+                t('device.tddevicein018010-5')
+              }}</el-button>
               <el-date-picker
                 v-model="selectedDate"
                 value-format="YYYY-MM-DD HH:mm:ss"
                 type="datetimerange"
                 unlink-panels
-                start-placeholder="开始日期"
-                end-placeholder="结束日期"
+                start-:placeholder="t('device.tddevicein018010-6')"
+                end-:placeholder="t('device.tddevicein018010-7')"
                 :shortcuts="rangeShortcuts"
                 size="default"
                 class="w-100!"

+ 16 - 14
src/views/pms/device/monitor/index.vue

@@ -6,11 +6,13 @@
       <ContentWrap v-loading="loading" style="border: none">
         <div style="border: none" class="px-2 py-3 rounded-sm bg-white">
           <!-- 搜索工作栏 -->
-          <el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true">
-            <el-form-item
-              :label="t('monitor.deviceName')"
-              prop="deviceName"
-              style="margin-left: 20px">
+          <el-form
+            class="-mb-15px"
+            label-width="auto"
+            :model="queryParams"
+            ref="queryFormRef"
+            :inline="true">
+            <el-form-item :label="t('monitor.deviceName')" prop="deviceName">
               <el-input
                 v-model="queryParams.deviceName"
                 :placeholder="t('monitor.nameHolder')"
@@ -39,15 +41,15 @@
                   :value="dict.value" />
               </el-select>
             </el-form-item>
-            <el-form-item label="数采查询" prop="source">
+            <el-form-item :label="t('device.indexvue471356-0')" prop="source">
               <el-select
                 v-model="queryParams.source"
-                placeholder="请选择数采来源"
+                :placeholder="t('device.indexvue471356-1')"
                 clearable
                 class="!w-240px">
-                <el-option label="全部" value="all" />
-                <el-option label="网关设备" value="gateway" />
-                <el-option label="中航北斗" value="zhbd" />
+                <el-option :label="t('device.indexvue471356-2')" value="all" />
+                <el-option :label="t('device.indexvue471356-3')" value="gateway" />
+                <el-option :label="t('device.indexvue471356-4')" value="zhbd" />
               </el-select>
             </el-form-item>
             <el-form-item class="float-right !mr-0 !mb-0">
@@ -66,11 +68,11 @@
             </el-form-item>
             <el-form-item>
               <el-button @click="handleQuery">
-                <Icon icon="ep:search" class="mr-5px" />
+                <Icon icon="ep:search" />
                 {{ t('monitor.search') }}
               </el-button>
               <el-button @click="resetQuery">
-                <Icon icon="ep:refresh" class="mr-5px" />
+                <Icon icon="ep:refresh" />
                 {{ t('monitor.reset') }}
               </el-button>
               <el-button
@@ -79,8 +81,8 @@
                 @click="handleExport"
                 :loading="exportLoading"
                 v-hasPermi="['iot:device:export']">
-                <Icon icon="ep:download" class="mr-5px" /> 导出
-              </el-button>
+                <Icon icon="ep:download" />{{ t('device.indexvue471356-5') }}</el-button
+              >
             </el-form-item>
           </el-form>
         </div>

+ 6 - 6
src/views/pms/device/personlog/DevicePerson.vue

@@ -155,7 +155,7 @@ onMounted(() => {
       ref="queryFormRef"
       :model="queryParams"
       size="default"
-      label-width="68px"
+      label-width="auto"
       class="bg-white dark:bg-[#1d1e1f] rounded-lg shadow px-8 py-3 gap-6 flex items-center justify-between flex-wrap min-w-0">
       <div class="flex items-center gap-6 flex-wrap">
         <el-form-item :label="t('devicePerson.deviceCode')" prop="deviceCode">
@@ -198,13 +198,13 @@ onMounted(() => {
             class="!w-180px"
             @keyup.enter="handleQuery" />
         </el-form-item>
-        <el-form-item label="创建时间" prop="createTime">
+        <el-form-item :label="t('device.devicepers811612-0')" prop="createTime">
           <el-date-picker
             v-model="queryParams.createTime"
             value-format="YYYY-MM-DD HH:mm:ss"
             type="daterange"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
+            start-:placeholder="t('device.devicepers811612-1')"
+            end-:placeholder="t('device.devicepers811612-2')"
             :shortcuts="rangeShortcuts"
             :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
             class="!w-220px" />
@@ -226,8 +226,8 @@ onMounted(() => {
           <Icon icon="ep:plus" class="mr-5px" />{{ t('devicePerson.setUp') }}
         </el-button>
         <el-button type="success" plain :loading="exportLoading" @click="handleExport">
-          <Icon icon="ep:download" class="mr-5px" />导出
-        </el-button>
+          <Icon icon="ep:download" class="mr-5px" />{{ t('device.devicepers811612-3') }}</el-button
+        >
       </el-form-item>
     </el-form>
 

+ 1 - 1
src/views/pms/device/personlog/DevicePersonLogDrawer.vue

@@ -16,7 +16,7 @@
           </div>
           <div>
             <div class="drawer-title">{{ t('configDevice.adjustmentRecords') }}</div>
-            <div class="drawer-subtitle">查看设备责任人调整前后的变化记录</div>
+            <div class="drawer-subtitle">{{ t('device.devicepers798281-0') }}</div>
           </div>
         </div>
         <el-button circle size="default" @click="handleClose">

+ 6 - 10
src/views/pms/device/statuslog/DeviceStatus.vue

@@ -245,7 +245,7 @@ onMounted(() => {
       ref="queryFormRef"
       :model="queryParams"
       size="default"
-      label-width="68px"
+      label-width="auto"
       class="device-status-query bg-white dark:bg-[#1d1e1f] rounded-lg shadow px-6 py-3 min-w-0">
       <div class="query-row">
         <el-form-item :label="t('devicePerson.deviceCode')" prop="deviceCode">
@@ -264,7 +264,7 @@ onMounted(() => {
             class="query-control"
             @keyup.enter="handleQuery" />
         </el-form-item>
-        <el-form-item :label="t('deviceStatus.statusAdjust')" prop="setFlag" label-width="100px">
+        <el-form-item :label="t('deviceStatus.statusAdjust')" prop="setFlag">
           <el-select
             v-model="queryParams.setFlag"
             :placeholder="t('deviceStatus.choose')"
@@ -277,22 +277,18 @@ onMounted(() => {
               :value="dict.value" />
           </el-select>
         </el-form-item>
-        <el-form-item label="创建时间" prop="createTime">
+        <el-form-item :label="t('device.devicestat037846-0')" prop="createTime">
           <el-date-picker
             v-model="queryParams.createTime"
             value-format="YYYY-MM-DD HH:mm:ss"
             type="daterange"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
+            start-:placeholder="t('device.devicestat037846-1')"
+            end-:placeholder="t('device.devicestat037846-2')"
             :shortcuts="rangeShortcuts"
             :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
             class="query-control query-control--date" />
         </el-form-item>
-        <el-form-item
-          v-show="ifShow"
-          :label="t('devicePerson.status')"
-          prop="deviceStatus"
-          label-width="85px">
+        <el-form-item v-show="ifShow" :label="t('devicePerson.status')" prop="deviceStatus">
           <el-select
             v-model="queryParams.deviceStatus"
             :placeholder="t('devicePerson.status')"

+ 1 - 1
src/views/pms/device/statuslog/DeviceStatusLogDrawer.vue

@@ -16,7 +16,7 @@
           </div>
           <div>
             <div class="drawer-title">{{ t('configDevice.adjustmentRecords') }}</div>
-            <div class="drawer-subtitle">查看设备状态调整前后的变化记录</div>
+            <div class="drawer-subtitle">{{ t('device.devicestat786447-0') }}</div>
           </div>
         </div>
         <el-button circle size="default" @click="handleClose">

+ 6 - 4
src/views/pms/devicetemplate/DeviceCategoryTree.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="head-container">
-    <el-input v-model="deviceCategoryName" class="mb-20px" clearable placeholder="请输入设备分类名称">
+    <el-input v-model="deviceCategoryName" class="mb-20px" clearable :placeholder="t('devicetemplate.devicecate795273-0')">
       <template #prefix>
         <Icon icon="ep:search" />
       </template>
@@ -28,18 +28,20 @@
     :style="{ left: menuX + 'px', top: menuY + 'px' }"
   >
     <ul>
-      <li @click="handleMenuClick('add')">新增子节点</li>
-      <li @click="handleMenuClick('edit')">重命名</li>
-      <li @click="handleMenuClick('delete')">删除</li>
+      <li @click="handleMenuClick('add')">{{ t('devicetemplate.devicecate795273-1') }}</li>
+      <li @click="handleMenuClick('edit')">{{ t('devicetemplate.devicecate795273-2') }}</li>
+      <li @click="handleMenuClick('delete')">{{ t('devicetemplate.devicecate795273-3') }}</li>
     </ul>
   </div>
 </template>
 
 <script lang="ts" setup>
 import { ElTree } from 'element-plus'
+import { useI18n } from 'vue-i18n'
 import * as DeviceCategoryApi from '@/api/pms/productclassify'
 import { defaultProps, handleTree } from '@/utils/tree'
 import { useTreeStore } from '@/store/modules/attrTemplateTreeStore'
+const { t } = useI18n()
 
 defineOptions({ name: 'DeviceCategoryTree' })
 

+ 34 - 24
src/views/pms/devicetemplate/TemplateForm.vue

@@ -5,11 +5,10 @@
       v-loading="formLoading"
       :model="formData"
       :rules="formRules"
-      label-width="100px"
-    >
+      label-width="auto">
       <el-row>
         <el-col :span="24">
-          <el-form-item label="设备分类" prop="deviceCategoryId">
+          <el-form-item :label="t('devicetemplate.templatefo180085-0')" prop="deviceCategoryId">
             <el-tree-select
               v-model="formData.deviceCategoryId"
               :data="deviceCategoryTree"
@@ -19,35 +18,47 @@
               clearable
               value-key="id"
               :default-expanded-keys="firstLevelKeys"
-              placeholder="请选择设备分类"
-              @node-click="handleDeviceCategoryTreeNodeClick"
-            />
+              :placeholder="t('devicetemplate.templatefo180085-1')"
+              @node-click="handleDeviceCategoryTreeNodeClick" />
           </el-form-item>
         </el-col>
       </el-row>
       <el-row>
         <el-col :span="12">
-          <el-form-item label="模板名称" prop="name">
-            <el-input v-model="formData.name" maxlength="32" placeholder="请输入模板名称" />
+          <el-form-item :label="t('devicetemplate.templatefo180085-2')" prop="name">
+            <el-input
+              v-model="formData.name"
+              maxlength="32"
+              :placeholder="t('devicetemplate.templatefo180085-3')" />
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="模板编码" prop="code">
-            <el-input v-model="formData.code" maxlength="50" placeholder="请输入模板编码" />
+          <el-form-item :label="t('devicetemplate.templatefo180085-4')" prop="code">
+            <el-input
+              v-model="formData.code"
+              maxlength="50"
+              :placeholder="t('devicetemplate.templatefo180085-5')" />
           </el-form-item>
         </el-col>
       </el-row>
       <el-row>
         <el-col :span="24">
-          <el-form-item label="备注">
-            <el-input v-model="formData.remark" placeholder="请输入内容" type="textarea" />
+          <el-form-item :label="t('devicetemplate.templatefo180085-6')">
+            <el-input
+              v-model="formData.remark"
+              :placeholder="t('devicetemplate.templatefo180085-7')"
+              type="textarea" />
           </el-form-item>
         </el-col>
       </el-row>
     </el-form>
     <template #footer>
-      <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
-      <el-button @click="dialogVisible = false">取 消</el-button>
+      <el-button :disabled="formLoading" type="primary" @click="submitForm">{{
+        t('devicetemplate.templatefo180085-8')
+      }}</el-button>
+      <el-button @click="dialogVisible = false">{{
+        t('devicetemplate.templatefo180085-9')
+      }}</el-button>
     </template>
   </Dialog>
 </template>
@@ -57,15 +68,15 @@ import { defaultProps, handleTree } from '@/utils/tree'
 import * as ProductClassifyApi from '@/api/pms/productclassify'
 import * as DeviceTemplateApi from '@/api/pms/devicetemplate'
 import { FormRules } from 'element-plus'
-import { useTreeStore } from '@/store/modules/attrTemplateTreeStore';
+import { useTreeStore } from '@/store/modules/attrTemplateTreeStore'
 
 defineOptions({ name: 'DeviceTemplateForm' })
 
 const { t } = useI18n() // 国际化
 const message = useMessage() // 消息弹窗
 const firstLevelKeys = ref([])
-const treeStore = useTreeStore();
-const localDeviceCategoryId = ref(null);  // 通过store存储的设备分类id 由父组件传递过来
+const treeStore = useTreeStore()
+const localDeviceCategoryId = ref(null) // 通过store存储的设备分类id 由父组件传递过来
 const dialogVisible = ref(false) // 弹窗的是否展示
 const dialogTitle = ref('') // 弹窗的标题
 const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
@@ -76,22 +87,21 @@ const formData = ref({
   code: '',
   id: undefined,
   remark: '',
-  status: CommonStatusEnum.ENABLE,
+  status: CommonStatusEnum.ENABLE
 })
 const formRules = reactive<FormRules>({
   name: [{ required: true, message: '模板名称不能为空', trigger: 'blur' }],
   code: [{ required: true, message: '模板编码不能为空', trigger: 'blur' }],
-  deviceCategoryId: [{ required: true, message: '所属设备分类不能为空', trigger: 'blur' }],
-
+  deviceCategoryId: [{ required: true, message: '所属设备分类不能为空', trigger: 'blur' }]
 })
 const formRef = ref() // 表单 Ref
-const deviceCategoryTree = ref()  // 设备分类树
+const deviceCategoryTree = ref() // 设备分类树
 
 /** 打开弹窗 */
 const open = async (type: string, id?: number) => {
   dialogVisible.value = true
   // 获取store中的设备分类id
-  localDeviceCategoryId.value = treeStore.selectedId;
+  localDeviceCategoryId.value = treeStore.selectedId
   dialogTitle.value = t('action.' + type)
   formType.value = type
   resetForm()
@@ -144,7 +154,7 @@ const getDeviceCategoryTree = async () => {
   let categoryTree: Tree = { id: 0, name: '顶级设备分类', children: [] }
   categoryTree.children = handleTree(res)
   deviceCategoryTree.value.push(categoryTree)
-  firstLevelKeys.value = deviceCategoryTree.value.map(node => node.id);
+  firstLevelKeys.value = deviceCategoryTree.value.map((node) => node.id)
 }
 
 /** 处理 设备分类 树 被点击 */
@@ -163,7 +173,7 @@ const resetForm = () => {
     code: '',
     id: undefined,
     remark: '',
-    status: CommonStatusEnum.ENABLE,
+    status: CommonStatusEnum.ENABLE
   }
   formRef.value?.resetFields()
 }

+ 4 - 2
src/views/pms/devicetemplate/detail/TemplateDetailsHeader.vue

@@ -15,10 +15,10 @@
   </div>
   <ContentWrap class="mt-10px">
     <el-descriptions :column="5" direction="horizontal">
-      <el-descriptions-item label="设备编码:">
+      <el-descriptions-item :label="t('devicetemplate.templatede588206-0')">
         {{ template.code }}
       </el-descriptions-item>
-      <el-descriptions-item label="备注:">
+      <el-descriptions-item :label="t('devicetemplate.templatede588206-1')">
         {{ template.remark }}
       </el-descriptions-item>
     </el-descriptions>
@@ -26,6 +26,8 @@
 </template>
 <script setup lang="ts">
 import * as DeviceTemplateApi from '@/api/pms/devicetemplate'
+import { useI18n } from 'vue-i18n'
+const { t } = useI18n()
 
 const message = useMessage()
 

+ 8 - 8
src/views/pms/devicetemplate/detail/attrsModel/AttrTemplateModelForm.vue

@@ -8,11 +8,11 @@
       :rules="DeviceAttrModelFormRules"
       label-width="100px"
     >
-      <el-form-item label="属性名称" prop="name">
+      <el-form-item :label="t('devicetemplate.attrtempla702033-0')" prop="name">
 <!--        <el-input v-model="formData.name" placeholder="请输入属性名称"-->
 <!--                  @compositionstart="handleCompositionStart"-->
 <!--                  @compositionend="handleCompositionEnd"/>-->
-        <lang-input v-model="formData.name" placeholder="请输入属性名称" />
+        <lang-input v-model="formData.name" :placeholder="t('devicetemplate.attrtempla702033-1')" />
       </el-form-item>
       <!--
       <el-form-item label="标识符" prop="code" >
@@ -23,23 +23,23 @@
       <DeviceAttrModelProperty
         v-model="formData.selectOptions"
       />
-      <el-form-item label="默认值" prop="defaultValue">
-        <el-input v-model="formData.defaultValue" placeholder="请输入默认值" />
+      <el-form-item :label="t('devicetemplate.attrtempla702033-2')" prop="defaultValue">
+        <el-input v-model="formData.defaultValue" :placeholder="t('devicetemplate.attrtempla702033-3')" />
       </el-form-item>
-      <el-form-item label="描述" prop="description">
+      <el-form-item :label="t('devicetemplate.attrtempla702033-4')" prop="description">
         <el-input
           v-model="formData.description"
           :maxlength="200"
           :rows="3"
-          placeholder="请输入属性描述"
+          :placeholder="t('devicetemplate.attrtempla702033-5')"
           type="textarea"
         />
       </el-form-item>
     </el-form>
 
     <template #footer>
-      <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
-      <el-button @click="dialogVisible = false">取 消</el-button>
+      <el-button :disabled="formLoading" type="primary" @click="submitForm">{{ t('devicetemplate.attrtempla702033-6') }}</el-button>
+      <el-button @click="dialogVisible = false">{{ t('devicetemplate.attrtempla702033-7') }}</el-button>
     </template>
   </Dialog>
 </template>

+ 28 - 25
src/views/pms/devicetemplate/detail/attrsModel/AttrTemplateModelProperty.vue

@@ -2,17 +2,18 @@
 <template>
   <el-form-item
     :rules="[{ required: true, message: '请选择数据类型', trigger: 'change' }]"
-    label="数据类型"
-    prop="selectOptions.type"
-  >
-    <el-select v-model="selectOptions.type" placeholder="请选择数据类型" @change="handleChange">
+    :label="t('devicetemplate.attrtempla277474-0')"
+    prop="selectOptions.type">
+    <el-select
+      v-model="selectOptions.type"
+      :placeholder="t('devicetemplate.attrtempla277474-1')"
+      @change="handleChange">
       <!-- ARRAY 和 STRUCT 类型数据相互嵌套时,最多支持递归嵌套 2 层(父和子) ${option.value}(${option.label}) -->
       <el-option
         v-for="option in getDataTypeOptions"
         :key="option.value"
         :label="`${option.label}`"
-        :value="option.value"
-      />
+        :value="option.value" />
     </el-select>
   </el-form-item>
   <!-- 数值型配置 -->
@@ -22,15 +23,15 @@
         selectOptions.type || ''
       )
     "
-    v-model="selectOptions.dataSpecs"
-  />
+    v-model="selectOptions.dataSpecs" />
   <!-- 枚举型配置 -->
   <DeviceAttrModelEnumDataSpecs
     v-if="selectOptions.type === DataSpecsDataType.ENUM"
-    v-model="selectOptions.dataSpecsList"
-  />
+    v-model="selectOptions.dataSpecsList" />
   <!-- 布尔型配置 -->
-  <el-form-item v-if="selectOptions.type === DataSpecsDataType.BOOL" label="布尔值">
+  <el-form-item
+    v-if="selectOptions.type === DataSpecsDataType.BOOL"
+    :label="t('devicetemplate.attrtempla277474-2')">
     <template v-for="(item, index) in selectOptions.dataSpecsList" :key="item.value">
       <div class="flex items-center justify-start w-1/1 mb-5px">
         <span>{{ item.value }}</span>
@@ -41,13 +42,11 @@
             { required: true, message: '枚举描述不能为空' },
             { validator: validateBoolName, trigger: 'blur' }
           ]"
-          class="flex-1 mb-0"
-        >
+          class="flex-1 mb-0">
           <el-input
             v-model="item.name"
-            :placeholder="`如:${item.value === 0 ? '关' : '开'}`"
-            class="w-255px!"
-          />
+            ::placeholder="t('devicetemplate.attrtempla277474-3')"
+            class="w-255px!" />
         </el-form-item>
       </div>
     </template>
@@ -64,20 +63,24 @@
   </el-form-item>
   -->
   <!-- 时间型配置 -->
-  <el-form-item v-if="selectOptions.type === DataSpecsDataType.DATE" label="时间格式" prop="date">
-    <el-input class="w-255px!" disabled placeholder="String 类型的 UTC 时间戳(毫秒)" />
+  <el-form-item
+    v-if="selectOptions.type === DataSpecsDataType.DATE"
+    :label="t('devicetemplate.attrtempla277474-4')"
+    prop="date">
+    <el-input class="w-255px!" disabled :placeholder="t('devicetemplate.attrtempla277474-5')" />
   </el-form-item>
   <!-- 数组型配置-->
   <DeviceAttrModelArrayDataSpecs
     v-if="selectOptions.type === DataSpecsDataType.ARRAY"
-    v-model="selectOptions.dataSpecs"
-  />
+    v-model="selectOptions.dataSpecs" />
   <!-- Struct 型配置-->
   <DeviceAttrModelStructDataSpecs
     v-if="selectOptions.type === DataSpecsDataType.STRUCT"
-    v-model="selectOptions.dataSpecsList"
-  />
-  <el-form-item v-if="!isStructDataSpecs && !isParams" label="是否必填" prop="selectOptions.requiredFlag">
+    v-model="selectOptions.dataSpecsList" />
+  <el-form-item
+    v-if="!isStructDataSpecs && !isParams"
+    :label="t('devicetemplate.attrtempla277474-6')"
+    prop="selectOptions.requiredFlag">
     <el-radio-group v-model="selectOptions.requiredFlag">
       <el-radio :label="DeviceAttrModelRequired.REQUIRED.value">
         {{ DeviceAttrModelRequired.REQUIRED.label }}
@@ -91,6 +94,7 @@
 
 <script lang="ts" setup>
 import { useVModel } from '@vueuse/core'
+import { useI18n } from 'vue-i18n'
 import {
   DataSpecsDataType,
   dataTypeOptions,
@@ -105,7 +109,7 @@ import {
 } from '../dataSpecs'
 import { DeviceTemplateAttrs } from '@/api/pms/deviceattrmodel'
 import { isEmpty } from '@/utils/is'
-
+const { t } = useI18n()
 /** 设备属性模板 属性 */
 defineOptions({ name: 'AttrTemplateModelProperty' })
 
@@ -159,7 +163,6 @@ watch(
   },
   { immediate: true }
 )
-
 </script>
 
 <style lang="scss" scoped>

+ 9 - 15
src/views/pms/devicetemplate/detail/attrsModel/index.vue

@@ -10,12 +10,12 @@
       <div class="base-expandable-content">
         <el-row>
           <el-col :span="12">
-            <el-form-item label="模板名称" prop="name">
+            <el-form-item :label="t('devicetemplate.indexvue690177-0')" prop="name">
               <el-input type="text" v-model="formData.name" disabled/>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="设备分类名称" prop="deviceCategoryName">
+            <el-form-item :label="t('devicetemplate.indexvue690177-1')" prop="deviceCategoryName">
               <el-input
                 v-model="formData.deviceCategoryName"
                 disabled
@@ -52,9 +52,7 @@
           type="primary"
           @click="openForm('create')"
         >
-          <Icon class="mr-5px" icon="ep:plus" />
-          添加属性
-        </el-button>
+          <Icon class="mr-5px" icon="ep:plus" />{{ t('devicetemplate.indexvue690177-2') }}</el-button>
       </el-form-item>
     </el-form>
   </ContentWrap>
@@ -63,9 +61,9 @@
   <ContentWrap>
     <el-tabs>
       <el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" :stripe="true">
-        <el-table-column align="center" label="属性名称" prop="name" />
-        <el-table-column align="center" label="标识符" prop="code" />
-        <el-table-column align="center" label="数据类型" prop="type">
+        <el-table-column align="center" :label="t('devicetemplate.indexvue690177-3')" prop="name" />
+        <el-table-column align="center" :label="t('devicetemplate.indexvue690177-4')" prop="code" />
+        <el-table-column align="center" :label="t('devicetemplate.indexvue690177-5')" prop="type">
           <template #default="{ row }">
             {{ dataTypeOptionsLabel(row.selectOptions?.type) ?? '-' }}
           </template>
@@ -77,24 +75,20 @@
           </template>
         </el-table-column>
         -->
-        <el-table-column align="center" label="操作">
+        <el-table-column align="center" :label="t('devicetemplate.indexvue690177-6')">
           <template #default="scope">
             <el-button
               v-hasPermi="[`pms:iot-device-category-template-attrs:update`]"
               link
               type="primary"
               @click="openForm('update', scope.row.id)"
-            >
-              编辑
-            </el-button>
+            >{{ t('devicetemplate.indexvue690177-7') }}</el-button>
             <el-button
               v-hasPermi="['pms:iot-device-category-template-attrs:delete']"
               link
               type="danger"
               @click="handleDelete(scope.row.id)"
-            >
-              删除
-            </el-button>
+            >{{ t('devicetemplate.indexvue690177-8') }}</el-button>
           </template>
         </el-table-column>
       </el-table>

+ 5 - 3
src/views/pms/devicetemplate/detail/dataSpecs/DeviceAttrModelArrayDataSpecs.vue

@@ -1,6 +1,6 @@
 <!-- dataType:array 数组类型 -->
 <template>
-  <el-form-item label="元素类型" prop="selectOptions.dataSpecs.childDataType">
+  <el-form-item :label="t('devicetemplate.deviceattr164527-0')" prop="selectOptions.dataSpecs.childDataType">
     <el-radio-group v-model="dataSpecs.childDataType" @change="handleChange">
       <template v-for="item in dataTypeOptions" :key="item.value">
         <el-radio
@@ -17,8 +17,8 @@
       </template>
     </el-radio-group>
   </el-form-item>
-  <el-form-item label="元素个数" prop="selectOptions.dataSpecs.size">
-    <el-input v-model="dataSpecs.size" placeholder="请输入数组中的元素个数" />
+  <el-form-item :label="t('devicetemplate.deviceattr164527-1')" prop="selectOptions.dataSpecs.size">
+    <el-input v-model="dataSpecs.size" :placeholder="t('devicetemplate.deviceattr164527-2')" />
   </el-form-item>
   <!-- Struct 型配置-->
   <DeviceAttrModelStructDataSpecs
@@ -29,8 +29,10 @@
 
 <script lang="ts" setup>
 import { useVModel } from '@vueuse/core'
+import { useI18n } from 'vue-i18n'
 import { DataSpecsDataType, dataTypeOptions } from '../attrsModel/config'
 import DeviceAttrModelStructDataSpecs from './DeviceAttrModelStructDataSpecs.vue'
+const { t } = useI18n()
 
 /** 数组型的 dataSpecs 配置组件 */
 defineOptions({ name: 'DeviceAttrModelArrayDataSpecs' })

+ 5 - 3
src/views/pms/devicetemplate/detail/dataSpecs/DeviceAttrModelEnumDataSpecs.vue

@@ -2,7 +2,7 @@
 <template>
   <el-form-item
     :rules="[{ required: true, validator: validateEnumList, trigger: 'change' }]"
-    label="下拉选项"
+    :label="t('devicetemplate.deviceattr327235-0')"
   >
     <div class="flex flex-col">
       <div class="flex items-center">
@@ -37,9 +37,9 @@
           ]"
           class="flex-1 mb-0"
         >
-          <el-input v-model="item.name" placeholder="对该下拉选项的描述" />
+          <el-input v-model="item.name" :placeholder="t('devicetemplate.deviceattr327235-1')" />
         </el-form-item>
-        <el-button class="ml-10px" link type="primary" @click="deleteEnum(index)">删除</el-button>
+        <el-button class="ml-10px" link type="primary" @click="deleteEnum(index)">{{ t('devicetemplate.deviceattr327235-2') }}</el-button>
       </div>
       <el-button link type="primary" @click="addEnum">+添加下拉选项值</el-button>
     </div>
@@ -48,8 +48,10 @@
 
 <script lang="ts" setup>
 import { useVModel } from '@vueuse/core'
+import { useI18n } from 'vue-i18n'
 import { DataSpecsDataType, DataSpecsEnumOrBoolDataVO } from '../attrsModel/config'
 import { isEmpty } from '@/utils/is'
+const { t } = useI18n()
 
 /** 枚举型的 dataSpecs 配置组件 */
 defineOptions({ name: 'DeviceAttrModelEnumDataSpecs' })

+ 4 - 2
src/views/pms/devicetemplate/detail/dataSpecs/DeviceAttrModelNumberDataSpecs.vue

@@ -40,13 +40,13 @@
 
   <el-form-item
     :rules="[{ required: true, message: '请选择单位' }]"
-    label="单位"
+    :label="t('devicetemplate.deviceattr135995-0')"
     prop="selectOptions.dataSpecs.unit"
   >
     <el-select
       :model-value="dataSpecs.unit ? dataSpecs.unitName + '-' + dataSpecs.unit : ''"
       filterable
-      placeholder="请选择单位"
+      :placeholder="t('devicetemplate.deviceattr135995-1')"
       class="w-1/1"
       @change="unitChange"
     >
@@ -62,8 +62,10 @@
 
 <script lang="ts" setup>
 import { useVModel } from '@vueuse/core'
+import { useI18n } from 'vue-i18n'
 import { DataSpecsNumberDataVO } from '../attrsModel/config'
 import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
+const { t } = useI18n()
 
 /** 数值型的 dataSpecs 配置组件 */
 defineOptions({ name: 'DeviceAttrModelNumberDataSpecs' })

+ 11 - 9
src/views/pms/devicetemplate/detail/dataSpecs/DeviceAttrModelStructDataSpecs.vue

@@ -3,7 +3,7 @@
   <!-- struct 数据展示 -->
   <el-form-item
     :rules="[{ required: true, validator: validateList, trigger: 'change' }]"
-    label="JSON 对象"
+    :label="t('devicetemplate.deviceattr961839-0')"
   >
     <div
       v-for="(item, index) in dataSpecsList"
@@ -12,9 +12,9 @@
     >
       <span>参数名称:{{ item.name }}</span>
       <div class="btn">
-        <el-button link type="primary" @click="openStructForm(item)">编辑</el-button>
+        <el-button link type="primary" @click="openStructForm(item)">{{ t('devicetemplate.deviceattr961839-1') }}</el-button>
         <el-divider direction="vertical" />
-        <el-button link type="danger" @click="deleteStructItem(index)">删除</el-button>
+        <el-button link type="danger" @click="deleteStructItem(index)">{{ t('devicetemplate.deviceattr961839-2') }}</el-button>
       </div>
     </div>
     <el-button link type="primary" @click="openStructForm(null)">+新增参数</el-button>
@@ -29,28 +29,30 @@
       :rules="DeviceAttrModelFormRules"
       label-width="100px"
     >
-      <el-form-item label="属性名称" prop="name">
-        <el-input v-model="formData.name" placeholder="请输入属性名称" />
+      <el-form-item :label="t('devicetemplate.deviceattr961839-3')" prop="name">
+        <el-input v-model="formData.name" :placeholder="t('devicetemplate.deviceattr961839-4')" />
       </el-form-item>
-      <el-form-item label="标识符" prop="identifier">
-        <el-input v-model="formData.identifier" placeholder="请输入标识符" />
+      <el-form-item :label="t('devicetemplate.deviceattr961839-5')" prop="identifier">
+        <el-input v-model="formData.identifier" :placeholder="t('devicetemplate.deviceattr961839-6')" />
       </el-form-item>
       <!-- 属性配置 -->
       <AttrTemplateModelProperty v-model="formData.selectOptions" is-struct-data-specs />
     </el-form>
 
     <template #footer>
-      <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
-      <el-button @click="dialogVisible = false">取 消</el-button>
+      <el-button :disabled="formLoading" type="primary" @click="submitForm">{{ t('devicetemplate.deviceattr961839-7') }}</el-button>
+      <el-button @click="dialogVisible = false">{{ t('devicetemplate.deviceattr961839-8') }}</el-button>
     </template>
   </Dialog>
 </template>
 
 <script lang="ts" setup>
 import { useVModel } from '@vueuse/core'
+import { useI18n } from 'vue-i18n'
 import AttrTemplateModelProperty from '../attrsModel/AttrTemplateModelProperty.vue'
 import { DataSpecsDataType, DeviceAttrModelFormRules } from '../attrsModel/config'
 import { isEmpty } from '@/utils/is'
+const { t } = useI18n()
 
 /** Struct 型的 dataSpecs 配置组件 */
 defineOptions({ name: 'DeviceAttrModelStructDataSpecs' })

+ 3 - 1
src/views/pms/devicetemplate/detail/index.vue

@@ -2,7 +2,7 @@
   <TemplateDetailsHeader :loading="loading" :template="template" @refresh="() => getTemplateData(id)" />
   <el-col>
     <el-tabs v-model="activeTab">
-      <el-tab-pane label="属性模板" lazy name="attrModel">
+      <el-tab-pane :label="t('devicetemplate.indexvue815883-0')" lazy name="attrModel">
         <DeviceAttrTemplateModel ref="attrModelRef" />
       </el-tab-pane>
     </el-tabs>
@@ -10,11 +10,13 @@
 </template>
 <script lang="ts" setup>
 import * as DeviceTemplateApi from '@/api/pms/devicetemplate'
+import { useI18n } from 'vue-i18n'
 import TemplateDetailsHeader from './TemplateDetailsHeader.vue'
 import DeviceAttrTemplateModel from '@/views/pms/devicetemplate/detail/attrsModel/index.vue'
 import { useTagsViewStore } from '@/store/modules/tagsView'
 import { useRouter } from 'vue-router'
 import {IOT_PROVIDE_KEY} from "@/views/iot/utils/constants";
+const { t } = useI18n()
 
 defineOptions({ name: 'DeviceAttrTemplateDetail' })
 

+ 73 - 64
src/views/pms/devicetemplate/index.vue

@@ -173,83 +173,81 @@ onMounted(() => {
 
 <template>
   <div
-    class="grid grid-cols-[auto_1fr] grid-rows-[auto_1fr] gap-4 h-[calc(100vh-20px-var(--top-tool-height)-var(--tags-view-height)-var(--app-footer-height))]"
-  >
+    class="grid grid-cols-[auto_1fr] grid-rows-[auto_1fr] gap-4 h-[calc(100vh-20px-var(--top-tool-height)-var(--tags-view-height)-var(--app-footer-height))]">
     <DeviceCategoryTree
       v-model="queryParams.deviceCategoryId"
       :show-title="false"
       @node-click="handleDeviceCategoryTreeNodeClick"
-      class="row-span-2"
-    />
+      class="row-span-2" />
 
     <el-form
       ref="queryFormRef"
       :model="queryParams"
       size="default"
-      label-width="68px"
-      class="bg-white dark:bg-[#1d1e1f] rounded-lg shadow px-8 py-3 gap-6 flex items-center justify-between flex-wrap min-w-0"
-    >
+      class="bg-white dark:bg-[#1d1e1f] rounded-lg shadow px-8 py-3 gap-6 flex items-center justify-between flex-wrap min-w-0">
       <div class="flex items-center gap-6 flex-wrap">
-        <el-form-item label="模板名称" prop="name">
+        <el-form-item :label="t('devicetemplate.indexvue576171-0')" prop="name">
           <el-input
             v-model="queryParams.name"
-            placeholder="请输入模板名称"
+            :placeholder="t('devicetemplate.indexvue576171-1')"
             clearable
             class="!w-200px"
-            @keyup.enter="handleQuery"
-          />
+            @keyup.enter="handleQuery" />
         </el-form-item>
-        <el-form-item label="模板编码" prop="code">
+        <el-form-item :label="t('devicetemplate.indexvue576171-2')" prop="code">
           <el-input
             v-model="queryParams.code"
-            placeholder="请输入模板编码"
+            :placeholder="t('devicetemplate.indexvue576171-3')"
             clearable
             class="!w-200px"
-            @keyup.enter="handleQuery"
-          />
+            @keyup.enter="handleQuery" />
         </el-form-item>
-        <el-form-item label="状态" prop="status">
+        <el-form-item :label="t('devicetemplate.indexvue576171-4')" prop="status">
           <el-select
             v-model="queryParams.status"
-            placeholder="请选择状态"
+            :placeholder="t('devicetemplate.indexvue576171-5')"
             clearable
-            class="!w-180px"
-          >
+            class="!w-180px">
             <el-option
               v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
               :key="dict.value"
               :label="dict.label"
-              :value="dict.value"
-            />
+              :value="dict.value" />
           </el-select>
         </el-form-item>
-        <el-form-item label="创建时间" prop="createTime">
+        <el-form-item :label="t('devicetemplate.indexvue576171-6')" prop="createTime">
           <el-date-picker
             v-model="queryParams.createTime"
             value-format="YYYY-MM-DD HH:mm:ss"
             type="datetimerange"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
+            start-:placeholder="t('devicetemplate.indexvue576171-7')"
+            end-:placeholder="t('devicetemplate.indexvue576171-8')"
             :shortcuts="rangeShortcuts"
             :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
-            class="!w-320px"
-          />
+            class="!w-320px" />
         </el-form-item>
       </div>
 
       <el-form-item>
         <el-button type="primary" @click="handleQuery">
-          <Icon icon="ep:search" class="mr-5px" />搜索
-        </el-button>
-        <el-button @click="resetQuery"> <Icon icon="ep:refresh" class="mr-5px" />重置 </el-button>
+          <Icon icon="ep:search" class="mr-5px" />{{
+            t('devicetemplate.indexvue576171-9')
+          }}</el-button
+        >
+        <el-button @click="resetQuery">
+          <Icon icon="ep:refresh" class="mr-5px" />{{
+            t('devicetemplate.indexvue576171-10')
+          }}</el-button
+        >
         <el-button
           type="primary"
           plain
           @click="openForm('create')"
-          v-hasPermi="['rq:iot-device-template:create']"
+          v-hasPermi="['rq:iot-device-template:create']">
+          <Icon icon="ep:plus" class="mr-5px" />{{
+            t('devicetemplate.indexvue576171-11')
+          }}</el-button
         >
-          <Icon icon="ep:plus" class="mr-5px" />新增
-        </el-button>
       </el-form-item>
     </el-form>
 
@@ -263,24 +261,29 @@ onMounted(() => {
               :width="width"
               :height="height"
               :max-height="height"
-              show-border
-            >
+              show-border>
               <ZmTableColumn
                 type="index"
-                label="序号"
+                :label="t('devicetemplate.indexvue576171-12')"
                 :width="60"
                 fixed="left"
-                hide-in-column-settings
-              />
-              <ZmTableColumn prop="code" label="模板编码" fixed="left" />
-              <ZmTableColumn prop="name" label="模板名称" fixed="left" />
-              <ZmTableColumn prop="deviceCategoryName" label="设备分类名称" />
+                hide-in-column-settings />
+              <ZmTableColumn
+                prop="code"
+                :label="t('devicetemplate.indexvue576171-2')"
+                fixed="left" />
+              <ZmTableColumn
+                prop="name"
+                :label="t('devicetemplate.indexvue576171-0')"
+                fixed="left" />
+              <ZmTableColumn
+                prop="deviceCategoryName"
+                :label="t('devicetemplate.indexvue576171-13')" />
               <ZmTableColumn
                 prop="status"
-                label="状态"
+                :label="t('devicetemplate.indexvue576171-4')"
                 :real-value="(row) => getStatusText(row.status)"
-                :width="90"
-              >
+                :width="90">
                 <template #default="{ row }">
                   <el-switch
                     v-if="isValidStatus(row.status)"
@@ -288,46 +291,53 @@ onMounted(() => {
                     :active-value="0"
                     :inactive-value="1"
                     :disabled="!checkPermi(['rq:iot-device-template:update'])"
-                    @change="(status) => handleStatusChange(row, status)"
-                  />
-                  <el-tag v-else type="info">未知</el-tag>
+                    @change="(status) => handleStatusChange(row, status)" />
+                  <el-tag v-else type="info">{{ t('devicetemplate.indexvue576171-14') }}</el-tag>
                 </template>
               </ZmTableColumn>
               <ZmTableColumn
                 prop="createTime"
-                label="创建时间"
+                :label="t('devicetemplate.indexvue576171-6')"
                 :formatter="dateFormatter"
-                width="180"
-              />
-              <ZmTableColumn label="操作" width="220" fixed="right" action>
+                width="180" />
+              <ZmTableColumn
+                :label="t('devicetemplate.indexvue576171-15')"
+                width="220"
+                fixed="right"
+                action>
                 <template #default="{ row }">
                   <div class="flex items-center justify-center gap-2">
                     <el-button type="primary" link @click="openDetail(row)">
-                      <Icon icon="ep:view" class="mr-3px" />查看
-                    </el-button>
+                      <Icon icon="ep:view" class="mr-3px" />{{
+                        t('devicetemplate.indexvue576171-16')
+                      }}</el-button
+                    >
                     <el-button
                       type="primary"
                       link
                       @click="openForm('update', row.id)"
-                      v-hasPermi="['rq:iot-device-template:update']"
+                      v-hasPermi="['rq:iot-device-template:update']">
+                      <Icon icon="ep:edit" class="mr-3px" />{{
+                        t('devicetemplate.indexvue576171-17')
+                      }}</el-button
                     >
-                      <Icon icon="ep:edit" class="mr-3px" />修改
-                    </el-button>
                     <el-dropdown
                       @command="(command) => handleCommand(command, row)"
-                      v-hasPermi="['rq:iot-device-template:delete']"
-                    >
+                      v-hasPermi="['rq:iot-device-template:delete']">
                       <el-button type="primary" link>
-                        <Icon icon="ep:more-filled" class="mr-3px" />更多
-                      </el-button>
+                        <Icon icon="ep:more-filled" class="mr-3px" />{{
+                          t('devicetemplate.indexvue576171-18')
+                        }}</el-button
+                      >
                       <template #dropdown>
                         <el-dropdown-menu>
                           <el-dropdown-item
                             command="handleDelete"
-                            v-if="checkPermi(['rq:iot-device-template:delete'])"
+                            v-if="checkPermi(['rq:iot-device-template:delete'])">
+                            <Icon icon="ep:delete" class="mr-5px" />{{
+                              t('devicetemplate.indexvue576171-19')
+                            }}</el-dropdown-item
                           >
-                            <Icon icon="ep:delete" class="mr-5px" />删除
-                          </el-dropdown-item>
                         </el-dropdown-menu>
                       </template>
                     </el-dropdown>
@@ -350,8 +360,7 @@ onMounted(() => {
           :total="total"
           layout="total, sizes, prev, pager, next, jumper"
           @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-        />
+          @current-change="handleCurrentChange" />
       </div>
     </div>
   </div>

+ 3 - 3
src/views/pms/failure/FailureInfo.vue

@@ -65,7 +65,7 @@
             v-model="formData.dealTime"
             type="datetime"
             value-format="x"
-            placeholder="选择故障解决时间"
+            :placeholder="t('failure.failureinf485899-0')"
           />
         </el-form-item>
       </el-col>
@@ -92,8 +92,8 @@
         </el-form-item>
       </el-col>
       <el-col :span="24">
-        <el-form-item label="解决办法" v-if="formData.ifDeal" prop="solution" :rules="formData.ifDeal?solutionRule:[]">
-          <el-input v-model="formData.solution" type="textarea" placeholder="请输入解决办法" disabled />
+        <el-form-item :label="t('failure.failureinf485899-1')" v-if="formData.ifDeal" prop="solution" :rules="formData.ifDeal?solutionRule:[]">
+          <el-input v-model="formData.solution" type="textarea" :placeholder="t('failure.failureinf485899-2')" disabled />
         </el-form-item>
       </el-col>
       <el-col :span="24">

+ 9 - 9
src/views/pms/failure/IotFailureReportForm.vue

@@ -7,7 +7,7 @@
         </div>
         <div>
           <div class="dialog-title">{{ dialogTitle }}</div>
-          <div class="dialog-subtitle">维护故障基础信息、处理状态与现场描述</div>
+          <div class="dialog-subtitle">{{ t('failure.iotfailure322545-0') }}</div>
         </div>
       </div>
     </template>
@@ -25,7 +25,7 @@
         <div class="info-card__header">
           <div class="info-card__title">
             <span class="info-card__marker"></span>
-            <span>基础信息</span>
+            <span>{{ t('failure.iotfailure322545-1') }}</span>
           </div>
         </div>
         <div class="info-card__body">
@@ -48,13 +48,13 @@
               </el-form-item>
               <el-form-item
                 v-if="formData.failureType === 'other'"
-                label="其他故障描述"
+                :label="t('failure.iotfailure322545-2')"
                 prop="typeDesc"
                 :rules="typeDescRule">
                 <el-input
                   v-model="formData.typeDesc"
                   type="textarea"
-                  placeholder="请输入其他故障描述"
+                  :placeholder="t('failure.iotfailure322545-3')"
                   :disabled="disabled"
                   class="form-control" />
               </el-form-item>
@@ -119,7 +119,7 @@
         <div class="info-card__header">
           <div class="info-card__title">
             <span class="info-card__marker"></span>
-            <span>处理信息</span>
+            <span>{{ t('failure.iotfailure322545-4') }}</span>
           </div>
         </div>
         <div class="info-card__body">
@@ -165,7 +165,7 @@
                   :disabled="disabled"
                   type="datetime"
                   value-format="x"
-                  placeholder="选择故障解决时间"
+                  :placeholder="t('failure.iotfailure322545-5')"
                   class="form-control"
                   @change="endTimeBlur" />
               </el-form-item>
@@ -199,7 +199,7 @@
         <div class="info-card__header">
           <div class="info-card__title">
             <span class="info-card__marker"></span>
-            <span>故障描述</span>
+            <span>{{ t('failure.iotfailure322545-6') }}</span>
           </div>
         </div>
         <div class="info-card__body">
@@ -216,14 +216,14 @@
             </el-col>
             <el-col v-if="formData.ifDeal" :span="24">
               <el-form-item
-                label="解决办法"
+                :label="t('failure.iotfailure322545-7')"
                 prop="solution"
                 :rules="formData.ifDeal ? solutionRule : []">
                 <el-input
                   v-model="formData.solution"
                   type="textarea"
                   :rows="2"
-                  placeholder="请输入解决办法"
+                  :placeholder="t('failure.iotfailure322545-8')"
                   :disabled="disabled" />
               </el-form-item>
             </el-col>

+ 10 - 10
src/views/pms/failure/index.vue

@@ -14,10 +14,10 @@
       ref="queryFormRef"
       :model="queryParams"
       size="default"
-      label-width="68px"
+      label-width="100px"
       class="failure-query bg-white dark:bg-[#1d1e1f] rounded-lg shadow px-6 py-3 min-w-0">
       <div class="query-row">
-        <el-form-item :label="t('fault.faultTitle')" label-width="70px" prop="failureName">
+        <el-form-item :label="t('fault.faultTitle')" prop="failureName">
           <el-input
             v-model="queryParams.failureName"
             :placeholder="t('fault.titleHolder')"
@@ -25,7 +25,7 @@
             class="query-control"
             @keyup.enter="handleQuery" />
         </el-form-item>
-        <el-form-item :label="t('fault.status')" label-width="40px" prop="status">
+        <el-form-item :label="t('fault.status')" prop="status">
           <el-select
             v-model="queryParams.status"
             :placeholder="t('fault.status')"
@@ -56,8 +56,8 @@
             v-model="queryParams.failureTime"
             value-format="YYYY-MM-DD HH:mm:ss"
             type="daterange"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
+            start-:placeholder="t('failure.indexvue635109-0')"
+            end-:placeholder="t('failure.indexvue635109-1')"
             :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
             class="query-control query-control--date" />
         </el-form-item>
@@ -87,13 +87,13 @@
               :value="dict.value" />
           </el-select>
         </el-form-item>
-        <el-form-item v-show="ifShow" label="创建时间" prop="createTime">
+        <el-form-item v-show="ifShow" :label="t('failure.indexvue635109-2')" prop="createTime">
           <el-date-picker
             v-model="queryParams.createTime"
             value-format="YYYY-MM-DD HH:mm:ss"
             type="daterange"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
+            start-:placeholder="t('failure.indexvue635109-0')"
+            end-:placeholder="t('failure.indexvue635109-1')"
             :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
             class="query-control query-control--date" />
         </el-form-item>
@@ -121,8 +121,8 @@
           :loading="exportLoading"
           @click="handleExport"
           v-hasPermi="['rq:iot-failure-report:export']">
-          <Icon icon="ep:download" class="mr-5px" /> 导出
-        </el-button>
+          <Icon icon="ep:download" class="mr-5px" />{{ t('failure.indexvue635109-3') }}</el-button
+        >
       </el-form-item>
     </el-form>
 

+ 8 - 8
src/views/pms/fiveDailyReportSummary/index.vue

@@ -1,5 +1,6 @@
 <script setup>
 import dayjs from 'dayjs'
+import { useI18n } from 'vue-i18n'
 import CountTo from '@/components/count-to1.vue'
 import { FiveIotProjectDailyReportApi } from '@/api/pms/fiveconstructiondailyreport'
 import { rangeShortcuts } from '@/utils/formatTime'
@@ -7,6 +8,7 @@ import { useDebounceFn } from '@vueuse/core'
 import { useTableComponents } from '@/components/ZmTable/useTableComponents'
 import { useUserStore } from '@/store/modules/user'
 import { resolveDailyReportDeptId } from '@/utils/dailyReportDept'
+const { t } = useI18n()
 
 defineOptions({ name: 'FiveDailyReportSummary' })
 
@@ -273,13 +275,13 @@ watch(
       label-width="auto"
       class="bg-white dark:bg-[#1d1e1f] rounded-lg shadow px-8 pt-3 pb-4 flex items-center flex-wrap min-w-0">
       <div class="flex items-center gap-2 flex-wrap">
-        <el-form-item label="创建时间">
+        <el-form-item :label="t('fivedailyreportsummary.indexvue544038-0')">
           <el-date-picker
             v-model="query.createTime"
             value-format="YYYY-MM-DD HH:mm:ss"
             type="daterange"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
+            start-:placeholder="t('fivedailyreportsummary.indexvue544038-1')"
+            end-:placeholder="t('fivedailyreportsummary.indexvue544038-2')"
             :shortcuts="rangeShortcuts"
             :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
             class="!w-260px" />
@@ -287,11 +289,9 @@ watch(
 
         <el-form-item>
           <el-button type="primary" @click="handleQuery()">
-            <Icon icon="ep:search" class="mr-5px" /> 搜索
-          </el-button>
+            <Icon icon="ep:search" class="mr-5px" />{{ t('fivedailyreportsummary.indexvue544038-3') }}</el-button>
           <el-button @click="resetQuery">
-            <Icon icon="ep:refresh" class="mr-5px" /> 重置
-          </el-button>
+            <Icon icon="ep:refresh" class="mr-5px" />{{ t('fivedailyreportsummary.indexvue544038-4') }}</el-button>
         </el-form-item>
       </div>
     </el-form>
@@ -330,7 +330,7 @@ watch(
               :height="height"
               :max-height="height"
               show-border>
-              <ZmTableColumn type="index" label="序号" :width="70" fixed="left" />
+              <ZmTableColumn type="index" :label="t('fivedailyreportsummary.indexvue544038-5')" :width="70" fixed="left" />
               <ZmTableColumn
                 prop="deptDisplayName"
                 :label="deptColumnLabel"

+ 11 - 11
src/views/pms/info/InfoClassifyForm.vue

@@ -7,25 +7,25 @@
       :rules="formRules"
       label-width="80px"
     >
-      <el-form-item label="上级资料分类" prop="parentId">
+      <el-form-item :label="t('info.infoclassi396975-0')" prop="parentId">
         <el-tree-select
           v-model="formData.parentId"
           :data="deptTree"
           :props="defaultProps"
           check-strictly
           default-expand-all
-          placeholder="请选择上级资料分类"
+          :placeholder="t('info.infoclassi396975-1')"
           value-key="deptId"
         />
       </el-form-item>
-      <el-form-item label="资料分类名称" prop="name">
-        <el-input v-model="formData.name" placeholder="请输入资料分类名称" />
+      <el-form-item :label="t('info.infoclassi396975-2')" prop="name">
+        <el-input v-model="formData.name" :placeholder="t('info.infoclassi396975-3')" />
       </el-form-item>
-      <el-form-item label="显示排序" prop="sort">
+      <el-form-item :label="t('info.infoclassi396975-4')" prop="sort">
         <el-input-number v-model="formData.sort" :min="0" controls-position="right" />
       </el-form-item>
-      <el-form-item label="状态" prop="status">
-        <el-select v-model="formData.status" clearable placeholder="请选择状态">
+      <el-form-item :label="t('info.infoclassi396975-5')" prop="status">
+        <el-select v-model="formData.status" clearable :placeholder="t('info.infoclassi396975-6')">
           <el-option
             v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
             :key="dict.value"
@@ -34,13 +34,13 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="备注" prop="remark">
-        <el-input v-model="formData.remark" maxlength="11" placeholder="请输入备注" type="textarea" />
+      <el-form-item :label="t('info.infoclassi396975-7')" prop="remark">
+        <el-input v-model="formData.remark" maxlength="11" :placeholder="t('info.infoclassi396975-8')" type="textarea" />
       </el-form-item>
     </el-form>
     <template #footer>
-      <el-button type="primary" @click="submitForm">确 定</el-button>
-      <el-button @click="dialogVisible = false">取 消</el-button>
+      <el-button type="primary" @click="submitForm">{{ t('info.infoclassi396975-9') }}</el-button>
+      <el-button @click="dialogVisible = false">{{ t('info.infoclassi396975-10') }}</el-button>
     </template>
   </Dialog>
 </template>

+ 28 - 33
src/views/pms/info/index.vue

@@ -6,45 +6,44 @@
       :model="queryParams"
       ref="queryFormRef"
       :inline="true"
-      label-width="68px"
-    >
-      <el-form-item label="资料分类名称" label-width="100px" prop="name">
+      label-width="68px">
+      <el-form-item :label="t('info.indexvue917001-0')" label-width="100px" prop="name">
         <el-input
           v-model="queryParams.name"
-          placeholder="请输入资料分类名称"
+          :placeholder="t('info.indexvue917001-1')"
           clearable
           @keyup.enter="handleQuery"
-          class="!w-240px"
-        />
+          class="!w-240px" />
       </el-form-item>
-      <el-form-item label="资料分类状态" label-width="100px" prop="status">
+      <el-form-item :label="t('info.indexvue917001-2')" label-width="100px" prop="status">
         <el-select
           v-model="queryParams.status"
-          placeholder="请选择资料分类状态"
+          :placeholder="t('info.indexvue917001-3')"
           clearable
-          class="!w-240px"
-        >
+          class="!w-240px">
           <el-option
             v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
             :key="dict.value"
             :label="dict.label"
-            :value="dict.value"
-          />
+            :value="dict.value" />
         </el-select>
       </el-form-item>
       <el-form-item>
-        <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
-        <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
+        <el-button @click="handleQuery"
+          ><Icon icon="ep:search" class="mr-5px" />{{ t('info.indexvue917001-4') }}</el-button
+        >
+        <el-button @click="resetQuery"
+          ><Icon icon="ep:refresh" class="mr-5px" />{{ t('info.indexvue917001-5') }}</el-button
+        >
         <el-button
           type="primary"
           plain
           @click="openForm('create')"
-          v-hasPermi="['iot:product-classify:create']"
+          v-hasPermi="['iot:product-classify:create']">
+          <Icon icon="ep:plus" class="mr-5px" />{{ t('info.indexvue917001-6') }}</el-button
         >
-          <Icon icon="ep:plus" class="mr-5px" /> 新增
-        </el-button>
         <el-button type="danger" plain @click="toggleExpandAll">
-          <Icon icon="ep:sort" class="mr-5px" /> 展开/折叠
+          <Icon icon="ep:sort" class="mr-5px" /> {{ t('common.toggle') }}
         </el-button>
       </el-form-item>
     </el-form>
@@ -57,41 +56,37 @@
       :data="list"
       row-key="id"
       :default-expand-all="isExpandAll"
-      v-if="refreshTable"
-    >
-      <el-table-column prop="name" label="资料分类名称" />
-      <el-table-column prop="sort" label="排序" />
-      <el-table-column prop="status" label="状态">
+      v-if="refreshTable">
+      <el-table-column prop="name" :label="t('info.indexvue917001-0')" />
+      <el-table-column prop="sort" :label="t('info.indexvue917001-7')" />
+      <el-table-column prop="status" :label="t('info.indexvue917001-8')">
         <template #default="scope">
           <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
         </template>
       </el-table-column>
-      <el-table-column prop="remark" label="备注" />
+      <el-table-column prop="remark" :label="t('info.indexvue917001-9')" />
       <el-table-column
-        label="创建时间"
+        :label="t('info.indexvue917001-10')"
         align="center"
         prop="createTime"
         width="180"
-        :formatter="dateFormatter"
-      />
-      <el-table-column label="操作" align="center">
+        :formatter="dateFormatter" />
+      <el-table-column :label="t('info.indexvue917001-11')" align="center">
         <template #default="scope">
           <el-button
             link
             type="primary"
             @click="openForm('update', scope.row.id)"
             v-hasPermi="['iot:product-classify:update']"
+            >{{ t('info.indexvue917001-12') }}</el-button
           >
-            修改
-          </el-button>
           <el-button
             link
             type="danger"
             @click="handleDelete(scope.row.id)"
             v-hasPermi="['iot:product-classify:delete']"
+            >{{ t('info.indexvue917001-13') }}</el-button
           >
-            删除
-          </el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -136,7 +131,7 @@ const getList = async () => {
   }
 }
 
-/** 展开/折叠操作 */
+/** {{t('common.toggle')}}操作 */
 const toggleExpandAll = () => {
   refreshTable.value = false
   isExpandAll.value = !isExpandAll.value

+ 4 - 4
src/views/pms/information/IotInformationDbForm.vue

@@ -12,7 +12,7 @@
         </div>
         <div>
           <div class="dialog-title__text">{{ dialogTitle }}</div>
-          <div class="dialog-title__subtitle">维护设备故障现象、影响及解决方案</div>
+          <div class="dialog-title__subtitle">{{ t('information.iotinforma670843-0') }}</div>
         </div>
       </div>
     </template>
@@ -22,11 +22,11 @@
       :model="formData"
       :rules="formRules"
       size="default"
-      label-width="92px"
+      label-width="auto"
       class="information-form"
       v-loading="formLoading">
       <section class="form-section">
-        <div class="section-heading"><span></span>基础信息</div>
+        <div class="section-heading"><span></span>{{ t('information.iotinforma670843-1') }}</div>
         <el-row :gutter="20">
           <el-col :xs="24" :sm="12">
             <el-form-item :label="t('info.deviceClass')" prop="deviceType">
@@ -64,7 +64,7 @@
       </section>
 
       <section class="form-section">
-        <div class="section-heading"><span></span>补充说明</div>
+        <div class="section-heading"><span></span>{{ t('information.iotinforma670843-2') }}</div>
         <el-form-item :label="t('info.description')" prop="description">
           <el-input v-model="formData.description" type="textarea" :rows="3" resize="none" />
         </el-form-item>

+ 5 - 3
src/views/pms/information/index.vue

@@ -5,7 +5,7 @@
       ref="queryFormRef"
       :model="queryParams"
       size="default"
-      label-width="68px"
+      label-width="auto"
       class="information-query bg-white dark:bg-[#1d1e1f] rounded-lg shadow px-6 py-3 min-w-0">
       <div class="query-row">
         <el-form-item :label="t('deviceForm.category')" prop="deviceType">
@@ -62,8 +62,10 @@
           @click="handleExport"
           :loading="exportLoading"
           v-hasPermi="['rq:iot-information-db:export']">
-          <Icon icon="ep:download" class="mr-5px" />导出
-        </el-button>
+          <Icon icon="ep:download" class="mr-5px" />{{
+            t('information.indexvue303943-0')
+          }}</el-button
+        >
       </el-form-item>
     </el-form>
 

+ 4 - 4
src/views/pms/inspect/item/IotInspectItemForm.vue

@@ -9,7 +9,7 @@
         <div class="dialog-title__icon"><Icon icon="ep:list" /></div>
         <div class="dialog-title__content">
           <div class="dialog-title__text">{{ dialogTitle }}</div>
-          <div class="dialog-title__subtitle">维护巡检设备、巡检项目与执行标准</div>
+          <div class="dialog-title__subtitle">{{ t('inspect.iotinspect481654-0') }}</div>
         </div>
       </div>
     </template>
@@ -20,10 +20,10 @@
       :model="formData"
       :rules="formRules"
       size="default"
-      label-width="100px"
+      label-width="auto"
       class="inspect-item-form">
       <section class="form-section">
-        <header class="section-heading"><span></span>基础信息</header>
+        <header class="section-heading"><span></span>{{ t('inspect.iotinspect481654-1') }}</header>
         <div class="form-grid">
           <el-form-item :label="t('monitor.category')" prop="deviceClassify">
             <el-tree-select
@@ -65,7 +65,7 @@
       </section>
 
       <section class="form-section">
-        <header class="section-heading"><span></span>巡检内容</header>
+        <header class="section-heading"><span></span>{{ t('inspect.iotinspect481654-2') }}</header>
         <div class="form-content">
           <el-form-item :label="t('inspect.InspectionItems')" prop="item">
             <el-input v-model="formData.item" :placeholder="t('inspect.itemHolder')" />

+ 3 - 3
src/views/pms/inspect/item/index.vue

@@ -15,7 +15,7 @@
       ref="queryFormRef"
       :model="queryParams"
       size="default"
-      label-width="88px"
+      label-width="auto"
       class="inspect-item-query bg-white dark:bg-[#1d1e1f] rounded-lg shadow px-6 py-3 min-w-0">
       <div class="query-row">
         <el-form-item :label="t('deviceForm.category')" prop="deviceClassify">
@@ -70,8 +70,8 @@
           :loading="exportLoading"
           @click="handleExport"
           v-hasPermi="['rq:iot-inspect-item:export']">
-          <Icon icon="ep:download" class="mr-5px" />导出
-        </el-button>
+          <Icon icon="ep:download" class="mr-5px" />{{ t('inspect.indexvue505289-0') }}</el-button
+        >
       </el-form-item>
     </el-form>
 

+ 5 - 7
src/views/pms/inspect/order/InspectOrderDetail.vue

@@ -5,16 +5,15 @@
         <div class="page-header__icon"><Icon icon="ep:document" /></div>
         <div class="page-header__content">
           <h1>{{ formData.inspectOrderTitle || '巡检工单详情' }}</h1>
-          <p>查看工单基础信息及设备巡检结果统计</p>
+          <p>{{ t('inspect.inspectord373631-0') }}</p>
         </div>
       </div>
       <el-button size="default" @click="close">
-        <Icon icon="ep:arrow-left" class="mr-5px" />返回
-      </el-button>
+        <Icon icon="ep:arrow-left" class="mr-5px" />{{ t('inspect.inspectord373631-1') }}</el-button>
     </header>
 
     <section class="detail-section">
-      <header class="section-heading"><span></span>工单信息</header>
+      <header class="section-heading"><span></span>{{ t('inspect.inspectord373631-2') }}</header>
       <div class="detail-grid">
         <div class="detail-item">
           <span class="detail-item__label">{{ t('main.planCode') }}</span>
@@ -45,7 +44,7 @@
 
     <section class="detail-section device-section">
       <header class="section-heading section-heading--between">
-        <div class="section-heading__title"><span></span>巡检设备</div>
+        <div class="section-heading__title"><span></span>{{ t('inspect.inspectord373631-3') }}</div>
         <div class="device-count">共 {{ list.length }} 台</div>
       </header>
       <div class="table-body">
@@ -96,8 +95,7 @@
 
     <footer class="action-bar">
       <el-button size="default" @click="close">
-        <Icon icon="ep:arrow-left" class="mr-5px" />返回
-      </el-button>
+        <Icon icon="ep:arrow-left" class="mr-5px" />{{ t('inspect.inspectord373631-1') }}</el-button>
     </footer>
 
     <RouteInspectItemDrawer

+ 14 - 14
src/views/pms/inspect/order/IotInspectOrderForm.vue

@@ -7,30 +7,30 @@
       label-width="100px"
       v-loading="formLoading"
     >
-      <el-form-item label="巡检工单名" prop="inspectOrderTitle">
-        <el-input v-model="formData.inspectOrderTitle" placeholder="请输入巡检工单名" />
+      <el-form-item :label="t('inspect.iotinspect143656-0')" prop="inspectOrderTitle">
+        <el-input v-model="formData.inspectOrderTitle" :placeholder="t('inspect.iotinspect143656-1')" />
       </el-form-item>
-      <el-form-item label="巡检工单编码" prop="inspectOrderCode">
-        <el-input v-model="formData.inspectOrderCode" placeholder="请输入巡检工单编码" />
+      <el-form-item :label="t('inspect.iotinspect143656-2')" prop="inspectOrderCode">
+        <el-input v-model="formData.inspectOrderCode" :placeholder="t('inspect.iotinspect143656-3')" />
       </el-form-item>
-      <el-form-item label="巡检工单状态" prop="status">
+      <el-form-item :label="t('inspect.iotinspect143656-4')" prop="status">
         <el-radio-group v-model="formData.status">
-          <el-radio value="1">请选择字典生成</el-radio>
+          <el-radio value="1">{{ t('inspect.iotinspect143656-5') }}</el-radio>
         </el-radio-group>
       </el-form-item>
-      <el-form-item label="备注" prop="remark">
-        <el-input v-model="formData.remark" placeholder="请输入备注" />
+      <el-form-item :label="t('inspect.iotinspect143656-6')" prop="remark">
+        <el-input v-model="formData.remark" :placeholder="t('inspect.iotinspect143656-7')" />
       </el-form-item>
-      <el-form-item label="部门id" prop="deptId">
-        <el-input v-model="formData.deptId" placeholder="请输入部门id" />
+      <el-form-item :label="t('inspect.iotinspect143656-8')" prop="deptId">
+        <el-input v-model="formData.deptId" :placeholder="t('inspect.iotinspect143656-9')" />
       </el-form-item>
-      <el-form-item label="设备id" prop="deviceIds">
-        <el-input v-model="formData.deviceIds" placeholder="请输入设备id" />
+      <el-form-item :label="t('inspect.iotinspect143656-10')" prop="deviceIds">
+        <el-input v-model="formData.deviceIds" :placeholder="t('inspect.iotinspect143656-11')" />
       </el-form-item>
     </el-form>
     <template #footer>
-      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
-      <el-button @click="dialogVisible = false">取 消</el-button>
+      <el-button @click="submitForm" type="primary" :disabled="formLoading">{{ t('inspect.iotinspect143656-12') }}</el-button>
+      <el-button @click="dialogVisible = false">{{ t('inspect.iotinspect143656-13') }}</el-button>
     </template>
   </Dialog>
 </template>

+ 7 - 5
src/views/pms/inspect/order/OrderComponent.vue

@@ -6,7 +6,7 @@
         <el-step
           v-for="(step, index) in totalSteps"
           :key="index"
-          :title="`步骤 ${index + 1}`"
+          ::title="t('inspect.ordercompo248259-0')"
           :ref="setStepRef"
         />
       </el-steps>
@@ -15,13 +15,13 @@
     <!-- 通用表单 -->
     <div class="form-wrapper">
       <el-form :model="formData[currentStep]" :rules="formRules" ref="formRef" label-width="120px">
-        <el-form-item label="姓名" prop="name">
+        <el-form-item :label="t('inspect.ordercompo248259-1')" prop="name">
           <el-input v-model="formData[currentStep].name" />
         </el-form-item>
-        <el-form-item label="邮箱" prop="email">
+        <el-form-item :label="t('inspect.ordercompo248259-2')" prop="email">
           <el-input v-model="formData[currentStep].email" />
         </el-form-item>
-        <el-form-item label="验证码" prop="code">
+        <el-form-item :label="t('inspect.ordercompo248259-3')" prop="code">
           <el-input v-model="formData[currentStep].code" />
         </el-form-item>
       </el-form>
@@ -29,7 +29,7 @@
 
     <!-- 导航按钮 -->
     <div class="action-buttons">
-      <el-button @click="prevStep" :disabled="currentStep === 0"> 上一步 </el-button>
+      <el-button @click="prevStep" :disabled="currentStep === 0">{{ t('inspect.ordercompo248259-4') }}</el-button>
       <span class="step-indicator"> 当前步骤:{{ currentStep + 1 }}/{{ totalSteps }} </span>
       <el-button type="primary" @click="nextStep" :disabled="currentStep === totalSteps - 1">
         {{ isLastStep ? '完成' : '下一步' }}
@@ -40,8 +40,10 @@
 
 <script setup lang="ts">
 import { computed, onMounted, ref } from 'vue'
+import { useI18n } from 'vue-i18n'
 import { ElMessage } from 'element-plus'
 import {any} from "vue-types";
+const { t } = useI18n()
 
 const totalSteps = 30 // 总步骤数
 const currentStep = ref(0) // 当前步骤索引

+ 6 - 8
src/views/pms/inspect/order/WriteOrder.vue

@@ -4,13 +4,12 @@
       <div class="page-header__main">
         <div class="page-header__icon"><Icon icon="ep:edit-pen" /></div>
         <div>
-          <h1>填写巡检工单</h1>
-          <p>按设备和巡检项顺序填写检查结果与异常信息</p>
+          <h1>{{ t('inspect.writeorder085539-0') }}</h1>
+          <p>{{ t('inspect.writeorder085539-1') }}</p>
         </div>
       </div>
       <el-button size="default" @click="close">
-        <Icon icon="ep:arrow-left" class="mr-5px" />返回
-      </el-button>
+        <Icon icon="ep:arrow-left" class="mr-5px" />{{ t('inspect.writeorder085539-2') }}</el-button>
     </header>
 
     <el-empty v-if="!loading && tabs.length === 0" class="empty-panel" description="暂无巡检设备" />
@@ -18,7 +17,7 @@
       <aside class="device-panel">
         <header class="device-panel__header">
           <div>
-            <strong>巡检设备</strong>
+            <strong>{{ t('inspect.writeorder085539-3') }}</strong>
             <span>共 {{ tabs.length }} 台</span>
           </div>
         </header>
@@ -94,7 +93,7 @@
                 size="default"
                 label-width="96px"
                 class="inspection-form">
-                <el-form-item label="设备id" v-if="false" prop="deviceId">
+                <el-form-item :label="t('inspect.writeorder085539-4')" v-if="false" prop="deviceId">
                   <el-input
                     v-model="formData[tabIndex][currentStep[tabIndex]].deviceId"
                     :model-value="tab.deviceId"
@@ -163,8 +162,7 @@
               size="default"
               :disabled="currentStep[tabIndex] === 0"
               @click="handlePrev(tabIndex)">
-              <Icon icon="ep:arrow-left" class="mr-5px" />上一步
-            </el-button>
+              <Icon icon="ep:arrow-left" class="mr-5px" />{{ t('inspect.writeorder085539-5') }}</el-button>
             <el-button
               size="default"
               type="primary"

+ 8 - 8
src/views/pms/inspect/order/WriteOrdertest.vue

@@ -58,10 +58,10 @@
               ref="formRefs"
               label-width="120px"
             >
-              <el-form-item label="是否异常" prop="ifNormal">
+              <el-form-item :label="t('inspect.writeorder099381-0')" prop="ifNormal">
                 <el-select
                   v-model="formData[tab.deviceId][currentStep[tabIndex]].ifNormal"
-                  placeholder="请选择是否异常"
+                  :placeholder="t('inspect.writeorder099381-1')"
                   clearable
                 >
                   <el-option
@@ -73,17 +73,17 @@
                 </el-select>
               </el-form-item>
 
-              <el-form-item label="异常描述" prop="description">
+              <el-form-item :label="t('inspect.writeorder099381-2')" prop="description">
                 <el-input
                   v-model="formData[tab.deviceId][currentStep[tabIndex]].description"
                   :min="0"
                   type="textarea"
                   controls-position="right"
-                  placeholder="请填写异常描述"
+                  :placeholder="t('inspect.writeorder099381-3')"
                 />
               </el-form-item>
 
-              <el-form-item label="图片" prop="picUrl">
+              <el-form-item :label="t('inspect.writeorder099381-4')" prop="picUrl">
                 <UploadImg v-model="formData[tab.deviceId][currentStep[tabIndex]].picUrl" height="55px" width="30em" />
               </el-form-item>
             </el-form>
@@ -92,9 +92,7 @@
               <el-button
                 :disabled="currentStep[tabIndex] === 0"
                 @click="handlePrev(tabIndex)"
-              >
-                上一步
-              </el-button>
+              >{{ t('inspect.writeorder099381-5') }}</el-button>
 
               <el-button
                 type="primary"
@@ -113,9 +111,11 @@
 
 <script setup>
 import { ref, reactive, onMounted } from 'vue'
+import { useI18n } from 'vue-i18n'
 import { ElMessage } from 'element-plus'
 import {IotInspectOrderApi} from "@/api/pms/inspect/order";
 import {DICT_TYPE, getBoolDictOptions} from "@/utils/dict";
+const { t } = useI18n()
 
 const tabs = ref([])
 const { params, name } = useRoute() // 查询参数

+ 17 - 17
src/views/pms/inspect/order/detail/IotInspectOrderDetailForm.vue

@@ -7,36 +7,36 @@
       label-width="100px"
       v-loading="formLoading"
     >
-      <el-form-item label="工单id" prop="orderId">
-        <el-input v-model="formData.orderId" placeholder="请输入工单id" />
+      <el-form-item :label="t('inspect.iotinspect796627-0')" prop="orderId">
+        <el-input v-model="formData.orderId" :placeholder="t('inspect.iotinspect796627-1')" />
       </el-form-item>
-      <el-form-item label="设备id" prop="deviceId">
-        <el-input v-model="formData.deviceId" placeholder="请输入设备id" />
+      <el-form-item :label="t('inspect.iotinspect796627-2')" prop="deviceId">
+        <el-input v-model="formData.deviceId" :placeholder="t('inspect.iotinspect796627-3')" />
       </el-form-item>
-      <el-form-item label="巡检项id" prop="itemId">
-        <el-input v-model="formData.itemId" placeholder="请输入巡检项id" />
+      <el-form-item :label="t('inspect.iotinspect796627-4')" prop="itemId">
+        <el-input v-model="formData.itemId" :placeholder="t('inspect.iotinspect796627-5')" />
       </el-form-item>
-      <el-form-item label="是否正常" prop="ifNormal">
+      <el-form-item :label="t('inspect.iotinspect796627-6')" prop="ifNormal">
         <el-radio-group v-model="formData.ifNormal">
-          <el-radio value="1">请选择字典生成</el-radio>
+          <el-radio value="1">{{ t('inspect.iotinspect796627-7') }}</el-radio>
         </el-radio-group>
       </el-form-item>
-      <el-form-item label="异常描述" prop="description">
+      <el-form-item :label="t('inspect.iotinspect796627-8')" prop="description">
         <Editor v-model="formData.description" height="150px" />
       </el-form-item>
-      <el-form-item label="图片" prop="picUrl">
-        <el-input v-model="formData.picUrl" placeholder="请输入图片" />
+      <el-form-item :label="t('inspect.iotinspect796627-9')" prop="picUrl">
+        <el-input v-model="formData.picUrl" :placeholder="t('inspect.iotinspect796627-10')" />
       </el-form-item>
-      <el-form-item label="备注" prop="remark">
-        <el-input v-model="formData.remark" placeholder="请输入备注" />
+      <el-form-item :label="t('inspect.iotinspect796627-11')" prop="remark">
+        <el-input v-model="formData.remark" :placeholder="t('inspect.iotinspect796627-12')" />
       </el-form-item>
-      <el-form-item label="部门id" prop="deptId">
-        <el-input v-model="formData.deptId" placeholder="请输入部门id" />
+      <el-form-item :label="t('inspect.iotinspect796627-13')" prop="deptId">
+        <el-input v-model="formData.deptId" :placeholder="t('inspect.iotinspect796627-14')" />
       </el-form-item>
     </el-form>
     <template #footer>
-      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
-      <el-button @click="dialogVisible = false">取 消</el-button>
+      <el-button @click="submitForm" type="primary" :disabled="formLoading">{{ t('inspect.iotinspect796627-15') }}</el-button>
+      <el-button @click="dialogVisible = false">{{ t('inspect.iotinspect796627-16') }}</el-button>
     </template>
   </Dialog>
 </template>

+ 3 - 3
src/views/pms/inspect/order/detail/IotInspectOrderItemStat.vue

@@ -62,9 +62,9 @@
       <el-table-column :label="t('inspect.InspectionItems')" align="center" prop="item" />
       <el-table-column :label="t('inspect.isException')" align="center" prop="ifNormal">
         <template #default="scope">
-          <span v-if="scope.row.ifNormal" style="color: dodgerblue">正常</span>
-          <span v-else-if="scope.row.ifNormal === null" style="color: #101010">待填写</span>
-          <span v-else-if="!scope.row.ifNormal" style="color: orangered">异常</span>
+          <span v-if="scope.row.ifNormal" style="color: dodgerblue">{{ t('inspect.iotinspect089765-0') }}</span>
+          <span v-else-if="scope.row.ifNormal === null" style="color: #101010">{{ t('inspect.iotinspect089765-1') }}</span>
+          <span v-else-if="!scope.row.ifNormal" style="color: orangered">{{ t('inspect.iotinspect089765-2') }}</span>
         </template>
       </el-table-column>
       <el-table-column :label="t('inspect.exceptionDes')" align="center" prop="description" />

+ 35 - 41
src/views/pms/inspect/order/detail/index.vue

@@ -8,92 +8,91 @@
       :inline="true"
       label-width="68px"
     >
-      <el-form-item label="工单id" prop="orderId">
+      <el-form-item :label="t('inspect.indexvue220200-0')" prop="orderId">
         <el-input
           v-model="queryParams.orderId"
-          placeholder="请输入工单id"
+          :placeholder="t('inspect.indexvue220200-1')"
           clearable
           @keyup.enter="handleQuery"
           class="!w-240px"
         />
       </el-form-item>
-      <el-form-item label="设备id" prop="deviceId">
+      <el-form-item :label="t('inspect.indexvue220200-2')" prop="deviceId">
         <el-input
           v-model="queryParams.deviceId"
-          placeholder="请输入设备id"
+          :placeholder="t('inspect.indexvue220200-3')"
           clearable
           @keyup.enter="handleQuery"
           class="!w-240px"
         />
       </el-form-item>
-      <el-form-item label="巡检项id" prop="itemId">
+      <el-form-item :label="t('inspect.indexvue220200-4')" prop="itemId">
         <el-input
           v-model="queryParams.itemId"
-          placeholder="请输入巡检项id"
+          :placeholder="t('inspect.indexvue220200-5')"
           clearable
           @keyup.enter="handleQuery"
           class="!w-240px"
         />
       </el-form-item>
-      <el-form-item label="是否正常" prop="ifNormal">
+      <el-form-item :label="t('inspect.indexvue220200-6')" prop="ifNormal">
         <el-select
           v-model="queryParams.ifNormal"
-          placeholder="请选择是否正常"
+          :placeholder="t('inspect.indexvue220200-7')"
           clearable
           class="!w-240px"
         >
-          <el-option label="请选择字典生成" value="" />
+          <el-option :label="t('inspect.indexvue220200-8')" value="" />
         </el-select>
       </el-form-item>
-      <el-form-item label="图片" prop="picUrl">
+      <el-form-item :label="t('inspect.indexvue220200-9')" prop="picUrl">
         <el-input
           v-model="queryParams.picUrl"
-          placeholder="请输入图片"
+          :placeholder="t('inspect.indexvue220200-10')"
           clearable
           @keyup.enter="handleQuery"
           class="!w-240px"
         />
       </el-form-item>
-      <el-form-item label="备注" prop="remark">
+      <el-form-item :label="t('inspect.indexvue220200-11')" prop="remark">
         <el-input
           v-model="queryParams.remark"
-          placeholder="请输入备注"
+          :placeholder="t('inspect.indexvue220200-12')"
           clearable
           @keyup.enter="handleQuery"
           class="!w-240px"
         />
       </el-form-item>
-      <el-form-item label="创建时间" prop="createTime">
+      <el-form-item :label="t('inspect.indexvue220200-13')" prop="createTime">
         <el-date-picker
           v-model="queryParams.createTime"
           value-format="YYYY-MM-DD HH:mm:ss"
           type="daterange"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
+          start-:placeholder="t('inspect.indexvue220200-14')"
+          end-:placeholder="t('inspect.indexvue220200-15')"
           :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
           class="!w-220px"
         />
       </el-form-item>
-      <el-form-item label="部门id" prop="deptId">
+      <el-form-item :label="t('inspect.indexvue220200-16')" prop="deptId">
         <el-input
           v-model="queryParams.deptId"
-          placeholder="请输入部门id"
+          :placeholder="t('inspect.indexvue220200-17')"
           clearable
           @keyup.enter="handleQuery"
           class="!w-240px"
         />
       </el-form-item>
       <el-form-item>
-        <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
-        <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
+        <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" />{{ t('inspect.indexvue220200-18') }}</el-button>
+        <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" />{{ t('inspect.indexvue220200-19') }}</el-button>
         <el-button
           type="primary"
           plain
           @click="openForm('create')"
           v-hasPermi="['rq:iot-inspect-order-detail:create']"
         >
-          <Icon icon="ep:plus" class="mr-5px" /> 新增
-        </el-button>
+          <Icon icon="ep:plus" class="mr-5px" />{{ t('inspect.indexvue220200-20') }}</el-button>
         <el-button
           type="success"
           plain
@@ -101,8 +100,7 @@
           :loading="exportLoading"
           v-hasPermi="['rq:iot-inspect-order-detail:export']"
         >
-          <Icon icon="ep:download" class="mr-5px" /> 导出
-        </el-button>
+          <Icon icon="ep:download" class="mr-5px" />{{ t('inspect.indexvue220200-21') }}</el-button>
       </el-form-item>
     </el-form>
   </ContentWrap>
@@ -110,40 +108,36 @@
   <!-- 列表 -->
   <ContentWrap>
     <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
-      <el-table-column label="主键id" align="center" prop="id" />
-      <el-table-column label="工单id" align="center" prop="orderId" />
-      <el-table-column label="设备id" align="center" prop="deviceId" />
-      <el-table-column label="巡检项id" align="center" prop="itemId" />
-      <el-table-column label="是否正常" align="center" prop="ifNormal" />
-      <el-table-column label="异常描述" align="center" prop="description" />
-      <el-table-column label="图片" align="center" prop="picUrl" />
-      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column :label="t('inspect.indexvue220200-22')" align="center" prop="id" />
+      <el-table-column :label="t('inspect.indexvue220200-0')" align="center" prop="orderId" />
+      <el-table-column :label="t('inspect.indexvue220200-2')" align="center" prop="deviceId" />
+      <el-table-column :label="t('inspect.indexvue220200-4')" align="center" prop="itemId" />
+      <el-table-column :label="t('inspect.indexvue220200-6')" align="center" prop="ifNormal" />
+      <el-table-column :label="t('inspect.indexvue220200-23')" align="center" prop="description" />
+      <el-table-column :label="t('inspect.indexvue220200-9')" align="center" prop="picUrl" />
+      <el-table-column :label="t('inspect.indexvue220200-11')" align="center" prop="remark" />
       <el-table-column
-        label="创建时间"
+        :label="t('inspect.indexvue220200-13')"
         align="center"
         prop="createTime"
         :formatter="dateFormatter"
         width="180px"
       />
-      <el-table-column label="部门id" align="center" prop="deptId" />
-      <el-table-column label="操作" align="center" min-width="120px">
+      <el-table-column :label="t('inspect.indexvue220200-16')" align="center" prop="deptId" />
+      <el-table-column :label="t('inspect.indexvue220200-24')" align="center" min-width="120px">
         <template #default="scope">
           <el-button
             link
             type="primary"
             @click="openForm('update', scope.row.id)"
             v-hasPermi="['rq:iot-inspect-order-detail:update']"
-          >
-            编辑
-          </el-button>
+          >{{ t('inspect.indexvue220200-25') }}</el-button>
           <el-button
             link
             type="danger"
             @click="handleDelete(scope.row.id)"
             v-hasPermi="['rq:iot-inspect-order-detail:delete']"
-          >
-            删除
-          </el-button>
+          >{{ t('inspect.indexvue220200-26') }}</el-button>
         </template>
       </el-table-column>
     </el-table>

+ 17 - 9
src/views/pms/inspect/order/index.vue

@@ -15,7 +15,7 @@
       ref="queryFormRef"
       :model="queryParams"
       size="default"
-      label-width="88px"
+      label-width="auto"
       class="inspect-order-query bg-white dark:bg-[#1d1e1f] rounded-lg shadow px-6 py-3 min-w-0">
       <div class="query-row">
         <el-form-item :label="t('bomList.name')" prop="inspectOrderTitle">
@@ -64,8 +64,8 @@
           :loading="exportLoading"
           @click="handleExport"
           v-hasPermi="['rq:iot-inspect-order:export']">
-          <Icon icon="ep:download" class="mr-5px" />导出
-        </el-button>
+          <Icon icon="ep:download" class="mr-5px" />{{ t('inspect.indexvue317870-0') }}</el-button
+        >
       </el-form-item>
     </el-form>
 
@@ -119,7 +119,11 @@
                 :label="t('inspect.executeTime')"
                 prop="executeDate"
                 :formatter="dateFormatter" />
-              <ZmTableColumn :label="t('iotMaintain.operation')" :width="180" fixed="right" action>
+              <ZmTableColumn
+                :label="t('iotMaintain.operation')"
+                min-width="200"
+                fixed="right"
+                action>
                 <template #default="scope">
                   <el-button link type="primary" @click="openForm(scope.row.id)">
                     {{ t('operationFill.view') }}
@@ -164,25 +168,29 @@
 
   <el-dialog
     v-model="dialogVisible"
-    title="忽略理由"
+    :title="t('inspect.indexvue317870-1')"
     width="min(520px, 92vw)"
     :before-close="handleClose"
     append-to-body
     :close-on-click-modal="false">
     <el-form ref="reasonFormRef" :model="form" :rules="rules" size="default" label-width="60px">
-      <el-form-item label="理由" prop="reason">
+      <el-form-item :label="t('inspect.indexvue317870-2')" prop="reason">
         <el-input
           v-model="form.reason"
           type="textarea"
-          placeholder="请输入忽略理由"
+          :placeholder="t('inspect.indexvue317870-3')"
           :rows="4"
           resize="none" />
       </el-form-item>
     </el-form>
 
     <template #footer>
-      <el-button size="default" @click="handleCancel">取消</el-button>
-      <el-button size="default" type="primary" @click="handleConfirm">确定</el-button>
+      <el-button size="default" @click="handleCancel">{{
+        t('inspect.indexvue317870-4')
+      }}</el-button>
+      <el-button size="default" type="primary" @click="handleConfirm">{{
+        t('inspect.indexvue317870-5')
+      }}</el-button>
     </template>
   </el-dialog>
 

+ 6 - 4
src/views/pms/inspect/plan/InspectRouteList.vue

@@ -10,7 +10,7 @@
         <div class="dialog-title__icon"><Icon icon="ep:guide" /></div>
         <div>
           <div class="dialog-title__text">{{ t('route.SelectInspectionDevice') }}</div>
-          <div class="dialog-title__subtitle">筛选并选择需要加入计划的巡检设备路线</div>
+          <div class="dialog-title__subtitle">{{ t('inspect.inspectrou344758-0') }}</div>
         </div>
       </div>
     </template>
@@ -20,7 +20,7 @@
         ref="queryFormRef"
         :model="queryParams"
         size="default"
-        label-width="84px"
+        label-width="auto"
         class="query-panel">
         <div class="query-row">
           <el-form-item :label="t('monitor.deviceName')" prop="deviceName">
@@ -56,7 +56,7 @@
               node-key="id"
               filterable
               clearable
-              placeholder="请选择部门"
+              :placeholder="t('inspect.inspectrou344758-1')"
               class="query-control" />
           </el-form-item>
         </div>
@@ -127,7 +127,9 @@
       <div class="dialog-footer">
         <span class="selection-summary">已选择 {{ selectedRows.length }} 条路线</span>
         <div>
-          <el-button size="default" @click="dialogVisible = false">取消</el-button>
+          <el-button size="default" @click="dialogVisible = false">{{
+            t('inspect.inspectrou344758-2')
+          }}</el-button>
           <el-button size="default" type="primary" @click="handleConfirm">
             <Icon icon="ep:check" class="mr-5px" />{{ t('chooseMaintain.confirm') }}
           </el-button>

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.