From 25be2de9e655bacb32830a48120512e53e3f741e Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期一, 24 二月 2025 10:47:26 +0800 Subject: [PATCH] 不合格复测搬迁 --- src/views/business/inspectionTask/components/InspectionWord.vue | 2330 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/api/business/inspectionTask.js | 8 src/views/business/unpass/components/addUnPass.vue | 2 src/api/business/rawMaterialOrder.js | 8 src/views/business/inspectionTask/inspection.vue | 12 5 files changed, 2,353 insertions(+), 7 deletions(-) diff --git a/src/api/business/inspectionTask.js b/src/api/business/inspectionTask.js index 6c52426..98e0ead 100644 --- a/src/api/business/inspectionTask.js +++ b/src/api/business/inspectionTask.js @@ -279,3 +279,11 @@ params: query, }); } +// 鏌ヨ澶嶆祴妯$増 +export function getInsProductUnqualifiedRetest(query) { + return request({ + url: "/insOrderPlan/getInsProductUnqualifiedRetest", + method: "get", + params: query, + }); +} diff --git a/src/api/business/rawMaterialOrder.js b/src/api/business/rawMaterialOrder.js index 6076b50..4b5c746 100644 --- a/src/api/business/rawMaterialOrder.js +++ b/src/api/business/rawMaterialOrder.js @@ -286,3 +286,11 @@ params: query }) } +// 淇濆瓨涓嶅悎鏍煎娴嬫暟鎹� +export function saveUnqualifiedContext(query) { + return request({ + url: '/insOrderPlan/saveUnqualifiedContext', + method: 'delete', + params: query + }) +} diff --git a/src/views/business/inspectionTask/components/InspectionWord.vue b/src/views/business/inspectionTask/components/InspectionWord.vue new file mode 100644 index 0000000..4b88e82 --- /dev/null +++ b/src/views/business/inspectionTask/components/InspectionWord.vue @@ -0,0 +1,2330 @@ +<template> + <el-dialog :close-on-press-escape="false" + :visible.sync="isShow" + custom-class="unPassCheck" + title="涓嶅悎鏍煎娴�" + width="90%" + @close="$emit('closeUnPassCheckDialog')"> + <div v-loading="loading" class="inspection"> +<!-- <el-row class="title">--> +<!-- <el-col :span="24" style="text-align: right;">--> +<!-- <el-button size="small" type="primary" @click="addVerifyDia = true" v-if="state==1">鎻愪氦</el-button>--> +<!-- </el-col>--> +<!-- </el-row>--> + <div class="center"> + <div class="search" style="text-align: left;display: flex;align-items: center;justify-content: space-between;"> + <div style="display: flex;align-items: center;"> + <span v-if="tableList.length>0">妫�楠屾ā鏉匡細</span> + <el-radio-group v-model="currentTable" size="small"> + <el-radio-button v-for="(item,index) in tableLists" :key="index" :label="item.templateId" + size="small">{{ item.templateName }}</el-radio-button> + </el-radio-group> + </div> + <div style="display: flex;align-items: center;"> + <span v-if="typeSource == '1'"> 澶嶆祴娆℃暟锛�</span> + <el-select v-if="typeSource == '1'" v-model="retestTag" + placeholder="璇烽�夋嫨" + size="small" @change="m=>handleChangeCableTag(currentSample.id,4, 'cableTag', m)"> + <el-option + v-for="item in unPassNumList" + :key="item.retestTag" + :label="item.retestTag" + :value="item.retestTag"> + </el-option> + </el-select> + </div> + </div> + <!-- 甯歌妫�楠屽師濮嬭褰� --> + <div id="tableBox" v-loading="tableLoading" class="center-box"> + <table v-for="(item,index) in tableList" :key="index+currentTable+currentSample.id" border="1" cellpadding="10" class="tables"> + <tbody> + <tr v-for="(m,i) in item.arr" :key="i"> + <td v-for="(n,j) in m" v-if="n.v.mc==undefined || Object.keys(n.v.mc).length === 4" :id='item.templateId+"-"+n.i+"-"+n.r+"-"+n.c' + :key="j" :colspan="n.v.mc&&n.v.mc.cs?n.v.mc.cs:1" + :rowspan="n.v.mc&&n.v.mc.rs?n.v.mc.rs:1" + :style="`background:${n.v.bg?n.v.bg:''};color:${n.v.fc};font-size:${n.v.fs}px;width:${handleWidth(n)}px !important;height:${item.style.rowlen[n.r]}px;font-wight:${n.v.bl?'bold':''};`"> + <div :class="`content-h-${n.v.ht} content-v-${n.v.vt}`" :style="`width:${handleWidth(n)}px !important;min-height:${item.style.rowlen[n.r]}px;`" + class="content"> + <template v-if="n.v.ps!=undefined && typeof n.v.ps.value ==='string'&& n.v.ps.value.includes('妫�楠屽��') && state==1"> + <el-input v-if="getInspectionValueType(n.i) == 1" :key="'abc-'+'000'+index+'000'+i+'000'+j" v-model="n.v.v" + :disabled="(getInspectionItemType(n.i) == 1 && !dataAcquisitionEidtAble )|| (n.u != userId && n.u != undefined && n.u != '')" + class="table_input" + @change="m=>changeInput(m,`${item.templateId}-${n.r}-${n.c}-${n.i}`, n,'getDataType')" @input="handleInput(n)" @mousewheel.native.prevent + @keydown.enter="changeInput('',`${item.templateId}-${n.r}-${n.c}-${n.i}`, n, 'getDataType')"> + </el-input> + <el-input v-else-if="getInspectionValueType(n.i) == 2" v-model="n.v.v" :disabled="getInspectionItemType(n.i) == 1 || (n.u != userId && n.u != undefined && n.u != '')" + class="table_input" + type="textarea" + @change="m=>changeInput(m,`${item.templateId}-${n.r}-${n.c}-${n.i}`,n,'getDataType')" /> +<!-- <el-select v-else-if="getInspectionValueType(n.i) == 5" v-model="n.v.v" :disabled="state>1||getInspectionItemType(n.i) == 1 || (n.u != userId && n.u != undefined && n.u != '')"--> +<!-- class="table_input" @change="m=>changeInput(m,`${item.templateId}-${n.r}-${n.c}-${n.i}`,n,'getDataType')"--> +<!-- @visible-change="e=>getDic(e,n.i)">--> +<!-- <el-option v-for="(e, i) in enumList" :key="i" :label="e.label" :value="e.value"></el-option>--> +<!-- </el-select>--> + <span v-else-if="getInspectionValueType(n.i) == 4" + :style="`font-family:${n.v.ff} !important;`">/</span> + </template> + <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='缁撹'"> + <el-select v-if="(getInspectionValueType(n.i) == 2 || getInspectionValueType(n.i) == 5) && state==1&&PROJECT=='瑁呭鐢电紗'" + v-model="n.v.v" class="table_input" @change="m=>changeInput(m,`${item.templateId}-${n.r}-${n.c}-${n.i}`, n,'getDataType')"> + <el-option :value="1" label="鍚堟牸"></el-option> + <el-option :value="0" label="涓嶅悎鏍�"></el-option> + <el-option :value="3" label="涓嶅垽瀹�"></el-option> + <el-option :value="2" label="寰呭畾"></el-option> + </el-select> + <template v-if="state > 1"> + <span v-if="n.v.v===1" :style="`font-family:${n.v.ff} !important;color: green;`">鍚堟牸</span> + <span v-else-if="n.v.v===0" :style="`font-family:${n.v.ff} !important;color: red;`">涓嶅悎鏍�</span> + <span v-else-if="n.v.v===3" :style="`font-family:${n.v.ff} !important;color: #3A7BFA;`">涓嶅垽瀹�</span> + <span v-else :style="`font-family:${n.v.ff} !important;`">寰呭畾</span> + </template> + <template v-if="getInspectionValueType(n.i) != 2 && state==1"> + <span v-if="n.v.v===1" :style="`font-family:${n.v.ff} !important;color: green;`">鍚堟牸</span> + <span v-else-if="n.v.v===0" :style="`font-family:${n.v.ff} !important;color: red;`">涓嶅悎鏍�</span> + <span v-else-if="n.v.v===3" :style="`font-family:${n.v.ff} !important;color: #3A7BFA;`">涓嶅垽瀹�</span> + <span v-else :style="`font-family:${n.v.ff} !important;`">寰呭畾</span> + </template> + </template> + <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='璁惧缂栫爜' && state==1"> + <span>{{ n.v.v }}</span> + </template> + <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='璁惧鍚嶇О'"> + <el-select v-model="n.v.v" :disabled="state>1" + class="table_input" filterable + multiple + placeholder="璁惧" remote @change="(val)=>changeEquip(val, n)" + @visible-change="e=>getEquipOptions(e,n.i)"> + <el-option v-for="item in equipOptions" :key="item.value" :label="item.label" :value="item.value"> + {{item.label + '--' +item.value}} + </el-option> + </el-select> + </template> + <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='瑕佹眰鍊�' && state==1"> + <span :style="`font-family:${n.v.ff} !important;`">{{getTell(n.i)}}</span> + </template> + <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='璁$畻鍊�' && state==1"><span :style="`font-family:${n.v.ff} !important;`">{{ toFixed(n.v.v,n.v.ct) }}</span></template> + <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='鏈�缁堝��' && state==1"> + <span :style="`font-family:${n.v.ff} !important;`">{{ toFixed(n.v.v,n.v.ct) }}</span> + </template> + <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='鏍峰搧缂栧彿'"> + <div :title="currentSample.sampleCode" style="display: flex;flex-wrap: nowrap;align-items: center;width: 100%"> + <i v-if="!currentFiberOpticTape&&!currentFiberOptic" class="el-icon-caret-left table_caret" style="width: 16px;" @click="caretSample(-1)"></i> + <div :style="`font-family:${n.v.ff} !important;overflow: hidden;white-space: nowrap;width: calc(100% - 32px);`">{{currentSample.sampleCode}}</div> + <i v-if="!currentFiberOpticTape&&!currentFiberOptic" class="el-icon-caret-right table_caret" + style="width: 16px;" @click="caretSample(1)"></i> + </div> + </template> + <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='鏍峰搧鍨嬪彿'"> + <div v-if="currentSample.model!==undefined&¤tSample.model!==null" :style="`font-family:${n.v.ff} !important;`">{{currentSample.model}}</div> + </template> + <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='濂楃'"> + <div style="display: flex;flex-wrap: nowrap;align-items: center;"> + <div :style="`font-family:${n.v.ff} !important;`">{{currentBushing?currentBushing.color:''}}</div> + </div> + </template> + <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='鍏夌氦甯�'"> + <div style="display: flex;flex-wrap: nowrap;align-items: center;"> + <i v-if="currentFiberOpticTape" class="el-icon-caret-left table_caret" @click="caretTape(-1) + "></i> + <div :style="`font-family:${n.v.ff} !important;`">{{currentFiberOpticTape?currentFiberOpticTape.code:''}}</div> + <i v-if="currentFiberOpticTape" + class="el-icon-caret-right table_caret" + @click="caretTape(1)"></i> + </div> + </template> + <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='鍏夌氦'"> + <div style="display: flex;flex-wrap: nowrap;align-items: center;"> + <i v-if="currentFiberOptic" class="el-icon-caret-left table_caret" + @click="caretOptic(-1)"></i> + <div :style="`font-family:${n.v.ff} !important;`">{{currentFiberOptic?currentFiberOptic.color:''}} + </div> + <i + v-if="currentFiberOptic" class="el-icon-caret-right table_caret" @click="caretOptic(1)"></i> + </div> + </template> + <span v-else :style="`font-family:${n.v.ff} !important;`" v-html="getValue(n.v)" ></span> + </div> + </td> + </tr> + </tbody> + </table> + </div> + </div> + <el-dialog :visible.sync="reviewDia" title="妫�楠屽鏍�" width="500px"> + <div v-if="reviewDia" class="body" style="display: flex;padding: 10px;"> + <div class="search_label" style="width: 150px;"><span class="required-span">* </span>涓嶉�氳繃鐨勭悊鐢憋細</div> + <div class="search_input" style="width: 100%;"> + <el-input v-model="noReason" :autosize="{ minRows: 4}" clearable size="small" type="textarea"></el-input> + </div> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="reviewDia = false">鍙� 娑�</el-button> + <el-button :loading="reviewLoading" type="primary" @click="handleReviewDia">纭� 瀹�</el-button> + </span> + </el-dialog> + <el-dialog :visible.sync="addVerifyDia" title="鎸囧畾澶嶆牳浜哄憳" width="400px"> + <div class="body" style="display: flex;padding: 10px;align-items: center;"> + <div class="search_label" style="width: 150px;"><span class="required-span">*</span>澶嶆牳浜�</div> + <div class="search_input" style="width: 100%;"> + <el-select v-model="verifyUser" clearable filterable placeholder="璇烽�夋嫨" size="small" style="width: 100%;"> + <el-option v-for="(item,i) in personList" :key="i" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </div> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="addVerifyDia = false">鍙� 娑�</el-button> + <el-button :loading="submitLoading" type="primary" @click="submit()">纭� 瀹�</el-button> + </span> + </el-dialog> + <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false" :visible.sync="dataGetDia" custom-class="custom-dialog" title="鏁版嵁閲囬泦"> + <div> + <table border="1" cellpadding="10" class="thermal-table"> + <tr> + <td style="width: 120px;">妫�楠岄」</td> + <td style="width: 120px;">妫�楠屽瓙椤�</td> + <td>鏁伴噰鏁版嵁</td> + </tr> + <template v-for="(item,index) in getData"> + <tr> + <td :rowspan="item.child.length">{{item.faName}}</td> + <td>{{ item.child[0].name }}</td> + <td style="text-align: left;"> + <el-checkbox-group + v-model="getDataIndex" :max="item.child[0].maxNum"> + <el-checkbox v-for="(n,j) in item.child[0].arr" :key="j" :label="j">{{n}}</el-checkbox> + </el-checkbox-group> + </td> + </tr> + <tr v-for="(m,i) in item.child" v-show="i>0" :key="i+'bbbbbbbbbbbbbb'"> + <td>{{ m.name }}</td> + <td style="text-align: left;"> + <el-checkbox-group + v-model="getDataIndex" :max="m.maxNum"> + <el-checkbox v-for="(n,j) in m.arr" :key="j" :label="j">{{n}}</el-checkbox> + </el-checkbox-group> + </td> + </tr> + </template> + </table> + </div> + <span slot="footer" class="dialog-footer"> + <el-button :loading="getDataIndexLoading" type="primary" @click="submitDataGet()">纭� 瀹�</el-button> + </span> + </el-dialog> + <UnPassDialog v-if="unPassDialog" ref="unPassDialog" + :orderId="orderId" + :unPassDialog="unPassDialog" + @resetForm="resetForm"></UnPassDialog> + <el-dialog :close-on-click-modal="false" :visible.sync="addCheck" + title="鎸囧畾鎶ュ憡瀹℃牳浜哄憳" + width="400px" + @close="closeAddVerifyDia"> + <div class="body" style="display: flex;padding: 10px;align-items: center;"> + <div class="search_label" style="width: 150px;"><span class="required-span">*</span>瀹℃牳浜猴細</div> + <div class="search_input" style="width: 100%;"> + <el-select v-model="checkUser" clearable filterable placeholder="璇烽�夋嫨" size="small" style="width: 100%;"> + <el-option v-for="(item,i) in personList" :key="i" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </div> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="closeAddVerifyDia">鍙� 娑�</el-button> + <el-button :loading="reviewLoading" type="primary" @click="upInsReview(1)">纭� 瀹�</el-button> + </span> + </el-dialog> + </div> + </el-dialog> +</template> + +<script> +// import ValueTable from '../../tool/value-table.vue' +import file from '@/utils/file' +import excelFunction from '@/utils/excelFountion' +import UnPassDialog from "@/views/business/unpass/components/unPassDialog.vue"; +import AddUnPass from "@/views/business/unpass/components/addUnPass.vue"; +import { + checkSubmitPlan, + doInsOrder, + getInsProductUnqualifiedRetest, + search, selectUserCondition, + submitPlan, + verifyPlan +} from "@/api/business/inspectionTask"; +import {getUserNow, saveUnqualifiedContext} from "@/api/business/rawMaterialOrder"; +export default { + props: ['sonLaboratory', 'orderId', 'state','inspectorList','typeSource', 'unPassCheck', 'rawMaterialTag'], + components: { + AddUnPass, + UnPassDialog + }, + data() { + return { + isShow: this.unPassCheck, + sagData: [], + sagForm: { + sampleCode: null, + model: null, + inspection: null, + methodName: null, + tensileForce: null, + spanLength: null, + load: null + }, + dataGetDia:false, + wareTableDataLoading:false, + fileAdd:false, + submitLoading: false, + searchForm: { + sampleName: null, + state: null + }, + id: 0, + componentData0: { + entity: { + insOrderId:'' + }, + isIndex: true, + showSelect: false, + select: false, + sort: false, + init:false, + do: [ + { + id: 'handleDown', + font: '涓嬭浇', + type: 'text', + method: 'handleDown' + },{ + id: 'delete', + font: '鍒犻櫎', + type: 'text', + method: 'doDiy', + disabFun: (row, index) => { + return this.state!=1 + } + } + ], + isPage: false, + linkEvent: {}, + tagField: { + type:{ + select:[ + { + value: 1, + label: '鍥剧墖' + }, + { + value: 2, + label: '鏂囦欢' + } + ] + } + }, + currentId: '', + selectField: {}, + requiredAdd: [], + requiredUp: [] + }, + changeType:null, + getReportModelLoading:false, + insOrder: {}, + sampleProduct: [], + typeList: [], + urgentList: [], + currentSample: {}, //褰撳墠鏍峰搧淇℃伅 + tableList: [], + loading: false, + ps: {}, + param: {}, + currentKey0: 1, + currentKey1: 1, + currentKey2: 1, + comparisonList: [], + excelMethodList: [], + equipOptions: [], + userId: 0, + reviewLoading: false, + reviewDia: false, + noReason: '', + tableWidth: 1000, + currentTable: null, + tableLists: [], + widthList: [], + addVerifyDia: false, + verifyUser: null, + personList: [], + enumList: [], + tableLoading:false, + upLoading:false, + temptList:null, + currentTab:null, + wareForm:{ + inspectionItem:1, + inspectionItemSubclass:'20(甯告俯)', + }, + wareForm0:{}, + numOptions:[], + temperatureOptions:[], + wareTableData:[], + otherForm:{ + humidity:null, + temperature:null, + }, + equipForm:{ + value0:null, + code0:null, + value1:null, + code1:null, + }, + result: null, + worker: null, + worker0: null, + wareLength:[], + dataAcquisitionInfo:{}, + dataAcquisitionInfoNew:{}, + dataAcquisitionEidtAble:false, + isGet:false, + dataAcquisitionLoading:false, + collected:false, + // 鐑惊鐜�---寮�濮� + thermalCyclingInfo:{ + max:0, + inspectionItem:1, + arr:[], + length:1, + inspectionItemClass:null, + }, + thermalCyclingLoading:false, + temDataAcquisition:false, + getData:[ + { + faName:'娉㈤暱闄勫姞琛板噺', + child:[ + { + name:'1285nm~1330nm', + arr:[12,13,14,15], + }, + { + name:'1525nm~1575nm', + arr:[12,13,14,15], + }, + ] + }, + { + faName:'鎴嚦娉㈤暱', + child:[ + { + name:'鎴嚦娉㈤暱', + arr:[12,13,14,15], + } + ] + } + ], + getDataIndex:[], + getDataIndexLoading:false, + getDataTypeId:'', + getDataType:null, + unPassDialog: false, // 涓嶅悎鏍煎鐞嗗脊妗� + retestTag: '', // 澶嶆祴娆℃暟 + addCheck: false, // 鎸囧畾瀹℃牳浜哄憳寮规 + checkUser: '', + type: '', + unPassNumList: [ + {retestTag: '1'}, + {retestTag: '2'}, + ], + } + }, + // 鐢ㄤ簬涓婁紶鏂囦欢鐨勪俊鎭� + computed: { + headers() { + return { + 'token': sessionStorage.getItem('token') + } + }, + action() { + return this.javaApi + "/insOrderPlan/uploadFile"; + } + }, + created() { + this.id = this.orderId; + this.getUserInfo() + }, + mounted() { + this.getTypeDicts() // 鑾峰彇绱ф�ョ▼搴︿笅鎷夋閫夐」 + this.getInsStateDicts() + this.getComparisonList() + this.getAuthorizedPerson() + this.startWorker() + }, + watch: { + // 鐩戝惉浠诲姟id锛岃幏鍙栦换鍔′俊鎭� + id(val) { + this.loading = true + doInsOrder({ + id: val, + laboratory: this.sonLaboratory + }).then(async res => { + this.insOrder = res.data.insOrder; + this.componentData0.entity.insOrderId = val; + this.urgentList.forEach(m => { + if (m.value == this.insOrder.type) { + this.insOrder.typeName = m.label + } + }) + if(!res.data.sampleProduct||res.data.sampleProduct.length==0){ + return this.$message.error('璇ヤ换鍔℃病鏈夋牱鍝佷俊鎭�') + } + // 璧嬪�煎綋鍓嶆牱鍝佸垪琛� + this.sampleProduct = res.data.sampleProduct + this.currentSample = this.HaveJson(this.sampleProduct[0]) + let insProduct = this.HaveJson(this.currentSample.insProduct) + // 娓╁害銆佹箍搴﹁祴鍊� + this.otherForm = { + temperature:this.insOrder.temperature?this.insOrder.temperature:null, + humidity:this.insOrder.humidity?this.insOrder.humidity:null, + } + if (this.typeSource == '1') { + this.retestTag = '1' + } + this.getEquipOptions(1) + // 鑾峰彇褰撳墠鏍峰搧鐨勬楠岄」 + let list = await this.getCurrentProduct(this.currentSample.id,0) + if (list === undefined) { + this.$message.warning('鏆傛棤涓嶅悎鏍煎娴嬫暟鎹�') + this.$emit('closeUnPassCheckDialog') + return + } + this.currentSample.insProduct = this.HaveJson(list) + // 鍒濆鍖栦紶閫掑埌鍚庣鐨勫弬鏁� + this.param = {} + this.changeType = 0; + this.currentSample.insProduct.forEach(a => { + // 鏄惁涓烘垚鍝佺數缂嗕笅鐨勬澗濂楃椤圭洰锛屼笉鏄垯鎵ц鍒濆鍖� + if(this.handleCasing(a.inspectionItem)){ + this.param[a.id] = { + insValue: [], + comValue: [], + resValue: null, + equipValue: [], + equipName: [], + insResult: null + } + } + }) + await this.determineWhetherToCollectData()//鏄惁闇�瑕佹暟閲� + if (this.currentSample.index == undefined) this.currentSample['index'] = 1 + let bushing = this.currentSample.bushing + this.getTableLists();//澶勭悊妯℃澘鍒楄〃淇℃伅 + this.loading = false + + }) + }, + // 鐩戝惉褰撳墠妯℃澘鍙樺寲 + currentTable(val1, val0) { + if (val0 != null && val1 != val0) { + if(this.changeType&&this.changeType>0){ + // 濡傛灉鏄厜绾ゃ�佸厜绾ゅ甫锛屽垯涓嶆墽琛屼笅闈㈡搷浣� + return + } + this.tableLists.forEach(async (m, i) => { + if (m.templateId == val1) { + let list = await this.getCurrentProduct(this.currentSample.id,0) + this.currentSample.insProduct = this.HaveJson(list)//璧嬪�煎綋鍓嶆牱鍝佺殑妫�楠岄」 + this.param = {}//鍒濆鍖栦紶鍒板悗绔殑鍙傛暟 + this.currentSample.insProduct.forEach((a, j) => { + if(this.handleCasing(a.inspectionItem)){ + this.param[a.id] = { + insValue: [], + comValue: [], + resValue: null, + equipValue: [], + equipName: [], + insResult: null + } + } + }) + // 鍘婚噸妯℃澘锛岃繑鍥炴湁鍑犱釜妯℃澘 + const mySet1 = new Set(); + this.tableLists = this.currentSample.insProduct.filter(m => { + let num0 = mySet1.size; + if (m.templateId != null&&m.template != null) { + try { + mySet1.add(JSON.stringify({ + template: m.template, + templateId: m.templateId + })) + } catch (error) { + console.log(222,error); + } + } + let num1 = mySet1.size; + if (num1 > num0) { + return m + } + }); + if (this.tableLists && this.tableLists.length > 0) { + this.tableList = null; + this.tableList = this.tableLists.filter(m => m.templateId == val1) + // 瀵规ā鏉胯繘琛屽鐞� + this.handleTableData() + } + } + }) + } + }, + // 鐗规畩妫�楠岄」--鐩戝惉璁惧淇℃伅鏀瑰彉 + equipForm:{ + deep:true, + handler(val){ + if(this.tableLists.find(m=>m.templateId==this.currentTable)&&(this.tableLists.find(m=>m.templateId==this.currentTable).templateName=='娓╁害寰幆妫�楠屽師濮嬭褰�'||this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('鐑惊鐜�')||this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('娓╁崌璇曢獙'))&&this.equipOptions&&this.equipOptions.length>0){ + // 鍒濆鍖栬澶囦俊鎭� + this.param[this.currentSample.insProduct[0].id].equipValue = [] + this.param[this.currentSample.insProduct[0].id].equipName = [] + if(this.equipForm.code0){ + // 璧嬪�肩涓�涓澶囩殑淇℃伅 + this.equipForm.value0 = this.equipOptions.find(m=>m.value==this.equipForm.code0).label + this.param[this.currentSample.insProduct[0].id].equipValue.push({ + i:this.currentSample.insProduct[0].id, + v:{ + v:this.equipForm.code0 + } + }) + this.param[this.currentSample.insProduct[0].id].equipName.push({ + i:this.currentSample.insProduct[0].id, + v:{ + v:this.equipForm.value0 + } + }) + } + if(this.equipForm.code1){ + // 璧嬪�肩浜屼釜璁惧鐨勪俊鎭� + this.equipForm.value1 = this.equipOptions.find(m=>m.value==this.equipForm.code1).label + this.param[this.currentSample.insProduct[0].id].equipValue.push({ + i:this.currentSample.insProduct[0].id, + v:{ + v:this.equipForm.code1 + } + }) + this.param[this.currentSample.insProduct[0].id].equipName.push({ + i:this.currentSample.insProduct[0].id, + v:{ + v:this.equipForm.value1 + } + }) + } + // 淇濆瓨鏁版嵁 + this.saveInsContext() + } + } + }, + }, + beforeDestroy() { + // 鍦ㄧ粍浠堕攢姣佸墠纭繚鍋滄 Worker锛岄伩鍏嶅唴瀛樻硠婕� + this.stopWorker(); + }, + methods: { + closeAddVerifyDia () { + this.addCheck = false + this.checkUser = '' + }, + // 鍏抽棴涓嶅悎鏍煎鐞嗗脊妗� + resetForm () { + this.$refs.unPassDialog.$refs['unPassForm'].resetFields(); + this.unPassDialog = false + }, + handleDataAcquisition(data){ + // 鏄惁鍙互缂栬緫鏁伴噰鏁版嵁 + if(this.dataAcquisitionEidtAble){ + this.getDataType = 1; + }else{ + this.getDataType = 2; + } + this.dataAcquisitionInfo = {} + this.getData = [] + for (let i in data){ + let obj = { + faName:i, + child:[] + } + // 寰幆鏁伴噰鏁版嵁 + for(let j in data[i]){ + // 鎷兼帴瀛楃涓� 妫�楠岄」+妫�楠屽瓙椤� + let str0 = '' + if(i==j){ + str0 = i+',' + }else{ + str0 = i+','+j + } + if(j!='frequency'&&data[i][j]&&(!data[i][j].result||typeof data[i][j].result == 'string')){ + // 澶勭悊鏁伴噰淇℃伅鏍煎紡 + this.dataAcquisitionInfo[str0] = { + value:data[i][j].result, + frequency:data[i].frequency + } + let list = this.tableList[0].arr + // 寰幆椤甸潰鍒楄〃淇℃伅锛屽垽鏂暟閲囨暟鎹搴旈〉闈㈠垪琛ㄤ俊鎭殑妫�楠岄」鏄摢涓紝骞剁粰褰撳墠妫�楠岄」缁戝畾璁惧淇℃伅 + list.forEach((item,index)=>{ + let num0 = 0; + let str = '' + item.forEach(m=>{ + if(m.v.ps&&(m.v.ps.value=='妫�楠屽瓙椤�'||m.v.ps.value=='妫�楠岄」')){ + if(m.v.ps&&m.v.ps.value=='妫�楠岄」'){ + if(num0==0){ + str = m.v.v+',' + num0++ + } + } + if(m.v.ps&&m.v.ps.value=='妫�楠屽瓙椤�'){ + if(num0==1){ + str = str+m.v.v + } + } + } + // 缁戝畾璁惧淇℃伅 + if(data[i][j].equipName&&data[i][j].equipValue&&m.v&&m.v.ps&&m.v.ps.value=='璁惧鍚嶇О'&&str0==str){ + if(!m.v.v){ + this.changeEquip(data[i][j].equipValue,m,data[i][j].equipName) + } + } + }) + }) + }else if(j!='frequency'&&data[i][j]&&Array.isArray(data[i][j].result)){ + // 濡傛灉杩斿洖鐨勬暟閲囨暟鎹槸鏁扮粍锛屽垯澶勭悊鏁扮粍 + // 浠ヤ笅閫昏緫涓鸿幏鍙栨瘡涓楠岄」鍙緭鍏ョ殑妫�楠屽�肩殑鏈�澶т釜鏁� + let str0 = '' + if(i==j){ + str0 = i+',' + }else{ + str0 = i+','+j + } + let list = this.tableList[0].arr + let maxNum = 0 + list.forEach((item,index)=>{ + let num0 = 0; + let str = '' + item.forEach(m=>{ + if(m.v.ps&&(m.v.ps.value=='妫�楠屽瓙椤�'||m.v.ps.value=='妫�楠岄」')){ + if(m.v.ps&&m.v.ps.value=='妫�楠岄」'){ + if(num0==0){ + str = m.v.v+',' + num0++ + } + } + if(m.v.ps&&m.v.ps.value=='妫�楠屽瓙椤�'){ + if(num0==1){ + str = str+m.v.v + } + } + let num = 0; + list[index].forEach(n=>{ + if(n.v.ps&&n.v.ps.value&&typeof n.v.ps.value == 'string'&&n.v.ps.value.includes('妫�楠屽��')){ + num++ + } + }) + if(str0==str){ + maxNum = num + } + } + // 缁戝畾璁惧 + if(data[i][j].equipName&&data[i][j].equipValue&&m.v&&m.v.ps&&m.v.ps.value=='璁惧鍚嶇О'&&str0==str){ + if(!m.v.v){ + this.changeEquip(data[i][j].equipValue,m,data[i][j].equipName) + } + } + }) + }) + // 鑾峰彇鍒版渶澶ф楠屽�艰緭鍏ヤ釜鏁板悗閲嶇粍鏁版嵁 + let obj0 = { + name:j, + arr:data[i][j].result, + maxNum:maxNum, + value:[] + } + // 濡傛灉鏁伴噰杩斿洖鐨勬暟缁勯暱搴﹀ぇ浜庢渶澶ц緭鍏ヤ釜鏁帮紝鍒欏皢鏁伴噰鏁版嵁鍦ㄥ脊妗嗕腑灞曠ず锛岀敤鎴烽�夋嫨闇�瑕佹墜鍔ㄩ�夋嫨鏁伴噰鐨勪俊鎭� + if(data[i][j].result&&Array.isArray(data[i][j].result)&&data[i][j].result.length>maxNum){ + obj.child.push(obj0) + }else{ + this.dataAcquisitionInfo[str0] = { + value:data[i][j].result + } + } + } + } + if(obj.child.length>0){ + this.getData.push(obj) + } + } + // 濡傛灉瀛樺湪鏁伴噰杩斿洖鐨勬暟缁勯暱搴﹀ぇ浜庢渶澶ц緭鍏ヤ釜鏁帮紝鍒欏脊鍑哄脊妗嗛�夋嫨 + if(this.getData.length>0){ + this.dataGetDia = true + this.getDataIndex = [] + }else{ + // 濡傛灉閮戒笉瀛樺湪锛屽垯锛岃繘鍏ュ鐞嗘暟閲囩嚎绋嬮噷鍘诲鐞嗘暟鎹� + try { + // 鍚� Worker 鍙戦�佹秷鎭紝寮�濮嬪鐞嗛�昏緫 + this.getDataIndexLoading = false + this.dataGetDia = false + this.getDataTypeId = '' + this.worker0.postMessage(JSON.stringify({ + dataAcquisitionInfo: this.dataAcquisitionInfo, + list:this.tableList[0].arr + })); + } catch (error) { + console.log(1111,error); + } + } + // 鐩戝惉 Worker 杩斿洖鐨勭粨鏋� + this.worker0.onmessage = (event) => { + let result = JSON.parse(event.data); + if(result.method=='changeInput'){ + // 閲囬泦鍚庣殑鏁版嵁锛岄渶瑕佽繘琛岃绠楃殑绾跨▼杩涜璁$畻 + let {list,n} = result.value + this.$set(this.tableList[0],'arr',list) + this.changeInput('',`${this.currentSample.insProduct[0].templateId}-${n.r}-${n.c}-${n.i}`,n) + }else if(result.getDataTypeId){ + // 鑾峰彇鍒版暟閲囨渶鍚庝竴椤癸紝妫�楠岄」鐨処D + this.getDataTypeId = result.getDataTypeId + } + }; + }, + // 濡傛灉瀛樺湪鏁伴噰杩斿洖鐨勬暟缁勯暱搴﹀ぇ浜庢渶澶ц緭鍏ヤ釜鏁帮紝鍒欏脊鍑哄脊妗嗛�夋嫨锛岃繖閲屾槸寮规鐨勬彁浜� + submitDataGet(){ + if(this.getDataIndex.length==0){ + this.$message.error('璇烽�夋嫨闇�瑕侀噰闆嗙殑鏁版嵁') + return + } + this.getDataIndex.sort((a, b) => a - b); + for (let i=0;i<this.getData.length;i++){ + for(let j=0;j<this.getData[i].child.length;j++){ + // 瀵圭敤鎴烽�夋嫨鐨勬暟閲囦俊鎭繘琛屽鐞嗭紝璧嬪�� + let arr = [] + for(let k=0;k<this.getDataIndex.length;k++){ + arr.push( this.dataAcquisitionInfoNew[this.getData[i].faName][this.getData[i].child[j].name].result[this.getDataIndex[k]]) + } + this.dataAcquisitionInfoNew[this.getData[i].faName][this.getData[i].child[j].name].result = arr + } + } + this.getDataIndexLoading = true + // 璧嬪�煎畬鎴愬悗闇�瑕佸啀娆¤繘鍏ュ鐞嗘暟閲囩嚎绋嬮噷鍘诲鐞嗘暟鎹� + this.handleDataAcquisition(this.dataAcquisitionInfoNew) + }, + // 澶氱嚎绋� + startWorker() { + if (this.worker) { + this.stopWorker(); // 纭繚涔嬪墠鐨� Worker 宸插仠姝� + } + // 鍒涘缓 Worker 瀹炰緥 + this.worker = new Worker('/static/js/worker.js'); + if (this.worker0) { + this.stopWorker(); // 纭繚涔嬪墠鐨� Worker 宸插仠姝� + } + // 鍒涘缓 Worker 瀹炰緥 + this.worker0 = new Worker('/static/js/worker0.js'); + }, + // 鍋滄澶氱嚎绋� + stopWorker() { + if (this.worker) { + this.worker.terminate(); + this.worker = null; + } + if (this.worker0) { + this.worker0.terminate(); + this.worker0 = null; + } + }, + // 鏍规嵁绫诲瀷銆佷换鍔d銆佸疄楠屽鏉ヨ幏鍙栨牱鍝佺殑妫�楠岄」淇℃伅 + async getCurrentProduct(id,type,cableTag){ + this.tableLoading = true; + type = this.typeSource == '1' ? 5 : type + this.type = type + const params = { + id: id, + type: type, + laboratory: this.sonLaboratory, + retestTag: this.retestTag, + rawMaterialTag: this.rawMaterialTag, + } + let res = getInsProductUnqualifiedRetest(params) + if (res.code === 200 && res.data.length > 0) { + this.tableLoading = false; + this.scrollInit() + return res.data + } + }, + // 鏉惧绠$殑鍒ゆ柇\濡傛灉changeType涓嶇瓑浜�3閭d箞椤甸潰涓嶅睍绀烘澗濂楃妫�楠岄」 + handleCasing(inspectionItem){ + if(this.changeType!=3){ + if(inspectionItem.includes('鏉惧绠�')){ + return false + }else{ + return true + } + }else{ + return true + } + }, + async handleChangeCableTag(m,type, num, m2){ + let cableTag = '' + if (num === 'cableTag') { + cableTag = m2 + } + if (!m2) { + type = 0 + } + this.changeType = type + if(m){ + let list = await this.getCurrentProduct(m,type, cableTag) + if(list.length>0){ + this.param = {} + list.forEach(a => { + this.param[a.id] = { + insValue: [], + comValue: [], + resValue: null, + equipValue: [], + equipName: [], + insResult: null + } + }) + this.getTableLists0(list) + this.worker.postMessage(JSON.stringify({ + type: 'saveData', + tableList:this.tableList, + param:this.param, + currentTable:this.currentTable, + bushing:m + })); + }else{ + this.tableLists = [] + this.tableList = [] + this.$message.error('妫�楠岄」涓虹┖') + } + } + }, + // 瀛楀吀鑾峰彇淇℃伅 + getTypeDicts() { + this.getDicts("urgency_level").then((response) => { + this.urgentList = this.dictToValue(response.data); + }); + }, + // 瀛楀吀鑾峰彇淇℃伅 + getInsStateDicts() { + this.getDicts("inspection_task_state").then((response) => { + this.typeList = this.dictToValue(response.data); + }) + }, + // 瀛楀吀鑾峰彇淇℃伅 + getComparisonList() { + this.getDicts("coordinate_transformation").then((response) => { + this.comparisonList = this.dictToValue(response.data); + }); + }, + // 澶勭悊椤甸潰鍒楄〃鏁版嵁--鍘婚噸,鐢熸垚妫�楠屾ā鏉垮垏鎹㈠垪琛� + getTableLists() { + const mySet1 = new Set(); + this.tableLists = this.currentSample.insProduct.filter(m => { + let num0 = mySet1.size; + if (m.templateId != null&&m.template != null) { + try { + mySet1.add(JSON.stringify({ + template: m.template, + templateId: m.templateId + })) + } catch (error) { + console.log(222,error); + } + } + let num1 = mySet1.size; + if (num1 > num0) { + return m + } + }); + if (this.tableLists && this.tableLists.length > 0) { + this.tableList = null; + this.tableList = [this.tableLists[0]] + this.currentTable = this.tableLists[0].templateId; + // 澶勭悊椤甸潰鍒楄〃鏁版嵁 + this.handleTableData() + } + }, + // 鍏夌氦閰嶇疆鐩稿叧妯℃澘table鍒楄〃 + getTableLists0(list){ + const mySet1 = new Set(); + this.tableLists = list.filter(m => { + let num0 = mySet1.size; + if (m.templateId != null&&m.template != null) { + try { + mySet1.add(JSON.stringify({ + template: m.template, + templateId: m.templateId + })) + } catch (error) { + console.log(333,error); + } + } + let num1 = mySet1.size; + if (num1 > num0) { + return m + } + }); + if (this.tableLists && this.tableLists.length > 0) { + this.tableList = null; + this.tableList = [this.tableLists[0]] + this.currentTable = this.tableLists[0].templateId; + this.currentSample.insProduct = this.HaveJson(list) + // 澶勭悊椤甸潰鍒楄〃鏁版嵁 + this.handleTableData() + } + }, + // 澶勭悊椤甸潰鍒楄〃鏁版嵁 + handleTableData() { + console.log("ttt-------->>>>",this.tableList); + this.excelMethodList = []//excel鍑芥暟鍒楄〃 + this.widthList = this.tableList[0].style.columnlen;//椤甸潰瀹藉害--鏍规嵁妯℃澘鏉ョ殑 + // 娓╁害寰幆妫�楠屽師濮嬭褰�--寮�濮� + if(this.tableLists.find(m=>m.templateId==this.currentTable)&&this.tableLists.find(m=>m.templateId==this.currentTable).templateName=='娓╁害寰幆妫�楠屽師濮嬭褰�'){ + // 瀵硅姹傚�艰繘琛屾媶鍒嗗鐞�,杩涜�屽緱鍑洪〉闈㈠唴瀹� + let ask = this.currentSample.insProduct[0].ask + let askList = ask.split(';') + // 鑾峰彇寰幆娆℃暟 + this.numOptions = [] + for (let i = 1; i <= askList[askList.length-1]; i++) { + this.numOptions.push({ + value:i, + label:i + }) + } + let mySet1 = new Set(); + askList.forEach((m,i) => { + if(i<askList.length-1){ + mySet1.add(m.split(',')[0].replace('鈩�','')) + } + }) + // 鑾峰彇娓╁害鐐瑰垪琛� + this.temperatureOptions = [] + mySet1.forEach(m => { + this.temperatureOptions.push({ + value:String(m), + label:m + }) + }) + } + // 娓╁害寰幆妫�楠屽師濮嬭褰�---缁撴潫 + // 鐑惊鐜楠屽師濮嬭褰�---寮�濮� + if(this.tableLists.find(m=>m.templateId==this.currentTable)&&(this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('鐑惊鐜�')||this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('娓╁崌璇曢獙'))){ + // 鏍规嵁瑕佹眰鍊兼媶鍒嗘暟鎹�,寰楀埌椤甸潰娓叉煋鐨勪俊鎭� + let ask = this.currentSample.insProduct[0].ask + let askList = ask.split(';') + this.thermalCyclingInfo.max = Number(askList[askList.length-1]) + let arr = [] + for (let i = 0; i < askList.length-1; i++) { + arr.push(askList[i].split(',')[0]) + } + arr = arr.map(item=>{ + let obj = {} + obj.name = item; + if(obj.insResult==null||obj.insResult==undefined){ + obj.arr = [ + { + value0:'', + value1:'', + } + ] + obj.insResult = null; + } + return obj + }) + this.thermalCyclingInfo.arr = arr; + } + // 鐑惊鐜楠屽師濮嬭褰�---缁撴潫 + // 鏈寰幆涓昏鍋氶〉闈㈡覆鏌撳眰闈㈢殑澶勭悊--鍗曞厓鏍煎悎骞堕澶勭悊 + this.tableList.forEach(a => { + let mcList = [] + a.template.forEach(b => { + if (b.v.mc != undefined && b.v.mc.cs != undefined && b.v.mc.rs != undefined) { + mcList.push(b) + } + }) + let count = 0 + mcList.forEach(b => { + for (var c in a.template) { + for (var i = 0; i < b.v.mc.cs; i++) { + for (var i2 = 0; i2 < b.v.mc.rs; i2++) { + if (a.template[c].c === b.c + i && a.template[c].r === b.r + i2) { + let bb = this.HaveJson(b) + a.template[c].v.v = bb.v.v + a.template[c].v.ps = bb.v.ps + a.template[c].v.fc = bb.v.fc + a.template[c].v.fs = bb.v.fs + a.template[c].v.ht = bb.v.ht + a.template[c].mc = count + break + } + } + } + } + count++ + }) + }) + // 鏈寰幆涓昏鏄帶鍒跺悎骞�,浠ュ強鎺у埗妫�楠岄」淇℃伅鏄惁灞曠ず鍑烘潵,浠ヤ究鍚庣画妫�楠� + this.tableList.forEach(a => { + let dels = new Set()//闇�瑕佸垹闄ょ殑琛� + let ids = []//鎵�鏈夋楠岄」鐨刬d + let set3 = new Set() + a.template.forEach(b => { + let size1 = set3.size + let size2 = set3.add(b.r).size + if (size1 < size2) { + let str = '' + let str2 = '' + let unit2 = '' + let count4 = 0 + let isThree = 0 + a.template.forEach(c => { + // 鑾峰彇鍒� 妫�楠岄」鍒嗙被+妫�楠岄」+妫�楠屽瓙椤圭殑鎷兼帴,濡傛灉妯℃澘閲岀殑淇℃伅璺熸帴鍙h繑鍥炵殑妫�楠岄」淇℃伅鑳藉鍖归厤鍒欏睍绀哄嚭鏉� + if (b.r === c.r) { + if(c.v.ps != undefined && c.v.ps.value === '妫�楠岄」鍒嗙被'&&count4 === 0){ + // 涓夌骇鍒嗙被 + isThree = 1 + }else if(c.v.ps != undefined && c.v.ps.value === '妫�楠岄」'&&count4 === 0){ + // 浜岀骇鍒嗙被 + isThree = 0 + } + if(isThree==0){ + if (c.v.ps != undefined && c.v.ps.value === '妫�楠岄」') { + if (count4 === 0) { + str += c.v.v + count4 += 1 + } + } else if (c.v.ps != undefined && c.v.ps.value === '妫�楠屽瓙椤�') { + if (count4 === 1) { + str += c.v.v + count4 += 1 + } + } + }else if(isThree==1){ + if (c.v.ps != undefined && c.v.ps.value === '妫�楠岄」鍒嗙被') { + if (count4 === 0) { + str += c.v.v + count4 += 1 + } + }else if (c.v.ps != undefined && c.v.ps.value === '妫�楠岄」') { + if (count4 === 1) { + str += c.v.v + count4 += 1 + } + } else if (c.v.ps != undefined && c.v.ps.value === '妫�楠屽瓙椤�') { + if (count4 === 2) { + str += c.v.v + count4 += 1 + } + } + } + if (str === '鏈烘鎬ц兘骞叉�佹媺浼稿己搴�(绾靛悜)') { + if (c.v.ps != undefined && c.v.ps.value === '鍗曚綅') { + str2 = str + c.v.v + unit2 = c.v.v + + } + } + } + }) + if (str != '') { + let count2 = 0 + for (let i in this.currentSample.insProduct) { + let inspectionItemClass = this.currentSample.insProduct[i].inspectionItemClass==null||this.currentSample.insProduct[i].inspectionItemClass==undefined?'':this.currentSample.insProduct[i].inspectionItemClass + let inspectionItem = this.currentSample.insProduct[i].inspectionItem==null||this.currentSample.insProduct[i].inspectionItem==undefined?'':this.currentSample.insProduct[i].inspectionItem + let inspectionItemSubclass = this.currentSample.insProduct[i].inspectionItemSubclass==null||this.currentSample.insProduct[i].inspectionItemSubclass==undefined?'':this.currentSample.insProduct[i].inspectionItemSubclass + if(inspectionItemSubclass === '骞叉�佹媺浼稿己搴�(绾靛悜)') { + // 妫�楠屽瓙椤逛负'骞叉�佹媺浼稿己搴�(绾靛悜)'鏃讹紝妯$増閲屾槸涓や釜璁$畻鍊煎搴旂浉鍚岀殑妫�楠屽�煎苟涓旇绠楁柟寮忎笉鍚岋紝瑕佹牴鎹浉鍚岀殑'鍗曚綅'鍋氱壒娈婄殑娓叉煋 + const unit = this.currentSample.insProduct[i].unit + if ((this.currentSample.insProduct[i].templateId === a.templateId && inspectionItemClass +inspectionItem+inspectionItemSubclass+unit === str2) || (this.currentSample.insProduct[i].templateId === a.templateId && !unit2.includes('/')&& inspectionItemClass +inspectionItem+inspectionItemSubclass === str)) { + ids.push({ + r: b.r, + id: this.currentSample.insProduct[i].id, + product: this.currentSample.insProduct[i] + }) + break + } + } else { + // 濡傛灉鐩哥瓑,閭d箞璇存槑鎵惧埌浜�,骞朵笖鎶奿d瀛樿捣鏉�,鍚庣画妫�楠岄」涔熶細鍦ㄩ〉闈腑鏄剧ず鍑烘潵 + if (this.currentSample.insProduct[i].templateId === a.templateId && inspectionItemClass +inspectionItem+inspectionItemSubclass === str) { + ids.push({ + r: b.r, + id: this.currentSample.insProduct[i].id, + product: this.currentSample.insProduct[i] + }) + break + } + } + count2++ + } + if (count2 == this.currentSample.insProduct.length) { + dels.add(b.r) + } + } + } + }) + // 鎿嶄綔鍒犻櫎 + dels.forEach(del => { + for (let b = 0; b < a.template.length; b++) { + if (a.template[b].r === del) { + a.template.splice(b, 1) + b -= 1 + } + } + }) + // 鎿嶄綔璧嬪��--涓昏璧嬪�煎崟浣�,璇曢獙鏂规硶绛変俊鎭� + ids.forEach(id => { + for (let b = 0; b < a.template.length; b++) { + if (a.template[b].r === id.r) { + a.template[b].i = id.id + if (a.template[b].v.ps != undefined && a.template[b].v.ps.value === '鍗曚綅') { + a.template[b].v.v = id.product.unit + } + if (a.template[b].v.ps != undefined && (a.template[b].v.ps.value === '璇曢獙鏂规硶' || a.template[b].v + .ps.value === '妫�娴嬫柟娉�')) { + a.template[b].v.v = id.product.methodS + } + } + } + }) + let set2 = new Set() + // 鍚堝苟鐨勬暟鎹鐞�,cs rs 浠h〃鍚堝苟鐨勬暟閲� + a.template.forEach(b => { + let size1 = set2.size + let size2 = set2.add(b.mc).size + if (b.mc != undefined && size1 < size2) { + b.v.mc.rs = 0 + b.v.mc.cs = 0 + a.template.forEach(c => { + if (b.mc === c.mc) { + if (b.r === c.r) { + b.v.mc.cs += 1 + } + if (b.c === c.c) { + b.v.mc.rs += 1 + } + } + }) + } + }) + }) + // 鏈寰幆涓昏鏄鍚庣浼犲弬杩涜鍒濆鍖�,鏍峰紡閫昏緫淇敼 + this.tableList.forEach(a => { + let arrs = [] + let set = new Set() + let count1 = 0 + let conclusionList = []; //缁撹鍒楄〃 + let finalList = []; //鏈�缁堝�煎垪琛� + // 缁撹涓庢渶缁堝�煎湪杩欓噷涓�涓�瀵瑰簲,浠ヤ笅涓や釜鍒楄〃闀垮害鑲畾鏄竴鏍风殑,濡傛灉鏈変笉涓�鏍�,閭d箞澶氬崐鏄ā鏉块厤缃緱闂 + conclusionList = a.template.filter(n => n.v.ps != undefined && n.v.ps.value === '缁撹')//缁撹鍒楄〃 + finalList = a.template.filter(n => n.v.ps != undefined && n.v.ps.value === '鏈�缁堝��')//鏈�缁堝�煎垪琛� + a.template.forEach( b => { + if (b.v.ps != undefined && b.v.ps.value === '搴忓彿' && (b.v.mc == undefined || Object.keys(b.v.mc).length === 4)) { + // 瀵瑰簭鍙疯繘琛岃祴鍊� + count1++ + b.v.v = count1 + } + if (b.v.ps != undefined && b.v.ps.value === '瑕佹眰鍊�') { + // 瀵硅姹傚�艰繘琛岃祴鍊� + b.v.v = this.getAsk(b.i) + } + // 瀵归〉闈㈢殑鍜岀粰鍚庣浼犲弬鐨勬楠屽��,璁$畻鍊�,璁惧缂栫爜,璁惧鍚嶇О,鏈�缁堝��,缁撹杩涜鍒濆鍖� + if (b.v.ps != undefined && typeof b.v.ps.value ==='string'&&b.v.ps.value.includes('妫�楠屽��')) { + this.$set(b.v, 'v','' ) + // b.v.v = '' + b.u = '' + b.i && this.param[b.i]&&this.param[b.i].insValue.push(b) + } + if (b.v.ps != undefined && b.v.ps.value === '璁$畻鍊�') { + this.$set(b.v, 'v','' ) + // b.v.v = '' + b.i && this.param[b.i]&&this.param[b.i].comValue.push(b) + } + if (b.v.ps != undefined && b.v.ps.value === '璁惧缂栫爜') { + // b.v.v = '' + this.$set(b.v, 'v', '' ) + b.i && this.param[b.i]&&this.param[b.i].equipValue.push(b) + } + if (b.v.ps != undefined && b.v.ps.value === '璁惧鍚嶇О') { + this.$set(b.v, 'v', '' ) + // b.v.v = '' + b.i && this.param[b.i]&&this.param[b.i].equipName.push(b) + } + if (b.v.ps != undefined && b.v.ps.value === '鏈�缁堝��') { + // b.v.v = '' + this.$set(b.v, 'v', '' ) + if (b.i !== undefined&&this.param[b.i]&&!this.param[b.i].resValue) { + this.param[b.i].resValue = b + } + } + if (b.v.ps != undefined && b.v.ps.value === '缁撹') { + if (b.i !== undefined&&this.param[b.i]&&!this.param[b.i].insResult) { + this.param[b.i].insResult = b + conclusionList.forEach((n, i) => { + if (n.r == b.r && n.c == b.c) { + b.v.f = + `(${this.comparisonList.find(j=>j.value==(finalList[i].c)).label}${finalList[i].r+1})` + + } + }) + } + } + set.add(b.r) + // 濡傛灉妯℃澘鍒楄〃鐨勫嚱鏁板瓨鍦�,閭d箞鍔犲叆鍒癳xcel鍑芥暟鍒楄〃閲岄潰 + if (b.v.f) { + this.excelMethodList.push(b) + } + }) + // 浠ヤ笅鏄牱寮忓鐞嗛�昏緫 + set = Array.sort(set) + set.forEach(b => { + let arr = [] + a.template.forEach(c => { + if (c.r === b) { + arr.push(c) + } + }) + arrs.push(arr) + }) + a.arr = arrs + this.tableWidth = 0 + for (let i = 0; i < arrs[0].length; i++) { + this.tableWidth += (a.style.columnlen[i] === undefined ? 100 : a.style.columnlen[i]) + } + }) + // 鏈寰幆涓昏鏄椤甸潰鍙婂悗绔紶鍙傝繘琛屽垵濮嬪寲璧嬪�� + this.currentSample.insProduct.forEach(async a => { + try { + // 璁$畻鍊艰祴鍊� + let comValue = JSON.parse(a.insProductResult.comValue) + for (var i = 0; i < comValue.length; i++) { + this.param[a.id].comValue[i].v.v = this.toFixed(comValue[i].v,this.param[a.id].comValue[i].v.ct) + } + } catch (e) {} + try { + // 妫�楠屽�艰祴鍊� + let insValue = JSON.parse(a.insProductResult.insValue) + for (let i = 0; i < insValue.length; i++) { + if(this.param[a.id].insValue.find(m=>m.c==insValue[i].c&&m.r==insValue[i].r)){ + this.param[a.id].insValue.find(m=>m.c==insValue[i].c&&m.r==insValue[i].r).v.v = this.toFixed(insValue[i].v,this.param[a.id].insValue.find(m=>m.c==insValue[i].c&&m.r==insValue[i].r).v.ct) + this.param[a.id].insValue.find(m=>m.c==insValue[i].c&&m.r==insValue[i].r).u = insValue[i].u + // this.param[a.id].insValue[i].v.v = insValue[i].v + // this.param[a.id].insValue[i].u = insValue[i].u + } + } + } catch (e) {} + try { + // 璁惧缂栧彿璧嬪�� + let equipValue = JSON.parse(a.insProductResult.equipValue) + if(this.tableLists.find(m=>m.templateId==this.currentTable)&&(this.tableLists.find(m=>m.templateId==this.currentTable).templateName=='娓╁害寰幆妫�楠屽師濮嬭褰�'||this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('鐑惊鐜�')||this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('娓╁崌璇曢獙'))){ + // 鐗规畩椤圭洰鍒濆鍖� + this.param[a.id].equipValue = [] + for (let i = 0; i < equipValue.length; i++) { + this.param[a.id].equipValue.push({ + v:{ + v:'' + } + }) + } + } + for (let i = 0; i < equipValue.length; i++) { + if(this.tableLists.find(m=>m.templateId==this.currentTable)&&(this.tableLists.find(m=>m.templateId==this.currentTable).templateName=='娓╁害寰幆妫�楠屽師濮嬭褰�'||this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('鐑惊鐜�')||this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('娓╁崌璇曢獙'))){ + // 娓╁害寰幆璁惧璧嬪�� + this.$set(this.equipForm,`code`+i,equipValue[i].v) + this.param[a.id].equipValue[i].v.v = equipValue[i].v + }else{ + // 鏅�氳澶囪祴鍊� + this.param[a.id].equipValue[i].v.v = equipValue[i].v + } + } + } catch (e) {} + try { + // 璁惧鍚嶇О璧嬪�� + let equipName = JSON.parse(a.insProductResult.equipName) + for (let i = 0; i < equipName.length; i++) { + equipName[i].v !== '' && equipName[i].v.map(val => { + const index = this.equipOptions.findIndex(item => item.value === val) + if (index > -1) { + // 鏍规嵁璁惧缂栫爜杞崲涓虹浉搴旂殑璁惧鍚嶇О + val = this.equipOptions[index].deviceName + } + }) + } + if(this.tableLists.find(m=>m.templateId==this.currentTable)&&(this.tableLists.find(m=>m.templateId==this.currentTable).templateName=='娓╁害寰幆妫�楠屽師濮嬭褰�'||this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('鐑惊鐜�')||this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('娓╁崌璇曢獙'))){ + // 璁惧鍚嶇О鍒濆鍖� + this.param[a.id].equipName = [] + for (let i = 0; i < equipName.length; i++) { + this.param[a.id].equipName.push({ + v:{ + v:'' + } + }) + } + } + for (let i = 0; i < equipName.length; i++) { + if(this.tableLists.find(m=>m.templateId==this.currentTable)&&(this.tableLists.find(m=>m.templateId==this.currentTable).templateName=='娓╁害寰幆妫�楠屽師濮嬭褰�'||this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('鐑惊鐜�')||this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('娓╁崌璇曢獙'))){ + // 娓╁害寰幆璧嬪�� + this.$set(this.equipForm,`value`+i,equipName[i].v) + this.param[a.id].equipName[i].v.v = equipName[i].v + }else{ + // 鏅�氳澶囧悕绉拌祴鍊� + this.param[a.id].equipName[i].v.v = equipName[i].v + } + } + } catch (e) { + console.log('璁惧鍚嶇О璧嬪��----', e) + } + try { + // 鏈�缁堝�艰祴鍊� + this.param[a.id].resValue.v.v = this.toFixed(a.lastValue,this.param[a.id].resValue.v.ct) + // 缁撹璧嬪�� + this.param[a.id].insResult.v.v = a.insResult + } catch (e) {} + }) + // 瀵筫xcel鍑芥暟杩涜澶勭悊 + this.handleExcelMethod() + }, + // 妫�楠屽�艰緭鍏ュ悗瑙﹀彂鐨勫嚱鏁� + changeInput(m, code, n,getDataType) { + // 涓烘暟閲囧畾涔変竴涓�昏緫鍙傛暟 + if(getDataType=='getDataType'){ + this.getDataType = 2; + } + let currentInsItemId = null//褰撳墠妫�楠岄」id + if (n) { + currentInsItemId = JSON.parse(JSON.stringify(n.i)) + // 瀹氫箟涓�涓嚱鏁版潵楠岃瘉鍒嗘暟鏄惁鏈夋晥 + if (typeof n.v.v == 'string') { + function isValidFraction(fraction) { + const [numerator, denominator] = fraction.split('/'); // 鍒嗗瓙鍜屽垎姣� + return !(!denominator || !numerator); + } + const isTrue = isValidFraction(n.v.v) + if (!isTrue) { + n.v.v = n.v.v.replace('/', '') + } + } + } + try { + // 鍚� Worker 鍙戦�佹秷鎭紝寮�濮嬪鐞嗛�昏緫 + this.worker.postMessage(JSON.stringify({ + code: code, + tableList:this.tableList, + excelMethodList:this.excelMethodList, + comparisonList:this.comparisonList, + currentSample:this.currentSample, + PROJECT:this.PROJECT, + param:this.param, + currentTable:this.currentTable, + getDataTypeId:this.getDataTypeId, + modelType: this.sampleProduct[0].model, + currentInsItem: n + })); + } catch (error) { + console.log(444,error); + } + + // 鐩戝惉 Worker 杩斿洖鐨勭粨鏋� + this.worker.onmessage = (event) => { + this.result = JSON.parse(event.data); + switch (this.result.method){ + case 'saveInsContext': + console.log(`output->`,11111111111111) + this.$nextTick(()=>{ + // this.$delete(this.tableList[0],'arr') + this.$set(this.tableList[0],'arr',this.result.value.tableList[0].arr) + this.param = this.result.value.param + if(this.result.value.currentInsItem){ + currentInsItemId = this.result.value.currentInsItem.i + } + // 鐗规畩澶勭悊涓�涓嬬粨璁�,浼氭湁杩欑鐗规畩鎯呭喌 + for (var i in this.param){ + if(this.param[i].insResult&&this.param[i].insResult.v&&this.param[i].insResult.v.v){ + if(this.param[i].insResult.v.v=='鍚堟牸'){ + this.$set(this.param[i].insResult.v,'v',1) + }else if(this.param[i].insResult.v.v=='涓嶅悎鏍�'){ + this.$set(this.param[i].insResult.v,'v',0) + } + } + } + }) + break; + case 'tableList': + this.$nextTick(()=>{ + // 鏇存柊鏁版嵁 + this.$delete(this.tableList[0],'arr') + this.$set(this.tableList[0],'arr',this.result.value[0].arr) + // this.param = this.result.value.param + if(this.result.value.currentInsItem){ + currentInsItemId = this.result.value.currentInsItem.i + } + }) + break; + case 'getCurrentInsProduct': + // 鏇存柊椤甸潰鏁版嵁 + this.getCurrentInsProduct(this.result.value) + break; + } + }; + // 淇濆瓨鏁版嵁 + setTimeout(()=>{ + this.saveInsContext(currentInsItemId) + },200) + }, + // 鏄惁闇�瑕佹暟閲� + async determineWhetherToCollectData(){ + let res = determineWhetherToCollectData({managementNumber: ''}) + this.isGet = res.data + }, + // 鏍规嵁鍚庣浼犲弬鏇存柊椤甸潰鏁版嵁 param => this.tableList[0].insProductResult + getCurrentInsProduct(pId) { + if (!this.tableList[0].insProductResult) { + this.tableList[0].insProductResult = {} + } + for (let m in this.param[pId]) { + let value = this.param[pId][m] + switch (m) { + case 'comValue': + // 璧嬪�艰绠楀�� + if (value && value.length > 0) { + this.tableList[0].insProductResult[m] = []; + value.forEach((a, i) => { + let obj = { + v: a.v.v, + } + this.tableList[0].insProductResult[m].push(obj); + }) + try { + this.tableList[0].insProductResult[m] = JSON.stringify(this.tableList[0].insProductResult[m]) + } catch (error) { + console.log(555,error); + } + } + break; + // 璧嬪�兼楠屽�� + case 'insValue': + if (value && value.length > 0) { + this.tableList[0].insProductResult[m] = []; + value.forEach((a, i) => { + let obj = { + v: a.v.v, + u: a.u, + } + this.tableList[0].insProductResult[m].push(obj); + }) + try { + this.tableList[0].insProductResult[m] = JSON.stringify(this.tableList[0].insProductResult[m]) + } catch (error) { + console.log(666,error); + } + } + break; + // 璧嬪�艰澶囩紪鍙� + case 'equipValue': + if (value && value.length > 0) { + this.tableList[0].insProductResult[m] = []; + value.forEach((a, i) => { + let obj = { + v: a.v.v, + } + this.tableList[0].insProductResult[m].push(obj); + }) + try { + this.tableList[0].insProductResult[m] = JSON.stringify(this.tableList[0].insProductResult[m]) + } catch (error) { + console.log(777,error); + } + } + break; + // 璧嬪�艰澶囧悕绉� + case 'equipName': + if (value && value.length > 0) { + this.tableList[0].insProductResult[m] = []; + value.forEach((a, i) => { + let obj = { + v: a.v.v, + } + this.tableList[0].insProductResult[m].push(obj); + }) + try { + this.tableList[0].insProductResult[m] = JSON.stringify(this.tableList[0].insProductResult[m]) + } catch (error) { + console.log(888,error); + } + } + break; + // 璧嬪�兼渶缁堝�� + case 'resValue': + this.tableList[0].lastValue = value?value.v.v:'' + break; + // 璧嬪�肩粨璁� + case 'insResult': + this.tableList[0].insResult = value?value.v.v:'' + break; + } + } + }, + // 瀵笶XCEL鍑芥暟杩涜澶勭悊 + handleExcelMethod() { + if (this.excelMethodList.length > 0) { + this.excelMethodList.map(item => { + // 寰楀埌姣忎釜鍑芥暟鐨勫弬鏁板垪琛� + item.valueList = excelFunction.changeParameter(item.v.f); + return item; + }) + } + }, + getValue(v){ + // 瀵归〉闈㈠睍绀烘暟鎹繘琛屽鐞�,@,浠h〃鎹㈣ + let str = v.v?v.v:(v.v===0?v.v:(v.ct&&v.ct.s?v.ct.s.length>0&&v.ct.s[0].v.replace(new RegExp('\n', 'g'), '<br/>').replace(new RegExp('@', 'g'), '<br/>'):'')) + // 瀵规暟鎹繚鐣欏皬鏁扮偣杩涜澶勭悊 + if(v.ct&&v.ct.fa&&v.ct.fa.includes('.')&&str){ + let num = 0 + let str0 = v.ct.fa.split('.')[1] + num = str0.length + str = Number(str).toFixed(num) + } + if(v.v&&typeof v.v == 'string'&&v.v.includes('@')){ + str = v.v.replace(new RegExp('@', 'g'), '<br/>') + } + return str + }, + // 鑾峰彇褰撳墠杈撳叆妗嗙被鍨� + getInspectionValueType(id) { + for (var a in this.currentSample.insProduct) { + if (this.currentSample.insProduct[a].id == id) { + return this.currentSample.insProduct[a].inspectionValueType + } + } + }, + // 鑾峰彇瑕佹眰鎻忚堪 + getTell(id) { + for (var a in this.currentSample.insProduct) { + if (this.currentSample.insProduct[a].id == id) { + return this.currentSample.insProduct[a].tell + } + } + }, + // 鍔ㄦ�佽幏鍙栧崟鍏冩牸瀹藉害 + handleWidth(n) { + let sum = 0; + if (n.v.mc && n.v.mc.cs && n.v.mc.c != undefined) { + for (let i = 0; i < n.v.mc.cs; i++) { + let num = this.widthList[i + n.v.mc.c] ? this.widthList[i + n.v.mc.c] : 100 + sum += num; + } + } else { + sum = this.widthList[n.c] ? this.widthList[n.c] : 100 + } + return sum + }, + // 瀵硅緭鍏ュ�艰繘琛屾牸寮忔牎楠� + handleInput (n) { + try { + n.v.v = n.v.v.replace(/[^\d.^e>\-/+]/g, ''); + n.v.v = n.v.v.replace(/\.{2,}/g,"."); //鍙繚鐣欑涓�涓�. 娓呴櫎澶氫綑鐨� + n.v.v = n.v.v.replace(".","$#$").replace(/\./g,"").replace("$#$","."); + n.v.v = n.v.v.replace(/\/{2,}/g,"/"); //鍙繚鐣欑涓�涓�/娓呴櫎澶氫綑鐨� + n.v.v = n.v.v.replace("/","$#$").replace(/\//g,"").replace("$#$","/"); + } catch (error) { + console.log(error); + } + + }, + getInspectionItemType(id) { + for (var a in this.currentSample.insProduct) { + if (this.currentSample.insProduct[a].id == id) { + return this.currentSample.insProduct[a].inspectionItemType + } + } + }, + // 鑾峰彇瑕佹眰鍊� + getAsk(id) { + for (var a in this.currentSample.insProduct) { + if (this.currentSample.insProduct[a].id == id) { + return this.currentSample.insProduct[a].ask + } + } + }, + getSystemValue(n) { + let code = null + try { + this.param[n.i].equipValue.forEach(a=>{ + if(a.r === n.r){ + if (a.v.v == null || a.v.v == '') { + this.$message.error('璇峰厛閫夋嫨閲囬泦鐨勮澶�') + return + }else{ + code = a.v.v + } + } + }) + } catch (e) { + // console.log(e); + this.$message.error('鎵句笉鍒拌澶囧唴瀹�') + } + // console.log(n, code); + fetch('http://localhost:82/寰俊鍥剧墖_20240518100811.png').then(res=>res.blob()).then(blob=>{ + // console.log(blob); + const url = URL.createObjectURL(blob) + // console.log(url); + }) + /* this.$message.error('閲囬泦澶辫触銆愬凡寮�鏀炬墜鍔ㄦ柟寮忋��') + for (var a in this.currentSample.insProduct) { + if (this.currentSample.insProduct[a].id == n.i) { + this.currentSample.insProduct[a].inspectionItemType = 0 + } + } */ + }, + // 鑾峰彇鎵�鏈夎澶� + getEquipOptions(e, id) { + if (e) { + this.equipOptions = [] + search({ 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) + }) + } + }, + getUserInfo() { + getUserNow().then(res => { + this.userId = res.data.id + }) + }, + // 澶嶆牳 + upInsReview(e) { + if (e == 1) { + // 閫氳繃 + this.reviewLoading = true; + verifyPlan({ + orderId: this.orderId, + type: 1, + laboratory: this.sonLaboratory, + tell: null, + userId: this.checkUser + }).then(res => { + if (res.code === 200) { + this.$message.success("鎿嶄綔鎴愬姛") + this.$emit('goback') + this.addCheck = false + } + this.reviewLoading = false; + }).catch(error => { + console.error(error) + this.reviewLoading = false; + }) + } else { + // 涓嶉�氳繃 + this.reviewDia = true; + } + }, + handleReviewDia() { + if (this.noReason) { + this.reviewLoading = true; + verifyPlan({ + orderId: this.orderId, + type: 0, + laboratory: this.sonLaboratory, + tell: this.noReason + }).then(res => { + if (res.code === 200) { + this.$message.success("鎿嶄綔鎴愬姛") + this.$emit('goback') + } + this.reviewLoading = false; + }).catch(error => { + console.error(error) + this.reviewLoading = false; + }) + } else { + this.$message.error('鏈緭鍏ヤ笉閫氳繃鍘熷洜') + } + }, + submit() { + if (this.verifyUser === null || this.verifyUser === '') { + this.$message.error("璇锋寚瀹氬鏍镐汉鍛�") + return + } + if(!this.otherForm.humidity){ + this.$message.error("璇疯緭鍏ユ箍搴�") + return + } + if(!this.otherForm.temperature){ + this.$message.error("璇疯緭鍏ユ俯搴�") + return + } + this.submitLoading = true; + checkSubmitPlan({ + orderId: this.orderId, + laboratory: this.sonLaboratory, + }).then(res => { + if (res.code === 200) { + if(!res.data||res.data.length==0){ + this.submitLoading = true; + submitPlan({ + orderId: this.orderId, + laboratory: this.sonLaboratory, + verifyUser: this.verifyUser, + entrustCode: this.insOrder.entrustCode + }).then(res => { + if (res.code === 200) { + this.$message.success("鎿嶄綔鎴愬姛") + this.$emit('goback') + this.submitLoading = false; + this.addVerifyDia = false + } + }).catch(error => { + console.error(error) + this.submitLoading = false; + }) + }else{ + let newData = [] + const h = this.$createElement + for (let i in res.data) { + const lastChar = res.data[i].slice(-1); + if(lastChar=='-'){ + res.data[i] = res.data[i].slice(0, -1); + } + newData.push(h('p', {style: 'font-size: 14px;color: red;'}, (Number(i)+1)+'銆�'+res.data[i])) + } + newData.push(h('p', { style: 'font-size: 16px;color:#000;margin-top:12px;overflow-y: auto;max-height:80vh' },'浠ヤ笂椤圭洰涓嶅悎鏍硷紝纭畾鎻愪氦锛�')) + this.$confirm('鎻愮ず',{ + title:'鎻愮ず', + message: h('div', null, newData), + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "" + }).then(() => { + this.submitLoading = true; + submitPlan({ + orderId: this.orderId, + laboratory: this.sonLaboratory, + verifyUser: this.verifyUser + }).then(res => { + if (res.code === 200) { + this.$message.success("鎿嶄綔鎴愬姛") + this.addVerifyDia = false + this.$emit('goback') + } + this.submitLoading = false; + }).catch(error => { + console.error(error) + this.submitLoading = false; + }) + }).catch(() => {}) + } + } + }).catch(error => { + console.error(error) + this.submitLoading = false; + }) + return + }, + // 缁熶竴鍦ㄨ繖閲屼繚瀛樻暟鎹� + saveInsContext(currentInsItemId) { + try { + if(this.param){ + let param = null + if(currentInsItemId){ + param = {[currentInsItemId] : this.param[currentInsItemId]} + }else{ + param = this.param + } + saveUnqualifiedContext({ + param: JSON.stringify(param), + currentTable:this.currentTable, + sampleId:this.currentSample.id + }).then(res => { + if (res.code == 201) { + this.$message.error('淇濆瓨澶辫触') + return + } + this.$message.success('宸蹭繚瀛�') + }) + // 鍚� Worker 鍙戦�佹秷鎭紝寮�濮嬪鐞嗛�昏緫 + this.worker.postMessage(JSON.stringify({ + modelType: this.sampleProduct[0].model, + type: 'saveData', + tableList:this.tableList, + param:this.param, + currentTable:this.currentTable + })); + } + }catch (error) { + console.log(999,error); + } + }, + // 璁惧鏀瑰彉 + changeEquip(val, n, v) { + try { + // this.$set(n.v,'v',val) + this.tableList[0].arr.forEach((item,index)=>{ + item.forEach((m,i)=>{ + if(this.param[m.i]){ + this.param[m.i].state = 1 + } + // if(m.i==n.i&&m.v.ps&&m.v.ps.value=='璁惧鍚嶇О'&&v){ + // this.$set(m.v,'v',v) + // } + }) + }) + for (let i in this.param) { + if(this.param[i].state!=1){ + delete this.param[i] + } + } + // if(val&&v){ + // for (let i1 in this.param[n.i].equipName) { + // if (this.param[n.i].equipName[i1].i === n.i && this.param[n.i].equipName[i1].r === n.r) { + // this.$delete(this.param[n.i].equipValue[i1].v,'v') + // this.$set(this.param[n.i].equipValue[i1].v,'v',val) + // this.$delete(this.param[n.i].equipName[i1].v,'v') + // this.$set(this.param[n.i].equipName[i1].v,'v',v) + // } + // } + // } + // this.equipOptions涓鸿澶囧悕绉颁笅鎷夋閫夐」鏁版嵁 + for (let i1 in this.param[n.i].equipName) { + if (this.param[n.i].equipName[i1].i === n.i && this.param[n.i].equipName[i1].r === n.r) { + this.$delete(this.param[n.i].equipValue[i1].v,'v') + // 灏嗘暟缁勮祴鍊肩粰璁惧缂栫爜 + this.$set(this.param[n.i].equipValue[i1].v,'v',val.join('锛�')) + this.$delete(this.param[n.i].equipName[i1].v,'v') + // 灏嗘暟缁勮祴鍊肩粰璁惧缂栫爜 + this.$set(this.param[n.i].equipName[i1].v,'v',val) + this.tableList[0].arr.forEach((item,index)=>{ + item.forEach((m)=>{ + if(m.i==n.i&&m.v.ps&&m.v.ps.value=='璁惧缂栫爜'){ + this.$set(m.v,'v',val.join('锛�')) + } + if(m.i==n.i&&m.v.ps&&m.v.ps.value=='璁惧鍚嶇О'){ + this.$set(m.v,'v',val) + } + }) + }) + } + } + // 淇濆瓨鏁版嵁 + this.saveInsContext(n.i) + } catch (e) { + console.log('changeEquip----', e) + } + }, + getAuthorizedPerson() { + selectUserCondition({ type: 0 }).then((res) => { + let data = []; + res.data.forEach((a) => { + data.push({ + label: a.name, + value: a.id, + }); + }); + this.personList = data; + }); + }, + scrollInit() { + // 鑾峰彇瑕佺粦瀹氫簨浠剁殑鍏冪礌 + const nav = document.getElementById("tableBox") + let flag; // 榧犳爣鎸変笅 + let downX; // 榧犳爣鐐瑰嚮鐨剎涓嬫爣 + let scrollLeft; // 褰撳墠鍏冪礌婊氬姩鏉$殑鍋忕Щ閲� + nav.addEventListener("mousedown", function(event) { + flag = true; + downX = event.clientX; // 鑾峰彇鍒扮偣鍑荤殑x涓嬫爣 + scrollLeft = this.scrollLeft; // 鑾峰彇褰撳墠鍏冪礌婊氬姩鏉$殑鍋忕Щ閲� + }); + nav.addEventListener("mousemove", function(event) { + if (flag) { // 鍒ゆ柇鏄惁鏄紶鏍囨寜涓嬫粴鍔ㄥ厓绱犲尯鍩� + let moveX = event.clientX; // 鑾峰彇绉诲姩鐨剎杞� + let scrollX = moveX - downX; // 褰撳墠绉诲姩鐨剎杞翠笅鏍囧噺鍘诲垰鐐瑰嚮涓嬪幓鐨剎杞翠笅鏍囧緱鍒伴紶鏍囨粦鍔ㄨ窛绂� + this.scrollLeft = scrollLeft - scrollX // 榧犳爣鎸変笅鐨勬粴鍔ㄦ潯鍋忕Щ閲忓噺鍘诲綋鍓嶉紶鏍囩殑婊戝姩璺濈 + } + }); + // 榧犳爣鎶捣鍋滄鎷栧姩 + nav.addEventListener("mouseup", function() { + flag = false; + }); + // 榧犳爣绂诲紑鍏冪礌鍋滄鎷栧姩 + nav.addEventListener("mouseleave", function(event) { + flag = false; + }); + }, + async caretTape(num){ + let index = this.currentKey1 + num + if(index < 1){ + this.$message.error('褰撳墠鏄涓�涓厜绾ゅ甫') + return + } else if(index > this.fiberOpticTape.length){ + this.$message.error('褰撳墠鏄渶鍚庝竴涓厜绾ゅ甫') + return + } + this.currentKey1 = index + this.currentFiberOpticTape = this.HaveJson(this.fiberOpticTape[index - 1]) + this.param = {} + this.fiberOptic = [] + this.currentFiberOptic = null; + this.currentFiberOpticTape.productList.forEach(a => { + this.param[a.id] = { + insValue: [], + comValue: [], + resValue: null, + equipValue: [], + equipName: [], + insResult: null + } + }) + this.fiberOpticTapeVisible = false; + let list = await this.getCurrentProduct(this.currentFiberOpticTape.id,1) + this.getTableLists0(list) + if(this.currentFiberOpticTape.fiber&&this.currentFiberOpticTape.fiber.length>0){ + // 閰嶇疆鍏夌氦 + this.fiberOptic = this.currentFiberOpticTape.fiber; + } + }, + async caretOptic(num){ + let index = this.currentKey2 + num + if(index < 1){ + this.$message.error('褰撳墠鏄涓�涓厜绾�') + return + } else if(index > this.fiberOptic.length){ + this.$message.error('褰撳墠鏄渶鍚庝竴涓厜绾�') + return + } + this.currentKey2 = index + this.currentFiberOptic = this.HaveJson(this.fiberOptic[index - 1]) + this.currentFiberOptic.productList.forEach(a => { + this.param[a.id] = { + insValue: [], + comValue: [], + resValue: null, + equipValue: [], + equipName: [], + insResult: null + } + }) + let list = await this.getCurrentProduct(this.currentFiberOptic.id,2) + this.getTableLists0(list) + }, + beforeUpload(file) { + if (file.size > 1024 * 1024 * 10) { + this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M'); + this.$refs.upload.clearFiles() + return false; + } else { + this.upLoading = true; + return true; + } + }, + onError(err, file, fileList) { + this.$message.error('涓婁紶澶辫触') + this.$refs.upload.clearFiles() + }, + handleDown(row){ + downFile({ + id: row.id, + }).then(res => { + if (res.code === 200) { + let url = ''; + if(res.data.type==1){ + url = this.javaApi+'/img/'+res.data.fileUrl + file.downloadIamge(url,row.fileName) + }else{ + url = this.javaApi+'/word/'+res.data.fileUrl + const link = document.createElement('a'); + link.href = url; + link.download = row.fileName; + link.click(); + } + } + }).catch(error => { + + }) + }, + /** + * 灏嗘暟鍊紇淇濈暀ct.fa涓�'##'鍚庣殑鎸囧畾灏忔暟浣嶆暟锛屽苟杩斿洖鏍煎紡鍖栧悗鐨勫瓧绗︿覆銆� + * + * @param v 瑕佹牸寮忓寲鐨勬暟鍊� + * @param ct 鍖呭惈鏍煎紡鍖栭厤缃殑瀵硅薄 + * @param ct.fa 鏍煎紡鍖栭厤缃瓧绗︿覆锛岃嫢鍖呭惈'##'鍒欐寜鐓у叾鍚庣殑鍐呭纭畾灏忔暟浣嶆暟 + * @returns 鏍煎紡鍖栧悗鐨勫瓧绗︿覆鎴栧師濮嬫暟鍊硷紙鑻ラ厤缃笉绗﹀悎瑕佹眰锛� + */ + toFixed(v,ct){ + if(v&&ct&&ct.fa){ + if(ct.fa.includes('.')){ + let num = ct.fa.slice(4).length + return Number(v).toFixed(num) + }else{ + return v + } + }else{ + return v + } + } + } +} +</script> +<style scoped> +.custom-table .el-table__header-wrapper th { + background-color: #87CEEB; /* 鍙甯︽湁my-custom-table绫荤殑琛ㄦ牸鐢熸晥 */ + color: #fff; +} +.container { + overflow: auto; /* 纭繚瀹瑰櫒鑳藉寘瑁规诞鍔ㄥ厓绱� */ + margin-bottom: 10px; +} + +.right-button { + float: right; +} +.inspection { + height: 100%; + overflow-y: auto; +} + +.inspection::-webkit-scrollbar { + width: 0; +} + +.title { + height: 60px; + line-height: 60px; +} + +.search { + width: 100%; + margin-bottom: 10px; + background-color: #fff; + border-radius: 3px; +} + +.search .form-inline { + padding-top: 20px; + padding-left: 0px; + text-align: left; +} + +.center { + width: calc(100% - 40px); + /* max-height: 580px; */ + background-color: #fff; + border-radius: 3px; + padding: 20px; + overflow: auto; +} + +.center-box { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + flex-wrap: wrap; + width: 100%; + overflow-x: auto; + /* overflow-x: scroll; */ + cursor: grab; +} + +.center-box:active{ + cursor: grabbing; +} + +.tables { + table-layout: fixed; + margin: 5px 5px 16px; +} + +.tables td { + height: 40px; + width: 100px; + text-align: center; + font-size: 14px; + word-wrap: break-word; + white-space: normal; +} +.thermal-table{ + min-width: calc(100% - 10px); + margin: 5px 5px 0; + table-layout: fixed; +} +.thermal-table td { + min-width: 70px; + text-align: center; + font-size: 14px; + word-wrap: break-word; + white-space: normal; + padding: 5px; +} +.table-container { + overflow-x: auto; /* 浣垮鍣ㄦ敮鎸佹í鍚戞粴鍔� */ + max-width: 100%; /* 闄愬埗瀹瑰櫒鐨勬渶澶у搴� */ + margin-bottom: 16px; +} + +.content { + display: flex; + height: 100%; + align-items: center; + justify-content: left; + padding: 5px; + box-sizing: border-box; + overflow: hidden; + user-select: none; +} + +.content *{ + user-select: none; +} + +.content-h-0 { + justify-content: center; +} + +.content-h-1 { + justify-content: start; +} + +.content-h-2 { + justify-content: end; +} + +.content-v-0 { + align-items: center; +} + +.content-v-1 { + align-items: start; +} + +.content-v-2 { + align-items: end; +} + +.table_input { + width: 100%; + height: 100%; +} +.table_input >>>.el-input__inner{ + border-color: rgba(0, 0, 0, 0.5) !important; +} + +.collection { + width: 50px; + height: 100%; + margin-left: 5px; + border-color: transparent; + background-color: #409eff; + color: #fff; + border-radius: 4px; + font-size: 12px; +} + +.collection:active { + opacity: .7; +} +.table_caret{ + font-size: 16px; + margin: 0 5px; + color: rgba(0, 0, 0, 0.5); +} +.table_caret:hover{ + color: #409eff; + cursor: pointer; +} + +.table_caret:active{ + opacity: .8; +} +>>>input::-webkit-inner-spin-button { + -webkit-appearance: none !important; /* 闅愯棌寰皟鎸夐挳 */ + margin: 0 !important; /* 绉婚櫎寰皟鎸夐挳鐨勮竟璺� */ +} + +>>>input[type=number] { + -moz-appearance: textfield !important; /* 閽堝 Firefox */ +} +>>>.el-form-item__content{ + display: inline-flex; + align-items: center; +} +</style> +<style> +.inspection .el-form-item__label { + color: #000; +} + +.inspection .el-drawer__header::before { + content: ""; + display: inline-block; + width: 4px; + height: 30.24px; + background: #3A7BFA; + border-radius: 10px; + margin-left: 32px; + margin-right: 8.5px; +} + +.inspection .el-drawer__header { + color: #303133; + text-align: left; +} + +.inspection .el-input-group__append { + padding: 0 14px; + color: #3A7BFA; + background-color: #fff; + height: 100%; + display: flex; + align-items: center; +} + +.inspection .center-box .el-input__inner { + font-size: 12px; + padding: 0 6px; + text-align: center; +} + +.inspection .el-textarea__inner { + padding: 2px; +} + +.inspection .el-textarea__inner::-webkit-scrollbar { + width: 0; +} + +.inspection .el-select { + display: flex; + align-items: center; +} + +.inspection .el-textarea__inner { + min-height: 100% !important; +} + +.inspection .tables .el-input{ + display: flex; + align-items: center; +} +.thermal-table .el-input{ + display: flex; + align-items: center; +} +.custom-dialog .el-dialog__body { + max-width: 1000px; /* 璁剧疆鏈�澶у搴� */ +} +.unPassCheck .el-dialog__body { + overflow: auto; + max-height: 800px; /* 璁剧疆鏈�澶у搴� */ +} +</style> diff --git a/src/views/business/inspectionTask/inspection.vue b/src/views/business/inspectionTask/inspection.vue index 3a77d1f..9b70b4e 100644 --- a/src/views/business/inspectionTask/inspection.vue +++ b/src/views/business/inspectionTask/inspection.vue @@ -94,8 +94,8 @@ </el-radio-group> </div> <div style="display: flex; align-items: center"> - <el-button v-if="state === 1" size="small" type="primary" @click="openAddUnpass">鏂板涓嶅悎鏍煎娴�</el-button> - <el-button v-if="state === 1" size="small" type="primary" @click="unpassCheck">涓嶅悎鏍煎娴�</el-button> + <el-button v-if="state == 1" size="small" type="primary" @click="openAddUnpass">鏂板涓嶅悎鏍煎娴�</el-button> + <el-button v-if="state == 1" size="small" type="primary" @click="unpassCheck">涓嶅悎鏍煎娴�</el-button> <el-button v-if="state > 1" size="small" type="primary" @click="viewUnpassCheck">鏌ョ湅涓嶅悎鏍煎娴�</el-button> <span v-if="cableTagList.length > 0"> 鐢电紗閰嶇疆锛�</span> <el-select v-if="cableTagList.length > 0" v-model="currentTab" clearable placeholder="璇烽�夋嫨" size="small" @@ -508,9 +508,9 @@ @resetAddUnPass="resetAddUnPass"></add-un-pass> <UnPassDialog v-if="unPassDialog" ref="unPassDialog" :orderId="orderId" :unPassDialog="unPassDialog" @resetForm="resetForm"></UnPassDialog> - <!-- <InspectionWord v-if="unPassCheck" :inspectorList="inspectorList" :orderId="orderId" + <InspectionWord v-if="unPassCheck" :inspectorList="inspectorList" :orderId="orderId" :rawMaterialTag="rawMaterialTag" :sonLaboratory="sonLaboratory" :state="state" :typeSource="typeSource" - :unPassCheck="unPassCheck" @closeUnPassCheckDialog="closeUnPassCheckDialog" @refreshView="refreshView" /> --> + :unPassCheck="unPassCheck" @closeUnPassCheckDialog="closeUnPassCheckDialog" @refreshView="refreshView" /> <purchase-verification v-if="purchaseDialog" ref="purchaseDialog" :orderId="orderId" :purchaseDialog="purchaseDialog" @resetPurchaseDialog="resetPurchaseDialog"></purchase-verification> </div> @@ -521,7 +521,7 @@ import limsTable from "@/components/Table/lims-table.vue"; import UnPassDialog from "../unpass/components/addUnPass.vue"; import AddUnPass from "../unpass/components/addUnPass.vue"; -// import InspectionWord from "./components/InspectionWord.vue"; +import InspectionWord from "./components/InspectionWord.vue"; import PurchaseVerification from "../unpass/components/PurchaseVerification.vue"; import { doInsOrder, @@ -554,7 +554,7 @@ AddUnPass, limsTable, UnPassDialog, - // InspectionWord, + InspectionWord, }, data() { return { diff --git a/src/views/business/unpass/components/addUnPass.vue b/src/views/business/unpass/components/addUnPass.vue index c1777e9..ed3c3cd 100644 --- a/src/views/business/unpass/components/addUnPass.vue +++ b/src/views/business/unpass/components/addUnPass.vue @@ -31,7 +31,7 @@ </template> <script> -import { getInsProductUnqualified } from '@/api/business/unpass.js' +import {addUnqualifiedRetest, getInsProductUnqualified} from '@/api/business/unpass.js' export default { name: "addUnPass", // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢� -- Gitblit v1.9.3