From 7b6c3dc450c20525ddb64bbd9a20c3f0976ea147 Mon Sep 17 00:00:00 2001 From: Crunchy <3114200645@qq.com> Date: 星期四, 25 七月 2024 18:11:58 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/components/do/b1-inspect-order-plan/Inspection.vue | 427 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 389 insertions(+), 38 deletions(-) diff --git a/src/components/do/b1-inspect-order-plan/Inspection.vue b/src/components/do/b1-inspect-order-plan/Inspection.vue index 29fce1b..0467e3d 100644 --- a/src/components/do/b1-inspect-order-plan/Inspection.vue +++ b/src/components/do/b1-inspect-order-plan/Inspection.vue @@ -63,6 +63,24 @@ 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; @@ -201,6 +219,10 @@ } .inspection .tables .el-input{ + display: flex; + align-items: center; + } + .thermal-table .el-input{ display: flex; align-items: center; } @@ -475,7 +497,7 @@ ref="wareTableData" border v-loading="wareTableDataLoading" - style="width: 100%;margin-bottom: 30px;" align="center"> + style="width: 100%;margin-bottom: 30px;" align="center" v-show="wareForm.inspectionItemSubclass!='20(甯告俯)'&&wareForm.inspectionItemSubclass!='20'||(wareForm.inspectionItemSubclass=='20(甯告俯)'&&wareForm.inspectionItem==1)||(wareForm.inspectionItemSubclass=='20'&&wareForm.inspectionItem==numOptions.length)"> <el-table-column label="搴忓彿" type="index" @@ -571,21 +593,21 @@ <el-divider></el-divider> <h4 style="margin-bottom: 20px;font-size: 24px;font-weight: 400;text-align: center;">鐑惊鐜楠屽師濮嬭褰�</h4> <el-form :inline="true" :model="wareForm" class="form-inline" label-width="100px" style="justify-content: flex-start;display: flex;align-items: center;width: 100%;"> - <el-form-item label="鍨嬪彿:" style="margin-bottom: 0;"> - <el-input clearable v-model="wareForm0.model" disabled size="small" placeholder=""></el-input> - </el-form-item> - <el-form-item label="璇曢獙鏂规硶:" style="margin-bottom: 0;"> - <el-input clearable v-model="wareForm0.methodName" disabled size="small" placeholder=""></el-input> - </el-form-item> - <el-form-item label="寰幆娆℃暟:" style="margin-bottom: 0;"> - <el-input-number v-model="thermalCyclingInfo.inspectionItem" :min="1" :max="thermalCyclingInfo.max" label="" style="margin-top:4px" size="small" ></el-input-number> - </el-form-item> + <el-form-item label="浠櫒鍚嶇О:" style="margin-bottom: 0;"> + <el-input clearable v-model="equipForm.value0" disabled size="small" placeholder=""></el-input> + </el-form-item> + <el-form-item label="浠櫒鍚嶇О:" style="margin-bottom: 0;"> + <el-input clearable v-model="equipForm.value1" disabled size="small" placeholder=""></el-input> + </el-form-item> + <el-form-item label="鍨嬪彿:" style="margin-bottom: 0;"> + <el-input clearable v-model="thermalCyclingInfo.model" disabled size="small" placeholder=""></el-input> + </el-form-item> + <el-form-item label="璇曢獙鏂规硶:" style="margin-bottom: 0;"> + <el-input clearable v-model="thermalCyclingInfo.methodName" disabled size="small" placeholder=""></el-input> + </el-form-item> </el-form> <el-divider></el-divider> <el-form :inline="true" :model="equipForm" label-width="100px" style="justify-content: flex-start;display: flex;align-items: center;width: 100%;"> - <el-form-item label="浠櫒鍚嶇О:"> - <el-input clearable v-model="equipForm.value0" disabled size="small" placeholder=""></el-input> - </el-form-item> <el-form-item label="浠櫒缂栧彿:"> <el-select v-model="equipForm.code0" placeholder="璇烽�夋嫨" size="small"> <el-option @@ -595,9 +617,6 @@ :value="item.value"> </el-option> </el-select> - </el-form-item> - <el-form-item label="浠櫒鍚嶇О:" > - <el-input clearable v-model="equipForm.value1" disabled size="small" placeholder=""></el-input> </el-form-item> <el-form-item label="浠櫒缂栧彿:"> <el-select v-model="equipForm.code1" placeholder="璇烽�夋嫨" size="small"> @@ -609,16 +628,46 @@ </el-option> </el-select> </el-form-item> + <el-form-item label="寰幆娆℃暟:" v-if="thermalCyclingInfo.inspectionItemClass=='鐩存祦鐢甸樆'"> + <el-input-number v-model="thermalCyclingInfo.inspectionItem" :min="1" :max="thermalCyclingInfo.max" label="" style="margin-top:4px;width: 190px;" size="small" @change="thermalCyclingChange"></el-input-number> + </el-form-item> + <el-button type="primary" size="small" style="margin-bottom: 22px;margin-left: 30px;" @click="handleAddThermal">鏂板</el-button> + <el-button size="small" style="margin-bottom: 22px;" @click="handleDeleteThermal">鍒犻櫎</el-button> </el-form> - <table border="1" class="tables" cellpadding="10"> - <tr v-for="(item,index) in thermalCyclingInfo.arr"> - <td style="width: 100px;text-align: center;">{{ item }}</td> - <td> - <el-input clearable size="small" placeholder="娓╁害"></el-input> - <el-input clearable size="small" placeholder="鐩存祦鐢甸樆"></el-input> - </td> - </tr> - </table> + <div class="table-container" v-loading="thermalCyclingLoading"> + <table border="1" cellpadding="10" class="thermal-table"> + <tr> + <td>妫�楠岄」鐩�</td> + <td :colspan="thermalCyclingInfo.length">妫�楠岃繃绋嬪��</td> + <td style="width: 100px;">缁撹</td> + </tr> + <tr v-for="(item,index) in thermalCyclingInfo.arr"> + <td style="width: 100px;text-align: center;">{{ item.name }}</td> + <td v-for="(m,i) in thermalCyclingInfo.length" style="min-width: 150px;"> + <div style="display: flex;align-items: center;margin-bottom: 5px;"> + <label style="width: 100px;white-space: nowrap;font-size: 12px;">娓╁害:</label> + <el-input clearable size="small" placeholder="" v-model="item.arr[i].value0" @change="m=>saveThermalCycling(m,item,'value0')"></el-input> + <span style="font-size: 12px;margin-left: 13px;margin-right: 13px;"> 鈩�</span> + </div> + <div style="display: flex;align-items: center;" v-if="item.name!='鐜娓╁害'&&thermalCyclingInfo.inspectionItemClass=='鐩存祦鐢甸樆'"> + <label style="width: 100px;white-space: nowrap;font-size: 12px;">鐩存祦鐢甸樆:</label> + <el-input clearable size="small" placeholder="" v-model="item.arr[i].value1" @change="saveThermalCycling"></el-input> + <span style="margin-left: 5px;font-size: 12px;"> 惟/km</span> + </div> + </td> + <td> + <template v-if="item.name=='鐜娓╁害'||item.name=='瀵肩嚎娓╁害'"> + <span>/</span> + </template> + <template v-else> + <span v-if="item.insResult===1" style="color: green;">鍚堟牸</span> + <span v-else-if="item.insResult===0" style="color: red;">涓嶅悎鏍�</span> + <span v-else>寰呭畾</span> + </template> + </td> + </tr> + </table> + </div> </div> <el-upload :action="action" :data="{ @@ -738,7 +787,6 @@ import ValueTable from '../../tool/value-table.vue' import file from '../../../util/file' import excelFunction from '../../../util/excelFountion' -import { number } from 'echarts' export default { props: ['sonLaboratory', 'orderId', 'state'], components: { @@ -902,8 +950,11 @@ thermalCyclingInfo:{ max:0, inspectionItem:1, - arr:[] - } + arr:[], + length:1, + inspectionItemClass:null, + }, + thermalCyclingLoading:false, } }, computed: { @@ -1064,6 +1115,7 @@ this.stopWorker(); }, methods: { + // 鏁版嵁閲囬泦 getDataAcquisitionDevice(){ this.dataAcquisitionLoading = true this.$axios.get(this.$api.deviceScope.dataCollection+'?entrustCode='+this.insOrder.entrustCode+'&sampleCode='+this.currentSample.sampleCode + '&id=' + this.currentSample.id).then(res=>{ @@ -1074,9 +1126,22 @@ this.dataAcquisitionInfo = res.data let list = this.tableList[0].arr list.forEach((item,index)=>{ + let num = 0; + let str = '' item.forEach(m=>{ if(m.v.ps&&(m.v.ps.value=='妫�楠屽瓙椤�'||m.v.ps.value=='妫�楠岄」')){ - if(this.dataAcquisitionInfo[m.v.m]){ + if(m.v.ps&&m.v.ps.value=='妫�楠岄」'){ + if(num==0){ + str = m.v.v+',' + num++ + } + } + if(m.v.ps&&m.v.ps.value=='妫�楠屽瓙椤�'){ + if(num==1){ + str = str+m.v.v + } + } + if(this.dataAcquisitionInfo[str]){ 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('妫�楠屽��')){ @@ -1089,14 +1154,14 @@ if(arr[1] ==this.dataAcquisitionInfo.frequency){ setTimeout(()=>{ this.$delete(n.v,'v') - this.$set(n.v,'v',this.dataAcquisitionInfo[m.v.m]) + this.$set(n.v,'v',this.dataAcquisitionInfo[str]) this.changeInput('',`${this.currentSample.insProduct[0].templateId}-${n.r}-${n.c}-${n.i}`,n) },1000) }else if(Number(this.dataAcquisitionInfo.frequency)>num){ if(n.v.ps.value.includes(num)){ setTimeout(()=>{ this.$delete(n.v,'v') - this.$set(n.v,'v',this.dataAcquisitionInfo[m.v.m]) + this.$set(n.v,'v',this.dataAcquisitionInfo[str]) this.changeInput('',`${this.currentSample.insProduct[0].templateId}-${n.r}-${n.c}-${n.i}`,n) },1000) } @@ -1109,6 +1174,7 @@ }) }) }, + // 澶氱嚎绋� startWorker() { if (this.worker) { this.stopWorker(); // 纭繚涔嬪墠鐨� Worker 宸插仠姝� @@ -1122,6 +1188,7 @@ this.worker = null; } }, + // 娓╁害寰幆---寮�濮� changeItem(row){ if(row.value0&&row.value1){ this.$set(row,'comValue',((Number(row.value0)+Number(row.value1))/2).toFixed(3)) @@ -1320,18 +1387,269 @@ this.getEquipOptions(true,this.currentSample.insProduct[0].id) // this.$refs.wareTableData&&this.$refs.wareTableData.doLayout() }, + // 娓╁害寰幆---缁撴潫 + // 鐑惊鐜�---寮�濮� thermalCyclingChange(){ - // this.wareTableDataLoading = true + this.thermalCyclingLoading = true this.$axios.post(this.$api.insOrderPlan.temCycle,{ sampleId:this.currentSample.id, inspectionItem:this.thermalCyclingInfo.inspectionItem }).then(res => { - // this.wareTableDataLoading = false + this.thermalCyclingLoading = false if (res.code == 201) return - console.log(res.data) + let {productVos,sampleVo} = res.data + this.thermalCyclingInfo = {...this.thermalCyclingInfo,...sampleVo} + if(this.thermalCyclingInfo.inspectionItem>1){ + for(let i in this.param){ + if(this.param[i].inspectionItemSubclass){ + delete this.param[i] + } + } + } + if(productVos.length>0){ + this.thermalCyclingInfo.inspectionItemClass = productVos[0].insProduct.inspectionItemClass + productVos.forEach(item=>{ + this.param[item.insProduct.id] = { + insValue: [], + comValue: [], + resValue: { + i:item.insProduct.id, + r:0, + c:0, + v:{ + v:null + } + }, + equipValue: [], + equipName: [], + insResult: { + i:item.insProduct.id, + v:{ + v:null + } + }, + inspectionItemSubclass: item.insProduct.inspectionItemSubclass, + } + let obj = {...item,...item.insProduct} + let insProductResult = obj.insProductResult + if(insProductResult){ + for(let i in insProductResult){ + switch (i) { + case 'insValue': + let insValue = JSON.parse(insProductResult[i]) + if(insValue&&insValue.length>0){ + this.thermalCyclingInfo.length = 0 + this.thermalCyclingInfo.arr.forEach(a=>{ + if(a.name==obj.inspectionItemSubclass){ + a.arr = [] + for(let i=0;i<insValue.length;i++){ + a.arr.push({ + value0:insValue[i].v, + value1:insValue[i].w, + }) + this.thermalCyclingInfo.length++ + } + a.insResult = obj.insResult + } + }) + this.param[obj.id].insValue = [] + insValue.forEach(m=>{ + this.param[obj.id].insValue.push({ + i:obj.id, + r:0, + c:0, + w:m.w, + v:{ + v:m.v + } + }) + }) + } + break; + } + } + this.param[obj.id].insResult = { + i:obj.id, + v:{ + v:obj.insResult + } + } + }else{ + this.thermalCyclingInfo.arr.forEach(a=>{ + a.insResult = null + a.arr = [] + a.arr.push( + { + value0:'', + value1:'' + } + ) + }) + this.thermalCyclingInfo.length = 1 + } + }) + } this.getEquipOptions(true,this.currentSample.insProduct[0].id) }) }, + handleAddThermal(){ + this.thermalCyclingInfo.length++ + this.thermalCyclingInfo.arr.forEach(item=>{ + item.arr.push({ + value0:'', + value1:'' + }) + }) + }, + handleDeleteThermal(){ + if(this.thermalCyclingInfo.length==1){ + this.$message.error('鏈�鍚庝竴鏉℃暟鎹笉鑳藉垹闄�') + return + }else{ + this.thermalCyclingInfo.length-- + this.thermalCyclingInfo.arr.forEach(item=>{ + item.arr.pop() + }) + this.saveThermalCycling(true,{name:'瀵肩嚎娓╁害'},true) + } + }, + saveThermalCycling(m,item,type){ + // 缁撴灉鍒ゆ柇 + if(m&&item&&type){ + if(item.name=='瀵肩嚎娓╁害'||item.name=='鑰愬紶娓╁害'||item.name=='鎺ョ画娓╁害'){ + this.thermalCyclingInfo.arr.forEach(a=>{ + if(a.name=='鑰愬紶娓╁害'){ + a.arr.forEach((b,i)=>{ + // 鑾峰彇瀵瑰簲鐨勫绾挎俯搴� + let num0 = 0 + this.thermalCyclingInfo.arr.forEach(c=>{ + if(c.name=='瀵肩嚎娓╁害'){ + num0 = c.arr[i].value0 + } + }) + + if(!num0||!b.value0){ + b.state = null + }else if(Number(num0)>Number(b.value0)){ + b.state = 1 + }else{ + b.state = 0 + } + }) + let state = a.arr.filter(b=>b.state==null).length + let state0 = a.arr.filter(b=>b.state==0).length + let state1 = a.arr.filter(b=>b.state==1).length + if(state>0){ + a.insResult = null + }else if(state0>0){ + a.insResult = 0 + }else if(state1==a.arr.length){ + a.insResult = 1 + } + } + if(a.name=='鎺ョ画娓╁害'){ + a.arr.forEach((b,i)=>{ + // 鑾峰彇瀵瑰簲鐨勫绾挎俯搴� + let num0 = 0 + this.thermalCyclingInfo.arr.forEach(c=>{ + if(c.name=='瀵肩嚎娓╁害'){ + num0 = c.arr[i].value0 + } + }) + if(!num0||!b.value0){ + b.state = null + }else if(Number(num0)>Number(b.value0)){ + b.state = 1 + }else{ + b.state = 0 + } + }) + let state = a.arr.filter(b=>b.state==null).length + let state0 = a.arr.filter(b=>b.state==0).length + let state1 = a.arr.filter(b=>b.state==1).length + if(state>0){ + a.insResult = null + }else if(state0>0){ + a.insResult = 0 + }else if(state1==a.arr.length){ + a.insResult = 1 + } + } + }) + } + } + // 璧嬪�� + this.thermalCyclingInfo.arr.forEach(item=>{ + for (let i in this.param){ + if(this.param[i].inspectionItemSubclass==item.name){ + switch (item.name){ + case '鐜娓╁害': + this.param[i].insResult.v.v = 1 + this.param[i].insValue = [] + item.arr.forEach(insValue=>{ + this.param[i].insValue.push({ + i:i, + r:0, + c:0, + v:{ + v:insValue.value0 + } + }) + }) + break; + case '瀵肩嚎娓╁害': + this.param[i].insResult.v.v = 1 + this.param[i].insValue = [] + item.arr.forEach(insValue=>{ + this.param[i].insValue.push({ + i:i, + r:0, + c:0, + w:insValue.value1, + v:{ + v:insValue.value0 + } + }) + }) + break; + case '鑰愬紶娓╁害': + this.param[i].insValue = [] + item.arr.forEach(insValue=>{ + this.param[i].insValue.push({ + i:i, + r:0, + c:0, + w:insValue.value1, + v:{ + v:insValue.value0 + } + }) + }) + this.param[i].insResult.v.v = item.insResult + break; + case '鎺ョ画娓╁害': + this.param[i].insValue = [] + item.arr.forEach(insValue=>{ + this.param[i].insValue.push({ + i:i, + r:0, + c:0, + w:insValue.value1, + v:{ + v:insValue.value0 + } + }) + }) + this.param[i].insResult.v.v = item.insResult + break; + } + } + } + }) + console.log(1111,this.param) + this.saveInsContext() + }, + // 鐑惊鐜�---缁撴潫 subOtherForm(m,type){ let ids = [] for (let i in this.param) { @@ -1651,10 +1969,25 @@ 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; - console.log(this.thermalCyclingInfo) + // console.log(this.thermalCyclingInfo) this.thermalCyclingChange() } + // 鐑惊鐜楠屽師濮嬭褰�---缁撴潫 this.tableList.forEach(a => { let mcList = [] a.template.forEach(b => { @@ -1905,10 +2238,19 @@ } catch (e) {} try { let equipValue = JSON.parse(a.insProductResult.equipValue) + this.param[a.id].equipValue = [] 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.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=='鐑惊鐜楠屽師濮嬭褰�')){ + // 娓╁害寰幆璁惧璧嬪�� 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 if(equipValue[i].v){ @@ -1933,10 +2275,19 @@ } catch (e) {} try { let equipName = JSON.parse(a.insProductResult.equipName) + this.param[a.id].equipName = [] 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.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=='鐑惊鐜楠屽師濮嬭褰�')){ // 娓╁害寰幆璧嬪�� 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 } -- Gitblit v1.9.3