Explorar el Código

多语言处理

yanghao hace 2 semanas
padre
commit
1568dd0864
Se han modificado 100 ficheros con 3149 adiciones y 2688 borrados
  1. 1855 1236
      src/locales/zh-CN.ts
  2. 6 6
      src/views/pms/app/IotAppForm.vue
  3. 11 12
      src/views/pms/app/index.vue
  4. 12 16
      src/views/pms/bom/BomForm.vue
  5. 6 4
      src/views/pms/bom/DeviceCategoryTree.vue
  6. 1 1
      src/views/pms/bom/MaterialList.vue
  7. 7 9
      src/views/pms/bom/MaterialListDrawer.vue
  8. 19 29
      src/views/pms/bom/index.vue
  9. 8 5
      src/views/pms/constructionDailyReport/components/ConstructionDailyReportDrawer.vue
  10. 3 1
      src/views/pms/constructionDailyReport/components/ConstructionDailyReportFormSection.vue
  11. 16 3
      src/views/pms/constructionDailyReport/components/ConstructionDailyReportTable.vue
  12. 24 17
      src/views/pms/constructionDailyReport/index.vue
  13. 16 14
      src/views/pms/device/BrandList.vue
  14. 33 38
      src/views/pms/device/CheckCertificate.vue
  15. 18 18
      src/views/pms/device/CustomerList.vue
  16. 6 4
      src/views/pms/device/DeptTree2.vue
  17. 10 8
      src/views/pms/device/DeviceAllotRecord.vue
  18. 15 17
      src/views/pms/device/DeviceAssociationRecord.vue
  19. 7 5
      src/views/pms/device/DeviceBasicInfo.vue
  20. 21 33
      src/views/pms/device/DeviceBomLibrary.vue
  21. 39 41
      src/views/pms/device/DeviceFailureRecord.vue
  22. 17 23
      src/views/pms/device/DeviceFileLibrary.vue
  23. 6 6
      src/views/pms/device/DeviceInfo1.vue
  24. 24 28
      src/views/pms/device/DeviceInspectRecord.vue
  25. 42 44
      src/views/pms/device/DeviceMaintainRecord.vue
  26. 23 27
      src/views/pms/device/DeviceMaintenanceRecord.vue
  27. 15 19
      src/views/pms/device/DeviceOperationRecord.vue
  28. 10 8
      src/views/pms/device/DevicePersonRecord.vue
  29. 10 8
      src/views/pms/device/DeviceStatusRecord.vue
  30. 12 12
      src/views/pms/device/FileTree.vue
  31. 59 71
      src/views/pms/device/IotDeviceForm.vue
  32. 34 46
      src/views/pms/device/IotDeviceForm1.vue
  33. 34 38
      src/views/pms/device/IotDeviceFormAdd.vue
  34. 2 2
      src/views/pms/device/MaterialListDrawerDevice.vue
  35. 12 10
      src/views/pms/device/ModelList.vue
  36. 4 6
      src/views/pms/device/allotlog/ConfigDeviceAllot.vue
  37. 4 5
      src/views/pms/device/allotlog/DeviceAllot.vue
  38. 1 1
      src/views/pms/device/allotlog/DeviceAllotLogDrawer.vue
  39. 10 10
      src/views/pms/device/bom/BomInfo.vue
  40. 6 6
      src/views/pms/device/bom/BomList.vue
  41. 12 12
      src/views/pms/device/bom/BomTree.vue
  42. 34 32
      src/views/pms/device/completeKanban/index.vue
  43. 8 8
      src/views/pms/device/completeSet/AssociationDevices.vue
  44. 27 27
      src/views/pms/device/completeSet/DeviceCompleteSet.vue
  45. 4 2
      src/views/pms/device/components/dashboard/DeviceStatusCard.vue
  46. 6 6
      src/views/pms/device/components/dashboard/DeviceTotalCard.vue
  47. 18 22
      src/views/pms/device/components/select-list/brand-list.vue
  48. 16 20
      src/views/pms/device/components/select-list/customer-list.vue
  49. 16 20
      src/views/pms/device/components/select-list/model-list.vue
  50. 54 119
      src/views/pms/device/index.vue
  51. 50 54
      src/views/pms/device/maintenance/MaintenanceDetail.vue
  52. 12 12
      src/views/pms/device/monitor/IotAlarmSettingForm.vue
  53. 11 22
      src/views/pms/device/monitor/RangeSet.vue
  54. 33 37
      src/views/pms/device/monitor/RangeSetting.vue
  55. 21 30
      src/views/pms/device/monitor/TdDeviceInfo copy.vue
  56. 22 13
      src/views/pms/device/monitor/TdDeviceInfo.vue
  57. 6 7
      src/views/pms/device/monitor/index.vue
  58. 4 5
      src/views/pms/device/personlog/DevicePerson.vue
  59. 1 1
      src/views/pms/device/personlog/DevicePersonLogDrawer.vue
  60. 4 5
      src/views/pms/device/statuslog/DeviceStatus.vue
  61. 1 1
      src/views/pms/device/statuslog/DeviceStatusLogDrawer.vue
  62. 6 4
      src/views/pms/devicetemplate/DeviceCategoryTree.vue
  63. 10 10
      src/views/pms/devicetemplate/TemplateForm.vue
  64. 4 2
      src/views/pms/devicetemplate/detail/TemplateDetailsHeader.vue
  65. 8 8
      src/views/pms/devicetemplate/detail/attrsModel/AttrTemplateModelForm.vue
  66. 28 25
      src/views/pms/devicetemplate/detail/attrsModel/AttrTemplateModelProperty.vue
  67. 9 15
      src/views/pms/devicetemplate/detail/attrsModel/index.vue
  68. 5 3
      src/views/pms/devicetemplate/detail/dataSpecs/DeviceAttrModelArrayDataSpecs.vue
  69. 5 3
      src/views/pms/devicetemplate/detail/dataSpecs/DeviceAttrModelEnumDataSpecs.vue
  70. 4 2
      src/views/pms/devicetemplate/detail/dataSpecs/DeviceAttrModelNumberDataSpecs.vue
  71. 11 9
      src/views/pms/devicetemplate/detail/dataSpecs/DeviceAttrModelStructDataSpecs.vue
  72. 3 1
      src/views/pms/devicetemplate/detail/index.vue
  73. 24 30
      src/views/pms/devicetemplate/index.vue
  74. 3 3
      src/views/pms/failure/FailureInfo.vue
  75. 9 9
      src/views/pms/failure/IotFailureReportForm.vue
  76. 6 7
      src/views/pms/failure/index.vue
  77. 8 8
      src/views/pms/fiveDailyReportSummary/index.vue
  78. 11 11
      src/views/pms/info/InfoClassifyForm.vue
  79. 15 20
      src/views/pms/info/index.vue
  80. 3 3
      src/views/pms/information/IotInformationDbForm.vue
  81. 1 2
      src/views/pms/information/index.vue
  82. 3 3
      src/views/pms/inspect/item/IotInspectItemForm.vue
  83. 1 2
      src/views/pms/inspect/item/index.vue
  84. 5 7
      src/views/pms/inspect/order/InspectOrderDetail.vue
  85. 14 14
      src/views/pms/inspect/order/IotInspectOrderForm.vue
  86. 7 5
      src/views/pms/inspect/order/OrderComponent.vue
  87. 6 8
      src/views/pms/inspect/order/WriteOrder.vue
  88. 8 8
      src/views/pms/inspect/order/WriteOrdertest.vue
  89. 17 17
      src/views/pms/inspect/order/detail/IotInspectOrderDetailForm.vue
  90. 3 3
      src/views/pms/inspect/order/detail/IotInspectOrderItemStat.vue
  91. 35 41
      src/views/pms/inspect/order/detail/index.vue
  92. 6 7
      src/views/pms/inspect/order/index.vue
  93. 3 3
      src/views/pms/inspect/plan/InspectRouteList.vue
  94. 6 7
      src/views/pms/inspect/plan/IotInspectPlan.vue
  95. 18 18
      src/views/pms/inspect/plan/IotInspectPlanForm.vue
  96. 1 2
      src/views/pms/inspect/plan/index.vue
  97. 2 2
      src/views/pms/inspect/route/InspectItemList.vue
  98. 4 4
      src/views/pms/inspect/route/IotInspectRoute.vue
  99. 18 18
      src/views/pms/inspect/route/IotInspectRouteForm.vue
  100. 1 2
      src/views/pms/inspect/route/index.vue

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1855 - 1236
src/locales/zh-CN.ts


