Merge remote-tracking branch 'origin/dev' into dev
 
	
	
	
	
	
	
	
	
	
	
	
	
	
 |  |  | 
 |  |  |   }); | 
 |  |  | } | 
 |  |  |  | 
 |  |  | //设å¤ä¿å
»åæ¡å¯¼åº | 
 |  |  | export function exportMaintenanceRecord(query) { | 
 |  |  |   return request({ | 
 |  |  |     url: "/deviceMaintain/exportMaintenanceRecord", | 
 |  |  |     method: "get", | 
 |  |  |     responseType: "blob", | 
 |  |  |     params: query, | 
 |  |  |   }); | 
 |  |  | } | 
 |  |  |  | 
 |  |  | //设å¤ç»´æ¤å é¤ | 
 |  |  | export function deleteDeviceMaintenance(query) { | 
 |  |  |   return request({ | 
 |  |  |     url: "/deviceMaintain/deleteDeviceMaintenance", | 
 |  |  |     method: "delete", | 
 |  |  |     params: query, | 
 |  |  |   }); | 
 |  |  | } | 
 |  |  |  | 
 |  |  | // æ°å¢è®¾å¤ç»´æ¤ä¿å
» | 
 |  |  | export function addDeviceMaintenance(data) { | 
 |  |  |   return request({ | 
 |  |  |     url: "/deviceMaintain/addDeviceMaintenance", | 
 |  |  |     method: "post", | 
 |  |  |     data: data, | 
 |  |  |   }); | 
 |  |  | } | 
 |  |  | //设å¤ç»´æ¤è¡¨ æ¥è¯¢ | 
 |  |  | export function getDeviceMaintenancePage(query) { | 
 |  |  |   return request({ | 
 |  |  |     url: "/deviceMaintain/getDeviceMaintenancePage", | 
 |  |  |     method: "get", | 
 |  |  |     params: query, | 
 |  |  |   }); | 
 |  |  | } | 
 |  |  |  | 
 |  |  | // åç¨-ä¿å | 
 |  |  | export function saveDeviceBorrow(data) { | 
 |  |  |   return request({ | 
 |  |  | 
 |  |  |     params: query, | 
 |  |  |   }); | 
 |  |  | } | 
 |  |  | //设å¤ç»´æ¤ä¿å
» æ¥è¯¢ | 
 |  |  | export function selectDeviceMaintenancePage(query) { | 
 |  |  |   return request({ | 
 |  |  |     url: "/deviceMaintain/selectDeviceMaintenancePage", | 
 |  |  |     method: "get", | 
 |  |  |     params: query, | 
 |  |  |   }); | 
 |  |  | } | 
 |  |  | //设å¤ç»´æ¤ä¿å
» å é¤ | 
 |  |  | export function deleteDeviceMaintenance(query) { | 
 |  |  |   return request({ | 
 |  |  |     url: "/deviceMaintain/deleteDeviceMaintenance", | 
 |  |  |     method: "delete", | 
 |  |  |     params: query, | 
 |  |  |   }); | 
 |  |  | } | 
 |  |  | //设å¤ç»´æ¤ä¿å
» æ°å¢ | 
 |  |  | export function addDeviceMaintenance(query) { | 
 |  |  |   return request({ | 
 |  |  |     url: "/deviceMaintain/addDeviceMaintenance", | 
 |  |  |     method: "post", | 
 |  |  |     data: query, | 
 |  |  |   }); | 
 |  |  | } | 
 |  |  | //设å¤ä½¿ç¨ææ å页æ¥è¯¢ | 
 |  |  | export function selectDeviceImpowerByPage(query) { | 
 |  |  |   return request({ | 
 |  |  |     url: "/deviceImpower/selectDeviceImpowerByPage", | 
 |  |  |     method: "get", | 
 |  |  |     params: query, | 
 |  |  |   }); | 
 |  |  | } | 
 |  |  | //设å¤ä½¿ç¨ææ æ¥è¯¢è¯¦æ
 | 
 |  |  | export function getImpowerDetail(query) { | 
 |  |  |   return request({ | 
 |  |  |     url: "/deviceImpower/getImpowerDetail", | 
 |  |  |     method: "get", | 
 |  |  |     params: query, | 
 |  |  |   }); | 
 |  |  | } | 
 |  |  | //设å¤ä½¿ç¨ææ å é¤ | 
 |  |  | export function deleteImpower(query) { | 
 |  |  |   return request({ | 
 |  |  |     url: "/deviceImpower/deleteImpower", | 
 |  |  |     method: "delete", | 
 |  |  |     params: query, | 
 |  |  |   }); | 
 |  |  | } | 
 |  |  | //设å¤ä½¿ç¨ææ å¯¼åº | 
 |  |  | export function exportDeviceImpower(query) { | 
 |  |  |   return request({ | 
 |  |  |     url: "/deviceImpower/exportDeviceImpower", | 
 |  |  |     method: "get", | 
 |  |  |     responseType: "blob", | 
 |  |  |     params: query, | 
 |  |  |   }); | 
 |  |  | } | 
 |  |  | //设å¤ä½¿ç¨ææ æ°å¢ | 
 |  |  | export function addImpower(query) { | 
 |  |  |   return request({ | 
 |  |  |     url: "/deviceImpower/addImpower", | 
 |  |  |     method: "post", | 
 |  |  |     data: query, | 
 |  |  |   }); | 
 |  |  | } | 
 |  |  | //设å¤ä½¿ç¨ææ ä¿®æ¹ | 
 |  |  | export function updateImpower(query) { | 
 |  |  |   return request({ | 
 |  |  |     url: "/deviceImpower/updateImpower", | 
 |  |  |     method: "post", | 
 |  |  |     data: query, | 
 |  |  |   }); | 
 |  |  | } | 
 |  |  | //设å¤ä½¿ç¨ææ æ¹åææ | 
 |  |  | export function reviewImpowerStatus(query) { | 
 |  |  |   return request({ | 
 |  |  |     url: "/deviceImpower/reviewImpowerStatus", | 
 |  |  |     method: "post", | 
 |  |  |     data: query, | 
 |  |  |   }); | 
 |  |  | } | 
 
 |  |  | 
 |  |  |       <div style="margin: 10px 0"> | 
 |  |  |         <el-table ref="yearTable" :data="examinePlanDetailsList" id="templateParamTable" row-key="deviceId" | 
 |  |  |                   v-loading="yearTableLoading" | 
 |  |  |                   :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border height="500px"> | 
 |  |  |                   :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border height="560px"> | 
 |  |  |           <el-table-column label="设å¤åç§°" min-width="190" prop="deviceName"> | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <el-input v-model="scope.row.deviceName" clearable size="small"></el-input> | 
 
 |  |  | 
 |  |  |         </el-date-picker> | 
 |  |  |       </div> | 
 |  |  |       <div style="margin: 10px 0"> | 
 |  |  |         <el-table id="templateParamTable" ref="yearTable" :data="calibrationPlanDetailList" height="300px" | 
 |  |  |         <el-table id="templateParamTable" ref="yearTable" :data="calibrationPlanDetailList" height="560px" | 
 |  |  |                   v-loading="yearTableLoading" | 
 |  |  |                   :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border | 
 |  |  |           row-key="deviceId" style="width: 100% ;"> | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | <template> | 
 |  |  |   <div> | 
 |  |  |     <div class="search"> | 
 |  |  |       <el-button size="small" type="primary" @click="refreshTableList">å·æ°</el-button> | 
 |  |  |       <el-button size="small" type="primary" @click="openDia('add')">氠建</el-button> | 
 |  |  |       <el-button :loading="outLoading" size="small" type="primary" @click="openHandleOut">导 åº</el-button> | 
 |  |  |     </div> | 
 |  |  |     <div> | 
 |  |  |       <lims-table :tableData="tableData" :column="column" | 
 |  |  |                   height="calc(100vh - 20em)" @pagination="pagination" | 
 |  |  |                   :page="page" :tableLoading="tableLoading"></lims-table> | 
 |  |  |     </div> | 
 |  |  |     <el-dialog :visible.sync="dialogVisible" title="仪å¨è®¾å¤ä½¿ç¨ç»´æ¤ä¿å
»è¡¨" width="55%"> | 
 |  |  |       <el-form ref="form" :model="form" label-width="130px" :rules="rules"> | 
 |  |  |         <el-row> | 
 |  |  |           <el-col :span="12"> | 
 |  |  |             <el-form-item label="ç»´æ¤æ¥æ:" prop="maintenanceDate"> | 
 |  |  |               <el-date-picker v-model="form.maintenanceDate" :disabled="operationType === 'view'" | 
 |  |  |                               format="yyyy-MM-dd" size="small" placeholder="éæ©æ¥æ" style="width:100%" | 
 |  |  |                               type="date" value-format="yyyy-MM-dd"> | 
 |  |  |               </el-date-picker> | 
 |  |  |             </el-form-item> | 
 |  |  |           </el-col> | 
 |  |  |         </el-row> | 
 |  |  |         <el-row> | 
 |  |  |           <el-col :span="24"> | 
 |  |  |             <el-form-item label="ç»´æ¤å
容:" prop="maintenanceContentArr"> | 
 |  |  |               <el-checkbox-group v-model="form.maintenanceContentArr" :disabled="operationType === 'view'"> | 
 |  |  |                 <el-checkbox v-for="city in qualificationList" :key="city.label" :label="city.label" | 
 |  |  |                              :value="city.label"></el-checkbox> | 
 |  |  |               </el-checkbox-group> | 
 |  |  |             </el-form-item> | 
 |  |  |           </el-col> | 
 |  |  |         </el-row> | 
 |  |  |         <el-row> | 
 |  |  |           <el-col :span="12"> | 
 |  |  |             <el-form-item label="ç»´æ¤äºº:" prop="maintenanceUserId"> | 
 |  |  |               <el-select v-model="form.maintenanceUserId" | 
 |  |  |                          clearable filterable | 
 |  |  |                          placeholder="è¯·éæ©" size="small" style="width: 100%;"> | 
 |  |  |                 <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> | 
 |  |  |                 </el-option> | 
 |  |  |               </el-select> | 
 |  |  |             </el-form-item> | 
 |  |  |           </el-col> | 
 |  |  |           <el-col :span="12"> | 
 |  |  |             <el-form-item label="夿³¨:" prop="remark"> | 
 |  |  |               <el-input v-model="form.remark" :disabled="operationType === 'view'" size="small" | 
 |  |  |                         style="width: 100%;"></el-input> | 
 |  |  |             </el-form-item> | 
 |  |  |           </el-col> | 
 |  |  |         </el-row> | 
 |  |  |       </el-form> | 
 |  |  |       <span slot="footer" class="dialog-footer"> | 
 |  |  |         <el-button @click="closeDia">å æ¶</el-button> | 
 |  |  |         <el-button v-if="operationType !== 'view'" type="primary" @click="saveRecord" :loading="buttonLoading">ç¡® å®</el-button> | 
 |  |  |       </span> | 
 |  |  |     </el-dialog> | 
 |  |  |   </div> | 
 |  |  | </template> | 
 |  |  |  | 
 |  |  | <script> | 
 |  |  | import { | 
 |  |  |   addDeviceMaintenance, | 
 |  |  |   deleteDeviceMaintenance, | 
 |  |  |   selectDeviceMaintenancePage | 
 |  |  | } from "@/api/cnas/resourceDemand/device"; | 
 |  |  | import limsTable from "@/components/Table/lims-table.vue"; | 
 |  |  | import {selectUserCondition} from "@/api/system/user"; | 
 |  |  |  | 
 |  |  | export default { | 
 |  |  |   name: '', | 
 |  |  |   // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ | 
 |  |  |   components: {limsTable}, | 
 |  |  |   props: { | 
 |  |  |     clickNodeVal: { | 
 |  |  |       type: Object, | 
 |  |  |       default: () => { | 
 |  |  |         return {}; | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |   }, | 
 |  |  |   data() { | 
 |  |  |     // è¿éåæ¾æ°æ® | 
 |  |  |     return { | 
 |  |  |       search: { | 
 |  |  |         maintenanceDate: '', | 
 |  |  |       }, | 
 |  |  |       outLoading: false, | 
 |  |  |       tableData: [], | 
 |  |  |       tableLoading: false, | 
 |  |  |       page: { | 
 |  |  |         total: 0, | 
 |  |  |         size: 20, | 
 |  |  |         current: 1 | 
 |  |  |       }, | 
 |  |  |       column: [ | 
 |  |  |         { label: 'ç»´æ¤æ¥æ', prop: 'maintenanceDate' }, | 
 |  |  |         { label: 'ç»´æ¤å
容', prop: 'maintenanceContent' }, | 
 |  |  |         { label: 'ç»´æ¤äºº', prop: 'maintenanceUserName' }, | 
 |  |  |         { label: '夿³¨', prop: 'remark' }, | 
 |  |  |         { | 
 |  |  |           dataType: 'action', | 
 |  |  |           label: 'æä½', | 
 |  |  |           operation: [ | 
 |  |  |             { | 
 |  |  |               name: 'ç¼è¾', | 
 |  |  |               type: 'text', | 
 |  |  |               clickFun: (row) => { | 
 |  |  |                 this.openDia('edit', row); | 
 |  |  |               }, | 
 |  |  |             }, | 
 |  |  |             { | 
 |  |  |               name: 'å é¤', | 
 |  |  |               type: 'text', | 
 |  |  |               clickFun: (row) => { | 
 |  |  |                 this.handleDeleteClick(row); | 
 |  |  |               }, | 
 |  |  |             }, | 
 |  |  |           ] | 
 |  |  |         } | 
 |  |  |       ], | 
 |  |  |       dialogVisible: false, | 
 |  |  |       form: { | 
 |  |  |         id: '', | 
 |  |  |         deviceId: '', | 
 |  |  |         maintenanceDate: '', | 
 |  |  |         maintenanceContentArr: [], | 
 |  |  |         maintenanceContent: '', | 
 |  |  |         maintenanceUserId: '', | 
 |  |  |         remark: '', | 
 |  |  |       }, | 
 |  |  |       operationType: '', | 
 |  |  |       buttonLoading: false, | 
 |  |  |       qualificationList: [], | 
 |  |  |       rules: { | 
 |  |  |         maintenanceDate: [{ required: true, message: 'è¯·éæ©ç»´æ¤æ¥æ', trigger: 'change' }], | 
 |  |  |         maintenanceContentArr: [{ required: true, message: 'è¯·éæ©ç»´æ¤å
容', trigger: 'change' }], | 
 |  |  |         maintenanceUserId: [{ required: true, message: 'è¯·éæ©ç»´æ¤äºº', trigger: 'change' }], | 
 |  |  |       }, | 
 |  |  |       responsibleOptions: [], | 
 |  |  |     }; | 
 |  |  |   }, | 
 |  |  |   mounted() { | 
 |  |  |     this.refreshTableList() | 
 |  |  |   }, | 
 |  |  |   // æ¹æ³éå | 
 |  |  |   methods: { | 
 |  |  |     // ç¹å»å·æ° | 
 |  |  |     refreshTableList () { | 
 |  |  |       this.page.current = 1; | 
 |  |  |       this.getTableList() | 
 |  |  |     }, | 
 |  |  |     // å页忢 | 
 |  |  |     pagination(page) { | 
 |  |  |       this.page.size = page.limit | 
 |  |  |       this.getTableList() | 
 |  |  |     }, | 
 |  |  |     getTableList () { | 
 |  |  |       this.tableLoading = true | 
 |  |  |       selectDeviceMaintenancePage({ | 
 |  |  |         deviceId: this.clickNodeVal.value, | 
 |  |  |         ...this.page | 
 |  |  |       }).then(res => { | 
 |  |  |         this.tableLoading = false | 
 |  |  |         this.tableData = res.data.records | 
 |  |  |         this.page.total = res.data.total | 
 |  |  |       }).catch(err => { | 
 |  |  |         this.tableLoading = false | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |     // æå¼æä½å¼¹æ¡ | 
 |  |  |     openDia (type, row) { | 
 |  |  |       this.operationType = type | 
 |  |  |       this.dialogVisible = true | 
 |  |  |       this.$nextTick(() => { | 
 |  |  |         this.$refs['form'].resetFields() | 
 |  |  |         this.form.id = '' | 
 |  |  |         if (this.operationType === 'edit') { | 
 |  |  |           this.form = {...row} | 
 |  |  |           this.$set(this.form, 'maintenanceContentArr', this.form.maintenanceContent.split(',')) | 
 |  |  |         } | 
 |  |  |       }) | 
 |  |  |       this.getDictS() | 
 |  |  |       this.getUserList() | 
 |  |  |     }, | 
 |  |  |     // æ¥è¯¢ç»´æ¤å
容鿩æ¡å
容 | 
 |  |  |     getDictS () { | 
 |  |  |       // å®ä¹å®éªå®¤åç§°ä¸ç»´æ¤å
容类åçæ å°å
³ç³» | 
 |  |  |       const labTypeMapping = { | 
 |  |  |         'èå室': 'aging_maintenance_content', | 
 |  |  |         'èåå®éªå®¤': 'aging_maintenance_content', | 
 |  |  |         'çµæ§è½å®éªå®¤': 'electrical_maintenance_content', | 
 |  |  |         'ç¯å¢å®éªå®¤': 'environmental_maintenance_content', | 
 |  |  |         'çç§å®éªå®¤': 'burn_maintenance_content', | 
 |  |  |         'æ··ç¼å®éªå®¤': 'mixing_maintenance_content', | 
 |  |  |         'æ£æµä¸å¿çµæ§è½å®éªå®¤': 'center_electrical_maintenance_content', | 
 |  |  |         'ææ¸©äº': 'temperature2_maintenance_content', | 
 |  |  |         'ææ¸©ä¸': 'temperature1_maintenance_content', | 
 |  |  |         'åå¦å®éªå®¤': 'chemistry_maintenance_content', | 
 |  |  |         'å¶æ ·å®¤': 'sample_maintenance_content', | 
 |  |  |         '使¸©å®éªå®¤': 'hypothermia_maintenance_content', | 
 |  |  |       }; | 
 |  |  |       // è·åå½åèç¹çå®éªå®¤åç§° | 
 |  |  |       const name = this.clickNodeVal.parent.label; | 
 |  |  |       // æ ¹æ®æ å°å
³ç³»è·å对åºçç±»å | 
 |  |  |       const type = labTypeMapping[name]; | 
 |  |  |       this.getDicts(type).then((response) => { | 
 |  |  |         this.qualificationList = response.data.map((m) => { | 
 |  |  |           return { | 
 |  |  |             label: m.dictLabel, | 
 |  |  |             value: m.dictValue, | 
 |  |  |           }; | 
 |  |  |         }); | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |     openHandleOut () { | 
 |  |  |  | 
 |  |  |     }, | 
 |  |  |     handleDeleteClick(row) { | 
 |  |  |       this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æä»¶, æ¯å¦ç»§ç»?', 'æç¤º', { | 
 |  |  |         confirmButtonText: 'ç¡®å®', | 
 |  |  |         cancelButtonText: 'åæ¶', | 
 |  |  |         type: 'warning' | 
 |  |  |       }).then(() => { | 
 |  |  |         deleteDeviceMaintenance({ id: row.id }).then(res => { | 
 |  |  |           this.$message({ | 
 |  |  |             type: 'success', | 
 |  |  |             message: 'å é¤æå!' | 
 |  |  |           }); | 
 |  |  |           this.refreshTableList() | 
 |  |  |         }) | 
 |  |  |       }).catch(() => { | 
 |  |  |         this.$message({ | 
 |  |  |           type: 'info', | 
 |  |  |           message: '已忶å é¤' | 
 |  |  |         }); | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |     // æäº¤æ°å¢åä¿å | 
 |  |  |     saveRecord () { | 
 |  |  |       this.$refs.form.validate((valid) => { | 
 |  |  |         if (valid) { | 
 |  |  |           this.buttonLoading = true; | 
 |  |  |           this.form.maintenanceContent = this.form.maintenanceContentArr.join(',') | 
 |  |  |           this.form.deviceId = this.clickNodeVal.value | 
 |  |  |           addDeviceMaintenance(this.form).then(res => { | 
 |  |  |             this.buttonLoading = false; | 
 |  |  |             this.$message.success('æ°å¢æå') | 
 |  |  |             this.closeDia() | 
 |  |  |             this.getTableList() | 
 |  |  |           }).catch(err => { | 
 |  |  |             this.buttonLoading = false; | 
 |  |  |           }) | 
 |  |  |         } | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |     closeDia () { | 
 |  |  |       this.$refs['form'].resetFields(); | 
 |  |  |       this.dialogVisible = false | 
 |  |  |       this.refreshTableList() | 
 |  |  |     }, | 
 |  |  |     // è·åè´è´£äººä¿¡æ¯æ¥å£ | 
 |  |  |     getUserList() { | 
 |  |  |       selectUserCondition({type: 2}).then(res => { | 
 |  |  |         if (res.code == 200) { | 
 |  |  |           this.responsibleOptions = res.data | 
 |  |  |         } | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |   }, | 
 |  |  |   watch: { | 
 |  |  |     // çå¬ç¹å»el-treeçæ°æ®ï¼è¿è¡æ°æ®å·æ° | 
 |  |  |     clickNodeVal(newVal) { | 
 |  |  |       if (newVal.value) { | 
 |  |  |         this.refreshTableList(); | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |   } | 
 |  |  | }; | 
 |  |  | </script> | 
 |  |  |  | 
 |  |  | <style scoped> | 
 |  |  | .search { | 
 |  |  |   height: 46px; | 
 |  |  |   text-align: right; | 
 |  |  |   margin-top: 10px; | 
 |  |  | } | 
 |  |  | </style> | 
 
 |  |  | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <el-button :disabled="scope.row.status === 1" size="small" type="text" | 
 |  |  |                 @click="handleForm('edit', scope.row)">ç¼è¾</el-button> | 
 |  |  |               <el-button size="small" type="text" @click="handleForm('view', scope.row)">æ¥ç</el-button> | 
 |  |  |               <el-button :disabled="scope.row.status === 1" size="small" type="text" | 
 |  |  |                 @click="tellApprove(scope.row.maintenancePlanId)">审核éç¥</el-button> | 
 |  |  |               <el-button :disabled="scope.row.status === 1 || userId != scope.row.auditId" size="small" type="text" | 
 |  |  | 
 |  |  |     <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="applicationForm" | 
 |  |  |       title="设å¤ä¿å
»è®¡å表" width="80%" @close="closeDialog"> | 
 |  |  |       <div style="display: flex;align-items: center;"> | 
 |  |  |         <el-button v-if="operationType !== 'check'" size="small" type="primary" @click="addTableRow">æ·»å </el-button> | 
 |  |  |         <el-button v-if="operationType === 'edit'" size="small" type="primary" @click="addTableRow">æ·»å </el-button> | 
 |  |  |         <span style="width: 60px;margin-left: 10px">年份ï¼</span> | 
 |  |  |         <el-date-picker v-model="form.planYear" type="year" value-format="yyyy" clearable size="small" format="yyyy" | 
 |  |  |           placeholder="鿩年"> | 
 |  |  |           placeholder="鿩年" :disabled="operationType !== 'edit'"> | 
 |  |  |         </el-date-picker> | 
 |  |  |       </div> | 
 |  |  |       <div style="margin: 10px 0"> | 
 |  |  |         <el-table ref="yearTable" :data="deviceMaintenancePlanDetails" id="templateParamTable" row-key="deviceId" | 
 |  |  |                   :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border | 
 |  |  |           height="300px" style="width: 100% ;"> | 
 |  |  |           height="560px" style="width: 100% ;"> | 
 |  |  |           <el-table-column align="center" header-align="center" label="åºå·" type="index" width="60"></el-table-column> | 
 |  |  |           <el-table-column label="设å¤åç§°" min-width="170" prop="deviceName"> | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <el-input v-model="scope.row.deviceName" :disabled="operationType === 'check'" clearable | 
 |  |  |               <el-input v-model="scope.row.deviceName" :disabled="operationType !== 'edit'" clearable | 
 |  |  |                 size="small"></el-input> | 
 |  |  |             </template> | 
 |  |  |           </el-table-column> | 
 |  |  |           <el-table-column label="设å¤ç¼å·" min-width="140" prop="deviceNumber"> | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <el-input v-model="scope.row.deviceNumber" :disabled="operationType === 'check'" clearable | 
 |  |  |               <el-input v-model="scope.row.deviceNumber" :disabled="operationType !== 'edit'" clearable | 
 |  |  |                 size="small"></el-input> | 
 |  |  |             </template> | 
 |  |  |           </el-table-column> | 
 |  |  |           <el-table-column label="å½å±å®éªå®¤" min-width="120" prop="storagePoint"> | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <el-input v-model="scope.row.storagePoint" :disabled="operationType === 'check'" clearable | 
 |  |  |               <el-input v-model="scope.row.storagePoint" :disabled="operationType !== 'edit'" clearable | 
 |  |  |                 size="small"></el-input> | 
 |  |  |             </template> | 
 |  |  |           </el-table-column> | 
 |  |  |           <el-table-column label="ä¿å
Ȍ
³é®é¨ä½" min-width="120" prop="maintenanceSite"> | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <el-input v-model="scope.row.maintenanceSite" :disabled="operationType === 'check'" clearable size="small" | 
 |  |  |               <el-input v-model="scope.row.maintenanceSite" :disabled="operationType !== 'edit'" clearable size="small" | 
 |  |  |                 type="textarea"></el-input> | 
 |  |  |             </template> | 
 |  |  |           </el-table-column> | 
 |  |  |           <el-table-column label="ä¿å
Ȍ
容" min-width="120" prop="maintenanceContent"> | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <el-input v-model="scope.row.maintenanceContent" :disabled="operationType === 'check'" clearable | 
 |  |  |               <el-input v-model="scope.row.maintenanceContent" :disabled="operationType !== 'edit'" clearable | 
 |  |  |                 size="small" type="textarea"></el-input> | 
 |  |  |             </template> | 
 |  |  |           </el-table-column> | 
 |  |  |           <el-table-column label="ä¿å
»å¨æ" min-width="90" prop="maintenanceIntervals"> | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <el-input v-model="scope.row.maintenanceIntervals" :disabled="operationType === 'check'" clearable | 
 |  |  |               <el-input v-model="scope.row.maintenanceIntervals" :disabled="operationType !== 'edit'" clearable | 
 |  |  |                 size="small"></el-input> | 
 |  |  |             </template> | 
 |  |  |           </el-table-column> | 
 |  |  |           <el-table-column fixed="right" label="æä½" width="80" align="center" v-if="operationType !== 'check'"> | 
 |  |  |           <el-table-column fixed="right" label="æä½" width="80" align="center" v-if="operationType === 'edit'"> | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <el-button style="color: #f56c6c" type="text" @click="deleteRow(scope.$index)">å é¤</el-button> | 
 |  |  |             </template> | 
 |  |  | 
 |  |  |       </div> | 
 |  |  |       <span slot="footer" class="dialog-footer"> | 
 |  |  |         <el-button @click="closeDialog">å æ¶</el-button> | 
 |  |  |         <el-button v-if="operationType !== 'check'" :loading="submitFormLoading" type="primary" @click="submitForm">ç¡® | 
 |  |  |         <el-button v-if="operationType === 'edit'" :loading="submitFormLoading" type="primary" @click="submitForm">ç¡® | 
 |  |  |           è®¤</el-button> | 
 |  |  |         <el-button v-if="operationType === 'check'" :loading="submitFormLoading" type="primary" | 
 |  |  |           @click="checkStatus(0)">ä¸éè¿</el-button> | 
 |  |  | 
 |  |  |       </el-table> | 
 |  |  |       <span slot="footer" class="dialog-footer"> | 
 |  |  |         <el-button @click="addEquipDia = false">å æ¶</el-button> | 
 |  |  |         <el-button v-if="operationType !== 'check'" :loading="submitFormLoading" type="primary" | 
 |  |  |         <el-button v-if="operationType === 'edit'" :loading="submitFormLoading" type="primary" | 
 |  |  |           @click="changeMachineName">ç¡® | 
 |  |  |           è®¤</el-button> | 
 |  |  |       </span> | 
 
 |  |  | 
 |  |  |           </el-table-column> | 
 |  |  |           <el-table-column label="æ¹åæ¶é´" min-width="180" prop="auditDate"></el-table-column> | 
 |  |  |           <!-- æä½æé® --> | 
 |  |  |           <el-table-column align="center" fixed="right" label="æä½" min-width="240"> | 
 |  |  |           <el-table-column align="center" fixed="right" label="æä½" min-width="270"> | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <el-button :disabled="scope.row.status === 1" size="small" type="text" | 
 |  |  |                 @click="handleForm('edit', scope.row)">ç¼è¾</el-button> | 
 |  |  |               <el-button size="small" type="text" @click="handleForm('view', scope.row)">æ¥ç</el-button> | 
 |  |  |               <el-button :disabled="scope.row.status === 1" size="small" type="text" | 
 |  |  |                 @click="tellApprove(scope.row.traceabilityManagementId)">æ¹åéç¥</el-button> | 
 |  |  |               <el-button :disabled="scope.row.status === 1 || userId != scope.row.auditId" size="small" type="text" | 
 |  |  | 
 |  |  |     <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="applicationForm" | 
 |  |  |       title="仪å¨è®¾å¤é弿º¯æºç®¡çæ»ä½è®¡å" width="80%" @close="closeDialog"> | 
 |  |  |       <div style="display: flex;align-items: center;"> | 
 |  |  |         <el-button v-if="operationType !== 'check'" size="small" type="primary" @click="addTableRow">æ·»å </el-button> | 
 |  |  |         <el-button v-if="operationType === 'edit'" size="small" type="primary" @click="addTableRow">æ·»å </el-button> | 
 |  |  |         <span style="width: 60px;margin-left: 10px">年份ï¼</span> | 
 |  |  |         <el-date-picker v-model="form.planYear" type="year" value-format="yyyy" clearable size="small" format="yyyy" | 
 |  |  |           placeholder="鿩年"> | 
 |  |  |           placeholder="鿩年" :disabled="operationType !== 'edit'"> | 
 |  |  |         </el-date-picker> | 
 |  |  |       </div> | 
 |  |  |       <div style="margin: 10px 0"> | 
 |  |  |         <el-table ref="yearTable" :data="deviceTraceabilityManagementDetails" height="300px" id="templateParamTable" | 
 |  |  |         <el-table ref="yearTable" :data="deviceTraceabilityManagementDetails" height="560px" id="templateParamTable" | 
 |  |  |                   :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border | 
 |  |  |                   row-key="deviceId" v-loading="yearTableLoading"> | 
 |  |  |           <el-table-column align="center" header-align="center" label="åºå·" type="index" width="60"></el-table-column> | 
 |  |  |           <el-table-column label="设å¤åç§°" min-width="170" prop="deviceId"> | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <el-input v-model="scope.row.deviceName" :disabled="operationType === 'check'" clearable | 
 |  |  |               <el-input v-model="scope.row.deviceName" :disabled="operationType !== 'edit'" clearable | 
 |  |  |                 size="small"></el-input> | 
 |  |  |             </template> | 
 |  |  |           </el-table-column> | 
 |  |  |           <el-table-column label="åå·" min-width="140" prop="specificationModel"> | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <el-input v-model="scope.row.specificationModel" :disabled="operationType === 'check'" clearable | 
 |  |  |               <el-input v-model="scope.row.specificationModel" :disabled="operationType !== 'edit'" clearable | 
 |  |  |                 size="small"></el-input> | 
 |  |  |             </template> | 
 |  |  |           </el-table-column> | 
 |  |  |           <el-table-column label="设å¤ç¼å·" min-width="140" prop="managementNumber"> | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <el-input v-model="scope.row.managementNumber" :disabled="operationType === 'check'" clearable | 
 |  |  |               <el-input v-model="scope.row.managementNumber" :disabled="operationType !== 'edit'" clearable | 
 |  |  |                 size="small"></el-input> | 
 |  |  |             </template> | 
 |  |  |           </el-table-column> | 
 |  |  |           <el-table-column label="ææ¯ææ åæ°" min-width="150" prop="technicalIndexParameters"> | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <el-input v-model="scope.row.technicalIndexParameters" :disabled="operationType === 'check'" clearable | 
 |  |  |               <el-input v-model="scope.row.technicalIndexParameters" :disabled="operationType !== 'edit'" clearable | 
 |  |  |                 size="small" type="textarea"></el-input> | 
 |  |  |             </template> | 
 |  |  |           </el-table-column> | 
 |  |  |           <el-table-column label="ææ¯ææ è¦æ±" min-width="150" prop="technicalRequirements"> | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <el-input v-model="scope.row.technicalRequirements" :disabled="operationType === 'check'" clearable | 
 |  |  |               <el-input v-model="scope.row.technicalRequirements" :disabled="operationType !== 'edit'" clearable | 
 |  |  |                 size="small" type="textarea"></el-input> | 
 |  |  |             </template> | 
 |  |  |           </el-table-column> | 
 |  |  |           <el-table-column label="æ£å®å¨æ" min-width="120" prop="verificationCycle"> | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <el-input v-model="scope.row.verificationCycle" :disabled="operationType === 'check'" clearable | 
 |  |  |               <el-input v-model="scope.row.verificationCycle" :disabled="operationType !== 'edit'" clearable | 
 |  |  |                 size="small" type="textarea"></el-input> | 
 |  |  |             </template> | 
 |  |  |           </el-table-column> | 
 |  |  |           <el-table-column label="æ£å®åä½" min-width="90" prop="verificationUnit"> | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <el-input v-model="scope.row.verificationUnit" :disabled="operationType === 'check'" clearable | 
 |  |  |               <el-input v-model="scope.row.verificationUnit" :disabled="operationType !== 'edit'" clearable | 
 |  |  |                 size="small" type="textarea"></el-input> | 
 |  |  |             </template> | 
 |  |  |           </el-table-column> | 
 |  |  |           <el-table-column label="夿³¨" min-width="90" prop="remark"> | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <el-input v-model="scope.row.remark" :disabled="operationType === 'check'" clearable size="small" | 
 |  |  |               <el-input v-model="scope.row.remark" :disabled="operationType !== 'edit'" clearable size="small" | 
 |  |  |                 type="textarea"></el-input> | 
 |  |  |             </template> | 
 |  |  |           </el-table-column> | 
 |  |  |           <el-table-column fixed="right" label="æä½" width="80" align="center" v-if="operationType !== 'check'"> | 
 |  |  |           <el-table-column fixed="right" label="æä½" width="80" align="center" v-if="operationType === 'edit'"> | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <el-button style="color: #f56c6c" type="text" @click="deleteRow(scope.$index)">å é¤</el-button> | 
 |  |  |             </template> | 
 |  |  | 
 |  |  |       </div> | 
 |  |  |       <span slot="footer" class="dialog-footer"> | 
 |  |  |         <el-button @click="closeDialog">å æ¶</el-button> | 
 |  |  |         <el-button v-if="operationType !== 'check'" :loading="submitFormLoading" type="primary" @click="submitForm">ç¡® | 
 |  |  |         <el-button v-if="operationType === 'edit'" :loading="submitFormLoading" type="primary" @click="submitForm">ç¡® | 
 |  |  |           è®¤</el-button> | 
 |  |  |         <el-button v-if="operationType === 'check'" :loading="submitFormLoading" type="primary" | 
 |  |  |           @click="checkStatus(0)">ä¸éè¿</el-button> | 
 |  |  | 
 |  |  |       </el-table> | 
 |  |  |       <span slot="footer" class="dialog-footer"> | 
 |  |  |         <el-button @click="addEquipDia = false">å æ¶</el-button> | 
 |  |  |         <el-button v-if="operationType !== 'check'" :loading="submitFormLoading" type="primary" | 
 |  |  |         <el-button v-if="operationType === 'edit'" :loading="submitFormLoading" type="primary" | 
 |  |  |           @click="changeMachineName">ç¡® | 
 |  |  |           è®¤</el-button> | 
 |  |  |       </span> | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | <template> | 
 |  |  |   <div> | 
 |  |  |     <div class="search"> | 
 |  |  |       <el-button size="small" type="primary" @click="refreshTableList">å· æ°</el-button> | 
 |  |  |       <el-button size="small" type="primary" @click="openDia('add')">æ° å¢</el-button> | 
 |  |  |       <el-button :loading="outLoading" size="small" type="primary" @click="openHandleOut">导 åº</el-button> | 
 |  |  |     </div> | 
 |  |  |     <div> | 
 |  |  |       <lims-table :tableData="tableData" :column="column" | 
 |  |  |                   height="calc(100vh - 20em)" @pagination="pagination" | 
 |  |  |                   :page="page" :tableLoading="tableLoading"></lims-table> | 
 |  |  |     </div> | 
 |  |  |     <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="usageTableDia" | 
 |  |  |                title="设å¤ä¿å
»è®¡å表" width="80%" @close="closeDialog"> | 
 |  |  |       <div style="display: flex;align-items: center;"> | 
 |  |  |         <el-button size="small" type="primary" @click="addTableRow">æ·»å </el-button> | 
 |  |  |         <span style="width: 60px;margin-left: 10px">年份ï¼</span> | 
 |  |  |         <el-date-picker v-model="form.impowerYear" type="year" value-format="yyyy" clearable size="small" format="yyyy" | 
 |  |  |                         placeholder="鿩年"> | 
 |  |  |         </el-date-picker> | 
 |  |  |       </div> | 
 |  |  |       <div style="margin: 10px 0"> | 
 |  |  |         <el-table ref="usageTableData" :data="usageTableData" id="templateParamTable" row-key="deviceId" | 
 |  |  |                   :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border | 
 |  |  |                   height="560px" style="width: 100% ;"> | 
 |  |  |           <el-table-column align="center" header-align="center" label="åºå·" type="index" width="60"></el-table-column> | 
 |  |  |           <el-table-column label="设å¤åç§°" min-width="170" prop="deviceName"> | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <el-input v-model="scope.row.deviceName" clearable | 
 |  |  |                         size="small" :disabled="operationType === 'check'"></el-input> | 
 |  |  |             </template> | 
 |  |  |           </el-table-column> | 
 |  |  |           <el-table-column label="设å¤ç¼å·" min-width="140" prop="deviceNumber"> | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <el-input v-model="scope.row.deviceNumber" clearable | 
 |  |  |                         size="small" :disabled="operationType === 'check'"></el-input> | 
 |  |  |             </template> | 
 |  |  |           </el-table-column> | 
 |  |  |           <el-table-column label="è§æ ¼åå·" min-width="120" prop="model"> | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <el-input v-model="scope.row.model" clearable | 
 |  |  |                         size="small" :disabled="operationType === 'check'"></el-input> | 
 |  |  |             </template> | 
 |  |  |           </el-table-column> | 
 |  |  |           <el-table-column label="æ£æµé¡¹ç®" min-width="120" prop="inspectionItem<"> | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <el-input v-model="scope.row.inspectionItem" clearable size="small" | 
 |  |  |                        :disabled="operationType === 'check'"></el-input> | 
 |  |  |             </template> | 
 |  |  |           </el-table-column> | 
 |  |  |           <el-table-column label="被ææäºº" min-width="120" prop="delegatee"> | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <el-select v-model="scope.row.delegatedUserArr" | 
 |  |  |                          clearable filterable multiple | 
 |  |  |                          :disabled="operationType === 'check'" | 
 |  |  |                          placeholder="è¯·éæ©" size="small" style="width: 100%;"> | 
 |  |  |                 <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> | 
 |  |  |                 </el-option> | 
 |  |  |               </el-select> | 
 |  |  |             </template> | 
 |  |  |           </el-table-column> | 
 |  |  |           <el-table-column fixed="right" label="æä½" width="80" align="center"> | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <el-button style="color: #f56c6c" type="text" @click="deleteRow(scope.$index)">å é¤</el-button> | 
 |  |  |             </template> | 
 |  |  |           </el-table-column> | 
 |  |  |         </el-table> | 
 |  |  |       </div> | 
 |  |  |       <span slot="footer" class="dialog-footer"> | 
 |  |  |         <el-button @click="closeDialog">å æ¶</el-button> | 
 |  |  |         <el-button v-if="operationType !== 'check'" :loading="submitFormLoading" type="primary" @click="submitForm">确认</el-button> | 
 |  |  |         <el-button v-if="operationType === 'check'" :loading="submitFormLoading" type="primary" | 
 |  |  |                    @click="checkStatus(0)">ä¸éè¿</el-button> | 
 |  |  |         <el-button v-if="operationType === 'check'" :loading="submitFormLoading" type="primary" | 
 |  |  |                    @click="checkStatus(1)">éè¿</el-button> | 
 |  |  |       </span> | 
 |  |  |     </el-dialog> | 
 |  |  |     <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="addEquipDia" title="æ·»å è®¾å¤" | 
 |  |  |                width="50%"> | 
 |  |  |       <div style="display: flex;align-items: center;"> | 
 |  |  |         <span style="width: 90px;margin-left: 10px">被ææäººï¼</span> | 
 |  |  |         <el-select v-model="delegatedUser" clearable filterable multiple | 
 |  |  |                    placeholder="è¯·éæ©" size="small" style="width: 100%;"> | 
 |  |  |           <el-option v-for="item in responsibleOptions" :key="item.name" :label="item.name" :value="item.name"> | 
 |  |  |           </el-option> | 
 |  |  |         </el-select> | 
 |  |  |       </div> | 
 |  |  |       <el-table ref="multipleTable" :data="equipOptions" tooltip-effect="dark" height="500" style="width: 100%" | 
 |  |  |                 :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border | 
 |  |  |                 @selection-change="handleSelectionChange"> | 
 |  |  |         <el-table-column type="selection" width="55"></el-table-column> | 
 |  |  |         <el-table-column label="设å¤åç§°" prop="label" width="190"></el-table-column> | 
 |  |  |         <el-table-column prop="value" label="设å¤ç¼å·" width="130"></el-table-column> | 
 |  |  |         <el-table-column prop="managementNumber" label="å½å±å®éªå®¤"></el-table-column> | 
 |  |  |       </el-table> | 
 |  |  |       <span slot="footer" class="dialog-footer"> | 
 |  |  |         <el-button @click="addEquipDia = false">å æ¶</el-button> | 
 |  |  |         <el-button :loading="submitFormLoading" type="primary" @click="changeMachineName">确认</el-button> | 
 |  |  |       </span> | 
 |  |  |     </el-dialog> | 
 |  |  |   </div> | 
 |  |  | </template> | 
 |  |  |  | 
 |  |  | <script> | 
 |  |  | import limsTable from "@/components/Table/lims-table.vue"; | 
 |  |  | import { | 
 |  |  |   addImpower, | 
 |  |  |   deleteImpower, deviceScopeSearch, getImpowerDetail, reviewImpowerStatus, | 
 |  |  |   selectDeviceImpowerByPage, updateImpower | 
 |  |  | } from "@/api/cnas/resourceDemand/device"; | 
 |  |  | import {exportQualityMonitorDetail} from "@/api/cnas/process/ensureResults/qualityMonitor"; | 
 |  |  | import {selectUserCondition} from "@/api/system/user"; | 
 |  |  |  | 
 |  |  | export default { | 
 |  |  |   name: '', | 
 |  |  |   // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ | 
 |  |  |   components: {limsTable}, | 
 |  |  |   props: { | 
 |  |  |     clickNodeVal: { | 
 |  |  |       type: Object, | 
 |  |  |       default: () => { | 
 |  |  |       } | 
 |  |  |     } | 
 |  |  |   }, | 
 |  |  |   data() { | 
 |  |  |     // è¿éåæ¾æ°æ® | 
 |  |  |     return { | 
 |  |  |       outLoading: false, | 
 |  |  |       tableData: [], | 
 |  |  |       tableLoading: false, | 
 |  |  |       page: { | 
 |  |  |         total: 0, | 
 |  |  |         size: 20, | 
 |  |  |         current: 1 | 
 |  |  |       }, | 
 |  |  |       column: [ | 
 |  |  |         { label: '计å年份', prop: 'impowerYear' }, | 
 |  |  |         { label: 'ç¼å¶äºº', prop: 'compiler' }, | 
 |  |  |         { label: 'ç¼å¶æ¶é´', prop: 'datePreparation' }, | 
 |  |  |         { label: 'ææäºº', prop: 'audit' }, | 
 |  |  |         { label: 'æææ¥æ', prop: 'auditDate' }, | 
 |  |  |         { | 
 |  |  |           dataType: 'action', | 
 |  |  |           label: 'æä½', | 
 |  |  |           operation: [ | 
 |  |  |             { | 
 |  |  |               name: 'ç¼è¾', | 
 |  |  |               type: 'text', | 
 |  |  |               clickFun: (row) => { | 
 |  |  |                 this.openDia('edit', row); | 
 |  |  |               }, | 
 |  |  |             }, | 
 |  |  |             { | 
 |  |  |               name: 'ææ', | 
 |  |  |               type: 'text', | 
 |  |  |               clickFun: (row) => { | 
 |  |  |                 this.openDia('check', row); | 
 |  |  |               }, | 
 |  |  |             }, | 
 |  |  |             { | 
 |  |  |               name: 'å é¤', | 
 |  |  |               type: 'text', | 
 |  |  |               clickFun: (row) => { | 
 |  |  |                 this.handleDeleteClick(row); | 
 |  |  |               }, | 
 |  |  |             }, | 
 |  |  |           ] | 
 |  |  |         } | 
 |  |  |       ], | 
 |  |  |       responsibleOptions: [], | 
 |  |  |       operationType: '', | 
 |  |  |       usageTableDia: false, | 
 |  |  |       usageTableData: [], | 
 |  |  |       submitFormLoading: false, | 
 |  |  |       addEquipDia: false, | 
 |  |  |       equipOptions: [], | 
 |  |  |       selectionRows: [], | 
 |  |  |       form: { | 
 |  |  |         impowerYear: '' | 
 |  |  |       }, | 
 |  |  |       delegatedUser: [], | 
 |  |  |       impowerId: '' | 
 |  |  |     }; | 
 |  |  |   }, | 
 |  |  |   mounted() { | 
 |  |  |     this.refreshTableList() | 
 |  |  |   }, | 
 |  |  |   // æ¹æ³éå | 
 |  |  |   methods: { | 
 |  |  |     // ç¹å»å·æ° | 
 |  |  |     refreshTableList () { | 
 |  |  |       this.page.current = 1; | 
 |  |  |       this.getTableList() | 
 |  |  |     }, | 
 |  |  |     // å页忢 | 
 |  |  |     pagination(page) { | 
 |  |  |       this.page.size = page.limit | 
 |  |  |       this.getTableList() | 
 |  |  |     }, | 
 |  |  |     getTableList () { | 
 |  |  |       this.tableLoading = true | 
 |  |  |       selectDeviceImpowerByPage({ | 
 |  |  |         ...this.page | 
 |  |  |       }).then(res => { | 
 |  |  |         this.tableLoading = false | 
 |  |  |         this.tableData = res.data.records | 
 |  |  |         this.page.total = res.data.total | 
 |  |  |       }).catch(err => { | 
 |  |  |         this.tableLoading = false | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |     // æå¼æä½å¼¹æ¡ | 
 |  |  |     openDia (type, row) { | 
 |  |  |       this.operationType = type | 
 |  |  |       this.usageTableDia = true | 
 |  |  |       this.form = { | 
 |  |  |         impowerYear: '', | 
 |  |  |         usageTableData: [], | 
 |  |  |       } | 
 |  |  |       this.usageTableData = [] | 
 |  |  |       if (row) { | 
 |  |  |         this.impowerId = row.impowerId | 
 |  |  |         getImpowerDetail({ impowerId: this.impowerId }).then(res => { | 
 |  |  |           if (res.code === 200) { | 
 |  |  |             this.form = res.data | 
 |  |  |             this.usageTableData = this.form.usageTableData | 
 |  |  |           } | 
 |  |  |         }).catch(error => { | 
 |  |  |           console.error(error) | 
 |  |  |         }) | 
 |  |  |       } | 
 |  |  |       this.getEquipOptions() | 
 |  |  |       this.getUserList() | 
 |  |  |     }, | 
 |  |  |     closeDialog () { | 
 |  |  |       this.usageTableDia = false | 
 |  |  |       this.getTableList() | 
 |  |  |     }, | 
 |  |  |     // æ·»å è®¾å¤ | 
 |  |  |     addTableRow() { | 
 |  |  |       this.addEquipDia = true | 
 |  |  |       this.delegatedUser = this.responsibleOptions.map((item) => item.name); | 
 |  |  |       this.getEquipOptions() | 
 |  |  |     }, | 
 |  |  |     // å é¤è¡¨æ ¼è¡ | 
 |  |  |     deleteRow(index) { | 
 |  |  |       this.usageTableData.splice(index, 1) | 
 |  |  |     }, | 
 |  |  |     // æäº¤æ°å¢åä¿®æ¹ | 
 |  |  |     submitForm() { | 
 |  |  |       this.form.usageTableData = this.HaveJson(this.usageTableData) | 
 |  |  |       this.form.usageTableData.forEach((item) => { | 
 |  |  |         item.delegatedUser = item.delegatedUserArr.join(',') | 
 |  |  |       }) | 
 |  |  |       this.submitFormLoading = true | 
 |  |  |       if (this.operationType === 'add') { | 
 |  |  |         addImpower(this.form).then(res => { | 
 |  |  |           if (res.code == 200) { | 
 |  |  |             this.$message.success('æ°å¢æå') | 
 |  |  |             this.usageTableDia = false | 
 |  |  |             this.refreshTableList() | 
 |  |  |           } | 
 |  |  |           this.submitFormLoading = false | 
 |  |  |         }).catch(err => { | 
 |  |  |           this.submitFormLoading = false | 
 |  |  |         }) | 
 |  |  |       } else { | 
 |  |  |         updateImpower(this.form).then(res => { | 
 |  |  |           if (res.code == 200) { | 
 |  |  |             this.$message.success('ä¿®æ¹æå') | 
 |  |  |             this.usageTableDia = false | 
 |  |  |             this.refreshTableList() | 
 |  |  |           } | 
 |  |  |           this.submitFormLoading = false | 
 |  |  |         }).catch(err => { | 
 |  |  |           this.submitFormLoading = false | 
 |  |  |         }) | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |     // æäº¤å®¡æ ¸ | 
 |  |  |     checkStatus(status) { | 
 |  |  |       const params = { | 
 |  |  |         status: status, | 
 |  |  |         impowerId: this.impowerId | 
 |  |  |       } | 
 |  |  |       reviewImpowerStatus(params).then(res => { | 
 |  |  |         if (res.code == 200) { | 
 |  |  |           this.$message.success('审核æå') | 
 |  |  |           this.usageTableDia = false | 
 |  |  |           this.refreshTableList() | 
 |  |  |         } | 
 |  |  |         this.submitFormLoading = false | 
 |  |  |       }).catch(err => { | 
 |  |  |         this.submitFormLoading = false | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |     handleSelectionChange(selection) { | 
 |  |  |       this.selectionRows = selection | 
 |  |  |     }, | 
 |  |  |     // èµå¼ä»ªå¨ç¼å· | 
 |  |  |     changeMachineName() { | 
 |  |  |       this.deviceMaintenancePlanDetails = [] | 
 |  |  |       this.selectionRows.map(val => { | 
 |  |  |         this.usageTableData.push({ deviceId: val.id, deviceName: val.label, deviceNumber: val.value, model: val.specificationModel, delegatedUserArr: this.delegatedUser }) | 
 |  |  |       }) | 
 |  |  |       this.addEquipDia = false | 
 |  |  |     }, | 
 |  |  |     // è·åææè®¾å¤ | 
 |  |  |     getEquipOptions() { | 
 |  |  |       this.equipOptions = [] | 
 |  |  |       deviceScopeSearch({ status: 0 }).then(res => { | 
 |  |  |         if (res.code === 200 && res.data) { | 
 |  |  |           this.equipOptions = res.data.map(m => { | 
 |  |  |             m.value = m.managementNumber | 
 |  |  |             m.label = m.deviceName | 
 |  |  |             return m | 
 |  |  |           }) | 
 |  |  |         } | 
 |  |  |       }).catch(error => { | 
 |  |  |         console.error(error) | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |     openHandleOut (row) { | 
 |  |  |       exportQualityMonitorDetail({ impowerId: row.impowerId }).then(res => { | 
 |  |  |         this.outLoading = false | 
 |  |  |         const blob = new Blob([res], { type: 'application/msword' }); | 
 |  |  |         this.$download.saveAs(blob, row.monitorName + '.docx') | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |     handleDeleteClick(row) { | 
 |  |  |       this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æä»¶, æ¯å¦ç»§ç»?', 'æç¤º', { | 
 |  |  |         confirmButtonText: 'ç¡®å®', | 
 |  |  |         cancelButtonText: 'åæ¶', | 
 |  |  |         type: 'warning' | 
 |  |  |       }).then(() => { | 
 |  |  |         deleteImpower({ id: row.impowerId }).then(res => { | 
 |  |  |           this.$message({ | 
 |  |  |             type: 'success', | 
 |  |  |             message: 'å é¤æå!' | 
 |  |  |           }); | 
 |  |  |           this.refreshTableList() | 
 |  |  |         }) | 
 |  |  |       }).catch(() => { | 
 |  |  |         this.$message({ | 
 |  |  |           type: 'info', | 
 |  |  |           message: '已忶å é¤' | 
 |  |  |         }); | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |     // è·åè´è´£äººä¿¡æ¯æ¥å£ | 
 |  |  |     getUserList() { | 
 |  |  |       selectUserCondition({type: 2}).then(res => { | 
 |  |  |         if (res.code == 200) { | 
 |  |  |           this.responsibleOptions = res.data | 
 |  |  |         } | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |   }, | 
 |  |  |   watch: { | 
 |  |  |     // çå¬ç¹å»el-treeçæ°æ®ï¼è¿è¡æ°æ®å·æ° | 
 |  |  |     clickNodeVal(newVal) { | 
 |  |  |       if (newVal.value) { | 
 |  |  |         this.refreshTableList(); | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |   }, | 
 |  |  | }; | 
 |  |  | </script> | 
 |  |  |  | 
 |  |  | <style scoped> | 
 |  |  | .search { | 
 |  |  |   height: 46px; | 
 |  |  |   text-align: right; | 
 |  |  |   margin-top: 10px; | 
 |  |  | } | 
 |  |  | </style> | 
 
 |  |  | 
 |  |  |             <quantity-value-traceability-plan v-if="menuListActiveName == 'é弿º¯æºè®¡å'" | 
 |  |  |               :clickNodeVal="clickNodeVal"></quantity-value-traceability-plan> | 
 |  |  |           </el-tab-pane> | 
 |  |  |           <el-tab-pane label="设å¤ä½¿ç¨ææ" name="设å¤ä½¿ç¨ææ"> | 
 |  |  |             <usage-authorization v-if="menuListActiveName == '设å¤ä½¿ç¨ææ'" | 
 |  |  |               :clickNodeVal="clickNodeVal"></usage-authorization> | 
 |  |  |           </el-tab-pane> | 
 |  |  |           <el-tab-pane label="å©ç¨å¤é¨ä»ªå¨è®¾å¤" name="å©ç¨å¤é¨ä»ªå¨è®¾å¤"> | 
 |  |  |             <using-external-instruments v-if="menuListActiveName == 'å©ç¨å¤é¨ä»ªå¨è®¾å¤'" :clickNodeVal="clickNodeVal"></using-external-instruments> | 
 |  |  |           </el-tab-pane> | 
 |  |  | 
 |  |  |           <el-tab-pane label="è®¾å¤æ ¡å" name="è®¾å¤æ ¡å"> | 
 |  |  |             <calibration v-if="tabListActiveName == 'è®¾å¤æ ¡å'" :clickNodeVal="clickNodeVal" /> | 
 |  |  |           </el-tab-pane> | 
 |  |  |           <el-tab-pane label="设å¤ç»´æ¤" name="设å¤ç»´æ¤"> | 
 |  |  |             <maintenance v-if="tabListActiveName == '设å¤ç»´æ¤'" :clickNodeVal="clickNodeVal" /> | 
 |  |  |           <el-tab-pane label="设å¤ç»´æ¤ä¿å
»" name="设å¤ç»´æ¤ä¿å
»"> | 
 |  |  |             <equipmentMaintenance v-if="tabListActiveName == '设å¤ç»´æ¤ä¿å
»'" :clickNodeVal="clickNodeVal" /> | 
 |  |  |           </el-tab-pane> | 
 |  |  |           <el-tab-pane label="设å¤åç¨" name="设å¤åç¨"> | 
 |  |  |             <borrow v-if="tabListActiveName == '设å¤åç¨'" :clickNodeVal="clickNodeVal" /> | 
 |  |  | 
 |  |  | import files from "./component/files.vue"; | 
 |  |  | import calibration from "./component/calibration.vue"; | 
 |  |  | import check from "./component/check.vue"; | 
 |  |  | import maintenance from "./component/maintenance.vue"; | 
 |  |  | import borrow from "./component/borrow.vue"; | 
 |  |  | import fault from "./component/fault.vue"; | 
 |  |  | import record from "./component/record.vue"; | 
 |  |  | 
 |  |  | import EquipmentMaintenancePlan from "./component/equipmentMaintenancePlan.vue"; | 
 |  |  | import EquipmentAcceptance from "./component/equipmentAcceptance.vue"; | 
 |  |  | import QuantityValueTraceabilityPlan from "./component/quantityValueTraceabilityPlan.vue"; | 
 |  |  | import equipmentMaintenance from "./component/equipmentMaintenance.vue"; | 
 |  |  | import usageAuthorization from "./component/usageAuthorization.vue"; | 
 |  |  | import { | 
 |  |  |   treeDevice, | 
 |  |  | } from '@/api/cnas/resourceDemand/device.js' | 
 |  |  | 
 |  |  |     files, | 
 |  |  |     calibration, | 
 |  |  |     check, | 
 |  |  |     maintenance, | 
 |  |  |     borrow, | 
 |  |  |     fault, | 
 |  |  |     record, | 
 |  |  | 
 |  |  |     management, | 
 |  |  |     overview, | 
 |  |  |     resourceReservation, | 
 |  |  |     operationInstruction | 
 |  |  |     operationInstruction, | 
 |  |  |     equipmentMaintenance, | 
 |  |  |     usageAuthorization, | 
 |  |  |   }, | 
 |  |  |   data() { | 
 |  |  |     return { |