yuanchao 2 місяців тому
батько
коміт
8a48b0e094

+ 2 - 0
package.json

@@ -47,6 +47,8 @@
     "camunda-bpmn-moddle": "^7.0.1",
     "cropperjs": "^1.6.1",
     "crypto-js": "^4.2.0",
+    "date-fns": "^4.1.0",
+    "date.js": "^0.3.3",
     "dayjs": "^1.11.10",
     "diagram-js": "^12.8.0",
     "driver.js": "^1.3.1",

+ 96 - 3
src/locales/en.ts

@@ -498,7 +498,8 @@ export default {
   },
   operationFillForm:{
     team:'Team',
-    sumTime:'CumulativeRunningTime',
+    sumTime:'CumulativeRunningTime(h)',
+    sumKil:'COKM(Km)',
     confirm:'Confirm',
     cancel:'Cancel',
   },
@@ -582,7 +583,8 @@ export default {
     fileDirectory:'FileDirectory',
     appendix:'Appendix',
     fileType:'FileType',
-    remark:'Remark'
+    remark:'Remark',
+    rHolder:'Please enter remark'
   },
   monitor:{
     deviceName:'DeviceName',
@@ -820,7 +822,9 @@ export default {
     unitPrice:'UnitPrice',
     total:'Total',
     source:'Source',
-    ConsumptionQuantity:'ConsumptionQuantity'
+    ConsumptionQuantity:'ConsumptionQuantity',
+    materialGroup:'MaterialGroup',
+    groupHolder:'Please select material group'
   },
   chooseMaintain:{
     selectRepairItem:'SelectRepairItem',
@@ -856,4 +860,93 @@ export default {
     faultyImpact:'Faulty impact cannot be empty',
     solution:'Solution cannot be empty',
   },
+  calender:{
+    loading:'loading',
+    today:'Today',
+    month:'MonthView',
+    week:'WeekView',
+    maintenance:'MaintenanceOrder',
+    repair:'RepairOrder'
+  },
+  deviceInfo:{
+    basicInformation:'BasicInformation',
+    mfg:'Manufacturer:',
+    pd:'ProductionDate:',
+    supplier:'Supplier:',
+    ni:'Nameplate:',
+    warranty:'Warranty:',
+    pp:'PurchasePrice:',
+    pdate:'PurchaseDate:',
+    dp:'DepreciationPeriod:',
+    ds:'DepreciationStartDate:',
+    yd:'NumberOfMonthsOfDepreciation:',
+    yy:'AmountOfDepreciation:',
+    sy:'RemainingAmount:',
+
+    fileLibrary:'FileLibrary',
+    deviceBOM:'DeviceBOM',
+    operationRecords:'OperationRecords',
+    faultRecords:'FaultRecords',
+    repairRecords:'RepairRecords',
+    maintenanceRecords:'MaintenanceRecords',
+    inspectionRecords:'InspectionRecords',
+    transferRecords:'TransferRecords',
+    statusChangeRecords:'StatusChangeRecords',
+    RPAdjustmentRecords:'RPAdjustmentRecords'
+  },
+  bomList:{
+    bomNodeName:'BOMNodeName',
+    nameHolder:'Please enter BOM Node Name',
+    bomNode:'BOMNode',
+    nodeHolder:'Please select node',
+    search:'Search',
+    reset:'Reset',
+    add:'Add',
+    unfold:'Unfold/Fold',
+    superiorBOM:'SuperiorBOM',
+    bomHolder:'Please select superior BOM',
+    BOMNodeAttributes:'BOM node attributes',
+    sort:'Sort',
+    status:'Status',
+    materialDetail:'MaterialDetail',
+    name:'Name',
+    nHolder:'Please enter name',
+    serviceDue:'ServiceDue',
+    code:'Code',
+    codeHolder:'Please enter code',
+    type:'Type'
+  },
+  main:{
+    planCode:'PlanCode',
+    codeHolder:'Please enter plan code',
+    planName:'PlanName',
+    nameHolder:'Please enter plan name',
+    mileage:'Mileage',
+    runTime:'RunTime',
+    date:'Date'
+  },
+  mainPlan:{
+    basicMaintenanceRecords:'BasicMaintenanceRecords',
+    lastMaintenanceMileage:'LastMaintenanceMileage(KM)',
+    lastMaintenanceOperationTime:'LastMOTime(H)',
+    lastMaintenanceNaturalDate:'LastMaintenanceNaturalDate',
+    operatingMileageRuleConfiguration:'OperatingMileageRuleConfig',
+    operatingMileageCycle:'OperatingMileageCycle(KM)',
+    OperatingMileageCycle_lead:'OMC_Lead(KM)',
+    RunTimeRuleConfiguration:'RunTimeRuleConfig',
+    RunTimeCycle:'RunTimeCycle(H)',
+    RunTimeCycle_Lead:'RunTimeCycle_Lead(H)',
+    NaturalDayRuleConfig:'NaturalDayRuleConfig',
+    NaturalDailyCycle:'NaturalDailyCycle(D)',
+    NaturalDailyCycle_Lead:'NaturalDailyCycle_Lead(D)',
+    duty:'DutyList',
+    deviceId:'DeviceID',
+    MaintenanceMethod:'MaintMethod',
+    MaintenanceResult:'MaintResult',
+    MaintenanceCost:'MaintCost(元)',
+    otherCost:'OtherCost(元)',
+    DelayKil:'DelayKil(KM)',
+    DelayDuration:'DelayDuration',
+    DelayDate:'DelayDate(D)'
+  },
 }

+ 102 - 9
src/locales/zh-CN.ts

@@ -476,10 +476,10 @@ export default {
     dataValue:'数据键值'
   },
   operationFill:{
-    name:'工单名',
+    name:'工单名:',
     nameHolder:'请输入工单名',
-    status:'工单状态',
-    createTime:'创建时间',
+    status:'工单状态:',
+    createTime:'创建时间:',
     start:'开始日期',
     end:'结束日期',
     search:'搜索',
@@ -493,7 +493,8 @@ export default {
   },
   operationFillForm:{
     team:'所属队伍',
-    sumTime:'累计运行时间',
+    sumTime:'累计运行时间(h)',
+    sumKil:'累计运行公里数(Km)',
     confirm:'确定',
     cancel:'取消',
   },
@@ -576,7 +577,8 @@ export default {
     fileDirectory:'文件目录',
     appendix:'附件',
     fileType:'文件类型',
-    remark:'备注'
+    remark:'备注',
+    rHolder:'请输入备注'
   },
   monitor:{
     deviceName:'设备名称',
@@ -813,7 +815,9 @@ export default {
     unitPrice:'单价',
     total:'总库存数量',
     source:'来源',
-    ConsumptionQuantity:'消耗数量'
+    ConsumptionQuantity:'消耗数量',
+    materialGroup:'物料组',
+    groupHolder:'请选择所属物料组'
   },
   chooseMaintain:{
     selectRepairItem:'选择维修项',
@@ -826,13 +830,13 @@ export default {
     confirm:'确认选择',
     selectAll:'全选',
     cancelAllSelection:'取消全选',
-    deviceName:'设备名称',
-    deviceCode:'资产编码',
+    deviceName:'设备名称:',
+    deviceCode:'资产编码:',
     repairItems:'维修项',
     createTime:'创建时间',
   },
   info:{
-    deviceClass:'设备分类',
+    deviceClass:'设备分类:',
     classHolder:'请选择设备分类',
     faultySystem:'故障系统',
     faultySystemHolder:'请输入故障系统',
@@ -849,6 +853,95 @@ export default {
     faultyImpact:'故障影响不能为空',
     solution:'解决办法不能为空',
   },
+  calender:{
+    loading:'加载中',
+    today:'今天',
+    month:'月视图',
+    week:'周视图',
+    maintenance:'保养工单',
+    repair:'维修工单'
+  },
+  deviceInfo:{
+    basicInformation:'基础信息',
+    mfg:'制造商:',
+    pd:'生产日期:',
+    supplier:'供应商:',
+    ni:'铭牌信息:',
+    warranty:'质保到期:',
+    pp:'采购价格:',
+    pdate:'采购日期:',
+    dp:'折旧年限:',
+    ds:'折旧开始日期:',
+    yd:'已提折旧月数:',
+    yy:'已提折旧金额:',
+    sy:'剩余金额:',
+
+    fileLibrary:'资料库',
+    deviceBOM:'设备BOM',
+    operationRecords:'运行记录',
+    faultRecords:'故障记录',
+    repairRecords:'维修记录',
+    maintenanceRecords:'保养记录',
+    inspectionRecords:'巡检记录',
+    transferRecords:'调拨记录',
+    statusChangeRecords:'状态变更记录',
+    RPAdjustmentRecords:'责任人调整记录'
+  },
+  bomList:{
+    bomNodeName:'BOM节点名称',
+    nameHolder:'请输入BOM节点名称',
+    bomNode:'BOM节点',
+    nodeHolder:'请选择节点',
+    search:'搜索',
+    reset:'重置',
+    add:'新增',
+    unfold:'展开/折叠',
+    superiorBOM:'上级BOM',
+    bomHolder:'请选择上级BOM',
+    BOMNodeAttributes:'BOM节点属性',
+    sort:'排序',
+    status:'状态',
+    materialDetail:'物料详情',
+    name:'工单名称',
+    nHolder:'请输入名称',
+    serviceDue:'距离保养',
+    code:'工单编码',
+    codeHolder:'请输入工单编码',
+    type:'类型'
+  },
+  main:{
+    planCode:'计划编号',
+    codeHolder:'请输入计划编号',
+    planName:'计划名称',
+    nameHolder:'请输入计划名称',
+    mileage:'运行里程',
+    runTime:'运行时间',
+    date:'自然日期'
+  },
+  mainPlan:{
+    basicMaintenanceRecords:'基础保养记录',
+    lastMaintenanceMileage:'上次保养里程数(KM)',
+    lastMaintenanceOperationTime:'上次保养运行时间(H)',
+    lastMaintenanceNaturalDate:'上次保养自然日期',
+    operatingMileageRuleConfiguration:'运行里程规则配置',
+    operatingMileageCycle:'运行里程周期(KM)',
+    OperatingMileageCycle_lead:'运行里程周期-提前量(KM)',
+    RunTimeRuleConfiguration:'运行时间规则配置',
+    RunTimeCycle:'运行时间周期(H)',
+    RunTimeCycle_Lead:'运行时间周期-提前量(H)',
+    NaturalDayRuleConfig:'自然日规则配置',
+    NaturalDailyCycle:'自然日周期(D)',
+    NaturalDailyCycle_Lead:'自然日周期-提前量(D)',
+    duty:'已经选择的设备关联的负责人列表',
+    deviceId:'设备id',
+    MaintenanceMethod:'保养方式',
+    MaintenanceResult:'保养结果',
+    MaintenanceCost:'保养费用(元)',
+    otherCost:'其他费用(元)',
+    DelayKil:'推迟公里数(KM)',
+    DelayDuration:'推迟时长',
+    DelayDate:'推迟自然日期(D)'
+  },
 
   'OAuth 2.0': 'OAuth 2.0' // 避免菜单名是 OAuth 2.0 时,一直 warn 报错
 }

+ 19 - 17
src/views/pms/bom/MaterialList.vue

@@ -1,5 +1,5 @@
 <template>
-  <Dialog v-model="dialogVisible" title="选择物料" style="width: 1300px; min-height: 300px">
+  <Dialog v-model="dialogVisible" :title="t('iotMaintain.selectMaterials')" style="width: 1300px; min-height: 300px">
     <ContentWrap>
       <el-form
         class="-mb-15px"
@@ -8,44 +8,46 @@
         :inline="true"
         label-width="68px"
       >
-        <el-form-item label="物料名称" prop="name">
+        <el-form-item :label="t('workOrderMaterial.materialName')" prop="name" style="margin-left: 28px">
           <el-input
             v-model="queryParams.name"
-            placeholder="请输入物料名称"
+            :placeholder="t('workOrderMaterial.nameHolder')"
             clearable
             @keyup.enter="handleQuery"
             class="!w-200px"
           />
         </el-form-item>
-        <el-form-item label="物料编码" prop="code">
+        <el-form-item :label="t('workOrderMaterial.materialCode')" prop="code">
           <el-input
             v-model="queryParams.code"
-            placeholder="请输入物料名称"
+            :placeholder="t('workOrderMaterial.codeHolder')"
             clearable
             @keyup.enter="handleQuery"
             class="!w-200px"
           />
         </el-form-item>
-        <el-form-item label="物料组" prop="materialGroupId">
+        <el-form-item :label="t('workOrderMaterial.materialGroup')" prop="materialGroupId" style="margin-left: 5px">
           <el-tree-select
             v-model="queryParams.materialGroupId"
             :data="materialGroupList"
             :props="defaultProps"
             check-strictly
             node-key="id"
-            placeholder="请选择所属物料组"
+            :placeholder="t('workOrderMaterial.groupHolder')"
             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('workOrderMaterial.search') }}</el-button>
+          <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" />
+            {{ t('workOrderMaterial.reset') }}</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="80" :label="t('workOrderMaterial.select')">
           <template #default="{ row }">
             <el-radio
 
@@ -55,13 +57,13 @@
             />
           </template>
         </el-table-column>
-        <el-table-column label="物料名称" align="center" prop="name" />
-        <el-table-column label="物料编码" align="center" prop="code" />
-        <el-table-column label="规格型号" align="center" prop="model" />
-        <el-table-column label="单位" align="center" prop="unit" />
-        <el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip />
+        <el-table-column :label="t('workOrderMaterial.materialName')" align="center" prop="name" />
+        <el-table-column :label="t('workOrderMaterial.materialCode')" align="center" prop="code" />
+        <el-table-column :label="t('deviceForm.model')" align="center" prop="model" />
+        <el-table-column :label="t('workOrderMaterial.unit')" align="center" prop="unit" />
+        <el-table-column :label="t('form.remark')" align="center" prop="remark" show-overflow-tooltip />
         <el-table-column
-          label="创建时间"
+          :label="t('deviceList.createTime')"
           align="center"
           prop="createTime"
           width="180"
@@ -89,7 +91,7 @@ import * as MaterialGroupApi from '@/api/pms/materialgroup'
 defineOptions({
   name: 'MaterialList'
 })
-
+const { t } = useI18n() // 国际化
 const materialGroupList = ref<Tree[]>([]) // 物料组树形结构
 const emit = defineEmits(['choose']) // 定义 success 事件,用于操作成功后的回调
 const dialogVisible = ref(false) // 弹窗的是否展示

+ 32 - 32
src/views/pms/device/DeviceInfo.vue

@@ -13,51 +13,51 @@
         <el-form ref="formRef" :disabled="false" :model="formData" label-width="120px">
           <el-row>
             <el-col :span="8">
-              <el-form-item label="资产编码:" prop="deviceCode"
+              <el-form-item :label="t('chooseMaintain.deviceCode')" prop="deviceCode"
                 >{{ formData.deviceCode }}
               </el-form-item>
             </el-col>
             <el-col :span="8">
-              <el-form-item label="设备名称:" prop="deviceName"
+              <el-form-item :label="t('chooseMaintain.deviceName')" prop="deviceName"
                 >{{ formData.deviceName }}
               </el-form-item>
             </el-col>
             <el-col :span="8">
-              <el-form-item label="品牌:" prop="brand">
+              <el-form-item :label="t('iotDevice.brand')" prop="brand">
                 {{ formData.brandName }}
               </el-form-item>
             </el-col>
           </el-row>
           <el-row>
             <el-col :span="8">
-              <el-form-item label="所在部门:" prop="deptId">
+              <el-form-item :label="t('iotDevice.dept')" prop="deptId">
                 {{ formData.deptName }}
               </el-form-item>
             </el-col>
             <el-col :span="8">
-              <el-form-item label="资产类别:" prop="assetClass">
+              <el-form-item :label="t('info.deviceClass')" prop="assetClass">
                 {{ formData.assetClassName }}
               </el-form-item>
             </el-col>
             <el-col :span="8">
-              <el-form-item label="设备状态:" prop="deviceStatus">
+              <el-form-item :label="t('monitor.status')" prop="deviceStatus">
                 {{ getDictLabel(DICT_TYPE.PMS_DEVICE_STATUS, formData.deviceStatus) }}
               </el-form-item>
             </el-col>
           </el-row>
           <el-row>
             <el-col :span="8">
-              <el-form-item label="资产性质:" prop="assetProperty">
+              <el-form-item :label="t('devicePerson.assets')" prop="assetProperty">
                 {{ getDictLabel(DICT_TYPE.PMS_ASSET_PROPERTY, formData.assetProperty) }}
               </el-form-item>
             </el-col>
             <el-col :span="8">
-              <el-form-item label="规格型号:" prop="model">
+              <el-form-item :label="t('deviceForm.model')" prop="model">
                 {{ formData.model ? formData.model : '-' }}
               </el-form-item>
             </el-col>
             <el-col :span="8">
-              <el-form-item label="责任人:" prop="responsibleNames">
+              <el-form-item :label="t('devicePerson.rp')" prop="responsibleNames">
                 {{ formData.responsibleNames ? formData.responsibleNames : '-' }}
               </el-form-item>
             </el-col>
@@ -68,68 +68,68 @@
   </ContentWrap>
   <ContentWrap v-loading="formLoading">
     <el-tabs v-model="activeName">
-      <el-tab-pane label="基础信息" name="info">
+      <el-tab-pane :label="t('deviceInfo.basicInformation')" name="info">
         <el-form style="margin-top: 5px; margin-left: 35px; margin-right: 35px">
           <el-row style="border-bottom: 1px solid #dcdfe6">
             <el-col :span="6">
-              <el-form-item label="制造商:" prop="manufacturerId">
+              <el-form-item :label="t('deviceInfo.mfg')" prop="manufacturerId">
                 {{ formData.zzName }}
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="生产日期:" prop="manDate">
+              <el-form-item :label="t('deviceInfo.pd')" prop="manDate">
                 {{ formatDate(formData.manDate, 'YYYY-MM-DD') }}
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="供应商" prop="supplierId">
+              <el-form-item :label="t('deviceInfo.supplier')" prop="supplierId">
                 {{ formData.supplierName ? formData.supplierName : '-' }}
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="铭牌信息:" prop="nameplate">
+              <el-form-item :label="t('deviceInfo.ni')" prop="nameplate">
                 {{ formData.nameplate ? formData.nameplate : '-' }}
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="质保到期:" prop="expires">
+              <el-form-item :label="t('deviceInfo.warranty')" prop="expires">
                 {{ formData.expires ? formatDate(formData.expires, 'YYYY-MM-DD') : '-' }}
               </el-form-item>
             </el-col>
           </el-row>
           <el-row style="margin-top: 20px; border-bottom: 1px solid #dcdfe6">
             <el-col :span="6">
-              <el-form-item label="采购价格:" prop="plPrice">
+              <el-form-item :label="t('deviceInfo.pp')" prop="plPrice">
                 {{ formData.plPrice ? formData.plPrice : '-' }}
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="采购日期:" prop="plDate">
+              <el-form-item :label="t('deviceInfo.pdate')" prop="plDate">
                 {{ formData.plDate ? formatDate(formData.plDate, 'YYYY-MM-DD') : '-' }}
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="折旧年限:" prop="plYear">
+              <el-form-item :label="t('deviceInfo.dp')" prop="plYear">
                 {{ formData.plYear ? formData.plYear : '-' }}
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="折旧开始日期:" prop="plStartDate">
+              <el-form-item :label="t('deviceInfo.ds')" prop="plStartDate">
                 {{ formData.plStartDate ? formatDate(formData.plStartDate, 'YYYY-MM-DD') : '-' }}
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="已提折旧月数:" prop="plMonthed">
+              <el-form-item :label="t('deviceInfo.yd')" prop="plMonthed">
                 {{ formData.plMonthed ? formData.plMonthed : '-' }}
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="已提折旧金额:" prop="plAmounted">
+              <el-form-item :label="t('deviceInfo.yy')" prop="plAmounted">
                 {{ formData.plAmounted ? formData.plAmounted : '-' }}
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="剩余金额:" prop="remainAmount">
+              <el-form-item :label="t('deviceInfo.sy')" prop="remainAmount">
                 {{ formData.remainAmount ? formData.remainAmount : '-' }}
               </el-form-item>
             </el-col>
@@ -143,51 +143,51 @@
           </el-row>
         </el-form>
       </el-tab-pane>
-      <el-tab-pane label="资料库" name="file">
+      <el-tab-pane :label="t('deviceInfo.fileLibrary')" name="file">
         <DeviceUpload ref="fileRef" v-model:activeName="activeName" />
       </el-tab-pane>
-      <el-tab-pane label="设备BOM" name="bom">
+      <el-tab-pane :label="t('deviceInfo.deviceBOM')" name="bom">
 <!--        <BomInfo ref="bomRef" v-model:activeName="activeName" />-->
         <BomList ref="bomRef" v-model:activeName="activeName" :deviceId="id" />
       </el-tab-pane>
-      <el-tab-pane label="运行记录" name="record">
+      <el-tab-pane :label="t('deviceInfo.operationRecords')" name="record">
         <RecordList ref="recordRef" v-model:activeName="activeName" :deviceId="id" />
       </el-tab-pane>
-      <el-tab-pane label="故障记录" name="failure">
+      <el-tab-pane :label="t('deviceInfo.faultRecords')" name="failure">
         <FailureList ref="failureRef" v-model:activeName="activeName" :deviceId="id" />
       </el-tab-pane>
-      <el-tab-pane label="维修记录" name="maintain">
+      <el-tab-pane :label="t('deviceInfo.repairRecords')" name="maintain">
         <MaintainList ref="maintainRef" v-model:activeName="activeName" :deviceId="id" />
       </el-tab-pane>
-      <el-tab-pane label="保养记录" name="maintenance">
+      <el-tab-pane :label="t('deviceInfo.maintenanceRecords')"  name="maintenance">
         <MaintenanceList
           ref="maintenanceRef"
           v-model:activeName="activeName"
           :deviceId = "id"
         />
       </el-tab-pane>
-      <el-tab-pane label="巡检记录" name="inspect">
+      <el-tab-pane :label="t('deviceInfo.inspectionRecords')" name="inspect">
         <InspectList
           ref="inspectRef"
           v-model:activeName="activeName"
           :deviceId = "id"
         />
       </el-tab-pane>
-      <el-tab-pane label="调拨记录" name="allot">
+      <el-tab-pane :label="t('deviceInfo.transferRecords')" name="allot">
         <AllotLogList
           ref="allotRef"
           v-model:activeName="activeName"
           :deviceId = "id"
         />
       </el-tab-pane>
-      <el-tab-pane label="状态变更记录" name="status">
+      <el-tab-pane :label="t('deviceInfo.statusChangeRecords')" name="status">
         <DeviceStatusLogList
           ref="statusRef"
           v-model:activeName="activeName"
           :deviceId = "id"
         />
       </el-tab-pane>
-      <el-tab-pane label="责任人调整记录" name="person">
+      <el-tab-pane :label="t('deviceInfo.RPAdjustmentRecords')" name="person">
         <PersonList
           ref="personRef"
           v-model:activeName="activeName"

+ 19 - 14
src/views/pms/device/DeviceUpload.vue

@@ -16,20 +16,23 @@
             :inline="true"
             label-width="68px"
           >
-            <el-form-item label="文件名称" prop="filename">
+            <el-form-item :label="t('file.name')" prop="filename">
               <el-input
                 v-model="queryParams.filename"
-                placeholder="请输入文件名称"
+                :placeholder="t('file.nameHolder')"
                 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('file.search') }}</el-button>