+ 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"

+ 12 - 16
src/views/pms/bom/BomForm.vue

@@ -8,14 +8,14 @@
       label-width="120px"
       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,8 @@
       </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>

+ 19 - 29
src/views/pms/bom/index.vue

@@ -275,18 +275,18 @@ onMounted(() => {
       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,16 +300,14 @@ 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" />展开/折叠
         </el-button>
@@ -332,32 +330,32 @@ 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 +366,25 @@ 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

+ 21 - 33
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,27 +39,21 @@
               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" />
             展开/折叠
@@ -83,39 +77,39 @@
               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 +118,28 @@
                       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 +164,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 +172,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>

+ 4 - 5
src/views/pms/device/allotlog/DeviceAllot.vue

@@ -192,13 +192,13 @@ 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" />
@@ -269,8 +269,7 @@ 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"

+ 6 - 6
src/views/pms/device/bom/BomList.vue

@@ -1,7 +1,7 @@
 <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>
@@ -74,7 +74,7 @@
           <!-- 使用 el-tooltip 包裹内容 -->
           <el-tooltip
             effect="dark"
-            :content="`设备分类:${scope.row.deviceCategoryName || '暂无'}`"
+            ::content="t('device.bomlistvue481710-3')"
             placement="top-start"
             :disabled="!scope.row.deviceCategoryName"
           >
@@ -87,7 +87,7 @@
       </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)"
@@ -97,7 +97,7 @@
           />
         </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)"

