|  |  | 
 |  |  |     data: query | 
 |  |  |   }) | 
 |  |  | } | 
 |  |  | // æ£éªç±»å«ä¸ºæ½æ£æ¶ææ¥å£ | 
 |  |  | export function judgeNotSpotCheckOrder(query) { | 
 |  |  |   return request({ | 
 |  |  |     url: '/insOrder/judgeNotSpotCheckOrder', | 
 |  |  |     method: 'post', | 
 |  |  |     data: query | 
 |  |  |   }) | 
 |  |  | } | 
 |  |  | // æ·»å æ£éªä¸åæ°æ® | 
 |  |  | export function addInsOrder(query) { | 
 |  |  |   return request({ | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | //è´¨éçç£ç®¡çè¯å®¡è¾å
¥ææç¸å
³æ¥å£ | 
 |  |  | import request from '@/utils/request' | 
 |  |  |  | 
 |  |  | // å页æ¥è¯¢ | 
 |  |  | export function pageManagementReview(query) { | 
 |  |  |   return request({ | 
 |  |  |     url: '/managementReview/pageManagementReview', | 
 |  |  |     method: 'get', | 
 |  |  |     params: query | 
 |  |  |   }) | 
 |  |  | } | 
 |  |  | // å¯¼åº | 
 |  |  | export function exportManagementReview(query) { | 
 |  |  |   return request({ | 
 |  |  |     url: '/managementReview/exportManagementReview', | 
 |  |  |     method: 'get', | 
 |  |  |     params: query, | 
 |  |  |     responseType: 'blob' | 
 |  |  |   }) | 
 |  |  | } | 
 |  |  | // å é¤ | 
 |  |  | export function deleteManagementReview(query) { | 
 |  |  |   return request({ | 
 |  |  |     url: '/managementReview/deleteManagementReview', | 
 |  |  |     method: 'delete', | 
 |  |  |     params: query | 
 |  |  |   }) | 
 |  |  | } | 
 |  |  | // æ°å¢ä¿®æ¹æäº¤ | 
 |  |  | export function saveOrUpdateManagementReview(query) { | 
 |  |  |   return request({ | 
 |  |  |     url: '/managementReview/saveOrUpdateManagementReview', | 
 |  |  |     method: 'post', | 
 |  |  |     data: query | 
 |  |  |   }) | 
 |  |  | } | 
 
 |  |  | 
 |  |  |     url: "/processReport/exportProcessReport", | 
 |  |  |     method: "get", | 
 |  |  |     params: data, | 
 |  |  |     responseType: "blob", | 
 |  |  |   }); | 
 |  |  | } | 
 |  |  |  | 
 
 |  |  | 
 |  |  |     <div v-if="isImage"> | 
 |  |  |       <img :src="imgUrl" alt="Image Preview" /> | 
 |  |  |     </div> | 
 |  |  |     <div v-if="isPdf"> | 
 |  |  |       <object :data="fileUrl" type="application/pdf" width="100%" height="750px"> | 
 |  |  |         <p>æ¨çæµè§å¨ä¸æ¯æ PDF é¢è§ã<a :href="fileUrl" style="color: #3a7bfa;" target="_blank">ä¸è½½ PDF æä»¶</a></p> | 
 |  |  |       </object> | 
 |  |  |     <div v-if="isPdf" style="height: 80vh;"> | 
 |  |  | <!--      <object :data="fileUrl" type="application/pdf" width="100%" height="750px">--> | 
 |  |  | <!--        <p>æ¨çæµè§å¨ä¸æ¯æ PDF é¢è§ã<a :href="fileUrl" style="color: #3a7bfa;" target="_blank">ä¸è½½ PDF æä»¶</a></p>--> | 
 |  |  | <!--      </object>--> | 
 |  |  |       <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" /> | 
 |  |  |     </div> | 
 |  |  |     <div v-if="isDoc"> | 
 |  |  |       <p v-if="!isDocShow">ææ¡£æ æ³ç´æ¥é¢è§ï¼è¯·ä¸è½½æ¥çã</p> | 
 |  |  | 
 |  |  | import VueOfficeExcel from '@vue-office/excel' | 
 |  |  | //å¼å