+              <el-button @click="resetQuery"><Icon icon="ep:refresh" />
+                {{ t('file.reset') }}</el-button>
               <el-button type="primary" plain @click="openForm('create')">
-                <Icon icon="ep:plus" /> 文件上传
+                <Icon icon="ep:plus" />
+                {{ t('file.upload') }}
               </el-button>
             </el-form-item>
           </el-form>
@@ -43,25 +46,26 @@
           >
             <!--          <el-table-column label="设备名称" align="center" prop="deviceId" />-->
             <!--          <el-table-column label="资料分类" align="center" prop="classId" />-->
-            <el-table-column label="文件名称" align="center" prop="filename" />
-            <el-table-column label="文件类型" align="center" prop="fileType" >
+            <el-table-column :label="t('file.name')" align="center" prop="filename" />
+            <el-table-column :label="t('file.fileType')" align="center" prop="fileType" >
               <template #default="scope">
                 <dict-tag :type="DICT_TYPE.PMS_FILE_TYPE" :value="scope.row.fileType" />
               </template>
             </el-table-column>
-            <el-table-column label="文件大小" align="center" prop="fileSize" />
-            <el-table-column label="查看预览" align="center" prop="filePath">
+            <el-table-column :label="t('file.fileSize')" align="center" prop="fileSize" />
+            <el-table-column :label="t('file.preview')" align="center" prop="filePath">
               <template #default="scope">
                 <el-button link type="primary" @click="openWeb(scope.row.filePath)">
                   <Icon size="19" icon="ep:view" />
                 </el-button>
               </template>
             </el-table-column>
-            <el-table-column label="操作" align="center" width="160">
+            <el-table-column :label="t('file.operation')" align="center" width="160">
               <template #default="scope">
                 <div class="flex items-center justify-center">
                   <el-button type="primary" link @click="openForm('update', scope.row.id)">
-                    <Icon icon="ep:edit" />修改
+                    <Icon icon="ep:edit" />
+                    {{ t('iotDevice.update') }}
                   </el-button>
                   <el-dropdown
                     @command="(command) => handleCommand(command, scope.row)"
@@ -71,17 +75,18 @@
                       'system:permission:assign-user-role'
                     ]"
                   >
-                    <el-button type="primary" link><Icon icon="ep:d-arrow-right" /> 更多</el-button>
+                    <el-button type="primary" link><Icon icon="ep:d-arrow-right" /> {{ t('action.more') }}</el-button>
                     <template #dropdown>
                       <el-dropdown-menu>
                         <el-dropdown-item command="handleDelete">
-                          <Icon icon="ep:delete" />删除
+                          <Icon icon="ep:delete" />{{ t('iotDevice.delete') }}
                         </el-dropdown-item>
                         <!--                        <el-dropdown-item command="fileView">-->
                         <!--                          <Icon icon="ep:view" />预览-->
                         <!--                        </el-dropdown-item>-->
                         <el-dropdown-item command="fileDownload" v-hasPermi="['rq:iot-info:download']">
-                          <Icon icon="ep:view" />下载
+                          <Icon icon="ep:view" />
+                          {{ t('file.dow') }}
                         </el-dropdown-item>
                       </el-dropdown-menu>
                     </template>

+ 35 - 34
src/views/pms/device/FailureList.vue

@@ -8,28 +8,28 @@
           :inline="true"
           label-width="68px"
         >
-          <el-form-item label="故障编码" prop="failureCode">
+          <el-form-item :label="t('maintain.faultCode')" prop="failureCode" style="margin-left: 5px">
             <el-input
               v-model="queryParams.failureCode"
-              placeholder="请输入故障编码"
+              :placeholder="t('maintain.codeHolder')"
               clearable
               @keyup.enter="handleQuery"
               class="!w-200px"
             />
           </el-form-item>