+ 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>

+ 27 - 27
src/views/pms/device/completeSet/DeviceCompleteSet.vue

@@ -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,30 @@
               {{ 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
+                >{{ t('device.devicecomp596172-6') }}</el-tag
               >
-              <el-tag type="info" :underline="false" v-else>离线</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 +90,8 @@
             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>
@@ -115,16 +115,16 @@
     <el-form ref="formRef" :model="formData" :rules="formRules" label-width="80px">
       <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 +145,7 @@
               check-strictly
               node-key="id"
               filterable
-              placeholder="请选择所在部门"
+              :placeholder="t('device.devicecomp596172-14')"
               @change="handleDeptChange" />
           </el-form-item>
         </el-col>
@@ -153,11 +153,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 +165,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 +174,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 +190,10 @@
 
       <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 +209,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>

+ 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>

+ 54 - 119
src/views/pms/device/index.vue

@@ -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,7 @@
             @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 +185,19 @@
                   <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 +216,19 @@
                   <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 +247,19 @@
                   <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 +271,7 @@
                 </template>
               </zm-table-column>
               <zm-table-column
-                label="设备号"
+                :label="t('device.indexvue100657-2')"
                 align="center"
                 prop="deviceNo"
                 width="120"
@@ -296,23 +283,19 @@
                   <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 +316,18 @@
                       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 +343,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 +356,12 @@
                     <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 +380,19 @@
                   <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 +412,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 +425,19 @@
                     <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 +447,19 @@
                   <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 +476,19 @@
                   <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 +516,12 @@
                     <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 +551,12 @@
                     <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 +576,19 @@
                   <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 +604,19 @@
                   <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 +632,25 @@
                   <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 +660,19 @@
                   <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>
   <!-- 表单弹窗:添加/修改 -->

+ 12 - 12
src/views/pms/device/monitor/IotAlarmSettingForm.vue

@@ -7,15 +7,15 @@
       label-width="100px"
       v-loading="formLoading"
     >
-      <el-form-item label="分类名称" prop="classifyName">
+      <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-form-item :label="t('device.iotalarmse931035-2')" prop="alarmProperty">
 <!--        <el-input v-model="formData.alarmProperty" placeholder="请输入告警属性" />-->
-        <el-select v-model="formData.alarmProperty" placeholder="请选择告警属性" clearable filterable @change="propertyChange">
+        <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"
@@ -24,19 +24,19 @@
           />
         </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>

+ 11 - 22
src/views/pms/device/monitor/RangeSet.vue

@@ -13,8 +13,8 @@
           <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>
+                <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;"-->
@@ -59,9 +59,7 @@
               >
                 <template #icon>
                   <Icon icon="ep:search" />
-                </template>
-                查询
-              </el-button>
+                </template>{{ t('device.rangesetvu328011-2') }}</el-button>
               <el-button
                 type="primary"
                 @click="openForm('create')"
@@ -70,9 +68,7 @@
               >
                 <template #icon>
                   <Plus />
-                </template>
-                添加属性
-              </el-button>
+                </template>{{ t('device.rangesetvu328011-3') }}</el-button>
               <el-button
                 type="success"
                 @click="saveAllProperties"
@@ -81,9 +77,7 @@
               >
                 <template #icon>
                   <Check />
-                </template>
-                保存配置
-              </el-button>
+                </template>{{ t('device.rangesetvu328011-4') }}</el-button>
             </div>
           </div>
           <!-- 未选择任何项时的空状态 -->
@@ -123,11 +117,11 @@
 <!--&lt;!&ndash;                        </div>&ndash;&gt;-->
 <!--                      </div>-->
                       <div class="mb-2.5 last:mb-0">
-                        <span class="text-[#717c8e] mr-2.5">设备名称</span>
+                        <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"
@@ -137,7 +131,7 @@
                           step="any"
                         :min="item.minValue !== null ? item.minValue : -Infinity"
                         />
-                        <span class="text-[#717c8e] mr-2 ml-2">下限数值</span>
+                        <span class="text-[#717c8e] mr-2 ml-2">{{ t('device.rangesetvu328011-7') }}</span>
                         <el-input
                           v-model.number="item.minValue"
                           type="number"
@@ -168,9 +162,7 @@
                       type="primary"
                       @click="openUpdateForm('update', item)"
                     >
-                      <Icon class="mr-1" icon="ep:edit-pen" />
-                      编辑
-                    </el-button>
+                      <Icon class="mr-1" icon="ep:edit-pen" />{{ t('device.rangesetvu328011-8') }}</el-button>
 <!--                    <el-button-->
 <!--                      class="flex-1 !px-2 !h-[32px] !ml-[10px] text-[13px]"-->
 <!--                      plain-->
@@ -195,8 +187,7 @@
                       type="danger"
                       @click="handleDelete(item.id)"
                     >
-                      <Icon icon="ep:delete" />删除
-                    </el-button>
+                      <Icon icon="ep:delete" />{{ t('device.rangesetvu328011-9') }}</el-button>
                   </div>
                 </div>
               </el-card>
@@ -222,9 +213,7 @@
               <el-button type="primary" @click="showAddPropertyDialog" size="default">
                 <template #icon>
                   <Plus />
-                </template>
-                添加第一个属性
-              </el-button>
+                </template>{{ t('device.rangesetvu328011-10') }}</el-button>
             </template>
           </el-empty>
         </div>

+ 33 - 37
src/views/pms/device/monitor/RangeSetting.vue

@@ -3,14 +3,14 @@
     <!-- 页面标题与导航 -->
     <el-page-header
       @back="handleBack"
-      content="设备属性管理"
+      :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,10 +21,10 @@
         <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"
               >
@@ -98,9 +98,7 @@
             >
               <template #icon>
                 <Plus />
-              </template>
-              添加属性
-            </el-button>
+              </template>{{ t('device.rangesetti238585-6') }}</el-button>
             <el-button
               type="success"
               @click="saveAllProperties"
@@ -109,9 +107,7 @@
             >
               <template #icon>
                 <Check />
-              </template>
-              保存配置
-            </el-button>
+              </template>{{ t('device.rangesetti238585-7') }}</el-button>
           </div>
         </div>
 
@@ -142,7 +138,7 @@
           >
             <!-- 卡片底部插槽示例 - 可以根据需要自定义内容 -->
             <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>
@@ -167,9 +163,7 @@
               >
                 <template #icon>
                   <Plus />
-                </template>
-                添加第一个属性
-              </el-button>
+                </template>{{ t('device.rangesetti238585-9') }}</el-button>
             </template>
           </el-empty>
         </div>
@@ -179,7 +173,7 @@
     <!-- 添加/编辑属性对话框 -->
     <el-dialog
       v-model="propertyDialogVisible"
-      :title="isEditing ? '编辑属性' : '添加新属性'"
+      ::title="t('device.rangesetti238585-10')"
       :width="500"
       @close="resetPropertyForm"
       class="property-dialog"
@@ -191,73 +185,73 @@
         label-width="120px"
         class="property-form"
       >
-        <el-form-item label="属性名称" prop="name">
+        <el-form-item :label="t('device.rangesetti238585-11')" prop="name">
           <el-input
             v-model="currentProperty.name"
-            placeholder="请输入属性名称"
+            :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>
+          <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="请选择数据类型"
+            :placeholder="t('device.rangesetti238585-17')"
             @change="handleDataTypeChange"
           >
-            <el-option label="整数" value="integer" />
-            <el-option label="浮点数" value="float" />
-            <el-option label="布尔值" value="boolean" />
+            <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"
+            :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="请输入最小值"
+                :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="请输入最大值"
+                :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"
@@ -265,12 +259,12 @@
         </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 @click="propertyDialogVisible = false">{{ t('device.rangesetti238585-30') }}</el-button>
         <el-button
           type="primary"
           @click="confirmPropertyAction"
@@ -285,7 +279,9 @@
 
 <script setup>
 import { ref, reactive, watch, nextTick, computed } from 'vue';
+import { useI18n } from 'vue-i18n'
 import {
+const { t } = useI18n()
   Search, FolderOpened, Monitor, Plus, Check,
   Edit, Delete, InfoFilled, Clock
 } from '@element-plus/icons-vue';

+ 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!"

+ 6 - 7
src/views/pms/device/monitor/index.vue

@@ -39,15 +39,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">
@@ -79,8 +79,7 @@
                 @click="handleExport"
                 :loading="exportLoading"
                 v-hasPermi="['iot:device:export']">
-                <Icon icon="ep:download" class="mr-5px" /> 导出
-              </el-button>
+                <Icon icon="ep:download" class="mr-5px" />{{ t('device.indexvue471356-5') }}</el-button>
             </el-form-item>
           </el-form>
         </div>

+ 4 - 5
src/views/pms/device/personlog/DevicePerson.vue

@@ -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,7 @@ 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">

+ 4 - 5
src/views/pms/device/statuslog/DeviceStatus.vue

@@ -192,13 +192,13 @@ 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" />
@@ -264,8 +264,7 @@ onMounted(() => {
           <Icon icon="ep:plus" class="mr-5px" />{{ t('deviceStatus.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.devicestat037846-3') }}</el-button>
       </el-form-item>
     </el-form>
 

+ 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' })
 

+ 10 - 10
src/views/pms/devicetemplate/TemplateForm.vue

@@ -9,7 +9,7 @@
     >
       <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,7 +19,7 @@
               clearable
               value-key="id"
               :default-expanded-keys="firstLevelKeys"
-              placeholder="请选择设备分类"
+              :placeholder="t('devicetemplate.templatefo180085-1')"
               @node-click="handleDeviceCategoryTreeNodeClick"
             />
           </el-form-item>
@@ -27,27 +27,27 @@
       </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>

+ 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' })
 

+ 24 - 30
src/views/pms/devicetemplate/index.vue

@@ -190,28 +190,28 @@ onMounted(() => {
       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"
           />
         </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"
           />
         </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"
           >
@@ -223,13 +223,13 @@ onMounted(() => {
             />
           </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"
@@ -239,17 +239,15 @@ onMounted(() => {
 
       <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']"
         >
-          <Icon icon="ep:plus" class="mr-5px" />新增
-        </el-button>
+          <Icon icon="ep:plus" class="mr-5px" />{{ t('devicetemplate.indexvue576171-11') }}</el-button>
       </el-form-item>
     </el-form>
 
@@ -267,17 +265,17 @@ onMounted(() => {
             >
               <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="设备分类名称" />
+              <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"
               >
@@ -290,44 +288,40 @@ onMounted(() => {
                     :disabled="!checkPermi(['rq:iot-device-template:update'])"
                     @change="(status) => handleStatusChange(row, status)"
                   />
-                  <el-tag v-else type="info">未知</el-tag>
+                  <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>
+              <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']"
                     >
-                      <Icon icon="ep:edit" class="mr-3px" />修改
-                    </el-button>
+                      <Icon icon="ep:edit" class="mr-3px" />{{ t('devicetemplate.indexvue576171-17') }}</el-button>
                     <el-dropdown
                       @command="(command) => handleCommand(command, row)"
                       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'])"
                           >
-                            <Icon icon="ep:delete" class="mr-5px" />删除
-                          </el-dropdown-item>
+                            <Icon icon="ep:delete" class="mr-5px" />{{ t('devicetemplate.indexvue576171-19') }}</el-dropdown-item>
                         </el-dropdown-menu>
                       </template>
                     </el-dropdown>

+ 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>

+ 6 - 7
src/views/pms/failure/index.vue

@@ -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,7 @@
           :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>

+ 15 - 20
src/views/pms/info/index.vue

@@ -8,19 +8,19 @@
       :inline="true"
       label-width="68px"
     >
-      <el-form-item label="资料分类名称" label-width="100px" prop="name">
+      <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"
         />
       </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"
         >
@@ -33,16 +33,15 @@
         </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']"
         >
-          <Icon icon="ep:plus" class="mr-5px" /> 新增
-        </el-button>
+          <Icon icon="ep:plus" class="mr-5px" />{{ t('info.indexvue917001-6') }}</el-button>
         <el-button type="danger" plain @click="toggleExpandAll">
           <Icon icon="ep:sort" class="mr-5px" /> 展开/折叠
         </el-button>
@@ -59,39 +58,35 @@
       :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="状态">
+      <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">
+      <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']"
-          >
-            修改
-          </el-button>
+          >{{ t('info.indexvue917001-12') }}</el-button>
           <el-button
             link
             type="danger"
             @click="handleDelete(scope.row.id)"
             v-hasPermi="['iot:product-classify:delete']"
-          >
-            删除
-          </el-button>
+          >{{ t('info.indexvue917001-13') }}</el-button>
         </template>
       </el-table-column>
     </el-table>

+ 3 - 3
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>
@@ -26,7 +26,7 @@
       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>

+ 1 - 2
src/views/pms/information/index.vue

@@ -62,8 +62,7 @@
           @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>
 

+ 3 - 3
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>
@@ -23,7 +23,7 @@
       label-width="100px"
       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')" />

+ 1 - 2
src/views/pms/inspect/item/index.vue

@@ -70,8 +70,7 @@
           :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>

+ 6 - 7
src/views/pms/inspect/order/index.vue

@@ -64,8 +64,7 @@
           :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>
 
@@ -164,25 +163,25 @@
 
   <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>
 

+ 3 - 3
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>
@@ -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,7 @@
       <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>

+ 6 - 7
src/views/pms/inspect/plan/IotInspectPlan.vue

@@ -5,12 +5,11 @@
         <div class="page-header__icon"><Icon icon="ep:calendar" /></div>
         <div>
           <h1>{{ pageTitle }}</h1>
-          <p>配置巡检周期、首次执行时间及设备路线顺序</p>
+          <p>{{ t('inspect.iotinspect197586-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.iotinspect197586-1') }}</el-button>
     </header>
 
     <el-form
@@ -21,7 +20,7 @@
       label-width="110px"
       class="plan-form">
       <section class="form-section">
-        <header class="section-heading"><span></span>计划信息</header>
+        <header class="section-heading"><span></span>{{ t('inspect.iotinspect197586-2') }}</header>
         <div class="form-grid">
           <el-form-item :label="t('main.planName')" prop="planTitle">
             <el-input v-model="formData.planTitle" :placeholder="t('main.nameHolder')" />
@@ -52,21 +51,21 @@
               v-model="formData.beginCreateTime"
               type="datetime"
               value-format="x"
-              placeholder="请选择首次执行时间" />
+              :placeholder="t('inspect.iotinspect197586-3')" />
           </el-form-item>
           <el-form-item :label="t('form.remark')" prop="remark" class="form-grid__wide">
             <el-input
               v-model="formData.remark"
               type="textarea"
               :rows="3"
-              placeholder="请输入备注" />
+              :placeholder="t('inspect.iotinspect197586-4')" />
           </el-form-item>
         </div>
       </section>
 
       <section class="form-section route-section">
         <header class="section-heading section-heading--actions">
-          <div class="section-heading__title"><span></span>巡检设备路线</div>
+          <div class="section-heading__title"><span></span>{{ t('inspect.iotinspect197586-5') }}</div>
           <el-button size="default" type="primary" @click="openForm">
             <Icon icon="ep:plus" class="mr-5px" />
             {{ t('route.SelectInspectionDevice') }}

+ 18 - 18
src/views/pms/inspect/plan/IotInspectPlanForm.vue

@@ -7,34 +7,34 @@
       label-width="100px"
       v-loading="formLoading"
     >
-      <el-form-item label="巡检计划标题" prop="planTitle">
-        <el-input v-model="formData.planTitle" placeholder="请输入巡检计划标题" />
+      <el-form-item :label="t('inspect.iotinspect470326-0')" prop="planTitle">
+        <el-input v-model="formData.planTitle" :placeholder="t('inspect.iotinspect470326-1')" />
       </el-form-item>
-      <el-form-item label="巡检计划编号" prop="planCode">
-        <el-input v-model="formData.planCode" placeholder="请输入巡检计划编号" />
+      <el-form-item :label="t('inspect.iotinspect470326-2')" prop="planCode">
+        <el-input v-model="formData.planCode" :placeholder="t('inspect.iotinspect470326-3')" />
       </el-form-item>
-      <el-form-item label="周期" prop="planCycle">
-        <el-input v-model="formData.planCycle" placeholder="请输入周期" />
+      <el-form-item :label="t('inspect.iotinspect470326-4')" prop="planCycle">
+        <el-input v-model="formData.planCycle" :placeholder="t('inspect.iotinspect470326-5')" />
       </el-form-item>
-      <el-form-item label="单位" prop="planUnit">
-        <el-input v-model="formData.planUnit" placeholder="请输入单位" />
+      <el-form-item :label="t('inspect.iotinspect470326-6')" prop="planUnit">
+        <el-input v-model="formData.planUnit" :placeholder="t('inspect.iotinspect470326-7')" />
       </el-form-item>
-      <el-form-item label="负责人" prop="charge">
-        <el-input v-model="formData.charge" placeholder="请输入负责人" />
+      <el-form-item :label="t('inspect.iotinspect470326-8')" prop="charge">
+        <el-input v-model="formData.charge" :placeholder="t('inspect.iotinspect470326-9')" />
       </el-form-item>
-      <el-form-item label="设备" prop="deviceIds">
-        <el-input v-model="formData.deviceIds" placeholder="请输入设备" />
+      <el-form-item :label="t('inspect.iotinspect470326-10')" prop="deviceIds">
+        <el-input v-model="formData.deviceIds" :placeholder="t('inspect.iotinspect470326-11')" />
       </el-form-item>
-      <el-form-item label="备注" prop="remark">
-        <el-input v-model="formData.remark" placeholder="请输入备注" />
+      <el-form-item :label="t('inspect.iotinspect470326-12')" prop="remark">
+        <el-input v-model="formData.remark" :placeholder="t('inspect.iotinspect470326-13')" />
       </el-form-item>
-      <el-form-item label="部门id" prop="deptId">
-        <el-input v-model="formData.deptId" placeholder="请输入部门id" />
+      <el-form-item :label="t('inspect.iotinspect470326-14')" prop="deptId">
+        <el-input v-model="formData.deptId" :placeholder="t('inspect.iotinspect470326-15')" />
       </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.iotinspect470326-16') }}</el-button>
+      <el-button @click="dialogVisible = false">{{ t('inspect.iotinspect470326-17') }}</el-button>
     </template>
   </Dialog>
 </template>

+ 1 - 2
src/views/pms/inspect/plan/index.vue

@@ -66,8 +66,7 @@
           :loading="exportLoading"
           @click="handleExport"
           v-hasPermi="['rq:iot-inspect-plan:export']">
-          <Icon icon="ep:download" class="mr-5px" />导出
-        </el-button>
+          <Icon icon="ep:download" class="mr-5px" />{{ t('inspect.indexvue536735-0') }}</el-button>
       </el-form-item>
     </el-form>
 

+ 2 - 2
src/views/pms/inspect/route/InspectItemList.vue

@@ -10,7 +10,7 @@
         <div class="dialog-title__icon"><Icon icon="ep:finished" /></div>
         <div>
           <div class="dialog-title__text">{{ t('route.selectInspectionItems') }}</div>
-          <div class="dialog-title__subtitle">筛选并选择需要加入路线的巡检项目</div>
+          <div class="dialog-title__subtitle">{{ t('inspect.inspectite276348-0') }}</div>
         </div>
       </div>
     </template>
@@ -114,7 +114,7 @@
       <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.inspectite276348-1') }}</el-button>
           <el-button size="default" type="primary" @click="handleConfirm">
             <Icon icon="ep:check" class="mr-5px" />{{ t('workOrderMaterial.confirm') }}
           </el-button>

+ 4 - 4
src/views/pms/inspect/route/IotInspectRoute.vue

@@ -5,10 +5,10 @@
         <div class="page-header__icon"><Icon icon="ep:guide" /></div>
         <div>
           <h1>{{ pageTitle }}</h1>
-          <p>配置巡检设备、路线说明及巡检项执行顺序</p>
+          <p>{{ t('inspect.iotinspect599866-0') }}</p>
         </div>
       </div>
-      <el-button @click="close"> <Icon icon="ep:arrow-left" class="mr-5px" />返回 </el-button>
+      <el-button @click="close"> <Icon icon="ep:arrow-left" class="mr-5px" />{{ t('inspect.iotinspect599866-1') }}</el-button>
     </header>
 
     <el-form
@@ -19,7 +19,7 @@
       label-width="100px"
       class="route-form">
       <section class="form-section">
-        <header class="section-heading"><span></span>路线信息</header>
+        <header class="section-heading"><span></span>{{ t('inspect.iotinspect599866-2') }}</header>
         <div class="form-grid">
           <el-form-item :label="t('route.RouteName')" prop="routeName">
             <el-input v-model="formData.routeName" :placeholder="t('route.RouteName')" />
@@ -64,7 +64,7 @@
 
       <section class="form-section inspection-section">
         <header class="section-heading section-heading--actions">
-          <div class="section-heading__title"><span></span>巡检项顺序</div>
+          <div class="section-heading__title"><span></span>{{ t('inspect.iotinspect599866-3') }}</div>
           <el-button type="primary" @click="openForm">
             <Icon icon="ep:plus" class="mr-5px" />{{ t('route.selectInspectionItems') }}
           </el-button>

+ 18 - 18
src/views/pms/inspect/route/IotInspectRouteForm.vue

@@ -7,34 +7,34 @@
       label-width="100px"
       v-loading="formLoading"
     >
-      <el-form-item label="路线名称" prop="routeName">
-        <el-input v-model="formData.routeName" placeholder="请输入路线名称" />
+      <el-form-item :label="t('inspect.iotinspect952030-0')" prop="routeName">
+        <el-input v-model="formData.routeName" :placeholder="t('inspect.iotinspect952030-1')" />
       </el-form-item>
-      <el-form-item label="设备分类" prop="deviceClassify">
-        <el-input v-model="formData.deviceClassify" placeholder="请输入设备分类" />
+      <el-form-item :label="t('inspect.iotinspect952030-2')" prop="deviceClassify">
+        <el-input v-model="formData.deviceClassify" :placeholder="t('inspect.iotinspect952030-3')" />
       </el-form-item>
-      <el-form-item label="设备id" prop="deviceId">
-        <el-input v-model="formData.deviceId" placeholder="请输入设备id" />
+      <el-form-item :label="t('inspect.iotinspect952030-4')" prop="deviceId">
+        <el-input v-model="formData.deviceId" :placeholder="t('inspect.iotinspect952030-5')" />
       </el-form-item>
-      <el-form-item label="设备分类名称" prop="deviceClassifyName">
-        <el-input v-model="formData.deviceClassifyName" placeholder="请输入设备分类名称" />
+      <el-form-item :label="t('inspect.iotinspect952030-6')" prop="deviceClassifyName">
+        <el-input v-model="formData.deviceClassifyName" :placeholder="t('inspect.iotinspect952030-7')" />
       </el-form-item>
-      <el-form-item label="设备名称" prop="deviceName">
-        <el-input v-model="formData.deviceName" placeholder="请输入设备名称" />
+      <el-form-item :label="t('inspect.iotinspect952030-8')" prop="deviceName">
+        <el-input v-model="formData.deviceName" :placeholder="t('inspect.iotinspect952030-9')" />
       </el-form-item>
-      <el-form-item label="巡检项" prop="itemJson">
-        <el-input v-model="formData.itemJson" placeholder="请输入巡检项" />
+      <el-form-item :label="t('inspect.iotinspect952030-10')" prop="itemJson">
+        <el-input v-model="formData.itemJson" :placeholder="t('inspect.iotinspect952030-11')" />
       </el-form-item>
-      <el-form-item label="备注" prop="remark">
-        <el-input v-model="formData.remark" placeholder="请输入备注" />
+      <el-form-item :label="t('inspect.iotinspect952030-12')" prop="remark">
+        <el-input v-model="formData.remark" :placeholder="t('inspect.iotinspect952030-13')" />
       </el-form-item>
-      <el-form-item label="部门id" prop="deptId">
-        <el-input v-model="formData.deptId" placeholder="请输入部门id" />
+      <el-form-item :label="t('inspect.iotinspect952030-14')" prop="deptId">
+        <el-input v-model="formData.deptId" :placeholder="t('inspect.iotinspect952030-15')" />
       </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.iotinspect952030-16') }}</el-button>
+      <el-button @click="dialogVisible = false">{{ t('inspect.iotinspect952030-17') }}</el-button>
     </template>
   </Dialog>
 </template>

+ 1 - 2
src/views/pms/inspect/route/index.vue

@@ -68,8 +68,7 @@
           :loading="exportLoading"
           @click="handleExport"
           v-hasPermi="['rq:iot-inspect-route:export']">
-          <Icon icon="ep:download" class="mr-5px" />导出
-        </el-button>
+          <Icon icon="ep:download" class="mr-5px" />{{ t('inspect.indexvue602729-0') }}</el-button>
       </el-form-item>
     </el-form>
 

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio