Преглед изворни кода

Merge remote-tracking branch 'origin/master'

lipenghui пре 2 месеци
родитељ
комит
61db53f0a6

+ 320 - 0
src/locales/en.ts

@@ -511,4 +511,324 @@ export default {
     update:'Update',
     delete:'Delete'
   },
+  iotDevice:{
+    name:'DeviceName',
+    nameHolder:'Please enter DeviceName',
+    code:'DeviceCode',
+    codeHolder:'Please enter DeviceCode',
+    brand:'Brand',
+    brandHolder:'Please enter Brand',
+    moreSearch:'MoreSearch',
+    closeSearch:'CloseSearch',
+    status:'Status',
+    statusHolder:'Status',
+    assets:'Assets',
+    assetsHolder:'Assets',
+    serial:'Serial',
+    dept:'Department',
+    update:'Update',
+    delete:'Delete',
+    upload:'Upload'
+  },
+  deviceForm:{
+    basic:'BasicInfo',
+    make:'MakeInfo',
+    finance:'FinanceInfo',
+    other:'OtherInfo',
+    category:'Category',
+    categoryHolder:'Please select device category',
+    model:'Model',
+    modelHolder:'Please enter Model',
+    picture:'Picture',
+    remark:'Remark',
+    remarkHolder:'Please enter Remark',
+    mfg:'Manufacturer',
+    mfgHolder:'Please enter the manufacturer',
+    pd:'ProductionDate',
+    pdHolder:'Please select the production date',
+    supplier:'Supplier',
+    suppHolder:'Please enter supplier',
+    warranty:'Warranty',
+    warrHolder:'Please select warranty expiration',
+    ni:'Nameplate',
+    niHolder:'Please enter nameplate information',
+    pp:'PurchasePrice',
+    pdate:'PurchaseDate',
+    dp:'DepreciationPeriod',
+    ds:'DepreciationStartDate',
+    yd:'NumberOfMonthsOfDepreciation',
+    yy:'AmountOfDepreciation',
+    sy:'RemainingAmount',
+    choose:'Please select',
+    expand:'Expand',
+    close:'Close',
+    save:'Save',
+    return:'Return'
+  },
+  file:{
+    name:'FileName',
+    nameHolder:'Please enter File Name',
+    search:'Search',
+    reset:'Reset',
+    upload:'Upload',
+    fileType:'FileType',
+    fileSize:'FileSize',
+    preview:'Preview',
+    operation:'Operation',
+    dow:'Download',
+    check:'Check'
+  },
+  fileInfo:{
+    fileDirectory:'FileDirectory',
+    appendix:'Appendix',
+    fileType:'FileType',
+    remark:'Remark'
+  },
+  monitor:{
+    deviceName:'DeviceName',
+    nameHolder:'Please enter DeviceName',
+    deviceCode:'DeviceCode',
+    codeHolder:'Please enter DeviceCode',
+    search:'Search',
+    reset:'Reset',
+    serial:'Serial',
+    category:'Category',
+    status:'Status',
+    online:'Online',
+    latestDataTime:'LatestDataTime',
+    operation:'Operation',
+    check:'Check',
+    details:'Details'
+  },
+  devicePerson:{
+    deviceName:'DeviceName',
+    nameHolder:'Please enter DeviceName',
+    deviceCode:'DeviceCode',
+    codeHolder:'Please enter DeviceCode',
+    responsiblePerson:'ResponsiblePerson',
+    choose:'Please select',
+    status:'Status',
+    statusHolder:'Status',
+    assets:'Assets',
+    assetsHolder:'Assets',
+    brand:'Brand',
+    brandHolder:'Please enter Brand',
+    moreSearch:'MoreSearch',
+    closeSearch:'CloseSearch',
+    search:'Search',
+    reset:'Reset',
+    setUp:'SetUp',
+    serial:'Serial',
+    dept:'Department',
+    rp:'ResponsiblePerson',
+    operation:'Operation',
+    adjustmentRecords:'AdjustmentRecords'
+  },
+  configPerson:{
+    deviceList:'DeviceList',
+    deviceListHolder:'Please select the Department',
+    rp:'ResponsiblePerson',
+    rpHolder:'Please select the Department',
+    reasonForAdjustment:'ReasonForAdjustment',
+    rfaHolder:'Please enter reason',
+    adjustmentRecords:'AdjustmentRecords'
+  },
+  deviceStatus:{
+    deviceName:'DeviceName',
+    nameHolder:'Please enter DeviceName',
+    deviceCode:'DeviceCode',
+    codeHolder:'Please enter DeviceCode',
+    statusAdjust:'StatusAdjust',
+    transfer:'WhetherToTransfer',
+    search:'Search',
+    reset:'Reset',
+    setUp:'SetUp',
+    choose:'Please select',
+    moreSearch:'MoreSearch',
+    closeSearch:'CloseSearch',
+    status:'Status',
+    statusHolder:'Status',
+    assets:'Assets',
+    assetsHolder:'Assets',
+    brand:'Brand',
+    brandHolder:'Please enter Brand',
+    serial:'Serial',
+    dept:'Department',
+    operation:'Operation',
+    adjustmentRecords:'AdjustmentRecords',
+    beforePerson:'BeforeAdjustment',
+    afterPerson:'AfterAdjustment',
+    beforeStatus:'BeforeAdjustment',
+    afterStatus:'AfterAdjustment',
+    beforeDept:'BeforeAdjustment',
+    afterDept:'AfterAdjustment',
+    adjuster:'Adjuster',
+    adjustTime:'AdjustTime'
+  },
+  configDevice:{
+    deviceList:'DeviceList',
+    deptList:'DepartmentList',
+    deviceListHolder:'Please select the Department',
+    rp:'DeviceStatus',
+    rpHolder:'Please select the Department',
+    reasonForAdjustment:'ReasonForAdjustment',
+    rfaHolder:'Please enter reason',
+    adjustmentRecords:'AdjustmentRecords'
+  },
+  fault:{
+    faultTitle:'FaultTitle',
+    titleHolder:'Please enter fault title',
+    status:'Status',
+    shutDown:'ShutDown',
+    failureTime:'FailureTime',
+    start:'StartTime',
+    end:'EndTime',
+    solve:'Solve',
+    assist:'Assist',
+    search:'Search',
+    reset:'Reset',
+    moreSearch:'MoreSearch',
+    closeSearch:'CloseSearch',
+    added:'Added',
+    serial:'Serial',
+    deviceName:'DeviceName',
+    approvalStatus:'ApprovalStatus',
+    solveTime:'SolveTime',
+    operation:'Operation',
+    view:'View',
+    edit: 'Edit',
+    del:'Delete',
+
+  },
+  faultForm:{
+    device:'Device',
+    solve:'Solve',
+    assist:'Assist',
+    faultySystem:'FaultySystem',
+    faultySystemHolder:'Please enter the fault system',
+    failureTime:'FailureTime',
+    failureTimeHolder:'Please select failure time',
+    shutDown:'ShutDown',
+    picture: 'Picture',
+    faultImpact:'FaultImpact',
+    faultImpactHolder:'Please enter the fault impact',
+    faultDescription:'FaultDescription',
+    remark:'Remark',
+    rHolder:'Please enter a remark',
+    choose:'Please select',
+    ok: 'Confirm',
+    cancel: 'cancel',
+    deptId:'DeptID'
+  },
+  deviceList:{
+    selectDevice:'SelectDevice',
+    deviceName:'DeviceName',
+    nameHolder:'Please enter device name',
+    deviceCode:'DeviceCode',
+    codeHolder:'Please enter device code',
+    search:'Search',
+    reset:'Reset',
+    select:'Select',
+    createTime:'CreateTime',
+  },
+  maintain: {
+    faultCode:'FaultCode',
+    codeHolder:'Please enter fault code',
+    faultName:'FaultName',
+    nameHolder:'Please enter fault name',
+    status:'Status',
+    search:'Search',
+    reset:'Reset',
+    moreSearch:'MoreSearch',
+    closeSearch:'CloseSearch',
+    added:'Added',
+    shutDown:'ShutDown',
+    failureTime:'FailureTime',
+    solve:'Solve',
+    assist:'Assist',
+    serial:'Serial',
+    deviceName:'DeviceName',
+    source:'Source',
+    audit:'Audit',
+    operation:'Operation',
+    view:'View',
+    fill:'Fill'
+  },
+  iotMaintain:{
+
+    deviceHolder:'Please select device',
+    shutDownHolder:'ShutDown',
+    startTimeHolder:'StartTime',
+    endTimeHolder:'EndTime',
+    failureTimeHolder:'FailureTime',
+    failureImpactHolder:'Please enter failure impact',
+    faultySystemHolder: 'Please enter faulty system',
+    remarkHolder:'Please enter remark',
+
+    device:'Device',
+    repairType:'RepairType',
+    shutDown:'ShutDown',
+    startTime:'StartTime',
+    endTime:'EndTime',
+    failureTime:'FailureTime',
+    failureImpact:'FailureImpact',
+    faultySystem:'FaultySystem',
+    picture: 'Picture',
+    repairCosts:'RepairCosts',
+    faultDescription:'FaultDescription',
+    repairDescription:'RepairDescription',
+    solution:'Solution',
+    remark:'Remark',
+    selectMaintenanceItem:'SelectMaintenanceItem',
+    addMaintenanceItems:'AddMaintenanceItems',
+
+    deviceName:'DeviceName',
+    deviceCode:'DeviceCode',
+    repairItems:'RepairItems',
+    repairItemsHolder:'Please enter repair items',
+    numberOfMaterials:'NumberOfMaterials',
+    operation:'Operation',
+    remove:'Remove',
+    selectMaterials:'SelectMaterials',
+    viewMaterials:'ViewMaterials',
+    save: 'Save',
+    cancel: 'Cancel',
+    BOMNodeID:'BOMNodeID',
+    ok: 'Confirm',
+  },
+  workOrderMaterial:{
+    materialCode:'MaterialCode',
+    codeHolder:'Please enter material code',
+    materialName:'MaterialName',
+    nameHolder:'Please enter material name',
+    search:'Search',
+    reset:'Reset',
+    confirm:'Confirm',
+    added:'Added',
+    select:'Select',
+    factory:'Factory',
+    costCenter:'CostCenter',
+    storageLocation:'StorageLocation',
+    unit:'Unit',
+    unitPrice:'UnitPrice',
+    total:'Total',
+    source:'Source',
+    ConsumptionQuantity:'ConsumptionQuantity'
+  },
+  chooseMaintain:{
+    selectRepairItem:'SelectRepairItem',
+    materialCode:'MaterialCode',
+    codeHolder:'Please enter material code',
+    materialName:'MaterialName',
+    nameHolder:'Please enter material name',
+    search:'Search',
+    reset:'Reset',
+    confirm:'Confirm',
+    selectAll:'SelectAll',
+    cancelAllSelection:'CancelAllSelection',
+    deviceName:'DeviceName',
+    deviceCode:'DeviceCode',
+    repairItems:'RepairItems',
+    createTime:'CreateTime',
+  },
 }

+ 326 - 0
src/locales/zh-CN.ts

@@ -506,5 +506,331 @@ export default {
     update:'修改',
     delete:'删除'
   },