-          <el-form-item label="故障名称" label-width="70px" prop="failureName">
+          <el-form-item :label="t('maintain.faultName')" label-width="70px" prop="failureName">
             <el-input
               v-model="queryParams.failureName"
-              placeholder="请输入故障名称"
+              :placeholder="t('maintain.nameHolder')"
               clearable
               @keyup.enter="handleQuery"
               class="!w-200px"
             />
           </el-form-item>
-          <el-form-item label="状态" label-width="40px" prop="status">
+          <el-form-item :label="t('maintain.status')"  label-width="40px" prop="status">
             <el-select
               v-model="queryParams.status"
-              placeholder="状态"
+              :placeholder="t('maintain.status')"
               clearable
               class="!w-200px"
             >
@@ -41,10 +41,10 @@
               />
             </el-select>
           </el-form-item>
-          <el-form-item label="是否停机" v-show="ifShow" prop="ifStop">
+          <el-form-item :label="t('maintain.shutDown')" v-show="ifShow" prop="ifStop">
             <el-select
               v-model="queryParams.ifStop"
-              placeholder="是否停机"
+              :placeholder="t('maintain.shutDown')"
               clearable
               class="!w-200px"
             >
@@ -56,21 +56,21 @@
               />
             </el-select>
           </el-form-item>
-          <el-form-item label="故障时间" v-show="ifShow" prop="failureTime">
+          <el-form-item :label="t('faultForm.failureTime')" v-show="ifShow" prop="failureTime">
             <el-date-picker
               v-model="queryParams.failureTime"
               value-format="YYYY-MM-DD HH:mm:ss"
               type="daterange"
-              start-placeholder="开始日期"
-              end-placeholder="结束日期"
+              :start-placeholder="t('info.start')"
+              :end-placeholder="t('info.end')"
               :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
               class="!w-220px"
             />
           </el-form-item>
-          <el-form-item label="是否解决" v-show="ifShow" prop="ifDeal">
+          <el-form-item :label="t('fault.solve')" v-show="ifShow" prop="ifDeal">
             <el-select
               v-model="queryParams.ifDeal"
-              placeholder="是否解决"
+              :placeholder="t('fault.solve')"
               clearable
               class="!w-200px"
             >
@@ -82,10 +82,10 @@
               />
             </el-select>
           </el-form-item>
-          <el-form-item label="是否协助" v-show="ifShow" prop="needHelp">
+          <el-form-item :label="t('fault.assist')" v-show="ifShow" prop="needHelp">
             <el-select
               v-model="queryParams.needHelp"
-              placeholder="是否协助"
+              :label="t('fault.assist')"
               clearable
               class="!w-200px"
             >
@@ -97,22 +97,23 @@
               />
             </el-select>
           </el-form-item>
-          <el-form-item label="创建时间" v-show="ifShow" prop="createTime">
+          <el-form-item :label="t('dict.createTime')" v-show="ifShow" 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('info.start')"
+              :end-placeholder="t('info.end')"
               :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 v-if="!ifShow" @click="moreQuery(true)" type="warning"><Icon icon="ep:search" class="mr-5px"/> 更多查询</el-button>
-            <el-button v-if="ifShow" @click="moreQuery(false)" type="danger"><Icon icon="ep:search" class="mr-5px"/> 收起查询</el-button>
-            <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 v-if="!ifShow" @click="moreQuery(true)" type="warning"><Icon icon="ep:search" class="mr-5px"/>
+              {{ t('iotDevice.moreSearch') }}</el-button>
+            <el-button v-if="ifShow" @click="moreQuery(false)" type="danger"><Icon icon="ep:search" class="mr-5px"/>  {{ t('iotDevice.closeSearch') }}</el-button>
+            <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> {{ t('file.search') }}</el-button>
+            <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> {{ t('file.reset') }}</el-button>
           </el-form-item>
         </el-form>
       </ContentWrap>
@@ -120,45 +121,45 @@
       <!-- 列表 -->
       <ContentWrap>
         <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
-          <el-table-column label="故障编码" align="center" prop="failureCode" />
-          <el-table-column label="故障名称" align="center" prop="failureName" />
-          <el-table-column label="设备" align="center" prop="deviceName" />
-          <el-table-column label="状态" align="center" prop="status" >
+          <el-table-column :label="t('maintain.faultCode')" align="center" prop="failureCode" />
+          <el-table-column :label="t('maintain.faultName')" align="center" prop="failureName" />
+          <el-table-column :label="t('iotMaintain.device')" align="center" prop="deviceName" />
+          <el-table-column :label="t('bomList.status')" align="center" prop="status" >
             <template #default="scope">
               <dict-tag :type="DICT_TYPE.PMS_FAILURE_STATUS" :value="scope.row.status" />
             </template>
           </el-table-column>
-          <el-table-column label="审批状态" align="center" prop="auditStatus" >
+          <el-table-column :label="t('fault.approvalStatus')" align="center" prop="auditStatus" >
             <template #default="scope">
               <dict-tag :type="DICT_TYPE.CRM_AUDIT_STATUS" :value="scope.row.auditStatus" />
             </template>
           </el-table-column>
-          <el-table-column label="是否解决" align="center" prop="ifDeal" >
+          <el-table-column :label="t('fault.solve')" align="center" prop="ifDeal" >
             <template #default="scope">
               <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.ifDeal" />
             </template>
           </el-table-column>
-          <el-table-column label="需要协助" align="center" prop="needHelp" >
+          <el-table-column :label="t('faultForm.assist')" align="center" prop="needHelp" >
             <template #default="scope">
               <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.needHelp" />
             </template>
           </el-table-column>
-          <el-table-column label="是否停机" align="center" prop="ifStop" >
+          <el-table-column :label="t('faultForm.shutDown')" align="center" prop="ifStop" >
             <template #default="scope">
               <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.ifStop" />
             </template>
           </el-table-column>
           <el-table-column
-            label="故障时间"
+            :label="t('maintain.failureTime')"
             align="center"
             prop="failureTime"
             :formatter="dateFormatter"
             width="180px"
           />
-          <el-table-column label="故障系统" align="center" prop="failureSystem" />
-          <el-table-column label="图片" align="center" prop="pic" />
+          <el-table-column :label="t('iotMaintain.faultySystem')" align="center" prop="failureSystem" />
+          <el-table-column :label="t('iotMaintain.picture')"  align="center" prop="pic" />
           <el-table-column
-            label="创建时间"
+            :label="t('info.createTime')"
             align="center"
             prop="createTime"
             :formatter="dateFormatter"

+ 21 - 21
src/views/pms/device/InspectList.vue

@@ -8,26 +8,26 @@
       :inline="true"
       label-width="68px"
     >
-      <el-form-item label="工单名" prop="inspectOrderTitle">
+      <el-form-item :label="t('bomList.name')" prop="inspectOrderTitle">
         <el-input
           v-model="queryParams.inspectOrderTitle"
-          placeholder="请输入工单名"
+          :placeholder="t('bomList.nHolder')"
           clearable
           @keyup.enter="handleQuery"
           class="!w-240px"
         />
       </el-form-item>
-      <el-form-item label="工单编码" prop="inspectOrderCode">
+      <el-form-item :label="t('bomList.code')" prop="inspectOrderCode">
         <el-input
           v-model="queryParams.inspectOrderCode"
-          placeholder="请输入工单编码"
+          :placeholder="t('bomList.codeHolder')"
           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('maintain.status')" prop="status">
+        <el-select v-model="queryParams.status" :placeholder="t('maintain.status')" clearable class="!w-240px">
           <el-option
             v-for="dict in getStrDictOptions(DICT_TYPE.PMS_INSPECT_ORDER_STATUS)"
             :key="dict.value"
@@ -36,20 +36,20 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="创建时间" prop="createTime">
+      <el-form-item :label="t('dict.createTime')" 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('info.start')"
+          :end-placeholder="t('info.end')"
           :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('file.search') }}</el-button>
+        <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> {{ t('file.reset') }}</el-button>
       </el-form-item>
     </el-form>
   </ContentWrap>
@@ -57,31 +57,31 @@
   <!-- 列表 -->
   <ContentWrap>
     <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
-      <el-table-column label="序号" width="60" align="center">
+      <el-table-column :label="t('common.index')" width="70" align="center">
         <template #default="scope">
           {{ scope.$index + 1 }}
         </template>
       </el-table-column>
-      <el-table-column label="工单名称" align="center" prop="inspectOrderTitle" />
-      <el-table-column label="工单编码" align="center" prop="inspectOrderCode" />
-      <el-table-column label="工单类型" align="center" prop="type" />
-      <el-table-column label="工单状态" align="center" prop="status">
+      <el-table-column :label="t('bomList.name')" align="center" prop="inspectOrderTitle" />
+      <el-table-column :label="t('bomList.code')" align="center" prop="inspectOrderCode" />
+      <el-table-column :label="t('bomList.type')" align="center" prop="type" />
+      <el-table-column :label="t('maintain.status')" align="center" prop="status">
         <template #default="scope">
           <dict-tag :type="DICT_TYPE.PMS_INSPECT_ORDER_STATUS" :value="scope.row.status" />
         </template>
       </el-table-column>
-      <el-table-column label="负责人" align="center" prop="chargeName" />
-      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column :label="t('iotMaintain.PersonInCharge')" align="center" prop="chargeName" />
+      <el-table-column :label="t('form.remark')" align="center" prop="remark" />
       <el-table-column
-        label="创建时间"
+        :label="t('dict.createTime')"
         align="center"
         prop="createTime"
         :formatter="dateFormatter"
         width="180px"
       />
-      <el-table-column label="操作" align="center" min-width="120px">
+      <el-table-column :label="t('iotMaintain.operation')" align="center" min-width="120px">
         <template #default="scope">
-          <el-button link type="primary" @click="openForm(scope.row.id)"> 查看 </el-button>
+          <el-button link type="primary" @click="openForm(scope.row.id)"> {{ t('maintain.view') }} </el-button>
         </template>
       </el-table-column>
     </el-table>

+ 31 - 31
src/views/pms/device/MaintainList.vue

@@ -8,26 +8,26 @@
       :inline="true"
       label-width="68px"
     >
-      <el-form-item label="故障编码" prop="failureCode">
+      <el-form-item :label="t('maintain.faultCode')" prop="failureCode" style="margin-left: 25px">
         <el-input
           v-model="queryParams.failureCode"
-          placeholder="请输入故障编码"
+          :placeholder="t('maintain.codeHolder')"
           clearable
           @keyup.enter="handleQuery"
           class="!w-200px"
         />
       </el-form-item>
-      <el-form-item label="故障名称" label-width="70px" prop="failureName">
+      <el-form-item :label="t('maintain.faultName')" label-width="70px" prop="failureName">
         <el-input
           v-model="queryParams.failureName"
-          placeholder="请输入故障名称"
+          :placeholder="t('maintain.nameHolder')"
           clearable
           @keyup.enter="handleQuery"
           class="!w-200px"
         />
       </el-form-item>
-      <el-form-item label="状态" label-width="40px" prop="status">
-        <el-select v-model="queryParams.status" placeholder="状态" clearable class="!w-200px">
+      <el-form-item :label="t('maintain.status')" label-width="40px" prop="status">
+        <el-select v-model="queryParams.status" :placeholder="t('maintain.status')" clearable class="!w-200px">
           <el-option
             v-for="dict in getStrDictOptions(DICT_TYPE.PMS_MAIN_STATUS)"
             :key="dict.value"
@@ -36,8 +36,8 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="是否停机" v-show="ifShow" prop="ifStop">
-        <el-select v-model="queryParams.ifStop" placeholder="是否停机" clearable class="!w-200px">
+      <el-form-item :label="t('maintain.shutDown')" v-show="ifShow" prop="ifStop">
+        <el-select v-model="queryParams.ifStop" :placeholder="t('maintain.shutDown')" clearable class="!w-200px">
           <el-option
             v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
             :key="dict.value"
@@ -46,19 +46,19 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="故障时间" v-show="ifShow" prop="failureTime">
+      <el-form-item :label="t('faultForm.failureTime')" v-show="ifShow" prop="failureTime">
         <el-date-picker
           v-model="queryParams.failureTime"
           value-format="YYYY-MM-DD HH:mm:ss"
           type="daterange"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
+          :start-placeholder="t('info.start')"
+          :end-placeholder="t('info.end')"
           :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
           class="!w-220px"
         />
       </el-form-item>
-      <el-form-item label="是否解决" v-show="ifShow" prop="ifDeal">
-        <el-select v-model="queryParams.ifDeal" placeholder="是否解决" clearable class="!w-200px">
+      <el-form-item :label="t('fault.solve')" v-show="ifShow" prop="ifDeal">
+        <el-select v-model="queryParams.ifDeal" :placeholder="t('fault.solve')" clearable class="!w-200px">
           <el-option
             v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
             :key="dict.value"
@@ -67,8 +67,8 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="是否协助" v-show="ifShow" prop="needHelp">
-        <el-select v-model="queryParams.needHelp" placeholder="是否协助" clearable class="!w-200px">
+      <el-form-item :label="t('fault.assist')" v-show="ifShow" prop="needHelp">
+        <el-select v-model="queryParams.needHelp" :label="t('fault.assist')" clearable class="!w-200px">
           <el-option
             v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
             :key="dict.value"
@@ -77,26 +77,26 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="创建时间" v-show="ifShow" prop="createTime">
+      <el-form-item :label="t('dict.createTime')"  v-show="ifShow" 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('info.start')"
+          :end-placeholder="t('info.end')"
           :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 v-if="!ifShow" @click="moreQuery(true)" type="warning"