¥ç¸å
³æ ·å¼ | 
 |  |  | import '@vue-office/excel/lib/index.css' | 
 |  |  | import onlyoffice from "@/components/Onlyoffice/onlyoffice.vue"; | 
 |  |  | export default { | 
 |  |  |   components: { | 
 |  |  |     onlyoffice, | 
 |  |  |     VueOfficeDocx, | 
 |  |  |     VueOfficeExcel, | 
 |  |  |   }, | 
 |  |  | 
 |  |  |       type: Object, | 
 |  |  |       required: true | 
 |  |  |     }, | 
 |  |  |     option: { | 
 |  |  |       type: Object, | 
 |  |  |     }, | 
 |  |  |   }, | 
 |  |  |   data() { | 
 |  |  |     return { | 
 
 |  |  | 
 |  |  | .lims-table .highlight-danger-row-border td:last-child { | 
 |  |  |   border-right: 4px solid #f56c6c; | 
 |  |  | } | 
 |  |  | >>>.red-row td { | 
 |  |  |   background: #FFCCCC !important; | 
 |  |  | } | 
 |  |  | </style> | 
 
 |  |  | 
 |  |  |     closeSelectedTag(view) { | 
 |  |  |       this.$tab.closePage(view).then(({ visitedViews }) => { | 
 |  |  |         if (this.isActive(view)) { | 
 |  |  |           this.toLastView(visitedViews, view) | 
 |  |  |           if (view.fullPath.includes('/materialOrder/customsInspectionOrder') || view.fullPath.includes('/materialOrder/customsInspectionView')) { | 
 |  |  |             this.$router.push('/business/materialOrder') | 
 |  |  |           } else { | 
 |  |  |             this.toLastView(visitedViews, view) | 
 |  |  |           } | 
 |  |  |         } | 
 |  |  |       }) | 
 |  |  |     }, | 
 
 |  |  | 
 |  |  |     </el-dialog> | 
 |  |  |     <!--é¢è§æ¥å--> | 
 |  |  |     <el-dialog :visible.sync="lookDialogVisible" fullscreen title="æ¥çéä»¶" top="5vh" width="800px"> | 
 |  |  |       <filePreview v-if="lookDialogVisible" :currentFile="{}" | 
 |  |  |       <filePreview v-if="lookDialogVisible" :currentFile="{}" :option="option" | 
 |  |  |         :fileUrl="javaApi + '/word/' + currentInfo.finishReportUrl" style="height: 70vh;overflow-y: auto;" /> | 
 |  |  |       <div> | 
 |  |  |         æ¹åç¶æï¼ | 
 |  |  | 
 |  |  |       <div style="margin: 0 auto;"> | 
 |  |  |         <el-upload ref="upload1" :action="action1" :auto-upload="false" | 
 |  |  |           :data="{ qualityMonitorDetailsId: qualityMonitorDetailsId }" :file-list="fileList1" :headers="uploadHeader" | 
 |  |  |           :limit="1" :on-change="beforeUpload1" :on-error="onError1" :on-success="onSuccess1" accept='.doc,.docx' drag | 
 |  |  |           :limit="1" :on-change="beforeUpload1" :on-error="onError1" :on-success="onSuccess1" accept='.doc,.docx,application/pdf,' drag | 
 |  |  |           name="file"> | 
 |  |  |           <i class="el-icon-upload"></i> | 
 |  |  |           <div class="el-upload__text">å°æä»¶æå°æ¤å¤ï¼æ<em>ç¹å»ä¸ä¼ </em></div> | 
 |  |  | 
 |  |  |       ratifyRemark: '', | 
 |  |  |       downloadDialog: false, | 
 |  |  |       download: {}, | 
 |  |  |       planYear: '' | 
 |  |  |       planYear: '', | 
 |  |  |       option: {} | 
 |  |  |     }; | 
 |  |  |   }, | 
 |  |  |   mounted() { | 
 |  |  | 
 |  |  |       if (row.finishReportUrl) { | 
 |  |  |         this.currentInfo = row | 
 |  |  |         this.ratifyStatus = row.ratifyStatus | 
 |  |  |         const userName = this.nickName | 
 |  |  |         const isPdf = /\.pdf$/i.test(row.finishReportUrl) | 
 |  |  |         if (isPdf) { | 
 |  |  |           this.option = { | 
 |  |  |             url: this.javaApi + "/word/" + row.finishReportUrl, | 
 |  |  |             isEdit: false, | 
 |  |  |             fileType: 'pdf', | 
 |  |  |             title: 'æ¥å', | 
 |  |  |             lang: 'zh-CN', | 
 |  |  |             isPrint: false, | 
 |  |  |             user_id: 1, | 
 |  |  |             user_name: userName, | 
 |  |  |             editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + row.finishReportUrl | 
 |  |  |           } | 
 |  |  |         } else { | 
 |  |  |           this.option = {} | 
 |  |  |         } | 
 |  |  |         this.lookDialogVisible = true | 
 |  |  |       } else { | 
 |  |  |         this.uploadDia1 = true | 
 |  |  | 
 |  |  |   }, | 
 |  |  |   // ç¨äºä¸ä¼ æä»¶çä¿¡æ¯ | 
 |  |  |   computed: { | 
 |  |  |     ...mapGetters(["userId"]), | 
 |  |  |     ...mapGetters(["userId", "nickName"]), | 
 |  |  |     action() { | 
 |  |  |       return this.javaApi + '/qualityMonitor/importQualityMonitor' | 
 |  |  |     }, | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | <template> | 
 |  |  |   <div class="capacity-scope"> | 
 |  |  |     <div style="display: flex;justify-content: space-between"> | 
 |  |  |       <div style="display: flex;"> | 
 |  |  |         <div style="margin-bottom: 18px;margin-right: 10px;display: flex;align-items: center;line-height: 32px;"> | 
 |  |  |           <span style="width: 88px;font-size: 14px;font-weight: 700;color: #606266;">æä»¶åç§°</span> | 
 |  |  |           <el-input v-model="queryParams.fileName" clearable placeholder="请è¾å
¥" size="small" | 
 |  |  |                     @keyup.enter.native="refreshTable()"></el-input> | 
 |  |  |         </div> | 
 |  |  |         <div style="line-height: 30px;"> | 
 |  |  |           <el-button type="primary" size="mini" @click="refreshTable">æ¥è¯¢</el-button> | 
 |  |  |           <el-button size="mini" @click="refresh">éç½®</el-button> | 
 |  |  |         </div> | 
 |  |  |       </div> | 
 |  |  |       <div style="line-height: 30px;"> | 
 |  |  |         <el-button :loading="outLoading" size="small" type="primary" style="margin-right: 10px" @click="openForm('add')">æ°å¢</el-button> | 
 |  |  |       </div> | 
 |  |  |     </div> | 
 |  |  |     <div class="table"> | 
 |  |  |       <lims-table :tableData="tableData" :column="column" :tableLoading="tableLoading" :height="'calc(100vh - 270px)'" | 
 |  |  |                   :page="page" @pagination="pagination"></lims-table> | 
 |  |  |     </div> | 
 |  |  |     <el-dialog :visible.sync="addDialogVisible" title="è¯ä»·" width="900px" @close="closeDia"> | 
 |  |  |       <el-form ref="form" :model="form" label-position="right" label-width="120px" :rules="formRules"> | 
 |  |  |         <el-row> | 
 |  |  |           <el-col :span="12"> | 
 |  |  |             <el-form-item label="æä»¶åç§°:" prop="fileName"> | 
 |  |  |               <el-input v-model="form.fileName" placeholder="请è¾å
¥" size="small"></el-input> | 
 |  |  |             </el-form-item> | 
 |  |  |           </el-col> | 
 |  |  |         </el-row> | 
 |  |  |         <el-row> | 
 |  |  |           <el-col :span="24"> | 
 |  |  |             <el-form-item label="计åå
容:" prop="implementationContent"> | 
 |  |  |               <el-input v-model="form.implementationContent" placeholder="请è¾å
¥" | 
 |  |  |                         size="small" | 
 |  |  |                         :rows="6" | 
 |  |  |                         type="textarea"></el-input> | 
 |  |  |             </el-form-item> | 
 |  |  |           </el-col> | 
 |  |  |         </el-row> | 
 |  |  |         <el-row> | 
 |  |  |           <el-col :span="24"> | 
 |  |  |             <el-form-item label="卿å
容:" prop="dynamicContent"> | 
 |  |  |               <el-input v-model="form.dynamicContent" placeholder="请è¾å
¥" | 
 |  |  |                         size="small" | 
 |  |  |                         :rows="6" | 
 |  |  |                         type="textarea"></el-input> | 
 |  |  |             </el-form-item> | 
 |  |  |           </el-col> | 
 |  |  |         </el-row> | 
 |  |  |         <el-row> | 
 |  |  |           <el-col :span="12"> | 
 |  |  |             <el-form-item label="çç£äºº:" prop="supervisor"> | 
 |  |  |               <el-select v-model="form.supervisor" | 
 |  |  |                          clearable filterable | 
 |  |  |                          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> | 
 |  |  |             </el-form-item> | 
 |  |  |           </el-col> | 
 |  |  |           <el-col :span="12"> | 
 |  |  |             <el-form-item label="è´¨éè¯å®¡æ¥æ:" prop="superviseDate"> | 
 |  |  |               <el-date-picker v-model="form.superviseDate" format="yyyy-MM-dd" | 
 |  |  |                               placeholder="éæ©æ¥æ" size="small" value-format="yyyy-MM-dd" | 
 |  |  |                               type="date" style="width: 100%"></el-date-picker> | 
 |  |  |             </el-form-item> | 
 |  |  |           </el-col> | 
 |  |  |         </el-row> | 
 |  |  |       </el-form> | 
 |  |  |       <span slot="footer" class="dialog-footer"> | 
 |  |  |         <el-button @click="closeDia">å æ¶</el-button> | 
 |  |  |         <el-button :loading="addLoading" type="primary" @click="handleAdd">ç¡® å®</el-button> | 
 |  |  |       </span> | 
 |  |  |     </el-dialog> | 
 |  |  |   </div> | 
 |  |  | </template> | 
 |  |  |  | 
 |  |  | <script> | 
 |  |  | import limsTable from "@/components/Table/lims-table.vue"; | 
 |  |  | import filePreview from "@/components/Preview/filePreview.vue"; | 
 |  |  | import { | 
 |  |  |   exportProcessEvaluate, | 
 |  |  |   doProcessEvaluate, | 
 |  |  |   delProcessEvaluate, | 
 |  |  |   pageProcessEvaluate, | 
 |  |  | } from '@/api/cnas/process/uncertainty.js' | 
 |  |  | import { mapGetters } from "vuex"; | 
 |  |  | import { | 
 |  |  |   deleteManagementReview, | 
 |  |  |   exportManagementReview, | 
 |  |  |   pageManagementReview, saveOrUpdateManagementReview | 
 |  |  | } from "@/api/cnas/process/ensureResults/managementReview"; | 
 |  |  | import {selectUserCondition} from "@/api/cnas/resourceDemand/facilitiesEnvironment/facilitiesAndEnvironment"; | 
 |  |  | export default { | 
 |  |  |   name: 'Uncertainty', | 
 |  |  |   components: { | 
 |  |  |     limsTable, | 
 |  |  |     filePreview | 
 |  |  |   }, | 
 |  |  |   data() { | 
 |  |  |     return { | 
 |  |  |       addPower: false, | 
 |  |  |       outPower: false, | 
 |  |  |       outLoading: false, | 
 |  |  |       addDialogVisible: false, | 
 |  |  |       operationType: '', | 
 |  |  |       addInfo: {}, | 
 |  |  |       addLoading: false, | 
 |  |  |       queryParams: {}, | 
 |  |  |       tableData: [], | 
 |  |  |       column: [ | 
 |  |  |         { label: "æä»¶åç§°", prop: "fileName" }, | 
 |  |  |         { label: "çç£äºº", prop: "supervisor" }, | 
 |  |  |         { label: "è´¨éè¯å®¡æ¥æ", prop: "superviseDate" }, | 
 |  |  |         { | 
 |  |  |           dataType: "action", | 
 |  |  |           label: "æä½", | 
 |  |  |           operation: [ | 
 |  |  |             { | 
 |  |  |               name: "ç¼è¾", | 
 |  |  |               type: "text", | 
 |  |  |               clickFun: (row) => { | 
 |  |  |                 this.openForm('edit', row); | 
 |  |  |               }, | 
 |  |  |             }, | 
 |  |  |             { | 
 |  |  |               name: "å é¤", | 
 |  |  |               type: "text", | 
 |  |  |               clickFun: (row) => { | 
 |  |  |                 this.handleDelete(row); | 
 |  |  |               }, | 
 |  |  |             }, | 
 |  |  |             { | 
 |  |  |               name: "导åº", | 
 |  |  |               type: "text", | 
 |  |  |               clickFun: (row) => { | 
 |  |  |                 this.handleDown0(row); | 
 |  |  |               }, | 
 |  |  |             }, | 
 |  |  |           ], | 
 |  |  |         }, | 
 |  |  |       ], | 
 |  |  |       page: { | 
 |  |  |         total: 0, | 
 |  |  |         size: 10, | 
 |  |  |         current: 0, | 
 |  |  |       }, | 
 |  |  |       tableLoading: false, | 
 |  |  |       form: { | 
 |  |  |         fileName: '', | 
 |  |  |         implementationContent: '', | 
 |  |  |         dynamicContent: '', | 
 |  |  |         supervisor: '', | 
 |  |  |         superviseDate: '', | 
 |  |  |       }, | 
 |  |  |       formRules: { | 
 |  |  |         fileName: [{required: true, message: '请填åæä»¶åç§°',trigger: 'blur'}], | 
 |  |  |         implementationContent: [{required: true, message: '请填å计åå
容',trigger: 'blur'}], | 
 |  |  |         dynamicContent: [{required: true, message: 'è¯·å¡«å¨æå
容',trigger: 'blur'}], | 
 |  |  |         supervisor: [{required: true, message: 'è¯·éæ©çç£äºº',trigger: 'change'}], | 
 |  |  |         superviseDate: [{required: true, message: 'è¯·éæ©æ¥æ',trigger: 'change'}], | 
 |  |  |       }, | 
 |  |  |       responsibleOptions: [], | 
 |  |  |     } | 
 |  |  |   }, | 
 |  |  |   // ç¨äºä¸ä¼ æä»¶çä¿¡æ¯ | 
 |  |  |   computed: { | 
 |  |  |     ...mapGetters(["userId"]), | 
 |  |  |   }, | 
 |  |  |   mounted() { | 
 |  |  |     this.getList() | 
 |  |  |   }, | 
 |  |  |   methods: { | 
 |  |  |     getList() { | 
 |  |  |       this.tableLoading = true; | 
 |  |  |       let param = { ...this.queryParams, ...this.page }; | 
 |  |  |       delete param.total; | 
 |  |  |       pageManagementReview({ ...param }) | 
 |  |  |         .then((res) => { | 
 |  |  |           this.tableLoading = false; | 
 |  |  |           if (res.code === 200) { | 
 |  |  |             this.tableData = res.data.records; | 
 |  |  |             this.page.total = res.data.total; | 
 |  |  |           } | 
 |  |  |         }) | 
 |  |  |         .catch((err) => { | 
 |  |  |           this.tableLoading = false; | 
 |  |  |         }); | 
 |  |  |     }, | 
 |  |  |     pagination({ page, limit }) { | 
 |  |  |       this.page.current = page; | 
 |  |  |       this.page.size = limit; | 
 |  |  |       this.getList(); | 
 |  |  |     }, | 
 |  |  |     refresh() { | 
 |  |  |       this.queryParams = {}; | 
 |  |  |       this.page.current = 1; | 
 |  |  |       this.getList(); | 
 |  |  |     }, | 
 |  |  |     refreshTable() { | 
 |  |  |       this.page.current = 1; | 
 |  |  |       this.getList(); | 
 |  |  |     }, | 
 |  |  |     handleDown0(row) { | 
 |  |  |       exportManagementReview({managementReviewId: row.managementReviewId}).then(res => { | 
 |  |  |         const blob = new Blob([res], { type: 'application/msword' }); | 
 |  |  |         this.$download.saveAs(blob, row.fileName + '.docx'); | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |     // æå¼æ°å¢ç¼è¾å¼¹æ¡ | 
 |  |  |     openForm (type, row) { | 
 |  |  |       this.addDialogVisible = true; | 
 |  |  |       this.$nextTick(() => { | 
 |  |  |         this.form = {} | 
 |  |  |         this.$refs['form'].resetFields(); | 
 |  |  |         if (type === 'edit') { | 
 |  |  |           this.form = {...row} | 
 |  |  |         } | 
 |  |  |         this.operationType = type; | 
 |  |  |         this.getUserList() | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |     // æäº¤è¡¨å | 
 |  |  |     handleAdd() { | 
 |  |  |       this.addLoading = true; | 
 |  |  |       saveOrUpdateManagementReview(this.form).then((res) => { | 
 |  |  |         this.addLoading = false; | 
 |  |  |         this.$message.success('è¯ä»·æå'); | 
 |  |  |         this.closeDia(); | 
 |  |  |         this.refreshTable() | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |     closeDia() { | 
 |  |  |       this.$refs['form'].resetFields(); | 
 |  |  |       this.addDialogVisible = false; | 
 |  |  |     }, | 
 |  |  |     handleDelete(row) { | 
 |  |  |       this.$confirm("æ¯å¦å é¤è¯¥æ¡æ°æ®?", "æç¤º", { | 
 |  |  |         confirmButtonText: "ç¡®å®", | 
 |  |  |         cancelButtonText: "åæ¶", | 
 |  |  |         type: "warning", | 
 |  |  |       }).then(() => { | 
 |  |  |         deleteManagementReview({ managementReviewId: row.managementReviewId }).then((res) => { | 
 |  |  |           this.$message.success("å é¤æå"); | 
 |  |  |           this.refresh(); | 
 |  |  |         }); | 
 |  |  |       }).catch(() => { }); | 
 |  |  |     }, | 
 |  |  |     getUserList(){ | 
 |  |  |       selectUserCondition({type: 2}).then(res => { | 
 |  |  |         if (res.code == 200) { | 
 |  |  |           this.responsibleOptions = res.data | 
 |  |  |         } | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |   } | 
 |  |  | } | 
 |  |  | </script> | 
 |  |  |  | 
 |  |  | <style scoped> | 
 |  |  | .search { | 
 |  |  |   height: 46px; | 
 |  |  |   display: flex; | 
 |  |  |   justify-content: space-between; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | .search_thing { | 
 |  |  |   width: 350px; | 
 |  |  |   display: flex; | 
 |  |  |   align-items: center; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | .search_label { | 
 |  |  |   width: 80px; | 
 |  |  |   font-size: 14px; | 
 |  |  |   text-align: right; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | .search_input { | 
 |  |  |   width: calc(100% - 80px); | 
 |  |  | } | 
 |  |  | </style> | 
 
 |  |  | 
 |  |  |     </div> | 
 |  |  |     <div class="table"> | 
 |  |  |       <lims-table :tableData="tableData" :column="column" :tableLoading="tableLoading" :height="'calc(100vh - 270px)'" | 
 |  |  |         :page="page" @pagination="pagination" :isSelection="true" | 
 |  |  |         :handleSelectionChange="handleSelectionChange"></lims-table> | 
 |  |  |         :page="page" @pagination="pagination"></lims-table> | 
 |  |  |     </div> | 
 |  |  |     <el-dialog :title="title" :visible.sync="addDialogVisible" width="400px" top="6vh"> | 
 |  |  |       <el-row> | 
 |  |  | 
 |  |  |         <el-col :span="24" style="margin-bottom: 16px;"> | 
 |  |  |           <div class="search_thing"> | 
 |  |  |             <div class="search_label">ç¾æ¶äººï¼</div> | 
 |  |  |             <div class="search_input"> | 
 |  |  |               <el-select v-model="addInfo.signatory" placeholder="è¯·éæ©" size="small" style="width: 100%;" multiple> | 
 |  |  |                 <el-option v-for="item in personList" :key="item.value" :label="item.label" :value="item.value"> | 
 |  |  |                 </el-option> | 
 |  |  |               </el-select> | 
 |  |  |             </div> | 
 |  |  |             <div class="search_input"><el-input size="small" placeholder="请è¾å
¥" clearable | 
 |  |  |                                                 v-model="addInfo.signatory"></el-input></div> | 
 |  |  |           </div> | 
 |  |  |         </el-col> | 
 |  |  |         <el-col :span="24" style="margin-bottom: 16px;"> | 
 |  |  | 
 |  |  |       personList: [], | 
 |  |  |       title: 'æ°å¢', | 
 |  |  |       addDialogVisible: false, | 
 |  |  |       addInfo: { | 
 |  |  |         signatory: [] | 
 |  |  |       }, | 
 |  |  |       addInfo: {}, | 
 |  |  |       addLoading: false, | 
 |  |  |       mutilSelect: [], | 
 |  |  |       queryParams: { | 
 |  |  |         insReportCode: '' | 
 |  |  |       }, | 
 |  |  | 
 |  |  |         { label: "åéæ¹å¼", prop: "method" }, | 
 |  |  |         { label: "å鿥æ", prop: "sendTime" }, | 
 |  |  |         { label: "åé人", prop: "sendUserName" }, | 
 |  |  |         { label: "ç¾æ¶äºº", prop: "signatoryName" }, | 
 |  |  |         { label: "ç¾æ¶äºº", prop: "signatory" }, | 
 |  |  |         { label: "夿³¨", prop: "remark" }, | 
 |  |  |         { | 
 |  |  |           dataType: "action", | 
 |  |  | 
 |  |  |   }, | 
 |  |  |   methods: { | 
 |  |  |     handleDown() { | 
 |  |  |       if (this.mutilSelect.length == 0) { | 
 |  |  |         this.$message.warning('è¯·éæ©è¦å¯¼åºçæ°æ®') | 
 |  |  |         return | 
 |  |  |       } | 
 |  |  |       this.outLoading = true | 
 |  |  |       exportProcessReport({ ids: this.mutilSelect.map(m => m.id) }).then(res => { | 
 |  |  |       exportProcessReport(this.queryParams).then(res => { | 
 |  |  |         this.outLoading = false | 
 |  |  |         this.$download.saveAs(res.data, "æ¥åç»æ"); | 
 |  |  |         const blob = new Blob([res], { type: 'application/msword' }); | 
 |  |  |         this.$download.saveAs(blob, 'æ¥åç»æ' + '.docx'); | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |     openAdd() { | 
 |  |  |       this.title = 'æ°å¢' | 
 |  |  |       this.addInfo = { | 
 |  |  |         signatory: [] | 
 |  |  |       } | 
 |  |  |       this.addInfo = {} | 
 |  |  |       this.addDialogVisible = true; | 
 |  |  |     }, | 
 |  |  |     getList() { | 
 |  |  | 
 |  |  |       this.page.current = 1; | 
 |  |  |       this.getList(); | 
 |  |  |     }, | 
 |  |  |     handleSelectionChange(val) { | 
 |  |  |       this.mutilSelect = val | 
 |  |  |     }, | 
 |  |  |     getAuthorizedPerson() { | 
 |  |  |       selectUserCondition().then(res => { | 
 |  |  |         let data = [] | 
 |  |  | 
 |  |  |       delete this.addInfo.createTime | 
 |  |  |       delete this.addInfo.createUser | 
 |  |  |       delete this.addInfo.updateTime | 
 |  |  |       delete this.addInfo.signatoryUrl | 
 |  |  |       delete this.addInfo.updateUserer | 
 |  |  |       delete this.addInfo.sendUserName | 
 |  |  |       let addInfo = this.HaveJson(this.addInfo) | 
 |  |  |       addInfo.signatory = addInfo.signatory.join(',') | 
 |  |  |       if (this.title == 'æ°å¢') { | 
 |  |  |         addProcessReport(addInfo).then(res => { | 
 |  |  |         addProcessReport(this.addInfo).then(res => { | 
 |  |  |           this.addLoading = false | 
 |  |  |           this.addDialogVisible = false | 
 |  |  |           this.$message({ | 
 |  |  | 
 |  |  |           this.refreshTable() | 
 |  |  |         }).catch(err => { }) | 
 |  |  |       } else { | 
 |  |  |         doProcessReport(addInfo).then(res => { | 
 |  |  |         doProcessReport(this.addInfo).then(res => { | 
 |  |  |           this.addLoading = false | 
 |  |  |           this.addDialogVisible = false | 
 |  |  |           this.$message({ | 
 |  |  | 
 |  |  |       this.title = 'ä¿®æ¹' | 
 |  |  |       this.addInfo = row | 
 |  |  |       console.log(this.addInfo) | 
 |  |  |       this.addInfo.signatory = this.addInfo.signatory ? this.addInfo.signatory.split(',').map(m => Number(m)) : [] | 
 |  |  |       this.addDialogVisible = true; | 
 |  |  |     }, | 
 |  |  |     handleChangeTask(list) { | 
 |  |  |       this.mutilSelect = list | 
 |  |  |     }, | 
 |  |  |     handleDelete(row) { | 
 |  |  |       this.$confirm("æ¯å¦å é¤è¯¥æ¡æ°æ®?", "æç¤º", { | 
 
 |  |  | 
 |  |  |                       @keyup.enter.native="refreshTable()"> | 
 |  |  |             </el-input> | 
 |  |  |           </el-form-item> | 
 |  |  |           <el-form-item label="è§æ ¼åå·" prop="specificationModel"> | 
 |  |  |           <el-form-item label="管çç¼å·" prop="managementNumber"> | 
 |  |  |             <el-input size="small" placeholder="请è¾å
¥" clearable | 
 |  |  |                       v-model="queryParams.specificationModel" @keyup.enter.native="refreshTable()"></el-input> | 
 |  |  |                       v-model="queryParams.managementNumber" @keyup.enter.native="refreshTable()"></el-input> | 
 |  |  |           </el-form-item> | 
 |  |  |           <el-form-item> | 
 |  |  |             <el-button type="primary" size="mini" @click="refreshTable">æ¥è¯¢</el-button> | 
 |  |  | 
 |  |  |     </div> | 
 |  |  |         <div class="table" v-show="!showData"> | 
 |  |  |             <lims-table :tableData="tableData" :column="column" :tableLoading="tableLoading" :height="'calc(100vh - 300px)'" | 
 |  |  |                 :page="page" @pagination="pagination"></lims-table> | 
 |  |  |                 :page="page" @pagination="pagination" :row-class-name="tableRowClassName"></lims-table> | 
 |  |  |         </div> | 
 |  |  |         <el-dialog :title="isUp ? '设å¤è¯¦æ
' : 'æ¡£æ¡ä¿®è®¢'" :visible.sync="dialogVisible" width="70%" top="5vh" | 
 |  |  |             :before-close="handleClose"> | 
 |  |  | 
 |  |  |                 { label: "管çç¼å·", prop: "managementNumber" }, | 
 |  |  |                 { label: "ææ¯ææ ", prop: "technicalIndicators" }, | 
 |  |  |                 { label: "è´ç½®æ¥æ", prop: "acquisitionDate" }, | 
 |  |  |                 { label: "å¯ç¨æ¥æ", prop: "activationDate" }, | 
 |  |  |                 { label: "æ ¡åæææ", prop: "activationDate" }, | 
 |  |  |                 { label: "管ç人", prop: "equipmentManagerUser" }, | 
 |  |  |                 { label: "åæ¾ç¹", prop: "storagePoint" }, | 
 |  |  |                 { label: "æå±é¨é¨", prop: "laboratoryName" }, | 
 |  |  | 
 |  |  |             this.page.size = limit; | 
 |  |  |             this.getList(); | 
 |  |  |         }, | 
 |  |  |     tableRowClassName({ row }) { | 
 |  |  |       const today = new Date(); | 
 |  |  |       const targetDate = new Date(row.activationDate); | 
 |  |  |       const fiveDaysBeforeTarget = new Date(targetDate); | 
 |  |  |       // è®¡ç®åäºå¤©çæ¥æ | 
 |  |  |       fiveDaysBeforeTarget.setDate(targetDate.getDate() - 5); | 
 |  |  |       // æ¯è¾æ¶éè¦ç¡®ä¿æ¯è¾çæ¯å®æ´çæ¥ææ¶é´ï¼å
嫿¶åç§ | 
 |  |  |       if (today > fiveDaysBeforeTarget) { | 
 |  |  |         return 'red-row'; | 
 |  |  |       } | 
 |  |  |       return ''; | 
 |  |  |     }, | 
 |  |  |         refresh() { | 
 |  |  |             this.queryParams = {}; | 
 |  |  |             this.page.current = 1; | 
 
 |  |  | 
 |  |  |               prop="useDateList"> | 
 |  |  |               <el-date-picker v-model="form.useDateList" :disabled="operationType === 'view'" end-placeholder="ç»ææ¥æ" | 
 |  |  |                 format="yyyy-MM-dd HH:mm:ss" size="small" start-placeholder="å¼å§æ¥æ" style="width:100%" | 
 |  |  |                 type="datetimerange" value-format="yyyy-MM-dd HH:mm:ss"> | 
 |  |  |                 type="datetimerange" value-format="yyyy-MM-dd HH:mm:ss" | 
 |  |  |                               :picker-options="pickerOptions"> | 
 |  |  |               </el-date-picker> | 
 |  |  |             </el-form-item> | 
 |  |  |           </el-col> | 
 |  |  | 
 |  |  |       dialogVisible: false, | 
 |  |  |       operationType: '', | 
 |  |  |       formParamList: [], | 
 |  |  |       tableLoading: false | 
 |  |  |       tableLoading: false, | 
 |  |  |       pickerOptions: { | 
 |  |  |         disabledDate(time) { | 
 |  |  |           return time.getTime() > Date.now(); | 
 |  |  |         } | 
 |  |  |       } | 
 |  |  |     } | 
 |  |  |   }, | 
 |  |  |   mounted() { | 
 
 |  |  | 
 |  |  |         <div slot-scope="{ node, data }" class="custom-tree-node"> | 
 |  |  |           <el-row style="width: 100%;"> | 
 |  |  |             <el-col :span="24"> | 
 |  |  |               <p class="single-line-ellipsis" style="width: 100%"> | 
 |  |  |               <p class="single-line-ellipsis" style="width: 100%" :style="{ | 
 |  |  |               color: isLeafNode(data) && shouldHighlight(data) ? 'red' : '' | 
 |  |  |             }"> | 
 |  |  |                 <i :class="`node_i ${data.children != undefined | 
 |  |  |                   ? data.code === '[1]' | 
 |  |  |                     ? 'el-icon-folder-opened' | 
 |  |  | 
 |  |  |                   "></i> | 
 |  |  |                 {{ data.label }} | 
 |  |  |               </p> | 
 |  |  |               <p> | 
 |  |  |               <p :style="{ | 
 |  |  |               color: isLeafNode(data) && shouldHighlight(data) ? 'red' : '' | 
 |  |  |             }"> | 
 |  |  |                 {{ data.managementNumber === undefined ? '' : data.managementNumber }} | 
 |  |  |               </p> | 
 |  |  |             </el-col> | 
 |  |  | 
 |  |  |       treeDevice().then(res => { | 
 |  |  |         let data = res.data; | 
 |  |  |         this.list = data; | 
 |  |  |         console.log('this.list--', this.list) | 
 |  |  |         this.loading = false | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |     // å¤ææ¯å¦æ¯å¶åèç¹ | 
 |  |  |     isLeafNode(data) { | 
 |  |  |       return !data.children || data.children.length === 0; | 
 |  |  |     }, | 
 |  |  |     // å¤ææ¯å¦éè¦æ çº¢ | 
 |  |  |     shouldHighlight(data) { | 
 |  |  |       if (!data.activationDate) return false; | 
 |  |  |       const today = new Date(); | 
 |  |  |       const targetDate = new Date(data.activationDate); | 
 |  |  |       const fiveDaysBeforeTarget = new Date(targetDate); | 
 |  |  |       // è®¡ç®åäºå¤©çæ¥æ | 
 |  |  |       fiveDaysBeforeTarget.setDate(targetDate.getDate() - 5); | 
 |  |  |  | 
 |  |  |       return today > fiveDaysBeforeTarget; | 
 |  |  |     }, | 
 |  |  |     handleNodeClick(val, node, el) { | 
 |  |  |       // ç¹å»ä¸´æ¶ç¼å | 
 |  |  |       this.clickNodeVal = val; | 
 
 |  |  | 
 |  |  |           } else { | 
 |  |  |             param = this.param; | 
 |  |  |           } | 
 |  |  |           let isNoTestValue = '' | 
 |  |  |           for (let key in param) { | 
 |  |  |             if (param[key]) { | 
 |  |  |               if (param[key].insValue?.length === 0) { | 
 |  |  |                 isNoTestValue = 1 | 
 |  |  |               } else { | 
 |  |  |                 isNoTestValue = '' | 
 |  |  |               } | 
 |  |  |             } | 
 |  |  |           } | 
 |  |  |           saveInsContext({ | 
 |  |  |             param: JSON.stringify(param), | 
 |  |  |             currentTable: this.currentTable, | 
 |  |  |             sampleId: this.currentSample.id, | 
 |  |  |             orderId: this.orderId, | 
 |  |  |             sonLaboratory: this.sonLaboratory | 
 |  |  |             sonLaboratory: this.sonLaboratory, | 
 |  |  |             isNoTestValue: isNoTestValue | 
 |  |  |           }).then((res) => { | 
 |  |  |             this.$message.success("å·²ä¿å"); | 
 |  |  |           }); | 
 
 |  |  | 
 |  |  |           <el-select v-show="active==1" v-model="template" placeholder="ä¸å模æ¿" size="small" style="margin-right: 10px;" | 
 |  |  |                      @change="selectInsOrderTemplateByIdList"> | 
 |  |  |             <el-option v-for="(a, ai) in templates" :key="ai" :label="a.name" :value="a.id"> | 
 |  |  |               <span style="float: left">{{ a.name }}</span> | 
 |  |  |               <i class="el-icon-delete" style="float: right; color: #66b1ff; font-size: 16px" | 
 |  |  |                  @click.stop="handleDelete(a)"></i> | 
 |  |  |               <div style="display: flex; align-items: center; justify-content: space-between;"> | 
 |  |  |                 <span>{{ a.name }}</span> | 
 |  |  |                 <i class="el-icon-delete" | 
 |  |  |                    style="color: #66b1ff; font-size: 16px; cursor: pointer;" | 
 |  |  |                    @click.stop="handleDelete(a)"> | 
 |  |  |                 </i> | 
 |  |  |               </div> | 
 |  |  |             </el-option> | 
 |  |  |           </el-select> | 
 |  |  |           <el-button v-show="active==1" size="small" @click="templateDia=true"> | 
 
 |  |  | 
 |  |  |           <el-select v-show="active==1" v-model="template" placeholder="ä¸å模æ¿" size="small" | 
 |  |  |                      @change="selectInsOrderTemplateById"> | 
 |  |  |             <el-option v-for="(a, ai) in templates" :key="ai" :label="a.name" :value="a.id"> | 
 |  |  |               <span style="float: left">{{ a.name }}</span> | 
 |  |  |               <i class="el-icon-delete" style="float: right; color: #66b1ff; font-size: 16px" | 
 |  |  |                  @click.stop="handleDelete(a)"></i> | 
 |  |  |               <div style="display: flex; align-items: center; justify-content: space-between;"> | 
 |  |  |                 <span>{{ a.name }}</span> | 
 |  |  |                 <i class="el-icon-delete" | 
 |  |  |                    style="color: #66b1ff; font-size: 16px; cursor: pointer;" | 
 |  |  |                    @click.stop="handleDelete(a)"> | 
 |  |  |                 </i> | 
 |  |  |               </div> | 
 |  |  |             </el-option> | 
 |  |  |           </el-select> | 
 |  |  |           <el-button v-show="active==1" size="small" @click="templateDia=true"> | 
 |  |  | 
 |  |  | } from "@/api/business/rawMaterialOrder"; | 
 |  |  | import { | 
 |  |  |   addInsOrder, addInsOrderTemplate, delInsOrderTemplate, | 
 |  |  |   getQuarterOnOrder, selectInsOrderTemplateById, | 
 |  |  |   getQuarterOnOrder, judgeNotSpotCheckOrder, selectInsOrderTemplateById, | 
 |  |  |   selectOrderManDay, | 
 |  |  |   updateInsOrder, | 
 |  |  |   upInsOrder, | 
 |  |  | 
 |  |  | import limsTable from "@/components/Table/lims-table.vue"; | 
 |  |  | import {selectCustomPageList} from "@/api/system/customer"; | 
 |  |  | import {mapGetters} from "vuex"; | 
 |  |  | import {addQuarter, updateQuarterOnOrder} from "@/api/business/finishedProductSampling"; | 
 |  |  |  | 
 |  |  | export default { | 
 |  |  |   name: 'AddOrder', | 
 |  |  | 
 |  |  |         } | 
 |  |  |       }, | 
 |  |  |       saveMethod(sampleList){ | 
 |  |  |         this.saveLoad = true | 
 |  |  |         if (this.addObj.quarterItemId) { | 
 |  |  |           this.addObj.quarterItemId = this.addObj.quarterItemId[1] | 
 |  |  |         } | 
 |  |  |         if(this.tabIndex==4&&this.active==2){ | 
 |  |  |           if (this.addObj.createTime) { | 
 |  |  |             delete this.addObj.createTime | 
 |  |  |           } | 
 |  |  |           // éååæäº¤ | 
 |  |  |           updateInsOrder({insOrder: this.addObj, sampleProduct: sampleList}).then(res => { | 
 |  |  |             this.saveLoad = false | 
 |  |  |             this.$message.success('å·²æäº¤') | 
 |  |  |             this.bsm3Dia = false; | 
 |  |  |             this.closeOpenPage() | 
 |  |  |           }).catch(e=>{ | 
 |  |  |             this.saveLoad = false | 
 |  |  |           }) | 
 |  |  |         }else{ | 
 |  |  |           // å¸¸è§æäº¤ | 
 |  |  |           addInsOrder({insOrder: this.addObj, sampleList: sampleList}).then(res => { | 
 |  |  |             this.saveLoad = false | 
 |  |  |             this.$message.success('å·²æäº¤') | 
 |  |  |             this.bsm3Dia = false; | 
 |  |  |             this.closeOpenPage() | 
 |  |  |           }).catch(e=>{ | 
 |  |  |             this.saveLoad = false | 
 |  |  |           }) | 
 |  |  |         if (this.addObj.createTime) { | 
 |  |  |           delete this.addObj.createTime | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         if (this.addObj.orderType === 'æ½æ£') { | 
 |  |  |           judgeNotSpotCheckOrder({ insOrder: this.addObj, sampleList: sampleList }).then(res => { | 
 |  |  |             if (res.data === true) { | 
 |  |  |               this.saveData(sampleList); | 
 |  |  |             } else { | 
 |  |  |               // const message = res.message.replace(/\n/g, '<br>'); | 
 |  |  |               this.$confirm(res.message, 'æç¤º', { | 
 |  |  |                 confirmButtonText: 'ç¡®å®', | 
 |  |  |                 cancelButtonText: 'åæ¶', | 
 |  |  |                 type: 'warning', | 
 |  |  |                 dangerouslyUseHTMLString: true, // ð å
³é®ç¹ï¼å
许 HTML | 
 |  |  |                 message: res.message // è¿éä¹å¯ä»¥çç¥ï¼å ä¸ºç¬¬äºä¸ªåæ°æ¯ titleï¼ç¬¬ä¸ä¸ªæ¯ options | 
 |  |  |               }).then(() => { | 
 |  |  |                 this.saveData(sampleList); | 
 |  |  |               }).catch(() => { | 
 |  |  |                 this.$message({ | 
 |  |  |                   type: 'info', | 
 |  |  |                   message: '已忶' | 
 |  |  |                 }); | 
 |  |  |               }); | 
 |  |  |             } | 
 |  |  |           }); | 
 |  |  |         } else { | 
 |  |  |           this.saveData(sampleList) | 
 |  |  |         } | 
 |  |  |       }, | 
 |  |  |     saveData(sampleList) { | 
 |  |  |       this.saveLoad = true | 
 |  |  |       if(this.tabIndex==4&&this.active==2){ | 
 |  |  |         // éååæäº¤ | 
 |  |  |         updateInsOrder({insOrder: this.addObj, sampleProduct: sampleList}).then(res => { | 
 |  |  |           this.saveLoad = false | 
 |  |  |           this.$message.success('å·²æäº¤') | 
 |  |  |           this.bsm3Dia = false; | 
 |  |  |           this.closeOpenPage() | 
 |  |  |         }).catch(e=>{ | 
 |  |  |           this.saveLoad = false | 
 |  |  |         }) | 
 |  |  |       }else{ | 
 |  |  |         // å¸¸è§æäº¤ | 
 |  |  |         addInsOrder({insOrder: this.addObj, sampleList: sampleList}).then(res => { | 
 |  |  |           this.saveLoad = false | 
 |  |  |           this.$message.success('å·²æäº¤') | 
 |  |  |           this.bsm3Dia = false; | 
 |  |  |           this.closeOpenPage() | 
 |  |  |         }).catch(e=>{ | 
 |  |  |           this.saveLoad = false | 
 |  |  |         }) | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |       upInsOrderOfState(state) { | 
 |  |  |         if (state == 1) { | 
 |  |  |           this.saveLoad = true | 
 
 |  |  | 
 |  |  |     }, | 
 |  |  |     // ç¹å»æ ·ååç§° | 
 |  |  |     selectAllByOne(row) { | 
 |  |  |       this.$router.push({ | 
 |  |  |         path: "/productOrder/addView", query: { | 
 |  |  |           examine: 1, | 
 |  |  |           active: 2, | 
 |  |  |           currentId: row.id, | 
 |  |  |           tabIndex: this.tabIndex, | 
 |  |  |         } | 
 |  |  |       }); | 
 |  |  |       if (this.tabIndex === 4) { | 
 |  |  |         this.$router.push({ | 
 |  |  |           path: "/productOrder/addOrder", query: { | 
 |  |  |             examine: 1, | 
 |  |  |             active: 2, | 
 |  |  |             currentId: row.id, | 
 |  |  |             tabIndex: this.tabIndex, | 
 |  |  |           } | 
 |  |  |         }); | 
 |  |  |       } else { | 
 |  |  |         this.$router.push({ | 
 |  |  |           path: "/productOrder/addView", query: { | 
 |  |  |             examine: 1, | 
 |  |  |             active: 2, | 
 |  |  |             currentId: row.id, | 
 |  |  |             tabIndex: this.tabIndex, | 
 |  |  |           } | 
 |  |  |         }); | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |     }, | 
 |  |  |     // ä¿®æ¹æ ·ååå· | 
 |  |  |     editSampleModel (row) { | 
 
 |  |  | 
 |  |  |             </el-form-item> | 
 |  |  |           </el-col> | 
 |  |  |         </el-row> | 
 |  |  |         <el-row> | 
 |  |  |           <el-col :span="12"> | 
 |  |  |             <el-form-item label="æ½æ£ç±»åç»å®ï¼" prop="spotCheckType"> | 
 |  |  |               <el-select v-model="editForm.spotCheckType" clearable placeholder="è¯·éæ©" size="small" style="width: 100%"> | 
 |  |  |                 <el-option v-for="item in dict.type.spot_check_type" :key="item.value" :label="item.label" :value="item.value"></el-option> | 
 |  |  |               </el-select> | 
 |  |  |             </el-form-item> | 
 |  |  |           </el-col> | 
 |  |  |         </el-row> | 
 |  |  | <!--        <el-col :span="12">--> | 
 |  |  | <!--          <el-form-item label="åå
¸ç±»åï¼" prop="dic">--> | 
 |  |  | <!--            <el-select v-model="editForm.dic" clearable placeholder="è¯·éæ©" size="small" style="width: 100%">--> | 
 |  |  | 
 |  |  |   name: "EditForm", | 
 |  |  |   // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ | 
 |  |  |   components: {}, | 
 |  |  |   dicts: ['sys_sub_lab', 'inspection_item_type', 'sys_unit', 'inspection_value_type', 'inspection_bsm'], | 
 |  |  |   dicts: ['sys_sub_lab', 'inspection_item_type', 'sys_unit', 'inspection_value_type', 'inspection_bsm', 'spot_check_type'], | 
 |  |  |   data() { | 
 |  |  |     // è¿éåæ¾æ°æ® | 
 |  |  |     return { | 
 |  |  | 
 |  |  |         inspectionItemClassEn: '', // æ£éªé¡¹åç±»EN | 
 |  |  |         method: '', // è¯éªæ¹æ³ | 
 |  |  |         radiusList: [], // æ¡ä»¶ | 
 |  |  |         rates: '', // æ¡ä»¶ | 
 |  |  |         rates: '', // æ¶è´¹æ å(å
/次) | 
 |  |  |         spotCheckType: '', // æ½æ£ç±»åç»å® | 
 |  |  |         deviceId: [], // è®¾å¤ | 
 |  |  |       }, | 
 |  |  |       sampleList: [], // æ£éªå¯¹è±¡ä¸ææ¡ | 
 |  |  | 
 |  |  |             inspectionItemClassEn: '', // æ£éªé¡¹åç±»EN | 
 |  |  |             method: '', // è¯éªæ¹æ³ | 
 |  |  |             radiusList: [], // æ¡ä»¶ | 
 |  |  |             rates: '', // æ¡ä»¶ | 
 |  |  |             rates: '', // æ¶è´¹æ å(å
/次) | 
 |  |  |             spotCheckType: '', // æ½æ£ç±»åç»å® | 
 |  |  |         } | 
 |  |  |         this.resetForm('editForm') | 
 |  |  |       } else { |