+  iotDevice:{
+    name:'设备名称',
+    nameHolder:'请输入设备名称',
+    code:'设备编码',
+    codeHolder:'请输入设备编码',
+    brand:'品牌',
+    brandHolder:'请输入品牌',
+    moreSearch:'更多查询',
+    closeSearch:'收起查询',
+    status:'设备状态',
+    statusHolder:'设备状态',
+    assets:'资产性质',
+    assetsHolder:'资产性质',
+    serial:'序号',
+    dept:'所在部门',
+    update:'修改',
+    delete:'删除',
+    upload:'资料上传'
+  },
+  deviceForm:{
+    basic:'基本信息',
+    make:'制造信息',
+    finance:'财务信息',
+    other:'其他信息',
+    category:'设备类别',
+    categoryHolder:'请选择设备类别',
+    model:'规格型号',
+    picture:'图片',
+    remark:'备注',
+    remarkHolder:'请输入备注',
+    mfg:'制造商',
+    mfgHolder:'请输入制造商',
+    pd:'生产日期',
+    pdHolder:'请选择生产日期',
+    supplier:'供应商',
+    suppHolder:'请输入供应商',
+    warranty:'质保到期',
+    warrHolder:'请选择质保到期',
+    ni:'铭牌信息',
+    niHolder:'请选择质保到期',
+    pp:'采购价格',
+    pdate:'采购日期',
+    dp:'折旧年限',
+    ds:'折旧开始日期',
+    yd:'已提折旧月数',
+    yy:'已提折旧金额',
+    sy:'剩余金额',
+    choose:'请选择',
+    expand:'一键展开',
+    close:'一键收起',
+    save:'保存',
+    return:'返回'
+  },
+  file:{
+    name:'文件名称',
+    nameHolder:'请输入文件名称',
+    search:'搜索',
+    reset:'重置',
+    upload:'文件上传',
+    fileType:'文件类型',
+    fileSize:'文件大小',
+    preview:'查看预览',
+    operation:'操作',
+    dow:'下载',
+    check:'查看'
+  },
+  fileInfo:{
+    fileDirectory:'文件目录',
+    appendix:'附件',
+    fileType:'文件类型',
+    remark:'备注'
+  },
+  monitor:{
+    deviceName:'设备名称',
+    nameHolder:'请输入设备名称',
+    deviceCode:'设备编码',
+    codeHolder:'请输入设备编码',
+    search:'搜索',
+    reset:'重置',
+    serial:'序号',
+    category:'设备类别',
+    status:'设备状态',
+    online:'在线状态',
+    latestDataTime:'最新在线时间',
+    operation:'操作',
+    check:'查看',
+    details:'详情'
+  },
+  devicePerson:{
+    deviceName:'设备名称',
+    nameHolder:'请输入设备名称',
+    deviceCode:'设备编码',
+    codeHolder:'请输入设备编码',
+    responsiblePerson:'是否设置责任人',
+    choose:'请选择',
+    status:'设备状态',
+    statusHolder:'设备状态',
+    assets:'资产性质',
+    assetsHolder:'资产性质',
+    brand:'品牌',
+    brandHolder:'请输入品牌',
+    moreSearch:'更多查询',
+    closeSearch:'收起查询',
+    search:'搜索',
+    reset:'重置',
+    setUp:'设置责任人',
+    serial:'序号',
+    dept:'所在部门',
+    rp:'责任人',
+    operation:'操作',
+    adjustmentRecords:'调整记录',
+  },
+  configPerson:{
+    deviceList:'设备列表',
+    deviceListHolder:'请选择设备所属部门',
+    rp:'责任人关联设置',
+    rpHolder:'请选择所属部门',
+    reasonForAdjustment:'调整原因',
+    rfaHolder:'请输入调整原因',
+    adjustmentRecords:'调整记录'
+  },
+  deviceStatus:{
+    deviceName:'设备名称',
+    nameHolder:'请输入设备名称',
+    deviceCode:'设备编码',
+    codeHolder:'请输入设备编码',
+    statusAdjust:'状态是否调整',
+    transfer:'是否调拨',
+    search:'搜索',
+    reset:'重置',
+    setUp:'调整状态',
+    choose:'请选择',
+    moreSearch:'更多查询',
+    closeSearch:'收起查询',
+    status:'设备状态',
+    statusHolder:'设备状态',
+    assets:'资产性质',
+    assetsHolder:'资产性质',
+    brand:'品牌',
+    brandHolder:'请输入品牌',
+    serial:'序号',
+    dept:'所在部门',
+    operation:'操作',
+    adjustmentRecords:'调整记录',
+    beforePerson:'调整前责任人',
+    afterPerson:'调整后责任人',
+    beforeStatus:'调整前状态',
+    afterStatus:'调整后状态',
+    beforeDept:'调整前部门',
+    afterDept:'调整后部门',
+    adjuster:'调整人',
+    adjustTime:'调整时间'
+  },
+  configDevice:{
+    deviceList:'设备列表',
+    deptList:'部门列表',
+    deviceListHolder:'请选择设备所属部门',
+    rp:'设备状态',
+    rpHolder:'请选择所属部门',
+    reasonForAdjustment:'调整原因',
+    rfaHolder:'请输入调整原因',
+    adjustmentRecords:'调整记录',
+
+  },
+  fault:{
+    faultTitle:'故障标题',
+    titleHolder:'请输入故障标题',
+    status:'状态',
+    shutDown:'是否停机',
+    failureTime:'故障时间',
+    start:'开始时间',
+    end:'结束时间',
+    solve:'是否解决',
+    assist:'是否协助',
+    search:'搜索',
+    reset:'重置',
+    moreSearch:'更多查询',
+    closeSearch:'收起查询',
+    added:'新增',
+    serial:'序号',
+    deviceName:'设备名称',
+    approvalStatus:'审批状态',
+    solveTime:'解决用时',
+    operation:'操作',
+    view:'查看',
+    edit: '编辑',
+    del:'删除'
+  },
+  faultForm:{
+    device:'设备',
+    solve:'是否解决',
+    assist:'是否协助',
+    faultySystem:'故障系统',
+    faultySystemHolder:'请输入故障系统',
+    failureTime:'故障时间',
+    failureTimeHolder:'请选择故障时间',
+    shutDown:'是否停机',
+    picture: '图片',
+    faultImpact:'故障影响',
+    faultImpactHolder:'请输入故障影响',
+    faultDescription:'故障描述',
+    remark:'备注',
+    rHolder:'请输入备注',
+    choose:'请选择',
+    ok: '确定',
+    cancel: '取消',
+    deptId:'部门ID'
+  },
+  deviceList:{
+    selectDevice:'选择设备',
+    deviceName:'设备名称',
+    nameHolder:'请输入设备名称',
+    deviceCode:'设备编码',
+    codeHolder:'请输入设备编码',
+    search:'搜索',
+    reset:'重置',
+    select:'选择',
+    createTime:'创建时间',
+  },
+  maintain: {
+    faultCode:'故障编码',
+    codeHolder:'请输入故障编码',
+    faultName:'故障名称',
+    nameHolder:'请输入故障名称',
+    status:'状态',
+    search:'搜索',
+    reset:'重置',
+    moreSearch:'更多查询',
+    closeSearch:'收起查询',
+    added:'新增',
+    shutDown:'是否停机',
+    failureTime:'故障时间',
+    solve:'是否解决',
+    assist:'是否协助',
+    serial:'序号',
+    deviceName:'设备名称',
+    source:'工单来源',
+    audit:'审核状态',
+    operation:'操作',
+    view:'查看',
+    fill:'填写'
+  },
+  iotMaintain:{
+    device:'设备',
+
+    deviceHolder:'请选择设备',
+    shutDownHolder:'是否停机',
+    startTimeHolder:'选择维修开始时间',
+    endTimeHolder:'选择维修结束时间',
+    failureTimeHolder:'选择故障时间',
+    failureImpactHolder:'请输入故障影响',
+    faultySystemHolder: '请输入故障系统',
+    remarkHolder:'请输入备注',
+    repairTypeHolder:'请选择维修类型',
+
+
+
+
+    repairType:'维修类型',
+    shutDown:'是否停机',
+    startTime:'维修开始时间',
+    endTime:'维修结束时间',
+    failureTime:'故障时间',
+    failureImpact:'故障影响',
+    faultySystem:'故障系统',
+    picture: '图片',
+    repairCosts:'维修费用',
+    faultDescription:'故障描述',
+    repairDescription:'维修描述',
+    solution:'解决办法',
+    remark:'备注',
+    selectMaintenanceItem:'选择维修项',
+    addMaintenanceItems:'新增维修项',
+    deviceName:'设备名称',
+    deviceCode:'设备编码',
+    repairItems:'维修项',
+    repairItemsHolder:'请输入维修项',
+    numberOfMaterials:'物料数量',
+    operation:'操作',
+    remove:'移除',
+    selectMaterials:'选择物料',
+    viewMaterials:'查看物料',
+    save: '保存',
+    cancel: '取消',
+    BOMNodeID:'BOM节点ID',
+    ok: '确定',
+  },
+  workOrderMaterial:{
+    materialCode:'物料编码',
+    codeHolder:'请输入物料编码',
+    materialName:'物料名称',
+    nameHolder:'请输入物料名称',
+    search:'搜索',
+    reset:'重置',
+    confirm:'确认选择',
+    added:'新增物料',
+    select:'选择',
+    factory:'工厂',
+    costCenter:'成本中心',
+    storageLocation:'库存地点',
+    unit:'单位',
+    unitPrice:'单价',
+    total:'总库存数量',
+    source:'来源',
+    ConsumptionQuantity:'消耗数量'
+  },
+  chooseMaintain:{
+    selectRepairItem:'选择维修项',
+    materialCode:'物料编码',
+    codeHolder:'请输入物料编码',
+    materialName:'物料名称',
+    nameHolder:'请输入物料名称',
+    search:'搜索',
+    reset:'重置',
+    confirm:'确认选择',
+    selectAll:'全选',
+    cancelAllSelection:'取消全选',
+    deviceName:'设备名称',
+    deviceCode:'资产编码',
+    repairItems:'维修项',
+    createTime:'创建时间',
+  },
+  info:{
+
+  },
+
   'OAuth 2.0': 'OAuth 2.0' // 避免菜单名是 OAuth 2.0 时,一直 warn 报错
 }

+ 1 - 1
src/router/modules/remaining.ts