-          ><Icon icon="ep:search" class="mr-5px" /> 更多查询</el-button
+          ><Icon icon="ep:search" class="mr-5px" /> {{ t('iotDevice.moreSearch') }}</el-button
         >
         <el-button v-if="ifShow" @click="moreQuery(false)" type="danger"
-          ><Icon icon="ep:search" class="mr-5px" /> 收起查询</el-button
+          ><Icon icon="ep:search" class="mr-5px" /> {{ t('iotDevice.closeSearch') }}</el-button
         >
-        <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('file.search') }}</el-button>
+        <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> {{ t('file.reset') }}</el-button>
       </el-form-item>
     </el-form>
   </ContentWrap>
@@ -104,40 +104,40 @@
   <!-- 列表 -->
   <ContentWrap>
     <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
-      <el-table-column label="故障编码" align="center" prop="failureCode" />
-      <el-table-column label="故障名称" align="center" prop="failureName" />
-      <el-table-column label="设备" align="center" prop="deviceName" />
-      <el-table-column label="状态" align="center" prop="status">
+      <el-table-column :label="t('maintain.faultCode')" align="center" prop="failureCode" />
+      <el-table-column :label="t('maintain.faultName')" align="center" prop="failureName" />
+      <el-table-column :label="t('iotMaintain.device')" align="center" prop="deviceName" />
+      <el-table-column :label="t('bomList.status')" align="center" prop="status">
         <template #default="scope">
           <dict-tag :type="DICT_TYPE.PMS_MAIN_STATUS" :value="scope.row.status" />
         </template>
       </el-table-column>
-      <el-table-column label="审核状态" align="center" prop="auditStatus">
+      <el-table-column :label="t('fault.approvalStatus')" align="center" prop="auditStatus">
         <template #default="scope">
           <dict-tag :type="DICT_TYPE.CRM_AUDIT_STATUS" :value="scope.row.auditStatus" />
         </template>
       </el-table-column>
-      <el-table-column label="是否停机" align="center" prop="ifStop">
+      <el-table-column :label="t('faultForm.shutDown')" align="center" prop="ifStop">
         <template #default="scope">
           <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.ifStop" />
         </template>
       </el-table-column>
       <el-table-column
-        label="维修开始时间"
+        :label="t('iotMaintain.startTime')"
         align="center"
         prop="maintainStartTime"
         :formatter="dateFormatter"
         width="180px"
       />
       <el-table-column
-        label="故障时间"
+        :label="t('faultForm.failureTime')"
         align="center"
         prop="failureTime"
         :formatter="dateFormatter"
         width="180px"
       />
       <el-table-column
-        label="创建时间"
+        :label="t('dict.createTime')"
         align="center"
         prop="createTime"
         :formatter="dateFormatter"

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

@@ -1,6 +1,6 @@
 <template>
   <el-drawer
-    title="物料详情"
+    :title="t('bomList.materialDetail')"
     :append-to-body="true"
     :model-value="modelValue"
     @update:model-value="$emit('update:modelValue', $event)"
@@ -12,21 +12,21 @@
     <template v-if="nodeId">
       <div v-loading="loading" style="height: 100%">
         <el-table :data="materials" style="width: 100%">
-          <el-table-column prop="name" label="物料名称" width="180" />
-          <el-table-column prop="code" label="物料编码" width="180" />
-          <el-table-column prop="model" label="规格型号" width="180" />
-          <el-table-column prop="unit" label="单位" width="180" />
+          <el-table-column prop="name" :label="t('workOrderMaterial.materialName')" width="180" />
+          <el-table-column prop="code" :label="t('workOrderMaterial.materialCode')" width="180" />
+          <el-table-column prop="model" :label="t('deviceForm.model')" width="180" />
+          <el-table-column prop="unit" :label="t('workOrderMaterial.unit')" width="180" />
           <el-table-column
-            label="创建时间"
+            :label="t('deviceList.createTime')"
             align="center"
             prop="createTime"
             width="180"
             :formatter="dateFormatter"
           />
-          <el-table-column label="操作" align="right">
+          <el-table-column :label="t('maintain.operation')" align="right">
             <template #default="scope">
               <el-button size="small" type="danger" @click="emit('delete', scope.row)"
-                >删除</el-button
+                >{{ t('info.delete') }}</el-button
               >
             </template>
           </el-table-column>
@@ -47,7 +47,7 @@ import { defineEmits, defineOptions, ref, watch } from 'vue'
 import { ElMessage } from 'element-plus'
 import * as DeviceMaterialApi from '@/api/pms/iotdevicematerial'
 import { dateFormatter } from '@/utils/formatTime'
-
+const { t } = useI18n() // 国际化
 const drawerVisible = ref<boolean>(false)
 const emit = defineEmits(['update:modelValue', 'add', 'delete'])
 

+ 8 - 8
src/views/pms/device/allotlog/AllotLogList.vue

@@ -2,14 +2,14 @@
   <ContentWrap>
 <!--    <div v-loading="loading" style="height: 1000px">-->
       <el-table :data="deviceAllots" style="width: 100%">
-        <el-table-column prop="deviceName" label="设备名称" />
-        <el-table-column prop="deviceCode" label="设备编码" />
-        <el-table-column prop="oldDeptName" label="调整前部门" />
-        <el-table-column prop="newDeptName" label="调用后部门" />
-        <el-table-column prop="reason" label="调拨原因" />
-        <el-table-column prop="creatorName" label="调整人" />
+        <el-table-column prop="deviceName" :label="t('iotDevice.name')" />
+        <el-table-column prop="deviceCode" :label="t('iotDevice.code')" />
+        <el-table-column prop="oldDeptName" :label="t('deviceStatus.beforeDept')" />
+        <el-table-column prop="newDeptName" :label="t('deviceStatus.afterDept')"  />
+        <el-table-column prop="reason" :label="t('configDevice.reasonForAdjustment')" />
+        <el-table-column prop="creatorName" :label="t('deviceStatus.adjuster')" />
         <el-table-column
-          label="调整时间"
+          :label="t('deviceStatus.adjustTime')"
           align="center"
           prop="createTime"
           :formatter="dateFormatter"
@@ -33,7 +33,7 @@ import { IotDeviceAllotLogApi } from '@/api/pms/iotdeviceallotlog'
 
 const drawerVisible = ref<boolean>(false)
 const emit = defineEmits(['update:modelValue', 'add', 'delete'])
-
+const { t } = useI18n() // 国际化
 defineOptions({
   name: 'DeviceAllotLogList'
 })

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

@@ -7,21 +7,21 @@
       :rules="formRules"
       label-width="120px"
     >
-      <el-form-item label="上级BOM" prop="parentId">
+      <el-form-item :label="t('bomList.superiorBOM')" prop="parentId">
         <el-tree-select
           v-model="formData.parentId"
           :data="bomTree"
           :props="defaultProps"
           check-strictly
           default-expand-all
-          placeholder="请选择上级BOM"
+          :placeholder="t('bomList.nameHolder')"
           value-key="bomId"
         />
       </el-form-item>
-      <el-form-item label="BOM节点名称" prop="name">
-        <el-input v-model="formData.name" placeholder="请输入BOM节点名称" />
+      <el-form-item :label="t('bomList.bomNode')" prop="name">
+        <el-input v-model="formData.name" :placeholder="t('bomList.nodeHolder')" />
       </el-form-item>
-      <el-form-item label="BOM节点属性" prop="type">
+      <el-form-item :label="t('bomList.superiorBOM')" 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)"
@@ -32,11 +32,11 @@
           </el-checkbox>
         </el-checkbox-group>
       </el-form-item>
-      <el-form-item label="显示排序" prop="sort">
+      <el-form-item :label="t('bomList.sort')" 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('bomList.status')" prop="status">
+        <el-select v-model="formData.status" clearable :placeholder="t('bomList.status')">
           <el-option
             v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
             :key="dict.value"
@@ -47,8 +47,8 @@
       </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('iotMaintain.ok')}}</el-button>
+      <el-button @click="dialogVisible = false">{{t('iotMaintain.cancel')}}</el-button>
     </template>
   </Dialog>
 </template>

+ 22 - 18
src/views/pms/device/bom/BomList.vue

@@ -12,19 +12,19 @@
       :inline="true"
       label-width="110px"
     >
-      <el-form-item label="BOM节点名称" prop="name">
+      <el-form-item :label="t('bomList.bomNodeName')" prop="name">
         <el-input
           v-model="queryParams.name"
-          placeholder="请输入BOM节点名称"
+          :placeholder="t('bomList.nameHolder')"
           clearable
           @keyup.enter="handleQuery"
           class="!w-240px"
         />
       </el-form-item>
-      <el-form-item label="BOM节点" prop="status">
+      <el-form-item :label="t('bomList.bomNode')" prop="status">
         <el-select
           v-model="queryParams.status"
-          placeholder="请选择BOM节点"
+          :placeholder="t('bomList.nodeHolder')"
           clearable
           class="!w-240px"
         >
@@ -37,18 +37,22 @@
         </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('bomList.search') }}</el-button>
+        <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" />
+          {{ t('bomList.reset') }}</el-button>
         <el-button
           type="primary"
           plain
           @click="openForm('create', null)"
           v-hasPermi="['rq:iot-bom:create']"
         >
-          <Icon icon="ep:plus" class="mr-5px" /> 新增
+          <Icon icon="ep:plus" class="mr-5px" />
+          {{ t('bomList.add') }}
         </el-button>
         <el-button type="danger" plain @click="toggleExpandAll">
-          <Icon icon="ep:sort" class="mr-5px" /> 展开/折叠
+          <Icon icon="ep:sort" class="mr-5px" />
+          {{ t('bomList.unfold') }}
         </el-button>
         <!--
             <el-button @click="handleAllQuery"><Icon icon="ep:search" class="mr-5px" /> 查询所有</el-button> -->
@@ -65,7 +69,7 @@
       v-if="refreshTable"
       style="width: 100%"
     >
-      <el-table-column prop="name" label="BOM节点">
+      <el-table-column prop="name" :label="t('bomList.bomNodeName')">
         <template #default="scope">
           <!-- 使用 el-tooltip 包裹内容 -->
           <el-tooltip
@@ -81,15 +85,15 @@
           </el-tooltip>
         </template>
       </el-table-column>
-      <el-table-column prop="deviceCategoryName" label="设备分类" />
-      <el-table-column prop="sort" label="排序" />
-      <el-table-column prop="status" label="状态">
+      <el-table-column prop="deviceCategoryName" :label="t('info.deviceClass')" />
+      <el-table-column prop="sort" :label="t('common.sort')" />
+      <el-table-column prop="status" :label="t('common.status')">
         <template #default="scope">
           <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
         </template>
       </el-table-column>
-      <el-table-column prop="materials" label="物料数量" />
-      <el-table-column label="操作" align="center">
+      <el-table-column prop="materials" :label="t('iotMaintain.numberOfMaterials')" />
+      <el-table-column :label="t('iotMaintain.operation')" align="center">
         <template #default="scope">
           <el-button
             link
@@ -97,7 +101,7 @@
             @click="openForm('update', scope.row)"
             v-hasPermi="['rq:iot-bom:update']"
           >
-            修改
+            {{ t('modelTemplate.update') }}
           </el-button>
           <el-button
             link
@@ -105,7 +109,7 @@
             @click="openSelectMaterialForm(scope.row.id, scope.row.deviceCategoryId)"
             v-hasPermi="['rq:iot-bom:update']"
           >
-            添加物料
+            {{ t('bomList.add') }}
           </el-button>
           <el-button
             link
@@ -113,7 +117,7 @@
             @click="handleView(scope.row.id)"
             v-hasPermi="['rq:iot-bom:update']"
           >
-            物料详情
+            {{ t('action.detail') }}
           </el-button>
           <el-button
             link
@@ -121,7 +125,7 @@
             @click="handleDelete(scope.row.id)"
             v-hasPermi="['rq:iot-bom:delete']"
           >
-            删除
+            {{ t('action.del') }}
           </el-button>
         </template>
       </el-table-column>

+ 20 - 20
src/views/pms/device/maintenance/MaintenanceList.vue

@@ -8,19 +8,19 @@
       :inline="true"
       label-width="68px"
     >
-      <el-form-item label="工单名称" prop="name">
+      <el-form-item :label="t('bomList.name')" prop="name">
         <el-input
           v-model="queryParams.name"
-          placeholder="请输入工单名称"
+          :placeholder="t('bomList.nHolder')"
           clearable
           @keyup.enter="handleQuery"
           class="!w-240px"
         />
       </el-form-item>
-      <el-form-item label="保养状态" prop="result">
+      <el-form-item :label="t('maintain.status')" prop="result">
         <el-select
           v-model="queryParams.result"
-          placeholder="请选择保养状态"
+          :placeholder="t('maintain.status')"
           clearable
           class="!w-240px"
         >
@@ -32,20 +32,20 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="创建时间" prop="createTime">
+      <el-form-item :label="t('dict.createTime')" 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('info.start')"
+          :end-placeholder="t('info.end')"
           :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('file.search') }}</el-button>
+        <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> {{ t('file.reset') }}</el-button>
       </el-form-item>
     </el-form>
   </ContentWrap>
@@ -53,46 +53,46 @@
   <!-- 列表 -->
   <ContentWrap>
     <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
-      <el-table-column label="序号" width="60" align="center">
+      <el-table-column :label="t('common.index')" width="70" align="center">
         <template #default="scope">
           {{ scope.$index + 1 }}
         </template>
       </el-table-column>
-      <el-table-column label="工单名称" align="center" prop="name" />
-      <el-table-column label="保养状态" align="center" prop="result" >
+      <el-table-column :label="t('bomList.name')" align="center" prop="name" />
+      <el-table-column :label="t('maintain.status')" align="center" prop="result" >
         <template #default="scope">
           <dict-tag :type="DICT_TYPE.PMS_MAIN_WORK_ORDER_RESULT" :value="scope.row.result" />
         </template>
       </el-table-column>
-      <el-table-column label="距离保养" align="center" prop="maintenanceInterval" />
-      <el-table-column label="工单类型" align="center" prop="type" >
+      <el-table-column :label="t('bomList.serviceDue')" align="center" prop="maintenanceInterval" />
+      <el-table-column :label="t('fileInfo.fileType')" align="center" prop="type" >
         <template #default="scope">
           <dict-tag :type="DICT_TYPE.PMS_MAIN_WORK_ORDER_TYPE" :value="scope.row.type" />
         </template>
       </el-table-column>
-      <el-table-column label="负责人" align="center" prop="responsiblePersonName" />
+      <el-table-column :label="t('iotMaintain.PersonInCharge')" align="center" prop="responsiblePersonName" />
       <el-table-column
-        label="实际保养开始时间"
+        :label="t('info.start')"
         align="center"
         prop="actualStartTime"
         :formatter="dateFormatter"
         width="180px"
       />
       <el-table-column
-        label="实际保养结束时间"
+        :label="t('info.end')"
         align="center"
         prop="actualEndTime"
         :formatter="dateFormatter"
         width="180px"
       />
       <el-table-column
-        label="创建时间"
+        :label="t('dict.createTime')"
         align="center"
         prop="createTime"
         :formatter="dateFormatter"
         width="180px"
       />
-      <el-table-column label="操作" align="center" min-width="120px">
+      <el-table-column :label="t('iotMaintain.operation')" align="center" min-width="120px">
         <template #default="scope">
           <el-button
             link
@@ -100,7 +100,7 @@
             @click="detail(scope.row.id, props.deviceId)"
             v-hasPermi="['pms:iot-main-work-order:query']"
           >
-            查看
+            {{ t('maintain.view') }}
           </el-button>
         </template>
       </el-table-column>

+ 8 - 8
src/views/pms/device/personlog/PersonList.vue

@@ -1,14 +1,14 @@
 <template>
     <div v-loading="loading" style="height: 100%">
       <el-table :data="devicePersons" style="width: 100%">
-        <el-table-column prop="deviceName" label="设备名称" />
-        <el-table-column prop="deviceCode" label="设备编码" />
-        <el-table-column prop="oldPersonNames" label="调整前责任人" />
-        <el-table-column prop="newPersonNames" label="调用后责任人" />
-        <el-table-column prop="reason" label="调整原因" />
-        <el-table-column prop="creatorName" label="调整人" />
+        <el-table-column prop="deviceName" :label="t('iotDevice.name')" />
+        <el-table-column prop="deviceCode" :label="t('iotDevice.code')" />
+        <el-table-column prop="oldPersonNames" :label="t('deviceStatus.beforePerson')" />
+        <el-table-column prop="newPersonNames" :label="t('deviceStatus.afterPerson')" />
+        <el-table-column prop="reason" :label="t('configDevice.reasonForAdjustment')"  />
+        <el-table-column prop="creatorName" :label="t('deviceStatus.adjuster')" />
         <el-table-column
-          label="调整时间"
+          :label="t('deviceStatus.adjustTime')"
           align="center"
           prop="createTime"
           width="180"
@@ -31,7 +31,7 @@ import { ElMessage } from 'element-plus'
 import {dateFormatter} from "@/utils/formatTime";
 import {DICT_TYPE} from "@/utils/dict";
 import {IotDevicePersonLogApi} from "@/api/pms/iotdevicepersonlog";
-
+const { t } = useI18n() // 国际化
 defineOptions({
   name: 'DevicePersonLogDrawerDevice'
 })

+ 14 - 12
src/views/pms/device/record/RecordList.vue

@@ -8,19 +8,19 @@
       :inline="true"
       label-width="68px"
     >
-      <el-form-item label="工单名" prop="orderName">
+      <el-form-item :label="t('operationFill.name')" prop="orderName" style="margin-left: 25px">
         <el-input
           v-model="queryParams.orderName"
-          placeholder="请输入工单名"
+          :placeholder="t('operationFill.nameHolder')"
           clearable
           @keyup.enter="handleQuery"
           class="!w-240px"
         />
       </el-form-item>
-      <el-form-item label="工单状态" prop="orderStatus">
+      <el-form-item :label="t('operationFill.status')" prop="orderStatus">
         <el-select
           v-model="queryParams.orderStatus"
-          placeholder="工单状态"
+          :placeholder="t('operationFill.status')"
           clearable
           class="!w-240px"
         >
@@ -44,8 +44,10 @@
 <!--        />-->
 <!--      </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('operationFill.search') }}</el-button>
+        <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" />
+          {{ t('operationFill.reset') }}</el-button>
       </el-form-item>
     </el-form>
   </ContentWrap>
@@ -53,20 +55,20 @@
   <!-- 列表 -->
   <ContentWrap>
     <el-table v-loading="loading" :data="list" :stripe="true">
-      <el-table-column label="序号" width="60" align="center">
+      <el-table-column :label="t('iotDevice.serial')" width="70" align="center">
         <template #default="scope">
           {{ scope.$index + 1 }}
         </template>
       </el-table-column>
-      <el-table-column label="工单名称" align="center" prop="orderName" width="300" />
-      <el-table-column label="责任人" align="center" prop="userName" />
+      <el-table-column :label="t('operationFill.name')" align="center" prop="orderName" width="300" />
+      <el-table-column :label="t('operationFill.duty')" align="center" prop="userName" />
       <!--        <el-table-column label="工单类型" align="center" prop="orderType" />-->
-      <el-table-column label="工单状态" align="center" prop="orderStatus">
+      <el-table-column :label="t('operationFill.status')" align="center" prop="orderStatus">
         <template #default="scope">
           <dict-tag :type="DICT_TYPE.OPERATION_FILL_ORDER_STATUS" :value="scope.row.orderStatus" />
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" min-width="120px">
+      <el-table-column :label="t('operationFill.operation')" align="center" min-width="120px">
         <template #default="scope">
           <el-button
             link
@@ -75,7 +77,7 @@
               openWrite(scope.row.id, scope.row.orderStatus, scope.row.deptId,scope.row.createTime)
             "
           >
-            查看
+            {{ t('operationFill.view') }}
           </el-button>
         </template>
       </el-table-column>

+ 8 - 8
src/views/pms/device/statuslog/DeviceStatusLogList.vue

@@ -2,22 +2,22 @@
   <ContentWrap>
 <!--      <div v-loading="loading" style="height: 100%">-->
         <el-table :data="deviceStatuses" style="width: 100%">
-          <el-table-column prop="deviceName" label="设备名称"  />
-          <el-table-column prop="deviceCode" label="设备编码"  />
-          <el-table-column prop="oldStatus" label="调整前状态"  >
+          <el-table-column prop="deviceName" :label="t('iotDevice.name')"  />
+          <el-table-column prop="deviceCode" :label="t('iotDevice.code')"  />
+          <el-table-column prop="oldStatus" :label="t('deviceStatus.beforeStatus')" >
             <template #default="scope">
               <dict-tag :type="DICT_TYPE.PMS_DEVICE_STATUS" :value="scope.row.oldStatus" />
             </template>
           </el-table-column>
-          <el-table-column prop="newStatus" label="调用后状态"  >
+          <el-table-column prop="newStatus" :label="t('deviceStatus.afterStatus')"  >
             <template #default="scope">
               <dict-tag :type="DICT_TYPE.PMS_DEVICE_STATUS" :value="scope.row.newStatus" />
             </template>
           </el-table-column>
-          <el-table-column prop="reason" label="调整原因"  />
-          <el-table-column prop="creatorName" label="调整人"  />
+          <el-table-column prop="reason" :label="t('configDevice.reasonForAdjustment')"  />
+          <el-table-column prop="creatorName" :label="t('deviceStatus.adjuster')"  />
           <el-table-column
-            label="调整时间"
+            :label="t('deviceStatus.adjustTime')"
             align="center"
             prop="createTime"
 
@@ -35,7 +35,7 @@
   </ContentWrap>
 </template>
 <script setup lang="ts">
-
+const { t } = useI18n() // 国际化
 import { ref, watch, defineOptions, defineEmits } from 'vue'
 import { ElMessage } from 'element-plus'
 import * as IotDeviceStatusLogApi from '@/api/pms/iotdevicestatuslog'

+ 7 - 7
src/views/pms/iotinfo/IotInfoForm.vue

@@ -10,7 +10,7 @@
       <!--      <el-form-item label="文件名称" prop="filename">-->
       <!--        <el-input v-model="formData.filename" placeholder="请输入文件名称" />-->
       <!--      </el-form-item>-->
-      <el-form-item label="文件目录" prop="classId">
+      <el-form-item :label="t('fileInfo.fileDirectory')" prop="classId">
         <el-tree-select
           :disabled="true"
           v-model="formData.classId"
@@ -21,7 +21,7 @@
           value-key="id"
         />
       </el-form-item>
-      <el-form-item label="附件" prop="filePath" style="">
+      <el-form-item :label="t('fileInfo.appendix')" prop="filePath" style="">
         <UploadFileAll style="vertical-align: middle"
           :is-show-tip="false"
           :disabled="formType==='detail'"
@@ -30,7 +30,7 @@
           :limit="formType === 'create' ? 5 : 1"
         />
       </el-form-item>
-      <el-form-item label="文件类型" prop="fileType">
+      <el-form-item :label="t('fileInfo.fileType')" prop="fileType">
         <el-select v-model="formData.fileType" placeholder="请选择" :disabled="formType==='detail'">
           <el-option
             v-for="dict in getStrDictOptions(DICT_TYPE.PMS_FILE_TYPE)"
@@ -40,13 +40,13 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="备注" prop="remark">
-        <el-input v-model="formData.remark" :disabled="formType==='detail'" type="textarea" placeholder="请输入备注" />
+      <el-form-item :label="t('fileInfo.remark')" prop="remark">
+        <el-input v-model="formData.remark" :disabled="formType==='detail'" type="textarea" :placeholder="t('fileInfo.rHolder')" />
       </el-form-item>
     </el-form>
     <template #footer>
-      <el-button @click="submitForm" type="primary" v-if="formType!=='detail'" :disabled="formLoading">确 定</el-button>
-      <el-button @click="dialogVisible = false">取 消</el-button>
+      <el-button @click="submitForm" type="primary" v-if="formType!=='detail'" :disabled="formLoading">{{t('faultForm.ok')}}</el-button>
+      <el-button @click="dialogVisible = false">{{t('faultForm.cancel')}}</el-button>
     </template>
   </Dialog>
 </template>

+ 4 - 4
src/views/pms/iotmaincalendar/index.vue

@@ -24,7 +24,7 @@ import 'bootstrap-icons/font/bootstrap-icons.css'
 const { push } = useRouter() // 路由跳转
 
 defineOptions({ name: 'MaintenanceCalendar' })
-
+const { t } = useI18n() // 国际化
 const router = useRouter()
 const loading = ref(false)
 const calendar = ref(null)
@@ -48,9 +48,9 @@ const calendarOptions = ref({
     right: 'dayGridMonth,dayGridWeek'
   },
   buttonText: { // ✨ 自定义按钮文本(可选)
-    today: '今天',
-    month: '月视图',
-    week: '周视图'
+    today: t('calender.today'),
+    month: t('calender.month'),
+    week: t('calender.week')
   },
   events: [],
   datesSet: handleDatesSet, // 月份切换事件

+ 46 - 46
src/views/pms/iotmainworkorder/IotMainWorkOrderDetail.vue

@@ -11,13 +11,13 @@
       <div class="base-expandable-content">
         <el-row>
           <el-col :span="8">
-            <el-form-item label="工单名称" prop="name">
+            <el-form-item :label="t('bomList.name')" 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="type">
-              <el-select disabled v-model="formData.outsourcingFlag" placeholder="请选择保养方式" clearable>
+            <el-form-item :label="t('mainPlan.MaintenanceMethod')" prop="type">
+              <el-select disabled v-model="formData.outsourcingFlag" :placeholder="t('mainPlan.MaintenanceMethod')" clearable>
                 <el-option
                   v-for="dict in getIntDictOptions(DICT_TYPE.PMS_ORDER_PROCESS_MODE)"
                   :key="dict.value"
@@ -33,7 +33,7 @@
             -->
           </el-col>
           <el-col :span="8">
-            <el-form-item label="责任人" prop="responsiblePerson">
+            <el-form-item :label="t('operationFill.duty')" prop="responsiblePerson">
               <el-select v-model="formData.responsiblePerson" filterable clearable style="width: 100%" disabled>
                 <el-option
                   v-for="item in deptUsers"
@@ -45,7 +45,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="工单类型" prop="type">
+            <el-form-item :label="t('bomList.type')" prop="type">
               <el-select disabled v-model="formData.type" clearable>
                 <el-option
                   v-for="dict in getIntDictOptions(DICT_TYPE.PMS_MAIN_WORK_ORDER_TYPE)"
@@ -57,7 +57,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="保养结果" prop="result">
+            <el-form-item :label="t('mainPlan.MaintenanceResult')" prop="result">
               <el-select disabled v-model="formData.result" clearable>
                 <el-option
                   v-for="dict in getIntDictOptions(DICT_TYPE.PMS_MAIN_WORK_ORDER_RESULT)"
@@ -69,42 +69,42 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="保养费用(元)" prop="cost">
+            <el-form-item :label="t('mainPlan.MaintenanceCost')" 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('fault.start')" prop="actualStartTime">
               <el-date-picker
                 style="width: 150%"
                 v-model="formData.actualStartTime"
                 type="datetime"
                 value-format="x"
-                placeholder="实际保养开始时间"
+                :placeholder="t('fault.start')"
                 disabled
               />
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="实际保养结束时间" prop="actualEndTime">
+            <el-form-item :label="t('fault.end')" prop="actualEndTime">
               <el-date-picker
                 style="width: 150%"
                 v-model="formData.actualEndTime"
                 type="datetime"
                 value-format="x"
-                placeholder="实际保养结束时间"
+                :placeholder="t('fault.end')"
                 disabled
               />
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="其他费用(元)" prop="otherCost">
+            <el-form-item :label="t('mainPlan.otherCost')" 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-input v-model="formData.remark" type="textarea" placeholder="请输入备注" disabled/>
+            <el-form-item :label="t('faultForm.remark')" prop="remark">
+              <el-input v-model="formData.remark" type="textarea" :placeholder="t('faultForm.rHolder')" disabled/>
             </el-form-item>
           </el-col>
         </el-row>
@@ -136,17 +136,17 @@
         <!-- 添加序号列 -->
         <el-table-column
           type="index"
-          label="序号"
-          width="60"
+          :label="t('iotDevice.serial')"
+          width="70"
           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 label="累计运行时间(H)" align="center" prop="totalRunTime" :formatter="erpPriceTableColumnFormatter"/>
-        <el-table-column label="累计运行公里数(KM)" align="center" prop="totalMileage" :formatter="erpPriceTableColumnFormatter"/>
+        <el-table-column :label="t('bomList.bomNode')" align="center" prop="bomNodeId" v-if="false"/>
+        <el-table-column :label="t('iotDevice.code')" align="center" prop="deviceCode" />
+        <el-table-column :label="t('iotDevice.name')" align="center" prop="deviceName" />
+        <el-table-column :label="t('operationFillForm.sumTime')" align="center" prop="totalRunTime" :formatter="erpPriceTableColumnFormatter" width="240"/>
+        <el-table-column :label="t('operationFillForm.sumKil')"  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('main.mileage')"  key="mileageRule" width="80">
           <template #default="scope">
             <el-switch
               v-model="scope.row.mileageRule"
@@ -156,7 +156,7 @@
             />
           </template>
         </el-table-column>
-        <el-table-column label="运行时间" key="runningTimeRule" width="80">
+        <el-table-column :label="t('main.runTime')"  key="runningTimeRule" width="90">
           <template #default="scope">
             <el-switch
               v-model="scope.row.runningTimeRule"
@@ -166,7 +166,7 @@
             />
           </template>
         </el-table-column>
-        <el-table-column label="自然日期" key="naturalDateRule" width="80">
+        <el-table-column :label="t('main.date')" key="naturalDateRule" width="80">
           <template #default="scope">
             <el-switch
               v-model="scope.row.naturalDateRule"
@@ -176,12 +176,12 @@
             />
           </template>
         </el-table-column>
-        <el-table-column label="已选物料" align="center" width="100">
+        <el-table-column :label="t('iotMaintain.numberOfMaterials')" 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('iotMaintain.operation')" align="center" min-width="120px">
           <template #default="scope">
             <div style="display: flex; justify-content: center; align-items: center; width: 100%">
               <!-- 新增配置按钮 -->
@@ -191,7 +191,7 @@
                   type="primary"
                   @click="openConfigDialog(scope.row)"
                 >
-                  配置
+                  {{ t('form.set') }}
                 </el-button>
               </div>
               <!--
@@ -211,7 +211,7 @@
                   type="primary"
                   @click="handleView(scope.row.id, scope.row.bomNodeId)"
                 >
-                  物料详情
+                  {{ t('bomList.materialDetail') }}
                 </el-button>
               </div>
             </div>
@@ -237,7 +237,7 @@
   <ContentWrap>
     <el-form>
       <el-form-item style="float: right">
-        <el-button @click="close">取 消</el-button>
+        <el-button @click="close">{{ t('common.cancel')}}</el-button>
       </el-form-item>
     </el-form>
   </ContentWrap>
@@ -253,11 +253,11 @@
     </template>
     <el-form :model="configDialog.form" label-width="200px" :rules="configFormRules" ref="configFormRef">
       <div class="form-group">
-        <div class="group-title">基础保养记录</div>
+        <div class="group-title">{{ t('mainPlan.basicMaintenanceRecords') }}</div>
         <!-- 里程配置 -->
         <el-form-item
           v-if="configDialog.current?.mileageRule === 0"
-          label="上次保养里程数(KM)"
+          :label="t('mainPlan.lastMaintenanceMileage')"
           prop="lastRunningKilometers"
         >
           <el-input-number
@@ -273,7 +273,7 @@
         <!-- 推迟公里数 -->
         <el-form-item
           v-if="configDialog.current?.mileageRule === 0"
-          label="推迟公里数(KM)"
+          :label="t('mainPlan.DelayKil')"
           prop="delayKilometers"
         >
           <el-input-number
@@ -289,7 +289,7 @@
         <!-- 运行时间配置 -->
         <el-form-item
           v-if="configDialog.current?.runningTimeRule === 0"
-          label="上次保养运行时间(H)"
+          :label="t('mainPlan.lastMaintenanceOperationTime')"
           prop="lastRunningTime"
         >
           <el-input-number
@@ -305,7 +305,7 @@
         <!-- 推迟时长 -->
         <el-form-item
           v-if="configDialog.current?.runningTimeRule === 0"
-          label="推迟时长(H)"
+          :label="t('mainPlan.DelayDuration')"
           prop="delayDuration"
         >
           <el-input-number
@@ -321,7 +321,7 @@
         <!-- 自然日期配置 -->
         <el-form-item
           v-if="configDialog.current?.naturalDateRule === 0"
-          label="上次保养自然日期"
+          :label="t('mainPlan.lastMaintenanceNaturalDate')"
           prop="lastNaturalDate"
         >
           <el-date-picker
@@ -337,7 +337,7 @@
         <!-- 推迟自然日期 -->
         <el-form-item
           v-if="configDialog.current?.naturalDateRule === 0"
-          label="推迟自然日期(D)"
+          :label="t('mainPlan.DelayDate')"
           prop="delayNaturalDate"
         >
           <el-input-number
@@ -353,11 +353,11 @@
       </div>
 
       <div class="form-group" v-if="configDialog.current?.mileageRule === 0">
-        <div class="group-title">运行里程规则配置</div>
+        <div class="group-title">{{ t('mainPlan.operatingMileageRuleConfiguration') }}</div>
         <!-- 保养规则周期值 + 提前量 -->
         <el-form-item
           v-if="configDialog.current?.mileageRule === 0"
-          label="运行里程周期(KM)"
+          :label="t('mainPlan.operatingMileageCycle')"
           prop="nextRunningKilometers"
         >
           <el-input-number
@@ -372,7 +372,7 @@
         </el-form-item>
         <el-form-item
           v-if="configDialog.current?.mileageRule === 0"
-          label="运行里程周期-提前量(KM)"
+          :label="t('mainPlan.OperatingMileageCycle_lead')"
           prop="kiloCycleLead"
         >
           <el-input-number
@@ -388,10 +388,10 @@
       </div>
 
       <div class="form-group" v-if="configDialog.current?.runningTimeRule === 0">
-        <div class="group-title">运行时间规则配置</div>
+        <div class="group-title">{{ t('mainPlan.RunTimeRuleConfiguration') }}</div>
         <el-form-item
           v-if="configDialog.current?.runningTimeRule === 0"
-          label="运行时间周期(H)"
+          :label="t('mainPlan.RunTimeCycle')"
           prop="nextRunningTime"
         >
           <el-input-number
@@ -406,7 +406,7 @@
         </el-form-item>
         <el-form-item
           v-if="configDialog.current?.runningTimeRule === 0"
-          label="运行时间周期-提前量(H)"
+          :label="t('mainPlan.RunTimeCycle_Lead')"
           prop="timePeriodLead"
         >
           <el-input-number
@@ -422,10 +422,10 @@
       </div>
 
       <div class="form-group" v-if="configDialog.current?.naturalDateRule === 0">
-        <div class="group-title">自然日规则配置</div>
+        <div class="group-title">{{ t('mainPlan.NaturalDayRuleConfig') }}</div>
         <el-form-item
           v-if="configDialog.current?.naturalDateRule === 0"
-          label="自然日周期(D)"
+          :label="t('mainPlan.NaturalDailyCycle') "
           prop="nextNaturalDate"
         >
           <el-input-number
@@ -439,7 +439,7 @@
         </el-form-item>
         <el-form-item
           v-if="configDialog.current?.naturalDateRule === 0"
-          label="自然日周期-提前量(D)"
+          :label="t('mainPlan.NaturalDailyCycle_Lead') "
           prop="naturalDatePeriodLead"
         >
           <el-input-number
@@ -454,7 +454,7 @@
       </div>
     </el-form>
     <template #footer>
-      <el-button @click="configDialog.visible = false">取消</el-button>
+      <el-button @click="configDialog.visible = false">{{ t('common.cancel')}}</el-button>
     </template>
   </el-dialog>
   <!-- 表单弹窗:添加/修改 -->

+ 14 - 14
src/views/pms/iotmainworkorder/SelectedMaterialDrawer.vue

@@ -1,6 +1,6 @@
 <template>
   <el-drawer
-    title="物料详情"
+    :title="t('bomList.materialDetail')"
     :append-to-body="true"
     :model-value="modelValue"
     @update:model-value="$emit('update:modelValue', $event)"
@@ -12,23 +12,23 @@
     <template v-if="nodeId">
       <div v-loading="loading" style="height: 100%">
         <el-table :data="filteredMaterials" style="width: 100%">
-          <el-table-column prop="bomNodeId" label="bom节点" width="180" v-if="false"/>
-          <el-table-column prop="factory" label="工厂" width="180" />
-          <el-table-column prop="costCenter" label="成本中心" width="180" />
-          <el-table-column prop="projectDepartment" label="库存地点" width="180" />
-          <el-table-column prop="materialName" label="物料名称" width="180" />
-          <el-table-column prop="materialCode" label="物料编码" width="180" />
-          <el-table-column prop="unit" label="单位" width="180" />
-          <el-table-column prop="unitPrice" label="单价" width="180" />
-          <el-table-column prop="quantity" label="消耗数量" width="180" />
-          <el-table-column prop="materialSource" label="库存类型" width="180" />
-          <el-table-column label="操作" align="right">
+          <el-table-column prop="bomNodeId" :label="t('bomList.bomNode')" width="180" v-if="false"/>
+          <el-table-column prop="factory" :label="t('workOrderMaterial.factory')" width="180" />
+          <el-table-column prop="costCenter" :label="t('workOrderMaterial.costCenter')" width="180" />
+          <el-table-column prop="projectDepartment" :label="t('workOrderMaterial.storageLocation')"  width="180" />
+          <el-table-column prop="materialName" :label="t('workOrderMaterial.materialName')" width="180" />
+          <el-table-column prop="materialCode" :label="t('workOrderMaterial.materialCode')" width="180" />
+          <el-table-column prop="unit" :label="t('workOrderMaterial.unit')" width="180" />
+          <el-table-column prop="unitPrice" :label="t('workOrderMaterial.unitPrice')" width="180" />
+          <el-table-column prop="quantity" :label="t('workOrderMaterial.ConsumptionQuantity')" width="180" />
+          <el-table-column prop="materialSource" :label="t('bomList.type')" width="180" />
+          <el-table-column :label="t('workplace.operation')" align="right">
             <template #default="scope">
               <el-button
                 size="small"
                 type="danger"
                 @click="emit('delete', scope.row)"
-              >删除</el-button>
+              >{{ t('form.delete') }}</el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -53,7 +53,7 @@ import * as PmsMaterialApi from '@/api/pms/material'
 import {dateFormatter} from "@/utils/formatTime";
 const drawerVisible = ref<boolean>(false)
 const emit = defineEmits(['update:modelValue', 'add', 'delete'])
-
+const { t } = useI18n() // 国际化
 defineOptions({
   name: 'SelectedMaterialDrawer'
 })

+ 20 - 19
src/views/pms/iotmainworkorder/index.vue

@@ -8,19 +8,19 @@
       :inline="true"
       label-width="68px"
     >
-      <el-form-item label="工单名称" prop="name">
+      <el-form-item :label="t('bomList.name')" prop="name">
         <el-input
           v-model="queryParams.name"
-          placeholder="请输入工单名称"
+          :placeholder="t('bomList.nHolder')"
           clearable
           @keyup.enter="handleQuery"
           class="!w-240px"
         />
       </el-form-item>
-      <el-form-item label="保养状态" prop="result">
+      <el-form-item :label="t('bomList.status')" prop="result">
         <el-select
           v-model="queryParams.result"
-          placeholder="请选择保养状态"
+          :placeholder="t('bomList.status')"
           clearable
           class="!w-240px"
         >
@@ -32,27 +32,28 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="创建时间" prop="createTime">
+      <el-form-item :label="t('common.createTime')" 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('operationFill.start')"
+          :end-placeholder="t('operationFill.end')"
           :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('operationFill.search') }}</el-button>
+        <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> {{ t('operationFill.reset') }}</el-button>
         <el-button
           type="primary"
           plain
           @click="openForm('create')"
           v-hasPermi="['pms:iot-main-work-order:create']"
         >
-          <Icon icon="ep:plus" class="mr-5px" /> 新增
+          <Icon icon="ep:plus" class="mr-5px" />  {{ t('operationFill.add') }}
         </el-button>
         <el-button
           type="success"
@@ -70,33 +71,33 @@
   <!-- 列表 -->
   <ContentWrap>
     <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