@@ -105,7 +105,7 @@ const remainingRouter: AppRouteRecordRaw[] = [
         component: () => import('@/views/pms/modeltemplate/detail/attrsModel/index.vue'),
         name: 'ModelAttrTemplate',
         meta: {
-          title: '填写信息详情',
+          title: '属性信息详情',
           noCache: false,
           hidden: true,
           canTo: true,

+ 33 - 33
src/views/pms/device/IotDeviceForm.vue

@@ -4,7 +4,7 @@
       <div class="title-div">
         <el-button @click="baseInfoClick" class="title-button">
           <Icon color="black" icon="ep:set-up" :size="18" class="cursor-pointer first-icon" />
-          <span class="cursor-pointer">基本信息</span>
+          <span class="cursor-pointer">{{ t('deviceForm.basic') }}</span>
           <Icon
             color="black"
             :icon="baseIsExpanded ? 'fa-solid:angle-double-down' : 'fa-solid:angle-double-right'"
@@ -16,17 +16,17 @@
       <div class="base-expandable-content" :class="{ 'is-expanded': baseIsExpanded }">
         <el-row>
           <el-col :span="8">
-            <el-form-item label="设备编码" prop="deviceCode">
+            <el-form-item :label="t('iotDevice.code')" prop="deviceCode">
               <el-input v-model="formData.deviceCode" :disabled="formType==='update'" placeholder="请输入设备编码" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="设备名称" prop="deviceName">
+            <el-form-item :label="t('iotDevice.name')" prop="deviceName">
               <el-input v-model="formData.deviceName" placeholder="请输入设备名称" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="所在部门" prop="deptId">
+            <el-form-item :label="t('iotDevice.dept')" prop="deptId">
               <el-tree-select
                 :disabled="formType==='update'"
                 v-model="formData.deptId"
@@ -47,7 +47,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="设备类别" prop="assetClass">
+            <el-form-item :label="t('deviceForm.category')" prop="assetClass">
               <el-tree-select
                 :disabled="formType==='update'"
                 v-model="formData.assetClass"
@@ -55,15 +55,15 @@
                 :props="defaultProps"
                 check-strictly
                 node-key="id"
-                placeholder="请选择设备类别"
+                :placeholder="t('deviceForm.categoryHolder')"
                 @change="assetclasschange"
                 filterable
               />
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="设备状态" prop="deviceStatus">
-              <el-select v-model="formData.deviceStatus" placeholder="请选择" :disabled="formType==='update'" clearable>
+            <el-form-item :label="t('iotDevice.status')" prop="deviceStatus">
+              <el-select v-model="formData.deviceStatus" :placeholder="t('deviceForm.choose')" :disabled="formType==='update'" clearable>
                 <el-option
                   v-for="dict in getStrDictOptions(DICT_TYPE.PMS_DEVICE_STATUS)"
                   :key="dict.label"
@@ -74,7 +74,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="资产性质" prop="deviceStatus">
+            <el-form-item :label="t('iotDevice.assets')" prop="deviceStatus">
               <el-select v-model="formData.assetProperty" placeholder="请选择" clearable>
                 <el-option
                   v-for="dict in getStrDictOptions(DICT_TYPE.PMS_ASSET_PROPERTY)"
@@ -86,36 +86,36 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="品牌" prop="brandName">
+            <el-form-item :label="t('iotDevice.brand')" prop="brandName">
               <el-select
                 clearable
                 v-model="formData.brandName"
                 @clear="brandClear"
-                placeholder="请输入品牌"
+                :placeholder="t('iotDevice.brandHolder')"
                 @click="openForm"
               />
             </el-form-item>
           </el-col>
           <el-col :span="8" >
             <div style="display: flex;flex-direction: row">
-              <el-form-item label="规格型号" prop="model" style="width: 86%">
+              <el-form-item :label="t('deviceForm.model')" prop="model" style="width: 86%">
                 <el-input
                   clearable
                   v-model="formData.model"
-                  placeholder="请输入规格型号"
+                  :placeholder="t('deviceForm.modelHolder')"
                 />
               </el-form-item>
               <el-button type="info" @click="openModelForm">请选择</el-button>
             </div>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="图片" prop="picUrl">
+            <el-form-item :label="t('deviceForm.picture')" prop="picUrl">
               <UploadImg v-model="formData.picUrl" :disabled="isDetail" height="60px" />
             </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('deviceForm.remark')" prop="remark">
+              <el-input v-model="formData.remark" type="textarea" :placeholder="t('deviceForm.remarkHolder')" />
             </el-form-item>
           </el-col>
         </el-row>
@@ -123,7 +123,7 @@
       <div class="title-div">
         <el-button @click="zzInfoClick" class="title-button">
           <Icon color="black" icon="ep:set-up" :size="18" class="cursor-pointer first-icon" />
-          <span class="cursor-pointer">制造信息</span>
+          <span class="cursor-pointer">{{ t('deviceForm.make') }}</span>
           <Icon
             color="black"
             :icon="zzIsExpanded ? 'fa-solid:angle-double-down' : 'fa-solid:angle-double-right'"
@@ -135,52 +135,52 @@
       <div class="zz-expandable-content" :class="{ 'is-expanded': zzIsExpanded }">
         <el-row>
           <el-col :span="8">
-            <el-form-item label="制造商" prop="manufacturerId">
+            <el-form-item :label="t('deviceForm.mfg')" prop="manufacturerId">
               <el-select
                 clearable
                 @clear="zzClear"
                 v-model="formData.manufacturerName"
-                placeholder="请输入制造商"
+                :placeholder="t('deviceForm.mfgHolder')"
                 @click="openCustomerZz"
               />
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="生产日期" prop="manDate">
+            <el-form-item :label="t('deviceForm.pd')" prop="manDate">
               <el-date-picker
                 style="width: 150%"
                 v-model="formData.manDate"
                 type="date"
                 value-format="x"
-                placeholder="选择生产日期"
+                :placeholder="t('deviceForm.pdHolder')"
               />
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="供应商" prop="supplierId">
+            <el-form-item :label="t('deviceForm.supplier')" prop="supplierId">
               <el-select
                 clearable
                 @clear="supplierClear"
                 v-model="formData.supplierName"
-                placeholder="请输入供应商"
+                :placeholder="t('deviceForm.suppHolder')"
                 @click="openCustomerSupplier"
               />
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="质保到期" prop="expires">
+            <el-form-item :label="t('deviceForm.warranty')" prop="expires">
               <el-date-picker
                 style="width: 150%"
                 v-model="formData.expires"
                 type="date"
                 value-format="x"
-                placeholder="选择质保到期"
+                :placeholder="t('deviceForm.warrHolder')"
               />
             </el-form-item>
           </el-col>
           <el-col :span="16">
-            <el-form-item label="铭牌信息" prop="nameplate">
-              <el-input v-model="formData.nameplate" type="textarea" placeholder="请输入铭牌信息" />
+            <el-form-item :label="t('deviceForm.ni')" prop="nameplate">
+              <el-input v-model="formData.nameplate" type="textarea" :placeholder="t('deviceForm.niHolder')"/>
             </el-form-item>
           </el-col>
         </el-row>
@@ -188,7 +188,7 @@
       <div class="title-div">
         <el-button @click="cwInfoClick" class="title-button">
           <Icon color="black" icon="ep:set-up" :size="18" class="cursor-pointer first-icon" />
-          <span class="cursor-pointer">财务信息</span>
+          <span class="cursor-pointer">{{ t('deviceForm.finance') }}</span>
           <Icon
             color="black"
             :icon="cwIsExpanded ? 'fa-solid:angle-double-down' : 'fa-solid:angle-double-right'"
@@ -267,7 +267,7 @@
       <div class="title-div">
         <el-button @click="qtInfoClick" class="title-button">
           <Icon color="black" icon="ep:set-up" :size="18" class="cursor-pointer first-icon" />
-          <span class="cursor-pointer">其它信息</span>
+          <span class="cursor-pointer">{{ t('deviceForm.other') }}</span>
           <Icon
             color="black"
             :icon="qtIsExpanded ? 'fa-solid:angle-double-down' : 'fa-solid:angle-double-right'"
@@ -332,12 +332,12 @@
     </el-form>
     <el-form>
       <el-form-item style="float: right">
-        <el-button type="success" @click="allzhankai">一键展开</el-button>
-        <el-button type="info" @click="allshouqi">一键收起</el-button>
+        <el-button type="success" @click="allzhankai">{{ t('deviceForm.expand') }}</el-button>
+        <el-button type="info" @click="allshouqi">{{ t('deviceForm.close') }}</el-button>
         <el-button v-if="!isDetail" :loading="formLoading" type="warning" @click="submitForm">
-          保存
+          {{ t('deviceForm.save') }}
         </el-button>
-        <el-button @click="close" type="primary">返回</el-button>
+        <el-button @click="close" type="primary">{{ t('deviceForm.return') }}</el-button>
       </el-form-item>
     </el-form>
   </ContentWrap>

+ 26 - 25
src/views/pms/device/index.vue

@@ -17,38 +17,38 @@
           :inline="true"
           label-width="68px"
         >
-          <el-form-item label="设备编码" prop="deviceCode">
+          <el-form-item :label="t('iotDevice.code')" prop="deviceCode" style="margin-left: 25px">
             <el-input
               v-model="queryParams.deviceCode"
-              placeholder="请输入设备编码"
+              :placeholder="t('iotDevice.codeHolder')"
               clearable
               @keyup.enter="handleQuery"
               class="!w-200px"
             />
           </el-form-item>
-          <el-form-item label="设备名称" prop="deviceName">
+          <el-form-item :label="t('iotDevice.name')" prop="deviceName">
             <el-input
               v-model="queryParams.deviceName"
-              placeholder="请输入设备名称"
+              :placeholder="t('iotDevice.nameHolder')"
               clearable
               @keyup.enter="handleQuery"
               class="!w-200px"
             />
           </el-form-item>
-          <el-form-item label="品牌" prop="brand">
+          <el-form-item :label="t('iotDevice.brand')" prop="brand">
             <el-input
               v-model="queryParams.brand"
-              placeholder="请输入品牌"
+              :placeholder="t('iotDevice.brandHolder')"
               clearable
               @keyup.enter="handleQuery"
               class="!w-200px"
             />
           </el-form-item>
 
-          <el-form-item v-show="ifShow" label="设备状态" label-width="85px" prop="deviceStatus">
+          <el-form-item v-show="ifShow" :label="t('iotDevice.status')" label-width="85px" prop="deviceStatus">
             <el-select
               v-model="queryParams.deviceStatus"
-              placeholder="设备状态"
+              :placeholder="t('iotDevice.statusHolder')"
               clearable
               class="!w-240px"
             >
@@ -61,10 +61,10 @@
             </el-select>
           </el-form-item>
 
-          <el-form-item v-show="ifShow" label="资产性质" prop="assetProperty">
+          <el-form-item v-show="ifShow" :label="t('iotDevice.assets')" prop="assetProperty">
             <el-select
               v-model="queryParams.assetProperty"
-              placeholder="资产性质"
+              :placeholder="t('iotDevice.assetsHolder')"
               clearable
               class="!w-240px"
             >
@@ -79,16 +79,17 @@
 
           <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
+              ><Icon icon="ep:search" class="mr-5px" />{{t('operationFill.search')}}</el-button
             >
             <el-button @click="resetQuery"
-              ><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button
+              ><Icon icon="ep:refresh" class="mr-5px" /> {{t('operationFill.reset')}}</el-button
             >
             <el-button
               type="primary"
@@ -96,7 +97,7 @@
               @click="openForm('create', undefined, queryParams.deptId)"
               v-hasPermi="['rq:iot-device:create']"
             >
-              <Icon icon="ep:plus" class="mr-5px" /> 新增
+              <Icon icon="ep:plus" class="mr-5px" /> {{t('operationFill.add')}}
             </el-button>
             <el-button
               type="success"
@@ -114,13 +115,13 @@
       <!-- 列表 -->
       <ContentWrap>
         <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" @sort-change="handleSortChange">
-          <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="设备编码" sortable align="center" prop="deviceCode" />
-          <el-table-column label="设备名称" sortable align="center" prop="deviceName">
+          <el-table-column :label="t('iotDevice.code')" sortable align="center" prop="deviceCode" />
+          <el-table-column :label="t('iotDevice.name')" sortable align="center" prop="deviceName">
             <template #default="scope">
               <el-link :underline="false" type="primary" @click="handleDetail(scope.row.id)">
                 {{ scope.row.deviceName }}
@@ -130,18 +131,18 @@
             <!--          <div class="custom-cell">{{ row.deviceName }}</div>-->
             <!--        </template>-->
           </el-table-column>
-          <el-table-column label="所在部门" align="center" prop="deptName" />
-          <el-table-column label="设备状态" align="center" prop="deviceStatus">
+          <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="资产性质" align="center" prop="assetProperty">
+          <el-table-column :label="t('iotDevice.assets')" align="center" prop="assetProperty">
             <template #default="scope">
               <dict-tag :type="DICT_TYPE.PMS_ASSET_PROPERTY" :value="scope.row.assetProperty" />
             </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
@@ -149,7 +150,7 @@
                 @click="openForm('update', scope.row.id)"
                 v-hasPermi="['rq:iot-device:update']"
               >
-                编辑
+                {{t('iotDevice.update')}}
               </el-button>
               <el-button
                 link
@@ -157,10 +158,10 @@
                 @click="handleDelete(scope.row.id)"
                 v-hasPermi="['rq:iot-device:delete']"
               >
-                删除
+                {{t('iotDevice.delete')}}
               </el-button>
               <el-button link type="warning" @click="handleUpload(scope.row.id)">
-                资料上传
+                {{t('iotDevice.upload')}}
               </el-button>
             </template>
           </el-table-column>

+ 19 - 19
src/views/pms/device/monitor/index.vue

@@ -17,19 +17,19 @@
         :inline="true"
         label-width="68px"
       >
-        <el-form-item label="设备名称" prop="deviceName">
+        <el-form-item :label="t('monitor.deviceName')" prop="deviceName" style="margin-left: 25px">
           <el-input
             v-model="queryParams.deviceName"
-            placeholder="请输入设备名称"
+            :placeholder="t('monitor.nameHolder')"
             clearable
             @keyup.enter="handleQuery"
             class="!w-240px"
           />
         </el-form-item>
-        <el-form-item label="设备编码" prop="deviceCode">
+        <el-form-item :label="t('monitor.deviceCode')" prop="deviceCode">
           <el-input
             v-model="queryParams.deviceCode"
-            placeholder="请输入设备编码"
+            :placeholder="t('monitor.codeHolder')"
             clearable
             @keyup.enter="handleQuery"
             class="!w-240px"
@@ -48,11 +48,11 @@
         <el-form-item>
           <el-button @click="handleQuery">
             <Icon icon="ep:search" class="mr-5px" />
-            搜索
+            {{t('monitor.search')}}
           </el-button>
           <el-button @click="resetQuery">
             <Icon icon="ep:refresh" class="mr-5px" />
-            重置
+            {{t('monitor.reset')}}
           </el-button>
           <el-button
             type="success"
@@ -113,19 +113,19 @@
                 <div class="flex items-center text-[14px]">
                   <div class="flex-1">
                     <div class="mb-2.5 last:mb-0">
-                      <span class="text-[#717c8e] mr-2.5">编号</span>
+                      <span class="text-[#717c8e] mr-2.5">{{ t('monitor.deviceCode') }}</span>
                       <span class="text-[#0070ff]">
                         {{ item.deviceCode }}
                       </span>
                     </div>
                     <div class="mb-2.5 last:mb-0">
-                      <span class="text-[#717c8e] mr-2.5">类型</span>
+                      <span class="text-[#717c8e] mr-2.5">{{t('monitor.category')}}</span>
                       <span class="text-[#0070ff]">
                         {{ item.assetClassName }}
                       </span>
                     </div>
                     <div class="mb-2.5 last:mb-0">
-                      <span class="text-[#717c8e] mr-2.5">最新时间</span>
+                      <span class="text-[#717c8e] mr-2.5">{{ t('monitor.latestDataTime') }}</span>
                       <span class="text-[#0070ff]">
                         {{ item.lastInlineTime }}
                       </span>
@@ -148,7 +148,7 @@
                     @click="openDetail(item.id, item.ifInline, item.lastInlineTime,item.deviceName,item.deviceCode,item.deptName)"
                   >
                     <Icon icon="ep:view" class="mr-1" />
-                    详情
+                    {{ t('monitor.details') }}
                   </el-button>
 <!--                  <div class="mx-[10px] h-[20px] w-[1px] bg-[#dcdfe6]"></div>-->
                 </div>
@@ -167,44 +167,44 @@
         :show-overflow-tooltip="true"
 
       >
-        <el-table-column label="序号" width="60" align="center">
+        <el-table-column :label="t('monitor.serial')" width="60" align="center">
           <template #default="scope">
             {{ scope.$index + 1 }}
           </template>
         </el-table-column>
-        <el-table-column label="设备名称" align="center" prop="deviceName">
+        <el-table-column :label="t('monitor.deviceName')" align="center" prop="deviceName">
           <template #default="scope">
             <el-link @click="openDetail(scope.row.id)">{{ scope.row.deviceName }}</el-link>
           </template>
         </el-table-column>
-        <el-table-column label="资产编码" align="center" prop="deviceCode" />
+        <el-table-column :label="t('monitor.deviceCode')"  align="center" prop="deviceCode" />
 
-        <el-table-column label="设备类别" align="center" prop="assetClassName" />
-        <el-table-column label="设备状态" align="center" prop="deviceStatus" >
+        <el-table-column :label="t('monitor.category')" align="center" prop="assetClassName" />
+        <el-table-column :label="t('monitor.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="在线状态" align="center" prop="ifInline" >
+        <el-table-column :label="t('monitor.online')" align="center" prop="ifInline" >
           <template #default="scope">
             <dict-tag :type="DICT_TYPE.IOT_DEVICE_STATUS" :value="scope.row.ifInline" />
           </template>
         </el-table-column>
         <el-table-column
-          label="最新数据时间"
+          :label="t('monitor.latestDataTime')"
           align="center"
           prop="lastInlineTime"
           :formatter="dateFormatter"
           width="180px"
         />
-        <el-table-column label="操作" align="center" min-width="120px">
+        <el-table-column :label="t('monitor.operation')" align="center" min-width="120px">
           <template #default="scope">
             <el-button
               link
               type="primary"
               @click="openDetail(scope.row.id, scope.row.ifInline, scope.row.lastInlineTime,scope.row.deviceName,scope.row.deviceCode)"
             >
-              查看
+              {{t('monitor.check')}}
             </el-button>
           </template>
         </el-table-column>

+ 14 - 14
src/views/pms/device/personlog/ConfigDevicePerson.vue

@@ -4,7 +4,7 @@
       <!-- 左侧设备列表 -->
       <el-col :span="12">
         <div class="card">
-          <h3>设备列表</h3>
+          <h3>{{ t('configPerson.deviceList') }}</h3>
           <div class="dept-select">
             <el-tree-select
               clearable
@@ -14,7 +14,7 @@
               check-strictly
               node-key="id"
               filterable
-              placeholder="请选择设备所属部门"
+              :placeholder="t('configPerson.deviceListHolder')"
               @node-click="handleDeptDeviceTreeNodeClick"
             />
           </div>
@@ -37,7 +37,7 @@
       <!-- 右侧责任人选择 -->
       <el-col :span="12">
         <div class="card">
-          <h3>责任人关联设置</h3>
+          <h3>{{ t('configPerson.rp') }}</h3>
           <div class="dept-select">
             <el-tree-select
               clearable
@@ -47,7 +47,7 @@
               check-strictly
               node-key="id"
               filterable
-              placeholder="请选择人员所属部门"
+              :placeholder="t('configPerson.rpHolder')"
               @node-click="handleDeptUserTreeNodeClick"
             />
           </div>
@@ -72,10 +72,10 @@
     <!-- 暂存关联列表 -->
     <div class="submit-area">
       <div class="card">
-        <h3>调整原因<span class="required-star">*</span></h3>
+        <h3>{{ t('configPerson.reasonForAdjustment') }}<span class="required-star">*</span></h3>
         <el-input
           v-model="formData.reason"
-          placeholder="请输入调整原因"
+          :placeholder="t('configPerson.rfaHolder')"
           class="reason-input"
           type="textarea"
           :rows="3"
@@ -84,19 +84,19 @@
         />
       </div>
       <div class="temp-list card">
-        <h3>设备责任人调整记录</h3>
+        <h3>{{ t('configPerson.adjustmentRecords') }}</h3>
         <el-table :data="tempRelations" style="width: 100%">
-          <el-table-column prop="deviceNames" label="设备" width="200" />
-          <el-table-column prop="userNames" label="关联责任人" />
-          <el-table-column prop="reason" label="调整原因" />
-          <el-table-column label="操作" width="120">
+          <el-table-column prop="deviceNames" :label="t('devicePerson.deviceName')" width="200" />
+          <el-table-column prop="userNames" :label="t('devicePerson.rp')" />
+          <el-table-column prop="reason" :label="t('devicePerson.reasonForAdjustment')" />
+          <el-table-column :label="t('devicePerson.operation')" width="120">
             <template #default="{ row }">
               <el-button
                 type="danger"
                 size="small"
                 @click="removeTempRelation(row.deviceIds)"
               >
-                删除
+                {{ t('fault.del') }}
               </el-button>
             </template>
           </el-table-column>
@@ -109,7 +109,7 @@
             @click="submitRelations"
             :disabled="tempRelations.length === 0"
           >
-            保 存
+            {{ t('iotMaintain.save') }}
           </el-button>
         </div>
       </div>
@@ -128,7 +128,7 @@ import * as UserApi from "@/api/system/user";
 import {simpleUserList, UserVO} from "@/api/system/user";
 import { useRouter } from 'vue-router'
 const router = useRouter()
-
+const { t } = useI18n() // 国际化
 defineOptions({ name: 'ConfigDevicePerson' })
 
 const simpleDevices = ref<IotDeviceVO[]>([])

+ 25 - 24
src/views/pms/device/personlog/DevicePerson.vue

@@ -16,29 +16,29 @@
           :inline="true"
           label-width="68px"
         >
-          <el-form-item label="资产编码" prop="deviceCode">
+          <el-form-item :label="t('devicePerson.deviceCode')" prop="deviceCode" style="margin-left: 25px">
             <el-input
               v-model="queryParams.deviceCode"
-              placeholder="请输入资产编码"
+              :placeholder="t('devicePerson.codeHolder')"
               clearable
               @keyup.enter="handleQuery"
               class="!w-200px"
             />
           </el-form-item>
-          <el-form-item label="设备名称" prop="deviceName">
+          <el-form-item :label="t('devicePerson.deviceName')" prop="deviceName">
             <el-input
               v-model="queryParams.deviceName"
-              placeholder="请输入设备名称"
+              :placeholder="t('devicePerson.nameHolder')"
               clearable
               @keyup.enter="handleQuery"
               class="!w-200px"
             />
           </el-form-item>
 
-          <el-form-item label="是否设置了责任人" prop="setFlag" label-width="140px">
+          <el-form-item :label="t('devicePerson.responsiblePerson')" prop="setFlag" label-width="140px">
             <el-select
               v-model="queryParams.setFlag"
-              placeholder="请选择"
+              :placeholder="t('devicePerson.choose')"
               clearable
               class="!w-240px"
             >
@@ -50,10 +50,10 @@
               />
             </el-select>
           </el-form-item>
-          <el-form-item v-show="ifShow" label="设备状态" label-width="85px" prop="deviceStatus">
+          <el-form-item v-show="ifShow" :label="t('devicePerson.status')" label-width="85px" prop="deviceStatus">
             <el-select
               v-model="queryParams.deviceStatus"
-              placeholder="设备状态"
+              :placeholder="t('devicePerson.status')"
               clearable
               class="!w-240px"
             >
@@ -66,10 +66,10 @@
             </el-select>
           </el-form-item>
 
-          <el-form-item v-show="ifShow" label="资产性质" prop="assetProperty">
+          <el-form-item v-show="ifShow" :label="t('devicePerson.assets')" prop="assetProperty">
             <el-select
               v-model="queryParams.assetProperty"
-              placeholder="资产性质"
+              :placeholder="t('devicePerson.assets')"
               clearable
               class="!w-240px"
             >
@@ -82,10 +82,10 @@
             </el-select>
           </el-form-item>
 
-          <el-form-item v-show="ifShow" label="品牌" prop="brand">
+          <el-form-item v-show="ifShow" :label="t('devicePerson.brand')" prop="brand">
             <el-input
               v-model="queryParams.brand"
-              placeholder="请输入品牌"
+              :placeholder="t('devicePerson.brandHolder')"
               clearable
               @keyup.enter="handleQuery"
               class="!w-200px"
@@ -94,16 +94,17 @@
 
           <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('devicePerson.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('devicePerson.closeSearch') }}</el-button
             >
             <el-button @click="handleQuery"
-              ><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button
+              ><Icon icon="ep:search" class="mr-5px" /> {{ t('devicePerson.search') }}</el-button
             >
             <el-button @click="resetQuery"
-              ><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button
+              ><Icon icon="ep:refresh" class="mr-5px" /> {{ t('devicePerson.reset') }}</el-button
             >
             <el-button
               type="primary"
@@ -111,7 +112,7 @@
               @click="openForm('create', undefined, queryParams.deptId)"
               v-hasPermi="['rq:iot-device:create']"
             >
-              <Icon icon="ep:plus" class="mr-5px" /> 设置责任人
+              <Icon icon="ep:plus" class="mr-5px" /> {{ t('devicePerson.setUp') }}
             </el-button>
             <el-button
               type="success"
@@ -129,22 +130,22 @@
       <!-- 列表 -->
       <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('monitor.serial')" width="70" align="center">
             <template #default="scope">
               {{ scope.$index + 1 }}
             </template>
           </el-table-column>
-          <el-table-column label="资产编码" align="center" prop="deviceCode" />
-          <el-table-column label="设备名称" align="center" prop="deviceName">
+          <el-table-column :label="t('monitor.deviceCode')" align="center" prop="deviceCode" />
+          <el-table-column :label="t('monitor.deviceName')" align="center" prop="deviceName">
             <template #default="scope">
               <el-link :underline="false" type="primary" @click="handleDetail(scope.row.id)">
                 {{ scope.row.deviceName }}
               </el-link>
             </template>
           </el-table-column>
-          <el-table-column label="所在部门" align="center" prop="deptName" />
-          <el-table-column label="责任人" align="center" prop="responsibleNames" />
-          <el-table-column label="操作" align="center" min-width="120px">
+          <el-table-column :label="t('devicePerson.dept')" align="center" prop="deptName" />
+          <el-table-column :label="t('devicePerson.rp')" align="center" prop="responsibleNames" />
+          <el-table-column :label="t('devicePerson.operation')" align="center" min-width="120px">
             <template #default="scope">
               <el-button
                 link
@@ -152,7 +153,7 @@
                 @click="handleView(scope.row.id)"
                 v-hasPermi="['rq:iot-device:query']"
               >
-                调整记录
+                {{ t('devicePerson.adjustmentRecords') }}
               </el-button>
             </template>
           </el-table-column>

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

@@ -1,6 +1,6 @@
 <template>
   <el-drawer
-    title="设备责任人调整记录"
+    :title="t('configDevice.adjustmentRecords')"
     :append-to-body="true"
     :model-value="modelValue"
     @update:model-value="$emit('update:modelValue', $event)"
@@ -12,14 +12,14 @@
     <template v-if="deviceId">
       <div v-loading="loading" style="height: 100%">
         <el-table :data="devicePersons" style="width: 100%">
-          <el-table-column prop="deviceName" label="设备名称" width="180" />
-          <el-table-column prop="deviceCode" label="设备编码" width="180" />
-          <el-table-column prop="oldPersonNames" label="调整前责任人" width="180" />
-          <el-table-column prop="newPersonNames" label="调用后责任人" width="180" />
-          <el-table-column prop="reason" label="调整原因" width="180" />
-          <el-table-column prop="creatorName" label="调整人" width="180" />
+          <el-table-column prop="deviceName" :label="t('deviceStatus.deviceName')" width="180" />
+          <el-table-column prop="deviceCode" :label="t('deviceStatus.deviceCode')" width="180" />
+          <el-table-column prop="oldPersonNames" :label="t('deviceStatus.beforePerson')" width="180" />
+          <el-table-column prop="newPersonNames" :label="t('deviceStatus.afterPerson')" width="180" />
+          <el-table-column prop="reason" :label="t('configDevice.reasonForAdjustment')" width="180" />
+          <el-table-column prop="creatorName"  :label="t('deviceStatus.adjuster')" width="180" />
           <el-table-column
-            label="调整时间"
+            :label="t('deviceStatus.adjustTime')"
             align="center"
             prop="createTime"
             width="180"
@@ -39,7 +39,7 @@
   </el-drawer>
 </template>
 <script setup lang="ts">
-
+const { t } = useI18n() // 国际化
 import { ref, watch, defineOptions, defineEmits } from 'vue'
 import { ElMessage } from 'element-plus'
 import {dateFormatter} from "@/utils/formatTime";

+ 13 - 13
src/views/pms/device/statuslog/ConfigDeviceStatus.vue

@@ -4,7 +4,7 @@
       <!-- 左侧设备列表 -->
       <el-col :span="12" class="col-wrapper">
         <div class="card">
-          <h3>设备列表</h3>
+          <h3>{{ t('configPerson.deviceList') }}</h3>
           <div class="dept-select">
             <el-tree-select
               clearable
@@ -14,7 +14,7 @@
               check-strictly
               node-key="id"
               filterable
-              placeholder="请选择设备所属部门"
+              :placeholder="t('configPerson.deviceListHolder')"
               @node-click="handleDeptDeviceTreeNodeClick"
             />
           </div>
@@ -37,12 +37,12 @@
       <!-- 右侧设备状态 -->
       <el-col :span="12" class="col-wrapper">
         <div class="card">
-          <h3>设备状态</h3>
+          <h3>{{ t('configDevice.rp') }}</h3>
           <div class="dept-select">
             <el-select
               v-model="formData.deviceStatus"
               @change="handleStatusChange"
-              placeholder="请选择"
+              :placeholder="t('deviceStatus.choose')"
               clearable
               :disabled="selectedDevices.length === 0"
             >
@@ -57,7 +57,7 @@
 
           <el-input
             v-model="formData.reason"
-            placeholder="请输入调整原因"
+            :placeholder="t('configDevice.rfaHolder')"
             :disabled="!formData.deviceStatus"
             class="reason-input"
             type="textarea"
@@ -74,27 +74,27 @@
 
     <!-- 暂存关联列表 -->
     <div class="temp-list card">
-      <h3>设备状态调整记录</h3>
+      <h3>{{ t('configPerson.adjustmentRecords') }}</h3>
       <el-table :data="tempRelations" style="width: 100%">
-        <el-table-column prop="deviceNames" label="设备" width="200" >
+        <el-table-column prop="deviceNames" :label="t('deviceStatus.deviceName')" width="200" >
           <template #default="{ row }">
             {{ row.deviceNames }}
           </template>
         </el-table-column>
-        <el-table-column prop="status" label="状态" >
+        <el-table-column prop="status" :label="t('deviceStatus.status')" >
           <template #default="scope">
             <dict-tag :type="DICT_TYPE.PMS_DEVICE_STATUS" :value="scope.row.status" />
           </template>
         </el-table-column>
-        <el-table-column prop="reason" label="调整原因" />
-        <el-table-column label="操作" width="120">
+        <el-table-column prop="reason" :label="t('configDevice.reasonForAdjustment')" />
+        <el-table-column :label="t('deviceStatus.operation')" width="120">
           <template #default="{ row }">
             <el-button
               type="danger"
               size="small"
               @click="removeTempRelation(row.deviceId)"
             >
-              删除
+              {{ t('fault.del') }}
             </el-button>
           </template>
         </el-table-column>
@@ -107,7 +107,7 @@
           @click="submitRelations"
           :disabled="tempRelations.length === 0"
         >
-          保 存
+          {{ t('iotMaintain.save') }}
         </el-button>
       </div>
     </div>
@@ -124,7 +124,7 @@ import {simpleUserList, UserVO} from "@/api/system/user";
 import {DICT_TYPE, getStrDictOptions} from "@/utils/dict";
 import { useRouter } from 'vue-router'
 const router = useRouter()
-
+const { t } = useI18n() // 国际化
 defineOptions({ name: 'ConfigDeviceStatus' })
 
 const simpleDevices = ref<IotDeviceVO[]>([])

+ 25 - 24
src/views/pms/device/statuslog/DeviceStatus.vue

@@ -16,28 +16,28 @@
           :inline="true"
           label-width="68px"
         >
-          <el-form-item label="资产编码" prop="deviceCode">
+          <el-form-item :label="t('devicePerson.deviceCode')" prop="deviceCode" style="margin-left: 25px">
             <el-input
               v-model="queryParams.deviceCode"
-              placeholder="请输入资产编码"
+              :placeholder="t('devicePerson.codeHolder')"
               clearable
               @keyup.enter="handleQuery"
               class="!w-200px"
             />
           </el-form-item>
-          <el-form-item label="设备名称" prop="deviceName">
+          <el-form-item :label="t('devicePerson.deviceName')" prop="deviceName">
             <el-input
               v-model="queryParams.deviceName"
-              placeholder="请输入设备名称"
+              :placeholder="t('devicePerson.nameHolder')"
               clearable
               @keyup.enter="handleQuery"
               class="!w-200px"
             />
           </el-form-item>
-          <el-form-item label="是否调整了状态" prop="setFlag" label-width="140px">
+          <el-form-item :label="t('deviceStatus.statusAdjust')" prop="setFlag" label-width="140px">
             <el-select
               v-model="queryParams.setFlag"
-              placeholder="请选择"
+              :label="t('deviceStatus.statusAdjust')"
               clearable
               class="!w-240px"
             >
@@ -49,10 +49,10 @@
               />
             </el-select>
           </el-form-item>
-          <el-form-item v-show="ifShow" label="设备状态" label-width="85px" prop="deviceStatus">
+          <el-form-item v-show="ifShow" :label="t('devicePerson.status')" label-width="85px" prop="deviceStatus">
             <el-select
               v-model="queryParams.deviceStatus"
-              placeholder="设备状态"
+              :label="t('devicePerson.status')"
               clearable
               class="!w-240px"
             >
@@ -65,10 +65,10 @@
             </el-select>
           </el-form-item>
 
-          <el-form-item v-show="ifShow" label="资产性质" prop="assetProperty">
+          <el-form-item v-show="ifShow" :label="t('devicePerson.assets')" prop="assetProperty">
             <el-select
               v-model="queryParams.assetProperty"
-              placeholder="资产性质"
+              :label="t('devicePerson.assetsHolder')"
               clearable
               class="!w-240px"
             >
@@ -81,10 +81,10 @@
             </el-select>
           </el-form-item>
 
-          <el-form-item v-show="ifShow" label="品牌" prop="brand">
+          <el-form-item v-show="ifShow" :label="t('devicePerson.brand')" prop="brand">
             <el-input
               v-model="queryParams.brand"
-              placeholder="请输入品牌"
+              :label="t('devicePerson.brandHolder')"
               clearable
               @keyup.enter="handleQuery"
               class="!w-200px"
@@ -93,16 +93,17 @@
 
           <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('devicePerson.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('devicePerson.closeSearch') }}</el-button
             >
             <el-button @click="handleQuery"
-              ><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button
+              ><Icon icon="ep:search" class="mr-5px" /> {{ t('devicePerson.search') }}</el-button
             >
             <el-button @click="resetQuery"
-              ><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button
+              ><Icon icon="ep:refresh" class="mr-5px" /> {{ t('devicePerson.reset') }}</el-button
             >
             <el-button
               type="primary"
@@ -110,7 +111,7 @@
               @click="openForm('create', undefined, queryParams.deptId)"
               v-hasPermi="['rq:iot-device:create']"
             >
-              <Icon icon="ep:plus" class="mr-5px" /> 调整状态
+              <Icon icon="ep:plus" class="mr-5px" /> {{ t('devicePerson.setUp') }}
             </el-button>
             <el-button
               type="success"
@@ -128,21 +129,21 @@
       <!-- 列表 -->
       <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('monitor.serial')" width="70" align="center" >
             <template #default="scope">
               {{ scope.$index + 1 }}
             </template>
           </el-table-column>
-          <el-table-column label="资产编码" align="center" prop="deviceCode" />
-          <el-table-column label="设备名称" align="center" prop="deviceName">
+          <el-table-column :label="t('monitor.deviceCode')" align="center" prop="deviceCode" />
+          <el-table-column :label="t('monitor.deviceName')" align="center" prop="deviceName">
             <template #default="scope">
               <el-link :underline="false" type="primary" @click="handleDetail(scope.row.id)">
                 {{ scope.row.deviceName }}
               </el-link>
             </template>
           </el-table-column>
-          <el-table-column label="所在部门" align="center" prop="deptName" />
-          <el-table-column label="设备状态" align="center" prop="deviceStatus">
+          <el-table-column :label="t('devicePerson.dept')" align="center" prop="deptName" />
+          <el-table-column :label="t('deviceStatus.status')" align="center" prop="deviceStatus">
             <template #default="scope">
               <dict-tag :type="DICT_TYPE.PMS_DEVICE_STATUS" :value="scope.row.deviceStatus" />
             </template>
@@ -155,7 +156,7 @@
             :formatter="dateFormatter"
             width="180px"
           /> -->
-          <el-table-column label="操作" align="center" min-width="120px">
+          <el-table-column :label="t('deviceStatus.operation')" align="center" min-width="120px">
             <template #default="scope">
               <el-button
                 link
@@ -163,7 +164,7 @@
                 @click="handleView(scope.row.id)"
                 v-hasPermi="['rq:iot-device:query']"
               >
-                调整记录
+                {{ t('deviceStatus.adjustmentRecords') }}
               </el-button>
             </template>
           </el-table-column>

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

@@ -1,6 +1,6 @@
 <template>
   <el-drawer
-    title="设备状态调整记录"
+    :title="t('configDevice.adjustmentRecords')"
     :append-to-body="true"
     :model-value="modelValue"
     @update:model-value="$emit('update:modelValue', $event)"
@@ -12,22 +12,22 @@
     <template v-if="deviceId">
       <div v-loading="loading" style="height: 100%">
         <el-table :data="deviceStatuses" style="width: 100%">
-          <el-table-column prop="deviceName" label="设备名称" width="180" />
-          <el-table-column prop="deviceCode" label="设备编码" width="180" />
-          <el-table-column prop="oldStatus" label="调整前状态" width="180" >
+          <el-table-column prop="deviceName" :label="t('deviceStatus.deviceName')" width="180" />
+          <el-table-column prop="deviceCode" :label="t('deviceStatus.deviceCode')" width="180" />
+          <el-table-column prop="oldStatus" :label="t('deviceStatus.beforeStatus')" width="180" >
             <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="调用后状态" width="180" >
+          <el-table-column prop="newStatus" :label="t('deviceStatus.afterStatus')" width="180" >
             <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="调整原因" width="180" />
-          <el-table-column prop="creatorName" label="调整人" width="180" />
+          <el-table-column prop="reason" :label="t('configDevice.reasonForAdjustment')" width="180" />
+          <el-table-column prop="creatorName" :label="t('deviceStatus.adjuster')" width="180" />
           <el-table-column
-            label="调整时间"
+            :label="t('deviceStatus.adjustTime')"
             align="center"
             prop="createTime"
             width="180"
@@ -55,7 +55,7 @@ import {dateFormatter} from "@/utils/formatTime";
 import {DICT_TYPE} from "@/utils/dict";
 const drawerVisible = ref<boolean>(false)
 const emit = defineEmits(['update:modelValue', 'add', 'delete'])
-
+const { t } = useI18n() // 国际化
 defineOptions({
   name: 'DeviceStatusLogDrawer'
 })

+ 16 - 13
src/views/pms/failure/DeviceList.vue

@@ -1,5 +1,5 @@
 <template>
-  <Dialog v-model="dialogVisible" title="选择设备" style="width: 1100px; max-height: 800px">
+  <Dialog v-model="dialogVisible" :title="t('deviceList.selectDevice')" style="width: 1100px; max-height: 800px">
     <ContentWrap>
       <el-form
         class="-mb-15px"
@@ -8,27 +8,28 @@
         :inline="true"
         label-width="68px"
       >
-        <el-form-item label="设备名称" prop="deviceName">
+        <el-form-item :label="t('deviceList.deviceName')" prop="deviceName" style="margin-left: 25px">
           <el-input
             v-model="queryParams.deviceName"
-            placeholder="请输入设备名称"
+            :placeholder="t('deviceList.nameHolder')"
             clearable
             @keyup.enter="handleQuery"
             class="!w-240px"
           />
         </el-form-item>
-        <el-form-item label="资产编码" prop="deviceCode">
+        <el-form-item :label="t('deviceList.deviceCode')" prop="deviceCode">
           <el-input
             v-model="queryParams.deviceCode"
-            placeholder="请输入资产编码"
+            :placeholder="t('deviceList.codeHolder')"
             clearable
             @keyup.enter="handleQuery"
             class="!w-240px"
           />
         </el-form-item>
         <el-form-item>
-          <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
-          <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
+          <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" />
+            {{ t('deviceList.search') }}</el-button>
+          <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> {{ t('deviceList.reset') }}</el-button>
         </el-form-item>
       </el-form>
     </ContentWrap>
@@ -40,7 +41,7 @@
         :show-overflow-tooltip="true"
         @row-click="handleRowClick"
       >
-        <el-table-column width="60" label="选择">
+        <el-table-column width="120" :label="t('deviceList.select')">
           <template #default="{ row }">
             <el-radio
               :model-value="selectedRow?.id"
@@ -50,16 +51,16 @@
             />
           </template>
         </el-table-column>
-        <el-table-column label="资产编码" align="center" prop="deviceCode" />
-        <el-table-column label="设备名称" align="center" prop="deviceName" />
-        <el-table-column label="所在部门" align="center" prop="deptId" />
-        <el-table-column label="设备状态" align="center" prop="deviceStatus">
+        <el-table-column :label="t('deviceList.deviceCode')" align="center" prop="deviceCode" />
+        <el-table-column :label="t('deviceList.deviceName')" align="center" prop="deviceName" />
+        <el-table-column :label="t('deviceStatus.dept')" align="center" prop="deptId" />
+        <el-table-column :label="t('maintain.status')" align="center" prop="deviceStatus">
           <template #default="scope">
             <dict-tag :type="DICT_TYPE.PMS_DEVICE_STATUS" :value="scope.row.status" />
           </template>
         </el-table-column>
         <el-table-column
-          label="创建时间"
+          :label="t('deviceList.createTime')"
           align="center"
           prop="createTime"
           width="180"
@@ -89,6 +90,8 @@ const loading = ref(true) // 列表的加载中
 const queryFormRef = ref() // 搜索的表单
 const list = ref<IotDeviceVO[]>([]) // 列表的数据
 const total = ref(0) // 列表的总页数
+const { t } = useI18n() // 国际化
+
 const queryParams = reactive({
   pageNo: 1,
   pageSize: 10,

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

@@ -9,11 +9,11 @@
     >
       <el-row >
       <el-col :span="12">
-      <el-form-item label="设备" prop="deviceName">
+      <el-form-item :label="t('faultForm.device')" prop="deviceName">
         <el-select
           :disabled="disabled"
           v-model="formData.deviceName"
-          placeholder="请选择设备"
+          :placeholder="t('faultForm.choose')"
           @click="openForm"
           clearable
           @clear="handleClear"
@@ -21,8 +21,8 @@
       </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="是否解决" prop="ifDeal">
-            <el-select v-model="formData.ifDeal" placeholder="请选择" @change="dealChange" clearable :disabled="disabled">
+          <el-form-item :label="t('faultForm.solve')" prop="ifDeal">
+            <el-select v-model="formData.ifDeal" :placeholder="t('faultForm.choose')" @change="dealChange" clearable :disabled="disabled">
               <el-option
                 v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
                 :key="dict.label"
@@ -33,8 +33,8 @@
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="是否协助" prop="needHelp" >
-            <el-select v-model="formData.needHelp" placeholder="请选择" @change="helpChange" clearable :disabled="disabled">
+          <el-form-item :label="t('faultForm.assist')" prop="needHelp" >
+            <el-select v-model="formData.needHelp" :placeholder="t('faultForm.choose')" @change="helpChange" clearable :disabled="disabled">
               <el-option
                 v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
                 :key="dict.label"
@@ -45,24 +45,24 @@
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="故障系统" prop="failureSystem" :disabled="disabled">
-            <el-input v-model="formData.failureSystem" placeholder="请输入故障系统" :disabled="disabled" />
+          <el-form-item :label="t('faultForm.faultySystem')" prop="failureSystem" :disabled="disabled">
+            <el-input v-model="formData.failureSystem" :placeholder="t('faultForm.faultySystemHolder')" :disabled="disabled" />
           </el-form-item>
         </el-col>
       <el-col :span="12">
-      <el-form-item label="故障时间" prop="failureTime" :disabled="disabled">
+      <el-form-item :label="t('faultForm.failureTime')" prop="failureTime" :disabled="disabled">
         <el-date-picker
           :disabled="disabled"
           style="width: 150%"
           v-model="formData.failureTime"
           type="datetime"
           value-format="x"
-          placeholder="选择故障时间"
+          :placeholder="t('faultForm.failureTimeHolder')"
         />
       </el-form-item>
         </el-col>
         <el-col :span="12" v-if="formData.ifDeal">
-          <el-form-item label="解决时间" prop="dealTime">
+          <el-form-item :label="t('faultForm.failureTime')" prop="dealTime">
             <el-date-picker
               @change="endTimeBlur"
               :disabled="disabled"
@@ -75,8 +75,8 @@
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="是否停机" prop="ifStop">
-            <el-select v-model="formData.ifStop" placeholder="请选择" clearable :disabled="disabled">
+          <el-form-item :label="t('faultForm.shutDown')" prop="ifStop">
+            <el-select v-model="formData.ifStop" :placeholder="t('faultForm.choose')" clearable :disabled="disabled">
               <el-option
                 v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
                 :key="dict.label"
@@ -87,13 +87,13 @@
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="图片" prop="pic">
+          <el-form-item :label="t('faultForm.picture')" prop="pic">
             <UploadImg v-model="formData.pic" height="60px" :disabled="disabled" />
           </el-form-item>
         </el-col>
         <el-col :span="24">
-          <el-form-item label="故障影响" prop="failureInfluence">
-            <el-input type="textarea" v-model="formData.failureInfluence" placeholder="请输入故障影响" :disabled="disabled" />
+          <el-form-item :label="t('faultForm.faultImpact')" prop="failureInfluence">
+            <el-input type="textarea" v-model="formData.failureInfluence" :placeholder="t('faultForm.faultImpactHolder')" :disabled="disabled" />
           </el-form-item>
         </el-col>
       <el-col :span="24">
@@ -102,20 +102,20 @@
       </el-form-item>
         </el-col>
         <el-col :span="24">
-          <el-form-item label="故障描述" prop="description">
+          <el-form-item :label="t('faultForm.faultDescription')" prop="description">
             <el-input type="textarea" v-model="formData.description" :disabled="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="disabled" />
+      <el-form-item :label="t('faultForm.remark')" prop="remark">
+        <el-input v-model="formData.remark" type="textarea" :placeholder="t('faultForm.rHolder')" :disabled="disabled" />
       </el-form-item>
           </el-col>
       </el-row>
     </el-form>
     <template #footer>
-      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
-      <el-button @click="dialogVisible = false">取 消</el-button>
+      <el-button @click="submitForm" type="primary" :disabled="formLoading">{{t('faultForm.ok')}}</el-button>
+      <el-button @click="dialogVisible = false">{{t('faultForm.cancel')}}</el-button>
     </template>
     <DeviceList ref="deviceFormRef" @choose="deviceChoose" />
   </Dialog>

+ 29 - 28
src/views/pms/failure/index.vue

@@ -24,17 +24,17 @@
 <!--              class="!w-200px"-->
 <!--            />-->
 <!--          </el-form-item>-->
-          <el-form-item label="故障标题" label-width="70px" prop="failureName">
+          <el-form-item :label="t('fault.faultTitle')" label-width="70px" prop="failureName">
             <el-input
               v-model="queryParams.failureName"
-              placeholder="请输入故障标题"
+              :placeholder="t('fault.titleHolder')"
               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('fault.status')" label-width="40px" prop="status">
+            <el-select v-model="queryParams.status" :placeholder="t('fault.status')" clearable class="!w-200px">
               <el-option
                 v-for="dict in getStrDictOptions(DICT_TYPE.PMS_FAILURE_STATUS)"
                 :key="dict.value"
@@ -43,10 +43,10 @@
               />
             </el-select>
           </el-form-item>
-          <el-form-item label="是否停机" v-show="ifShow" prop="ifStop">
+          <el-form-item :label="t('fault.shutDown')" v-show="ifShow" prop="ifStop">
             <el-select
               v-model="queryParams.ifStop"
-              placeholder="是否停机"
+              :placeholder="t('fault.shutDown')"
               clearable
               class="!w-200px"
             >
@@ -58,7 +58,7 @@
               />
             </el-select>
           </el-form-item>
-          <el-form-item label="故障时间" v-show="ifShow" prop="failureTime">
+          <el-form-item :label="t('fault.failureTime')" v-show="ifShow" prop="failureTime">
             <el-date-picker
               v-model="queryParams.failureTime"
               value-format="YYYY-MM-DD HH:mm:ss"
@@ -69,10 +69,10 @@
               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"
             >
@@ -84,10 +84,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="是否协助"
+              :placeholder="t('fault.assist')"
               clearable
               class="!w-200px"
             >
@@ -112,19 +112,20 @@
 <!--          </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('fault.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('fault.closeSearch') }}</el-button
             >
             <el-button @click="handleQuery"
-              ><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button
+              ><Icon icon="ep:search" class="mr-5px" /> {{ t('fault.search') }}</el-button
             >
             <el-button @click="resetQuery"
-              ><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button
+              ><Icon icon="ep:refresh" class="mr-5px" /> {{ t('fault.reset') }}</el-button
             >
             <el-button type="primary" plain @click="openForm('create', undefined, false)">
-              <Icon icon="ep:plus" class="mr-5px" /> 新增
+              <Icon icon="ep:plus" class="mr-5px" /> {{ t('fault.added') }}
             </el-button>
             <el-button
               type="success"
@@ -142,42 +143,42 @@
       <!-- 列表 -->
       <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('fault.serial')" width="70" align="center">
             <template #default="scope">
               {{ scope.$index + 1 }}
             </template>
           </el-table-column>
           <!--        <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('fault.faultTitle')" align="center" prop="failureName" />
+          <el-table-column :label="t('fault.deviceName')" align="center" prop="deviceName" />
+          <el-table-column :label="t('fault.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="故障时间"
+            :label="t('fault.failureTime')"
             align="center"
             prop="failureTime"
             :formatter="dateFormatter"
             width="180px"
           />
-          <el-table-column label="解决用时" align="center" prop="dealHour" >
+          <el-table-column :label="t('fault.solveTime')" align="center" prop="dealHour" >
             <template #default="scope">
               {{ scope.row.dealHour&&scope.row.dealHour>0?scope.row.dealHour+'H':"" }}
             </template>
           </el-table-column>
-          <el-table-column label="操作" align="center" min-width="120px">
+          <el-table-column :label="t('fault.operation')" align="center" min-width="120px">
             <template #default="scope">
               <el-button
                 link
@@ -185,7 +186,7 @@
                 @click="openForm('detail', scope.row.id, true)"
                 v-hasPermi="['rq:iot-failure-report:query']"
               >
-                查看
+                {{t('fault.view')}}
               </el-button>
               <el-button
                 link
@@ -194,7 +195,7 @@
                 @click="openForm('update', scope.row.id, false)"
                 v-hasPermi="['rq:iot-failure-report:update']"
               >
-                编辑
+                {{t('fault.edit')}}
               </el-button>
               <el-button
                 link
@@ -203,7 +204,7 @@
                 @click="handleDelete(scope.row.id)"
                 v-hasPermi="['rq:iot-failure-report:delete']"
               >
-                删除
+                {{t('fault.del')}}
               </el-button>
             </template>
           </el-table-column>

+ 7 - 7
src/views/pms/iotinfo/IotInfoFormTree.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('deviceForm.remarkHolder')" />
       </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('common.ok')}}</el-button>
+      <el-button @click="dialogVisible = false">{{t('common.cancel')}}</el-button>
     </template>
   </Dialog>
 </template>

+ 3 - 1
src/views/pms/iotmainworkorder/IotMainWorkOrderAdd.vue

@@ -625,6 +625,7 @@ const deviceChoose = async(selectedDevices) => {
     deviceIds: deviceIds.value.join(',') // 明确传递数组参数
   }
   queryParams.deviceIds = JSON.parse(JSON.stringify(params.deviceIds))
+  queryParams.bomFlag = 'b'
   // 根据选择的设备筛选出设备关系的分类BOM中与保养相关的节点项
   const res = await IotDeviceApi.deviceAssociateBomList(queryParams)
   const rawData = res || []
@@ -774,7 +775,8 @@ const handleInput = (value, obj) => {
 
 const queryParams = reactive({
   deviceIds: undefined,
-  workOrderId: id
+  workOrderId: id,
+  bomFlag: 'b'
 })
 
 const close = () => {

+ 26 - 22
src/views/pms/iotmainworkorder/WorkOrderMaterial.vue

@@ -8,30 +8,34 @@
         :inline="true"
         label-width="68px"
       >
-        <el-form-item label="物料编码" prop="code">
+        <el-form-item :label="t('workOrderMaterial.materialCode')" prop="code">
           <el-input
             v-model="queryParams.materialCode"
-            placeholder="请输入物料编码"
+            :placeholder="t('workOrderMaterial.codeHolder')"
             clearable
             @keyup.enter="handleQuery"
           />
         </el-form-item>
-        <el-form-item label="物料名称" prop="name">
+        <el-form-item :label="t('workOrderMaterial.materialName')" prop="name">
           <el-input
             v-model="queryParams.materialName"
-            placeholder="请输入物料名称"
+            :placeholder="t('workOrderMaterial.nameHolder')"
             clearable
             @keyup.enter="handleQuery"
           />
         </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-button @click="handleConfirm" class="custom-green-button"
-            ><Icon icon="ep:check" class="mr-5px" /> 确认选择</el-button
+            ><Icon icon="ep:check" class="mr-5px" />
+            {{ t('workOrderMaterial.confirm') }}</el-button
           >
           <el-button @click="handleView" type="warning"
-            ><Icon icon="ep:plus" class="mr-5px" /> 新增物料</el-button
+            ><Icon icon="ep:plus" class="mr-5px" />
+            {{ t('workOrderMaterial.added') }}</el-button
           >
         </el-form-item>
       </el-form>
@@ -46,7 +50,7 @@
         @row-click="handleRowClick"
         :row-class-name="rowClassName"
       >
-        <el-table-column width="60" label="选择">
+        <el-table-column width="60" :label="t('workOrderMaterial.select')">
           <template #default="{ row }">
             <el-checkbox
               :model-value="selectedRows.some(item =>
@@ -61,65 +65,65 @@
           </template>
         </el-table-column>
         <el-table-column
-          label="工厂"
+          :label="t('workOrderMaterial.factory')"
           align="center"
           prop="factoryId"
           class="!w-100px"
           v-if="false"
         />
         <el-table-column
-          label="工厂"
+          :label="t('workOrderMaterial.factory')"
           align="center"
           prop="factory"
           :show-overflow-tooltip="true"
           class="!w-100px"
         />
         <el-table-column
-          label="成本中心"
+          :label="t('workOrderMaterial.costCenter')"
           align="center"
           prop="costCenterId"
           class="!w-100px"
           v-if="false"
         />
         <el-table-column
-          label="成本中心"
+          :label="t('workOrderMaterial.costCenter')"
           align="center"
           prop="costCenter"
           :show-overflow-tooltip="true"
           class="!w-100px"
         />
         <el-table-column
-          label="库存地点"
+          :label="t('workOrderMaterial.storageLocation')"
           align="center"
           prop="storageLocationId"
           class="!w-100px"
           v-if="false"
         />
         <el-table-column
-          label="库存地点"
+          :label="t('workOrderMaterial.storageLocation')"
           align="center"
           prop="projectDepartment"
           :show-overflow-tooltip="true"
           class="!w-100px"
         />
         <el-table-column
-          label="物料编码"
+          :label="t('workOrderMaterial.materialCode')"
           align="center"
           prop="materialCode"
           :show-overflow-tooltip="true"
           class="!w-100px"
         />
         <el-table-column
-          label="物料名称"
+          :label="t('workOrderMaterial.materialName')"
           align="center"
           prop="materialName"
           :show-overflow-tooltip="true"
         />
-        <el-table-column label="单位" align="center" prop="unit" />
-        <el-table-column label="单价(元)" align="center" prop="unitPrice" />
-        <el-table-column label="总库存数量" align="center" prop="totalInventoryQuantity" />
-        <el-table-column label="来源" align="center" prop="materialSource" />
-        <el-table-column label="消耗数量" align="center" prop="quantity">
+        <el-table-column :label="t('workOrderMaterial.unit')" align="center" prop="unit" />
+        <el-table-column :label="t('workOrderMaterial.unitPrice')" align="center" prop="unitPrice" />
+        <el-table-column :label="t('workOrderMaterial.total')" align="center" prop="totalInventoryQuantity" />
+        <el-table-column :label="t('workOrderMaterial.source')" align="center" prop="materialSource" />
+        <el-table-column :label="t('workOrderMaterial.ConsumptionQuantity')" align="center" prop="quantity">
           <template #default="scope">
             <el-input
               v-model="scope.row.quantity"

+ 0 - 178
src/views/pms/iotopeationfill/IotOpeationFillForm.vue

@@ -1,178 +0,0 @@
-<template>
-  <Dialog :title="dialogTitle" v-model="dialogVisible">
-    <el-form
-      ref="formRef"
-      :model="formData"
-      :rules="formRules"
-      label-width="100px"
-      v-loading="formLoading"
-    >
-      <el-row>
-        <el-col :span="12">
-          <el-form-item label="设备编号" prop="deviceCode">
-            <el-input v-model="formData.deviceCode" placeholder="请输入设备编号" disabled/>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="设备名称" prop="deviceName">
-            <el-input v-model="formData.deviceName" placeholder="请输入设备名称" disabled/>
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row>
-        <el-col :span="12">
-          <el-form-item label="设备类别" prop="deviceType">
-            <el-select v-model="formData.deviceType" placeholder="请选择设备类别" disabled>
-              <el-option label="请选择字典生成" value="" />
-            </el-select>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="所属组织" prop="orgName">
-            <el-input v-model="formData.orgName" placeholder="请输入所属组织" disabled/>
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <el-form-item label="设备部件" prop="deviceComponent">
-        <el-input v-model="formData.deviceComponent" placeholder="请输入设备部件" disabled/>
-      </el-form-item>
-      <div v-for="(item,index) in arry1" :key="index">
-        <p>填写信息:{{item.label}}</p>
-        <el-input placeholder="请输入" v-model="item.value" @input="arry1[index].text = $event.target.value"/>
-      </div>
-    </el-form>
-    <template #footer>
-      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
-      <el-button @click="dialogVisible = false">取 消</el-button>
-    </template>
-  </Dialog>
-</template>
-<script setup lang="ts">
-import { IotOpeationFillApi, IotOpeationFillVO } from '@/api/pms/iotopeationfill'
-import {forEach} from "min-dash";
-
-/** 运行记录填报 表单 */
-defineOptions({ name: 'IotOpeationFillForm' })
-
-const { t } = useI18n() // 国际化
-const message = useMessage() // 消息弹窗
-
-const dialogVisible = ref(false) // 弹窗的是否展示
-const dialogTitle = ref('') // 弹窗的标题
-const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
-const formType = ref('') // 表单的类型:create - 新增;update - 修改
-const formData = ref({
-  id: undefined,
-  deviceCode: undefined,
-  deviceName: undefined,
-  fillContent: undefined,
-  deviceType: undefined,
-  deviceComponent: undefined,
-  deptId: undefined,
-  orgName: undefined,
-  proId: undefined,
-  proName: undefined,
-  teamId: undefined,
-  teamName: undefined,
-  dutyName: undefined,
-  creDate: undefined
-})
-const formRules = reactive({
-  deviceCode: [{ required: true, message: '设备编号不能为空', trigger: 'blur' }],
-  deviceName: [{ required: true, message: '设备名称不能为空', trigger: 'blur' }],
-  fillContent: [{ required: true, message: '填写内容不能为空', trigger: 'blur' }],
-  deviceType: [{ required: true, message: '设备类别不能为空', trigger: 'change' }],
-  deviceComponent: [{ required: true, message: '设备部件不能为空', trigger: 'blur' }],
-  orgName: [{ required: true, message: '所属组织不能为空', trigger: 'blur' }],
-  proName: [{ required: true, message: '所属项目部不能为空', trigger: 'blur' }],
-  teamName: [{ required: true, message: '所属小队不能为空', trigger: 'blur' }],
-  dutyName: [{ required: true, message: '设备负责人不能为空', trigger: 'blur' }],
-  creDate: [{ required: true, message: '填写日期不能为空', trigger: 'blur' }],
-})
-const formRef = ref() // 表单 Ref
-
-let itemArry = [];
-let arry = [];
-let arry1 =[];
-/** 打开弹窗 */
-const open = async (type: string, id?: number) => {
-
-  dialogVisible.value = true
-  dialogTitle.value = t('action.' + type)
-  formType.value = type
-  resetForm()
-  // 修改时,设置数据
-  if (id) {
-    formLoading.value = true
-    try {
-      formData.value = await IotOpeationFillApi.getIotOpeationFill(id)
-      if(formData.value.fillContent.includes(":")){
-        arry = formData.value.fillContent.split(",");
-        arry.forEach(function (item, index) {
-          arry1.push({label:item.split(":")[0],value:item.split(":")[1]})
-        });
-      }else{
-        arry = formData.value.fillContent.split(",");
-        arry.forEach(function (item, index) {
-          arry1.push({label:item,value:''})
-        });
-      }
-
-    } finally {
-      formLoading.value = false
-    }
-  }
-}
-defineExpose({ open }) // 提供 open 方法,用于打开弹窗
-
-/** 提交表单 */
-const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
-const submitForm = async () => {
-  formData.value.fillContent = '';
-  arry1.forEach(function (item, index) {
-    formData.value.fillContent += item.label+":"+item.value+",";
-  })
-  formData.value.fillContent = formData.value.fillContent.slice(0,-1);
-  // 校验表单
-  await formRef.value.validate()
-  // 提交请求
-  formLoading.value = true
-  try {
-    const data = formData.value as unknown as IotOpeationFillVO
-    if (formType.value === 'create') {
-      await IotOpeationFillApi.createIotOpeationFill(data)
-      message.success(t('common.createSuccess'))
-    } else {
-      await IotOpeationFillApi.updateIotOpeationFill(data)
-      message.success(t('common.updateSuccess'))
-    }
-    dialogVisible.value = false
-    // 发送操作成功的事件
-    emit('success')
-  } finally {
-    formLoading.value = false
-  }
-}
-
-/** 重置表单 */
-const resetForm = () => {
-  formData.value = {
-    id: undefined,
-    deviceCode: undefined,
-    deviceName: undefined,
-    fillContent: undefined,
-    deviceType: undefined,
-    deviceComponent: undefined,
-    deptId: undefined,
-    orgName: undefined,
-    proId: undefined,
-    proName: undefined,
-    teamId: undefined,
-    teamName: undefined,
-    dutyName: undefined,
-    creDate: undefined,
-  }
-  formRef.value?.resetFields()
-  arry1.length=0
-}
-</script>

+ 4 - 3
src/views/pms/iotopeationfill/index1.vue

@@ -99,6 +99,7 @@ const deptId = params.id
 const list = ref<IotOpeationFillVO[]>([]) // 列表的数据
 const attrList = ref<IotOpeationFillVO[]>([]) // 非累计属性集合
 const attrList1 = ref<IotOpeationFillVO[]>([]) // 累计属性集合
+const attrList2 = ref<IotOpeationFillVO[]>([]) // 属性集合
 const total = ref(0) // 列表的总页数
 const arry1 =ref([]);
 let totalRunTime1: string = '123'
@@ -233,15 +234,15 @@ const getAttrList = async () => {
 /** 获取填写信息保存到后台*/
 const getFillInfo = async () => {
   try {
-    attrList.value = attrList.value.concat(attrList1.value)
+    attrList2.value = attrList.value.concat(attrList1.value)
 
-    attrList.value.forEach(function (item,index){
+    attrList2.value.forEach(function (item,index){
       item.pointName = item.name;
       item.createTime = formatTimestamp(JSON.parse(deptId.split(",")[2].substring(0,10)));
       item.userId = deptId.split(",")[1];
       item.id = deptId.split(",")[3];
     })
-    const data = attrList.value as unknown as IotOpeationFillVO
+    const data = attrList2.value as unknown as IotOpeationFillVO
     await IotOpeationFillApi.insertLog(data)
     message.success(t('common.createSuccess'))
     // 发送操作成功的事件

+ 47 - 45
src/views/pms/maintain/IotMaintain.vue

@@ -11,20 +11,20 @@
         <div class="base-expandable-content">
           <el-row>
             <el-col :span="8">
-              <el-form-item label="设备" prop="deviceName">
+              <el-form-item :label="t('iotMaintain.device')" prop="deviceName">
                 <el-select
                   :disabled="formType === 'update'"
                   v-model="formData.deviceName"
                   clearable
                   @clear="deviceClear"
-                  placeholder="请选择设备"
+                  :placeholder="t('iotMaintain.deviceHolder')"
                   @click="formType === 'update' ? undefined : openForm()"
                 />
               </el-form-item>
             </el-col>
             <el-col :span="8">
-              <el-form-item label="维修类型" prop="type">
-                <el-select v-model="formData.type" placeholder="请选择维修类型" clearable>
+              <el-form-item :label="t('iotMaintain.repairType')" prop="type">
+                <el-select v-model="formData.type" :placeholder="t('iotMaintain.repairTypeHolder')" clearable>
                   <el-option
                     v-for="dict in getStrDictOptions(DICT_TYPE.PMS_MAIN_TYPE)"
                     :key="dict.value"
@@ -35,8 +35,8 @@
               </el-form-item>
             </el-col>
             <el-col :span="8">
-              <el-form-item label="是否停机" prop="ifStop">
-                <el-select v-model="formData.ifStop" placeholder="请选择是否停机" clearable>
+              <el-form-item :label="t('iotMaintain.shutDown')" prop="ifStop">
+                <el-select v-model="formData.ifStop" :placeholder="t('iotMaintain.shutDownHolder')" clearable>
                   <el-option
                     v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
                     :key="dict.value"
@@ -48,7 +48,7 @@
             </el-col>
             <el-col :span="8">
               <el-form-item
-                label="维修开始时间"
+                :label="t('iotMaintain.startTime')"
                 prop="maintainStartTime"
                 :rules="formData.type === 'in' ? startRule : []"
               >
@@ -57,13 +57,13 @@
                   v-model="formData.maintainStartTime"
                   type="datetime"
                   value-format="x"
-                  placeholder="选择维修开始时间"
+                  :placeholder="t('iotMaintain.startTimeHolder')"
                 />
               </el-form-item>
             </el-col>
             <el-col :span="8">
               <el-form-item
-                label="维修结束时间"
+                :label="t('iotMaintain.endTime')"
                 prop="maintainEndTime"
                 :rules="formData.type === 'in' ? endRule : []"
               >
@@ -73,34 +73,34 @@
                   v-model="formData.maintainEndTime"
                   type="datetime"
                   value-format="x"
-                  placeholder="选择维修结束时间"
+                  :placeholder="t('iotMaintain.endTimeHolder')"
                 />
               </el-form-item>
             </el-col>
             <el-col :span="8">
-              <el-form-item label="故障时间" prop="failureTime" :rules="formData.type==='out'?failureTimeRule:[]" >
+              <el-form-item :label="t('iotMaintain.failureTime')" prop="failureTime" :rules="formData.type==='out'?failureTimeRule:[]" >
                 <el-date-picker
                   :disabled="formData.maintainType==='故障上报'"
                   style="width: 150%"
                   v-model="formData.failureTime"
                   type="datetime"
                   value-format="x"
-                  placeholder="选择故障时间"
+                  :placeholder="t('iotMaintain.failureTimeHolder')"
                 />
               </el-form-item>
             </el-col>
             <el-col :span="8">
-              <el-form-item label="故障影响" prop="failureInfluence">
-                <el-input v-model="formData.failureInfluence" placeholder="请输入故障影响" />
+              <el-form-item :label="t('iotMaintain.failureImpact')" prop="failureInfluence">
+                <el-input v-model="formData.failureInfluence" :placeholder="t('iotMaintain.failureImpactHolder')" />
               </el-form-item>
             </el-col>
             <el-col :span="8">
-              <el-form-item label="故障系统" prop="failureSystem">
-                <el-input v-model="formData.failureSystem" placeholder="请输入故障系统" />
+              <el-form-item :label="t('iotMaintain.faultySystem')" prop="failureSystem">
+                <el-input v-model="formData.failureSystem" :placeholder="t('iotMaintain.faultySystemHolder')" />
               </el-form-item>
             </el-col>
             <el-col :span="8">
-              <el-form-item label="图片" prop="pic">
+              <el-form-item :label="t('iotMaintain.picture')" prop="pic">
                 <UploadImg v-model="formData.pic" height="55px" />
               </el-form-item>
             </el-col>
@@ -115,7 +115,7 @@
               </el-form-item>
             </el-col>
             <el-col :span="8" >
-              <el-form-item label="维修费用(元)" prop="maintainFee">
+              <el-form-item :label="t('iotMaintain.repairCosts')" prop="maintainFee">
                 <el-input-number
                   :disabled="formData.type==='in'"
                   v-model="formData.maintainFee"
@@ -132,23 +132,23 @@
               </el-form-item>
             </el-col>
             <el-col :span="16">
-              <el-form-item label="故障描述" prop="description">
+              <el-form-item :label="t('iotMaintain.faultDescription')" prop="description">
                 <el-input type="textarea" v-model="formData.description"/>
               </el-form-item>
             </el-col>
             <el-col :span="12">
-              <el-form-item label="维修描述" :rules="formData.type === 'in' ? descriptionRule : []" prop="maintainDescription">
+              <el-form-item :label="t('iotMaintain.repairDescription')" :rules="formData.type === 'in' ? descriptionRule : []" prop="maintainDescription">
                 <el-input type="textarea" v-model="formData.maintainDescription" />
               </el-form-item>
             </el-col>
             <el-col :span="12">
-              <el-form-item label="解决办法" prop="solution">
+              <el-form-item :label="t('iotMaintain.solution')" prop="solution">
                 <el-input type="textarea" v-model="formData.solution" />
               </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>
@@ -163,10 +163,12 @@
             <!--          <el-button @click="openMaterialForm" type="primary"-->
             <!--            ><Icon icon="ep:plus" class="mr-5px" /> 选择物料</el-button>-->
             <el-button @click="openMaintainForm" type="primary"
-              ><Icon icon="ep:plus" class="mr-5px" /> 选择维修项</el-button
+              ><Icon icon="ep:plus" class="mr-5px" />
+              {{ t('iotMaintain.selectMaintenanceItem') }}</el-button
             >
             <el-button @click="openMaintainItem" type="warning"
-              ><Icon icon="ep:plus" class="mr-5px" /> 新增维修项</el-button
+              ><Icon icon="ep:plus" class="mr-5px" />
+              {{ t('iotMaintain.addMaintenanceItems') }}</el-button
             >
             <!--          <el-button @click="handleViewNew" type="warning"-->
             <!--            ><Icon icon="ep:plus" class="mr-5px" /> 新增物料</el-button>-->
@@ -177,15 +179,15 @@
       <!-- 列表 -->
       <ContentWrap>
         <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
-          <el-table-column label="资产编码" align="center" prop="deviceCode" />
-          <el-table-column label="设备名称" align="center" prop="deviceName" />
-          <el-table-column label="维修项" align="center" prop="name" />
-          <el-table-column label="已选物料数" align="center" prop="materialCount" >
+          <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('iotMaintain.repairItems')"  align="center" prop="name" />
+          <el-table-column :label="t('iotMaintain.numberOfMaterials')" align="center" prop="materialCount" >
             <template #default="scope">
               <el-tag v-if="scope.row.materialCount" type="danger"> {{scope.row.materialCount}}</el-tag>
             </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%">
                 <div>
@@ -196,17 +198,17 @@
                     @click="handleDelete(scope.row.bomNodeId)"
                   >
                     <Icon style="vertical-align: middle; color: #ea3434" icon="ep:zoom-out" />
-                    移除
+                    {{ t('iotMaintain.remove') }}
                   </el-button>
                 </div>
                 <div style="margin-left: 12px">
                   <el-button link type="primary" @click="openMaterialForm(scope.row)">
-                    选择物料
+                    {{ t('iotMaintain.selectMaterials') }}
                   </el-button>
                 </div>
                 <div style="margin-left: 12px">
                   <el-button link type="primary" @click="handleViewNew(scope.row.bomNodeId)">
-                    查看物料
+                    {{ t('iotMaintain.viewMaterials') }}
                   </el-button>
                 </div>
               </div>
@@ -222,8 +224,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>
@@ -236,7 +238,7 @@
       :materials="materialList.filter((item) => item.bomNodeId === currentBomNodeId)"
       @delete = "materialDelete"
     />
-    <Dialog title="维修项" v-model="addItemVisible" style="min-height: 300px">
+    <Dialog :title="t('iotMaintain.repairItems')" v-model="addItemVisible" style="min-height: 300px">
       <el-form
         ref="addFormRef"
         :model="addFormData"
@@ -244,23 +246,23 @@
         label-position="right"
         label-width="68px"
       >
-        <el-form-item label="BOM节点id" v-if="false" prop="deviceCode">
+        <el-form-item :label="t('iotMaintain.BOMNodeID')" v-if="false" prop="deviceCode">
           <el-input v-model="addFormData.bomNodeId" disabled />
         </el-form-item>
-        <el-form-item label="资产编码" prop="deviceCode">
+        <el-form-item :label="t('iotMaintain.deviceCode')" prop="deviceCode">
           <el-input v-model="addFormData.deviceCode" disabled />
         </el-form-item>
-        <el-form-item label="设备名称" prop="deviceName">
+        <el-form-item :label="t('iotMaintain.deviceName')" prop="deviceName">
           <el-input v-model="addFormData.deviceName" disabled />
         </el-form-item>
-        <el-form-item label="维修项" prop="name">
-          <el-input v-model="addFormData.name" placeholder="请输入维修项" />
+        <el-form-item :label="t('iotMaintain.repairItems')" prop="name">
+          <el-input v-model="addFormData.name" :placeholder="t('iotMaintain.repairItemsHolder')" />
         </el-form-item>
       </el-form>
       <el-form>
         <el-form-item style="float: right">
-          <el-button @click="handleConfirm" type="primary">确 定</el-button>
-          <el-button @click="closeDialog">取 消</el-button>
+          <el-button @click="handleConfirm" type="primary">{{ t('iotMaintain.ok') }}</el-button>
+          <el-button @click="closeDialog">{{  t('iotMaintain.cancel')  }}</el-button>
         </el-form-item>
       </el-form>
     </Dialog>
@@ -409,14 +411,14 @@ const openMaterialForm = (row: any) => {
 const maintainFormRef = ref()
 const openMaintainForm = (type: string, id?: number) => {
   if (!formData.value.deviceId) {
-    message.error('请选择设备')
+    message.error(t('iotMaintain.deviceHolder'))
     return
   }
   maintainFormRef.value.open(type, formData.value.deviceId)
 }
 const openMaintainItem = () => {
   if (!formData.value.deviceId) {
-    message.error('请选择设备')
+    message.error(t('iotMaintain.deviceHolder'))
     return
   }
   addItemVisible.value = true

+ 29 - 28
src/views/pms/maintain/index.vue

@@ -15,28 +15,28 @@
           :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-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"
             >
@@ -48,10 +48,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"
             >
@@ -63,7 +63,7 @@
               />
             </el-select>
           </el-form-item>
-          <el-form-item label="故障时间" v-show="ifShow" prop="failureTime">
+          <el-form-item :label="t('maintain.failureTime')" v-show="ifShow" prop="failureTime" style="margin-left: 25px">
             <el-date-picker
               v-model="queryParams.failureTime"
               value-format="YYYY-MM-DD HH:mm:ss"
@@ -74,10 +74,10 @@
               class="!w-220px"
             />
           </el-form-item>
-          <el-form-item label="是否解决" v-show="ifShow" prop="ifDeal">
+          <el-form-item :label="t('maintain.solve')" v-show="ifShow" prop="ifDeal">
             <el-select
               v-model="queryParams.ifDeal"
-              placeholder="是否解决"
+              :placeholder="t('maintain.solve')"
               clearable
               class="!w-200px"
             >
@@ -89,10 +89,10 @@
               />
             </el-select>
           </el-form-item>
-          <el-form-item label="是否协助" v-show="ifShow" prop="needHelp">
+          <el-form-item :label="t('maintain.assist')" v-show="ifShow" prop="needHelp">
             <el-select
               v-model="queryParams.needHelp"
-              placeholder="是否协助"
+              :placeholder="t('maintain.assist')"
               clearable
               class="!w-200px"
             >
@@ -116,17 +116,18 @@
 <!--            />-->
 <!--          </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('maintain.moreSearch') }}</el-button>
+            <el-button v-if="ifShow" @click="moreQuery(false)" type="danger"><Icon icon="ep:search" class="mr-5px"/>  {{ t('maintain.closeSearch') }}</el-button>
+            <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> {{ t('maintain.search') }}</el-button>
+            <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> {{ t('maintain.reset') }}</el-button>
             <el-button
               type="primary"
               plain
               @click="openForm('create')"
               v-hasPermi="['rq:iot-device:create']"
               >
-              <Icon icon="ep:plus" class="mr-5px" /> 新增
+              <Icon icon="ep:plus" class="mr-5px" />  {{ t('maintain.added') }}
             </el-button>
             <el-button
               type="success"
@@ -143,26 +144,26 @@
       <!-- 列表 -->
       <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('maintain.serial')" width="70" align="center">
             <template #default="scope">
               {{ scope.$index + 1 }}
             </template>
           </el-table-column>
 <!--          <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.deviceName')" align="center" prop="deviceName" />
+          <el-table-column :label="t('maintain.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="maintainType" />
-          <el-table-column label="审核状态" align="center" prop="auditStatus" >
+          <el-table-column :label="t('maintain.source')" align="center" prop="maintainType" />
+          <el-table-column :label="t('maintain.audit')" 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('maintain.shutDown')" align="center" prop="ifStop" >
             <template #default="scope">
               <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.ifStop" />
             </template>
@@ -175,7 +176,7 @@
             width="180px"
           />
           <el-table-column
-            label="故障时间"
+            :label="t('maintain.failureTime')"
             align="center"
             prop="failureTime"
             :formatter="dateFormatter"
@@ -196,14 +197,14 @@
 <!--            :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
                 type="primary"
                 @click="detail(scope.row.id)"
               >
-                查看
+                {{ t('maintain.view') }}
               </el-button>
               <el-button
                 link
@@ -211,7 +212,7 @@
                 type="danger"
                 @click="openForm('update',scope.row.id)"
               >
-                填写
+                {{ t('maintain.fill') }}
               </el-button>
             </template>
           </el-table-column>

+ 24 - 16
src/views/pms/maintain/material/ChooseMaintain.vue

@@ -1,5 +1,5 @@
 <template>
-  <Dialog v-model="dialogVisible" title="选择维修项" style="width: 1100px; min-height: 300px">
+  <Dialog v-model="dialogVisible" :title="t('chooseMaintain.selectRepairItem')" style="width: 1100px; min-height: 300px">
     <ContentWrap>
       <el-form
         class="-mb-15px"
@@ -8,33 +8,38 @@
         :inline="true"
         label-width="68px"
       >
-        <el-form-item label="物料编码" prop="code">
+        <el-form-item :label="t('chooseMaintain.materialCode')" prop="code" style="margin-left: 25px">
           <el-input
             v-model="queryParams.code"
-            placeholder="请输入物料编码"
+            :placeholder="t('chooseMaintain.codeHolder')"
             clearable
             @keyup.enter="handleQuery"
           />
         </el-form-item>
-        <el-form-item label="物料名称" prop="name">
+        <el-form-item :label="t('chooseMaintain.materialName')" prop="name" style="margin-left: 25px">
           <el-input
             v-model="queryParams.name"
-            placeholder="请输入物料名称"
+            :placeholder="t('chooseMaintain.nameHolder')"
             clearable
             @keyup.enter="handleQuery"
           />
         </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('chooseMaintain.search') }}</el-button>
+          <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" />
+            {{ t('chooseMaintain.reset')  }}</el-button>
           <el-button @click="handleConfirm" type="danger"
-            ><Icon icon="ep:check" class="mr-5px" /> 确认选择</el-button
+            ><Icon icon="ep:check" class="mr-5px" />
+            {{ t('chooseMaintain.confirm')  }}</el-button
           >
           <el-button @click="toggleAll" type="primary"
-            ><Icon icon="ep:refresh" class="mr-5px" />全选</el-button
+            ><Icon icon="ep:refresh" class="mr-5px" />
+            {{ t('chooseMaintain.selectAll') }}</el-button
           >
           <el-button @click="invertSelection" type="info"
-            ><Icon icon="ep:refresh" class="mr-5px" />取消全选</el-button
+            ><Icon icon="ep:refresh" class="mr-5px" />
+            {{ t('chooseMaintain.cancelAllSelection') }}</el-button
           >
         </el-form-item>
       </el-form>
@@ -56,27 +61,27 @@
           :selectable="(row) => !row.disabled"
         />
         <el-table-column
-          label="资产编码"
+          :label=" t('chooseMaintain.deviceCode')"
           align="center"
           prop="deviceCode"
           :show-overflow-tooltip="true"
           class="!w-100px"
         />
         <el-table-column
-          label="设备名称"
+          :label=" t('chooseMaintain.deviceName')"
           align="center"
           prop="deviceName"
           :show-overflow-tooltip="true"
         />
         <el-table-column
-          label="设备名称"
+          :label=" t('chooseMaintain.deviceName')"
           align="center"
           prop="deviceName"
           :show-overflow-tooltip="true"
         />
-        <el-table-column label="维修项" align="center" prop="name" :show-overflow-tooltip="true" />
+        <el-table-column :label=" t('chooseMaintain.repairItems')" align="center" prop="name" :show-overflow-tooltip="true" />
         <el-table-column
-          label="创建时间"
+          :label="t('chooseMaintain.createTime')"
           align="center"
           prop="createTime"
           :formatter="dateFormatter"
@@ -108,10 +113,12 @@ const selectedRows = ref<any[]>([]) // 多选数据(存储所有选中行的
 const list = ref<any[]>([]) // 列表的数据
 const total = ref(0) // 列表的总页数
 const tableRef = ref()
+const { t } = useI18n() // 国际化
 const queryParams = reactive({
   pageNo: 1,
   pageSize: 10,
-  deviceIds: []
+  deviceIds: [],
+  bomFlag: 'w'
 })
 const props = defineProps({
   deptId: propTypes.number.def(undefined)
@@ -180,6 +187,7 @@ const open = async (type: string, id?: number) => {
   dialogVisible.value = true
   queryParams.deviceIds = []
   queryParams.deviceIds.push(id)
+  queryParams.bomFlag = 'w'
   list.value = []
   await getList()
 }

+ 3 - 1
src/views/pms/maintenance/IotMaintenancePlan.vue

@@ -503,7 +503,8 @@ const saveConfig = () => {
 
 const queryParams = reactive({
   deviceIds: undefined,
-  planId: id
+  planId: id,
+  bomFlag: 'b'
 })
 
 /**
@@ -555,6 +556,7 @@ const deviceChoose = async(selectedDevices) => {
     deviceIds: newIds.join(',') // 明确传递数组参数
   }
   queryParams.deviceIds = JSON.parse(JSON.stringify(params.deviceIds))
+  queryParams.bomFlag = 'b'
   // 根据选择的设备筛选出设备关系的分类BOM中与保养相关的节点项
   const res = await IotDeviceApi.deviceAssociateBomList(queryParams)
   const rawData = res || []

+ 13 - 12
src/views/system/tree/index.vue

@@ -20,34 +20,35 @@
             :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>
         </ContentWrap>
         <ContentWrap>
           <el-table v-loading="formLoading" :data="list" :stripe="true" :show-overflow-tooltip="true">
-            <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>
@@ -60,14 +61,14 @@
 <!--              :formatter="dateFormatter"-->
 <!--              width="180px"-->
 <!--            />-->
-            <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="handleDownload( scope.row.filePath)" v-hasPermi="['rq:iot-info:download']">
-                    <Icon icon="ep:download" />下载
+                    <Icon icon="ep:download" />{{t('file.dow')}}
                   </el-button>
                   <el-button type="primary" link @click="handleView( scope.row)">
-                    <Icon icon="ep:view" />查看
+                    <Icon icon="ep:view" />{{t('file.preview')}}
                   </el-button>
 <!--                  <el-dropdown-->
 <!--                    @command="(command) => handleCommand(command, scope.row)"-->