-      <el-table-column label="序号" width="60" align="center">
+      <el-table-column :label="t('iotDevice.serial')" width="70" align="center">
         <template #default="scope">
           {{ scope.$index + 1 }}
         </template>
       </el-table-column>
       <!--
       <el-table-column label="工单号" align="center" prop="orderNumber" /> -->
-      <el-table-column label="工单名称" align="center" prop="name" />
-      <el-table-column label="保养状态" align="center" prop="result" >
+      <el-table-column :label="t('bomList.name')" align="center" prop="name" />
+      <el-table-column :label="t('bomList.status')" align="center" prop="result" >
         <template #default="scope">
           <dict-tag :type="DICT_TYPE.PMS_MAIN_WORK_ORDER_RESULT" :value="scope.row.result" />
         </template>
       </el-table-column>
-      <el-table-column label="距离保养" align="center">
+      <el-table-column :label="t('bomList.serviceDue')" align="center">
         <template #default="scope">
           <span :class="getDistanceClass(scope.row.mainDistance)">
             {{ scope.row.mainDistance }}
           </span>
         </template>
       </el-table-column>
-      <el-table-column label="工单类型" align="center" prop="type" >
+      <el-table-column :label="t('bomList.type')" align="center" prop="type" >
         <template #default="scope">
           <dict-tag :type="DICT_TYPE.PMS_MAIN_WORK_ORDER_TYPE" :value="scope.row.type" />
         </template>
       </el-table-column>
-      <el-table-column label="负责人" align="center" prop="responsiblePersonName" />
-      <el-table-column label="操作" align="center" min-width="120px">
+      <el-table-column :label="t('iotMaintain.PersonInCharge')" align="center" prop="responsiblePersonName" />
+      <el-table-column :label="t('iotMaintain.operation')" align="center" min-width="120px">
         <template #default="scope">
           <el-button
             link
@@ -105,7 +106,7 @@
             v-hasPermi="['pms:iot-main-work-order:update']"
             v-if="scope.row.result === 1"
           >
-            填报
+            {{ t('operationFill.fill') }}
           </el-button>
           <el-button
             link
@@ -113,7 +114,7 @@
             @click="detail(scope.row.id)"
             v-hasPermi="['pms:iot-main-work-order:query']"
           >
-            查看
+            {{ t('operationFill.view')  }}
           </el-button>
           <!--
           <el-button

+ 38 - 38
src/views/pms/maintenance/IotMaintenancePlan.vue

@@ -11,12 +11,12 @@
       <div class="base-expandable-content">
         <el-row>
           <el-col :span="12">
-            <el-form-item label="计划名称" prop="name">
+            <el-form-item :label="t('main.planName')" prop="name">
               <el-input type="text" v-model="formData.name" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="计划编号" prop="serialNumber">
+            <el-form-item :label="t('main.planCode')" prop="serialNumber">
               <el-input type="text" v-model="formData.serialNumber" disabled/>
             </el-form-item>
           </el-col>
@@ -27,8 +27,8 @@
             </el-form-item>
           </el-col> -->
           <el-col :span="24">
-            <el-form-item label="备注" prop="remark">
-              <el-input v-model="formData.remark" type="textarea" placeholder="请输入备注" />
+            <el-form-item :label="t('iotMaintain.remark')" prop="remark">
+              <el-input v-model="formData.remark" type="textarea" :placeholder="t('iotMaintain.remarkHolder')" />
             </el-form-item>
           </el-col>
         </el-row>
@@ -47,7 +47,7 @@
       >
         <el-form-item>
           <el-button @click="openForm" type="warning">
-            <Icon icon="ep:plus" class="mr-5px" /> 新增设备</el-button>
+            <Icon icon="ep:plus" class="mr-5px" /> {{ t('operationFill.add') }}</el-button>
         </el-form-item>
       </el-form>
     </ContentWrap>
@@ -58,17 +58,17 @@
         <!-- 添加序号列 -->
         <el-table-column
           type="index"
-          label="序号"
-          width="60"
+          :label="t('iotDevice.serial')"
+          width="70"
           align="center"
         />
         <el-table-column label="设备id" align="center" prop="deviceId" v-if="false"/>
-        <el-table-column label="设备编码" align="center" prop="deviceCode" />
-        <el-table-column label="设备名称" align="center" prop="deviceName" />
-        <el-table-column label="累计运行时间(H)" align="center" prop="totalRunTime" :formatter="erpPriceTableColumnFormatter"/>
-        <el-table-column label="累计运行公里数(KM)" align="center" prop="totalMileage" :formatter="erpPriceTableColumnFormatter"/>
-        <el-table-column label="BOM节点" align="center" prop="name" />
-        <el-table-column label="运行里程" key="mileageRule" width="80">
+        <el-table-column :label="t('iotMaintain.deviceCode')" align="center" prop="deviceCode" />
+        <el-table-column :label="t('iotMaintain.deviceName')" align="center" prop="deviceName" />
+        <el-table-column :label="t('operationFillForm.sumTime')" align="center" prop="totalRunTime" :formatter="erpPriceTableColumnFormatter"/>
+        <el-table-column :label="t('operationFillForm.sumKil')" align="center" prop="totalMileage" :formatter="erpPriceTableColumnFormatter"/>
+        <el-table-column :label="t('bomList.bomNode')" align="center" prop="name" />
+        <el-table-column :label="t('main.mileage')" key="mileageRule" width="80">
           <template #default="scope">
             <el-switch
               v-model="scope.row.mileageRule"
@@ -84,7 +84,7 @@
           </template>
         </el-table-column>
         -->
-        <el-table-column label="运行时间" key="runningTimeRule" width="80">
+        <el-table-column :label="t('main.runTime')" key="runningTimeRule" width="90">
           <template #default="scope">
             <el-switch
               v-model="scope.row.runningTimeRule"
@@ -100,7 +100,7 @@
           </template>
         </el-table-column>
         -->
-        <el-table-column label="自然日期" key="naturalDateRule" width="80">
+        <el-table-column :label="t('main.date')" key="naturalDateRule" width="80">
           <template #default="scope">
             <el-switch
               v-model="scope.row.naturalDateRule"
@@ -116,7 +116,7 @@
           </template>
         </el-table-column>
         -->
-        <el-table-column label="操作" align="center" min-width="120px">
+        <el-table-column :label="t('operationFill.operation')" align="center" min-width="120px">
           <template #default="scope">
             <div style="display: flex; justify-content: center; align-items: center; width: 100%">
               <div>
@@ -127,7 +127,7 @@
                   type="danger"
                   @click="handleDelete(scope.row.deviceId+'-'+scope.row.bomNodeId)"
                 >
-                  移除
+                  {{t('modelTemplate.delete')}}
                 </el-button>
               </div>
               <!-- 新增配置按钮 -->
@@ -137,7 +137,7 @@
                   type="primary"
                   @click="openConfigDialog(scope.row)"
                 >
-                  配置
+                  {{t('modelTemplate.update')}}
                 </el-button>
               </div>
             </div>
@@ -149,8 +149,8 @@
   <ContentWrap>
     <el-form>
       <el-form-item style="float: right">
-        <el-button @click="submitForm" type="primary" :disabled="formLoading">保 存</el-button>
-        <el-button @click="close">取 消</el-button>
+        <el-button @click="submitForm" type="primary" :disabled="formLoading">{{t('iotMaintain.save')}}</el-button>
+        <el-button @click="close">{{t('iotMaintain.cancel')}}</el-button>
       </el-form-item>
     </el-form>
   </ContentWrap>
@@ -167,11 +167,11 @@
     </template>
     <el-form :model="configDialog.form" label-width="200px" :rules="configFormRules" ref="configFormRef">
       <div class="form-group">
-        <div class="group-title">基础保养记录</div>
+        <div class="group-title">{{ t('mainPlan.basicMaintenanceRecords') }}</div>
         <!-- 里程配置 -->
         <el-form-item
           v-if="configDialog.current?.mileageRule === 0"
-          label="上次保养里程数(KM)"
+          :label="t('mainPlan.lastMaintenanceMileage')"
           prop="lastRunningKilometers"
         >
           <el-input-number
@@ -186,7 +186,7 @@
         <!-- 运行时间配置 -->
         <el-form-item
           v-if="configDialog.current?.runningTimeRule === 0"
-          label="上次保养运行时间(H)"
+          :label="t('mainPlan.lastMaintenanceOperationTime')"
           prop="lastRunningTime"
         >
           <el-input-number
@@ -201,7 +201,7 @@
         <!-- 自然日期配置 -->
         <el-form-item
           v-if="configDialog.current?.naturalDateRule === 0"
-          label="上次保养自然日期"
+          :label="t('mainPlan.lastMaintenanceNaturalDate')"
           prop="lastNaturalDate"
         >
           <el-date-picker
@@ -216,11 +216,11 @@
       </div>
 
       <div class="form-group" v-if="configDialog.current?.mileageRule === 0">
-        <div class="group-title">运行里程规则配置</div>
+        <div class="group-title">{{ t('mainPlan.operatingMileageRuleConfiguration') }}</div>
         <!-- 保养规则周期值 + 提前量 -->
         <el-form-item
           v-if="configDialog.current?.mileageRule === 0"
-          label="运行里程周期(KM)"
+          :label="t('mainPlan.operatingMileageCycle')"
           prop="nextRunningKilometers"
         >
           <el-input-number
@@ -234,7 +234,7 @@
         </el-form-item>
         <el-form-item
           v-if="configDialog.current?.mileageRule === 0"
-          label="运行里程周期-提前量(KM)"
+          :label="t('mainPlan.OperatingMileageCycle_lead')"
           prop="kiloCycleLead"
         >
           <el-input-number
@@ -249,10 +249,10 @@
       </div>
 
       <div class="form-group" v-if="configDialog.current?.runningTimeRule === 0">
-        <div class="group-title">运行时间规则配置</div>
+        <div class="group-title">{{ t('mainPlan.RunTimeRuleConfiguration') }}</div>
         <el-form-item
           v-if="configDialog.current?.runningTimeRule === 0"
-          label="运行时间周期(H)"
+          :label="t('mainPlan.RunTimeCycle')"
           prop="nextRunningTime"
         >
           <el-input-number
@@ -266,7 +266,7 @@
         </el-form-item>
         <el-form-item
           v-if="configDialog.current?.runningTimeRule === 0"
-          label="运行时间周期-提前量(H)"
+          :label="t('mainPlan.RunTimeCycle_Lead')"
           prop="timePeriodLead"
         >
           <el-input-number
@@ -281,10 +281,10 @@
       </div>
 
       <div class="form-group" v-if="configDialog.current?.naturalDateRule === 0">
-        <div class="group-title">自然日规则配置</div>
+        <div class="group-title">{{ t('mainPlan.NaturalDayRuleConfig') }}</div>
         <el-form-item
           v-if="configDialog.current?.naturalDateRule === 0"
-          label="自然日周期(D)"
+          :label="t('mainPlan.NaturalDailyCycle') "
           prop="nextNaturalDate"
         >
           <el-input-number
@@ -297,7 +297,7 @@
         </el-form-item>
         <el-form-item
           v-if="configDialog.current?.naturalDateRule === 0"
-          label="自然日周期-提前量(D)"
+          :label="t('mainPlan.NaturalDailyCycle_Lead') "
           prop="naturalDatePeriodLead"
         >
           <el-input-number
@@ -311,16 +311,16 @@
       </div>
     </el-form>
     <template #footer>
-      <el-button @click="configDialog.visible = false">取消</el-button>
-      <el-button type="primary" @click="saveConfig">保存</el-button>
+      <el-button @click="configDialog.visible = false">{{ t('common.cancel') }}</el-button>
+      <el-button type="primary" @click="saveConfig">{{ t('common.save') }}</el-button>
     </template>
   </el-dialog>
 
   <div class="temp-list card" v-if="false">
-    <h3>已经选择的设备关联的负责人列表</h3>
+    <h3>{{ t('mainPlan.duty') }}</h3>
     <el-table :data="tempDevicePersons" style="width: 100%" >
-      <el-table-column prop="tempDeviceIds" label="设备id" width="200" />
-      <el-table-column prop="tempPersonNames" label="责任人姓名" />
+      <el-table-column prop="tempDeviceIds" :label="t('mainPlan.deviceId')" width="200" />
+      <el-table-column prop="tempPersonNames" :label="t('operationFill.duty')" />
     </el-table>
   </div>
 

+ 31 - 31
src/views/pms/maintenance/IotMaintenancePlanDetail.vue

@@ -11,12 +11,12 @@
       <div class="base-expandable-content">
         <el-row>
           <el-col :span="12">
-            <el-form-item label="计划名称" prop="name">
+            <el-form-item :label="t('main.planName')" 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="serialNumber">
+            <el-form-item :label="t('main.planCode')" prop="serialNumber">
               <el-input type="text" v-model="formData.serialNumber" disabled/>
             </el-form-item>
           </el-col>
@@ -34,8 +34,8 @@
             </el-form-item>
           </el-col> -->
           <el-col :span="24">
-            <el-form-item label="备注" prop="remark">
-              <el-input v-model="formData.remark" type="textarea" placeholder="请输入备注" disabled/>
+            <el-form-item :label="t('form.remark')" prop="remark">
+              <el-input v-model="formData.remark" type="textarea" :placeholder="t('deviceForm.remarkHolder')" disabled/>
             </el-form-item>
           </el-col>
         </el-row>
@@ -49,16 +49,16 @@
         <!-- 添加序号列 -->
         <el-table-column
           type="index"
-          label="序号"
-          width="60"
+          :label="t('monitor.serial')"
+          width="70"
           align="center"
         />
-        <el-table-column label="设备编码" align="center" prop="deviceCode" />
-        <el-table-column label="设备名称" align="center" prop="deviceName" />
-        <el-table-column label="累计运行时间(H)" align="center" prop="totalRunTime" :formatter="erpPriceTableColumnFormatter"/>
-        <el-table-column label="累计运行公里数(KM)" align="center" prop="totalMileage" :formatter="erpPriceTableColumnFormatter"/>
-        <el-table-column label="BOM节点" align="center" prop="name" />
-        <el-table-column label="运行里程" key="mileageRule" width="80">
+        <el-table-column :label="t('monitor.deviceCode')" align="center" prop="deviceCode" />
+        <el-table-column :label="t('monitor.deviceName')" align="center" prop="deviceName" />
+        <el-table-column :label="t('operationFillForm.sumTime')" align="center" prop="totalRunTime" :formatter="erpPriceTableColumnFormatter"/>
+        <el-table-column :label="t('operationFillForm.sumKil')" align="center" prop="totalMileage" :formatter="erpPriceTableColumnFormatter"/>
+        <el-table-column :label="t('bomList.bomNode')" align="center" prop="name" />
+        <el-table-column :label="t('main.mileage')" key="mileageRule" width="80">
           <template #default="scope">
             <el-switch
               v-model="scope.row.mileageRule"
@@ -75,7 +75,7 @@
           </template>
         </el-table-column>
         -->
-        <el-table-column label="运行时间" key="runningTimeRule" width="80">
+        <el-table-column :label="t('main.runTime')" key="runningTimeRule" width="90">
           <template #default="scope">
             <el-switch
               v-model="scope.row.runningTimeRule"
@@ -92,7 +92,7 @@
           </template>
         </el-table-column>
         -->
-        <el-table-column label="自然日期" key="naturalDateRule" width="80">
+        <el-table-column :label="t('main.date')" key="naturalDateRule" width="80">
           <template #default="scope">
             <el-switch
               v-model="scope.row.naturalDateRule"
@@ -109,7 +109,7 @@
           </template>
         </el-table-column>
         -->
-        <el-table-column label="操作" align="center" min-width="120px">
+        <el-table-column :label="t('workplace.operation')" align="center" min-width="120px">
           <template #default="scope">
             <div style="display: flex; justify-content: center; align-items: center; width: 100%">
               <div>
@@ -132,7 +132,7 @@
                   type="primary"
                   @click="openConfigDialog(scope.row)"
                 >
-                  配置
+                  {{ t('form.set') }}
                 </el-button>
               </div>
             </div>
@@ -144,7 +144,7 @@
   <ContentWrap>
     <el-form>
       <el-form-item style="float: right">
-        <el-button @click="close">取 消</el-button>
+        <el-button @click="close">{{t('operationFillForm.cancel')}}</el-button>
       </el-form-item>
     </el-form>
   </ContentWrap>
@@ -161,11 +161,11 @@
     </template>
     <el-form :model="configDialog.form" label-width="200px" :rules="configFormRules" ref="configFormRef">
       <div class="form-group">
-        <div class="group-title">基础保养记录</div>
+        <div class="group-title">{{ t('mainPlan.basicMaintenanceRecords') }}</div>
         <!-- 里程配置 -->
         <el-form-item
           v-if="configDialog.current?.mileageRule === 0"
-          label="上次保养里程数(KM)"
+          :label="t('mainPlan.lastMaintenanceMileage')"
           prop="lastRunningKilometers"
         >
           <el-input-number
@@ -180,7 +180,7 @@
         <!-- 运行时间配置 -->
         <el-form-item
           v-if="configDialog.current?.runningTimeRule === 0"
-          label="上次保养运行时间(H)"
+          :label="t('mainPlan.lastMaintenanceOperationTime')"
           prop="lastRunningTime"
         >
           <el-input-number
@@ -195,7 +195,7 @@
         <!-- 自然日期配置 -->
         <el-form-item
           v-if="configDialog.current?.naturalDateRule === 0"
-          label="上次保养自然日期"
+          :label="t('mainPlan.lastMaintenanceNaturalDate')"
           prop="lastNaturalDate"
         >
           <el-date-picker
@@ -211,11 +211,11 @@
       </div>
 
       <div class="form-group" v-if="configDialog.current?.mileageRule === 0">
-        <div class="group-title">运行里程规则配置</div>
+        <div class="group-title">{{ t('mainPlan.operatingMileageRuleConfiguration') }}</div>
         <!-- 保养规则周期值 + 提前量 -->
         <el-form-item
           v-if="configDialog.current?.mileageRule === 0"
-          label="运行里程周期(KM)"
+          :label="t('mainPlan.operatingMileageCycle')"
           prop="nextRunningKilometers"
         >
           <el-input-number
@@ -230,7 +230,7 @@
         </el-form-item>
         <el-form-item
           v-if="configDialog.current?.mileageRule === 0"
-          label="运行里程周期-提前量(KM)"
+          :label="t('mainPlan.OperatingMileageCycle_lead')"
           prop="kiloCycleLead"
         >
           <el-input-number
@@ -246,10 +246,10 @@
       </div>
 
       <div class="form-group" v-if="configDialog.current?.runningTimeRule === 0">
-        <div class="group-title">运行时间规则配置</div>
+        <div class="group-title">{{ t('mainPlan.RunTimeRuleConfiguration') }}</div>
         <el-form-item
           v-if="configDialog.current?.runningTimeRule === 0"
-          label="运行时间周期(H)"
+          :label="t('mainPlan.RunTimeCycle')"
           prop="nextRunningTime"
         >
           <el-input-number
@@ -264,7 +264,7 @@
         </el-form-item>
         <el-form-item
           v-if="configDialog.current?.runningTimeRule === 0"
-          label="运行时间周期-提前量(H)"
+          :label="t('mainPlan.RunTimeCycle_Lead')"
           prop="timePeriodLead"
         >
           <el-input-number
@@ -280,10 +280,10 @@
       </div>
 
       <div class="form-group" v-if="configDialog.current?.naturalDateRule === 0">
-        <div class="group-title">自然日规则配置</div>
+        <div class="group-title">{{ t('mainPlan.NaturalDayRuleConfig') }}</div>
         <el-form-item
           v-if="configDialog.current?.naturalDateRule === 0"
-          label="自然日周期(D)"
+          :label="t('mainPlan.NaturalDailyCycle') "
           prop="nextNaturalDate"
         >
           <el-input-number
@@ -297,7 +297,7 @@
         </el-form-item>
         <el-form-item
           v-if="configDialog.current?.naturalDateRule === 0"
-          label="自然日周期-提前量(D)"
+          :label="t('mainPlan.NaturalDailyCycle_Lead') "
           prop="naturalDatePeriodLead"
         >
           <el-input-number
@@ -312,7 +312,7 @@
       </div>
     </el-form>
     <template #footer>
-      <el-button @click="configDialog.visible = false">取消</el-button>
+      <el-button @click="configDialog.visible = false">{{ t('common.cancel') }}</el-button>
     </template>
   </el-dialog>
 

+ 15 - 14
src/views/pms/maintenance/MainPlanDeviceList.vue

@@ -1,5 +1,5 @@
 <template>
-  <Dialog v-model="dialogVisible" title="选择设备"
+  <Dialog v-model="dialogVisible" :title="t('deviceList.selectDevice')"
           style="width: 1100px; max-height: 800px"  @close="handleClose">
     <ContentWrap>
       <el-form
@@ -10,19 +10,20 @@
         label-width="68px"
         @submit.prevent
       >
-        <el-form-item label="设备名称" prop="deviceName">
+        <el-form-item  :title="t('deviceList.deviceName')" prop="deviceName">
           <el-input
             @keyup.enter="handleQuery"
             v-model="queryParams.deviceName"
-            placeholder="请输入设备名称"
+            :placeholder="t('deviceList.nameHolder')"
             clearable
             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="handleConfirm" class="custom-green-button"><Icon icon="ep:check" class="mr-5px" /> 确认选择</el-button>
+          <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" />
+            {{ t('deviceList.search') }}</el-button>
+          <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> {{ t('deviceList.reset') }}</el-button>
+          <el-button @click="handleConfirm" class="custom-green-button"><Icon icon="ep:check" class="mr-5px" /> {{ t('workOrderMaterial.confirm') }}</el-button>
         </el-form-item>
       </el-form>
     </ContentWrap>
@@ -35,7 +36,7 @@
         :show-overflow-tooltip="true"
         @row-click="handleRowClick"
       >
-        <el-table-column width="60" label="选择">
+        <el-table-column width="70" :label="t('workOrderMaterial.select')">
           <template #default="{ row }">
             <el-checkbox
               :model-value="selectedRows.some(item => item.id === row.id)"
@@ -44,17 +45,17 @@
             />
           </template>
         </el-table-column>
-        <el-table-column label="资产编码" align="center" prop="deviceCode" />
-        <el-table-column label="设备名称" align="center" prop="deviceName" />
-        <el-table-column label="所在部门id" align="center" prop="deptId" v-if="false"/>
-        <el-table-column label="所在部门" align="center" prop="deptName" />
-        <el-table-column label="设备状态" align="center" prop="deviceStatus">
+        <el-table-column :label="t('chooseMaintain.deviceCode')" align="center" prop="deviceCode" />
+        <el-table-column :label="t('deviceList.deviceName')" align="center" prop="deviceName" />
+        <el-table-column :label="t('faultForm.deptId')" align="center" prop="deptId" v-if="false"/>
+        <el-table-column :label="t('iotDevice.dept')" align="center" prop="deptName" />
+        <el-table-column :label="t('iotDevice.status')" align="center" prop="deviceStatus">
           <template #default="scope">
             <dict-tag :type="DICT_TYPE.PMS_DEVICE_STATUS" :value="scope.row.deviceStatus" />
           </template>
         </el-table-column>
         <el-table-column
-          label="创建时间"
+          :label="t('deviceList.createTime')"
           align="center"
           prop="createTime"
           width="180"
@@ -85,7 +86,7 @@ const list = ref<IotDeviceVO[]>([]) // 列表的数据
 const total = ref(0) // 列表的总页数
 const tableRef = ref();
 const selectedRows = ref<IotDeviceVO[]>([]); // 多选数据(存储所有选中行的数组)
-
+const { t } = useI18n() // 国际化
 // 调整 emit 类型
 const emit = defineEmits<{
   (e: 'choose', value: IotDeviceVO[]): void

+ 20 - 19
src/views/pms/maintenance/index.vue

@@ -15,19 +15,19 @@
           :inline="true"
           label-width="68px"
         >
-          <el-form-item label="计划编号" prop="serialNumber">
+          <el-form-item :label="t('main.planCode')" prop="serialNumber">
             <el-input
               v-model="queryParams.serialNumber"
-              placeholder="请输入计划编号"
+              :placeholder="t('main.codeHolder')"
               clearable
               @keyup.enter="handleQuery"
               class="!w-240px"
             />
           </el-form-item>
-          <el-form-item label="计划名称" prop="name">
+          <el-form-item :label="t('main.planName')" prop="name">
             <el-input
               v-model="queryParams.name"
-              placeholder="请输入计划名称"
+              :placeholder="t('main.nameHolder')"
               clearable
               @keyup.enter="handleQuery"
               class="!w-240px"
@@ -44,27 +44,28 @@
               <el-option label="请选择字典生成" value="" />
             </el-select>
           </el-form-item> -->
-          <el-form-item label="创建时间" prop="createTime">
+          <el-form-item :label="t('operationFill.createTime')" 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('operationFill.start')"
+              :end-placeholder="t('operationFill.end')"
               :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('operationFill.search') }}</el-button>
+            <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" />  {{ t('operationFill.reset') }}</el-button>
             <el-button
               type="primary"
               plain
               @click="openForm('create')"
               v-hasPermi="['rq:iot-maintenance-plan:create']"
             >
-              <Icon icon="ep:plus" class="mr-5px" /> 新增
+              <Icon icon="ep:plus" class="mr-5px" /> {{ t('operationFill.add') }}
             </el-button>
             <el-button
               type="success"
@@ -82,27 +83,27 @@
       <!-- 列表 -->
       <ContentWrap>
         <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
-          <el-table-column label="序号" width="60" align="center">
+          <el-table-column :label="t('iotDevice.serial')" width="70" align="center">
             <template #default="scope">
               {{ scope.$index + 1 }}
             </template>
           </el-table-column>
-          <el-table-column label="计划编号" align="center" prop="serialNumber" />
-          <el-table-column label="计划名称" align="center" prop="name" />
-          <el-table-column label="负责人" align="center" prop="responsiblePersonName" />
-          <el-table-column label="状态" align="center" prop="status" >
+          <el-table-column :label="t('main.planCode')" align="center" prop="serialNumber" />
+          <el-table-column :label="t('main.planName')" align="center" prop="name" />
+          <el-table-column :label="t('iotMaintain.PersonInCharge')" align="center" prop="responsiblePersonName" />
+          <el-table-column :label="t('maintain.status')" 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('operationFill.createTime')"
             align="center"
             prop="createTime"
             :formatter="dateFormatter"
             width="180px"
           />
-          <el-table-column label="操作" align="center" min-width="120px">
+          <el-table-column :label="t('maintain.operation')" align="center" min-width="120px">
             <template #default="scope">
               <el-button
                 link
@@ -110,7 +111,7 @@
                 @click="openForm('update', scope.row.id)"
                 v-hasPermi="['rq:iot-maintenance-plan:update']"
               >
-                编辑
+                {{ t('info.edit') }}
               </el-button>
               <el-button
                 link
@@ -118,7 +119,7 @@
                 @click="detail(scope.row.id)"
                 v-hasPermi="['rq:iot-maintenance-plan:query']"
               >
-                查看
+                {{ t('maintain.view') }}
               </el-button>
               <!--
               <el-button