From ab87478ba941f90cd60252cf4d34aa585dc1a63f Mon Sep 17 00:00:00 2001 From: Crunchy <3114200645@qq.com> Date: 星期一, 22 七月 2024 18:29:10 +0800 Subject: [PATCH] 设备数采配置 调整 --- src/components/do/b1-inspect-order-plan/Inspection.vue | 717 ++++++++++++++++++++++++++++++++--------------------------- 1 files changed, 384 insertions(+), 333 deletions(-) diff --git a/src/components/do/b1-inspect-order-plan/Inspection.vue b/src/components/do/b1-inspect-order-plan/Inspection.vue index 110e6cb..b27d4eb 100644 --- a/src/components/do/b1-inspect-order-plan/Inspection.vue +++ b/src/components/do/b1-inspect-order-plan/Inspection.vue @@ -209,9 +209,6 @@ <div v-loading="loading" class="inspection"> <el-row class="title"> <el-col :span="12" style="padding-left: 20px;text-align: left;">妫�楠屽崟璇︽儏 - <!-- <span style="color: #3A7BFA;"> 鏍峰搧</span> - <span v-if="currentFiberOpticTape" style="color: #3A7BFA;"> - 鍏夌氦甯�</span> - <span v-if="currentFiberOptic" style="color: #3A7BFA;"> - 鍏夌氦</span> --> </el-col> <el-col :span="12" style="text-align: right;"> <!-- <el-button size="small" type="primary" @click="fiberOpticVisible=true" v-if="fiberOptic.length>0">鍏夌氦鍒囨崲</el-button> @@ -257,7 +254,7 @@ </el-form> </div> <div class="center"> - <div class="search" style="text-align: left;display: flex;align-items: center;justify-content: space-between;overflow-x: auto;"> + <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"> @@ -267,25 +264,39 @@ </div> <div style="display: flex;align-items: center;"> <span v-if="fibers.length>0"> 鍏夌氦甯︼細</span> - <el-radio-group v-model="currentTab" size="small" v-if="fibers.length>0" @input="m=>handleChange(m,1)"> - <el-radio-button :label="item.id" v-for="(item,index) in fibers" :key="index" - size="small">{{ item.code }}</el-radio-button> - </el-radio-group> + <el-select v-model="currentTab" placeholder="璇烽�夋嫨" @change="m=>handleChange(m,1)" v-if="fibers.length>0" size="small"> + <el-option + v-for="item in fibers" + :key="item.value" + :label="item.code" + :value="item.id"> + <span style="float: left">{{ item.code}}</span> + <el-tag :type="item.state==1?'success':'danger'" style="float: right;margin-top: 5px;" size="small">{{ item.state==1?'宸叉':'鏈' }}</el-tag> + </el-option> + </el-select> <span v-if="fiber.length>0"> 鍏夌氦锛�</span> - <el-radio-group v-model="currentTab" size="small" v-if="fiber.length>0" @input="m=>handleChange(m,2)"> - <el-radio-button :label="item.id" v-for="(item,index) in fiber" :key="index" - size="small">{{ item.color }}</el-radio-button> - </el-radio-group> - <el-form :inline="true" :model="otherForm" class="form-inline" label-width="50px" style="padding-top: 0;padding-left: 10px;"> + <el-select v-model="currentTab" placeholder="璇烽�夋嫨" @change="m=>handleChange(m,2)" v-if="fiber.length>0" size="small"> + <el-option + v-for="item in fiber" + :label="item.bushColor+'-'+item.color" + :key="item.id" + :value="item.id"> + <span style="float: left">{{ item.bushColor+'-'+item.color }}</span> + <el-tag :type="item.state==1?'success':'danger'" style="float: right;margin-top: 5px;" size="small">{{ item.state==1?'宸叉':'鏈' }}</el-tag> + </el-option> + </el-select> + <el-form :inline="true" :model="otherForm" class="form-inline" label-width="50px" style="padding-top: 0;padding-left: 10px;" v-if="PROJECT=='妫�娴嬩腑蹇�'"> <el-form-item label="娓╁害:" style="margin-bottom: 0;"> - <el-input clearable v-model="otherForm.temperature" size="small" placeholder="" style="width: 50px;" @change="m=>subOtherForm(m,'temperature')"></el-input> + <el-input v-model="otherForm.temperature" size="small" placeholder="" style="width: 90px;" @change="m=>subOtherForm(m,'temperature')"></el-input> <span style="margin-left: 4px;">鈩�</span> </el-form-item> <el-form-item label="婀垮害:" style="margin-bottom: 0;"> - <el-input clearable v-model="otherForm.humidity" size="small" placeholder="" style="width: 50px;" @change="m=>subOtherForm(m,'humidity')"></el-input> + <el-input v-model="otherForm.humidity" size="small" placeholder="" style="width: 90px;" @change="m=>subOtherForm(m,'humidity')"></el-input> <span style="margin-left: 4px;">%</span> </el-form-item> </el-form> + <el-button type="primary" size="small" v-if="dataAcquisitionEidt>0&&PROJECT=='妫�娴嬩腑蹇�'" @click="getDataAcquisitionDevice" :loading="dataAcquisitionLoading">鏁版嵁閲囬泦</el-button> + <el-button :type="dataAcquisitionEidtAble?'':'primary'" size="small" v-if="dataAcquisitionEidt>0&&PROJECT=='妫�娴嬩腑蹇�'" @click="dataAcquisitionEidtAble=!dataAcquisitionEidtAble">{{dataAcquisitionEidtAble?'鍏抽棴缂栬緫':'缂栬緫鏁伴噰'}}</el-button> </div> </div> <div class="center-box" id="nav" v-loading="tableLoading" v-if="!tableLists.find(m=>m.templateId==currentTable)||tableLists.find(m=>m.templateId==currentTable).templateName!='娓╁害寰幆妫�楠屽師濮嬭褰�'"> @@ -298,13 +309,13 @@ :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" :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;`"> - <template v-if="n.v.ps!=undefined && n.v.ps.value==='妫�楠屽��' && state==1"> + <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" class="table_input" v-model="n.v.v" - :disabled="getInspectionItemType(n.i) == 1 || (n.u != userId && n.u != undefined && n.u != '')" + :disabled="(getInspectionItemType(n.i) == 1 && !dataAcquisitionEidtAble )|| (n.u != userId && n.u != undefined && n.u != '')" @input="handleInput(n)" - @change="m=>changeInput(m,`${item.templateId}-${n.r}-${n.c}-${n.i}`)" @mousewheel.native.prevent :key="'abc-'+'000'+index+'000'+i+'000'+j"> - <el-button slot="append" type="primary" icon="el-icon-edit" size="mini" - v-if="getInspectionItemType(n.i) == 1" @click="getSystemValue(n)"></el-button> + @change="m=>changeInput(m,`${item.templateId}-${n.r}-${n.c}-${n.i}`, n)" @mousewheel.native.prevent :key="'abc-'+'000'+index+'000'+i+'000'+j"> + <!-- <el-button slot="append" type="primary" icon="el-icon-edit" size="mini" + v-if="getInspectionItemType(n.i) == 1" @click="getSystemValue(n)"></el-button> --> </el-input> <el-input v-else-if="getInspectionValueType(n.i) == 2" class="table_input" type="textarea" v-model="n.v.v" @@ -319,12 +330,12 @@ v-else-if="getInspectionValueType(n.i) == 4">/</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" + <el-select v-if="(getInspectionValueType(n.i) == 2 || getInspectionValueType(n.i) == 5) && state==1&&PROJECT=='瑁呭鐢电紗'" class="table_input" v-model="n.v.v" @change="saveInsContext()"> <el-option label="鍚堟牸" :value="1"></el-option> <el-option label="涓嶅悎鏍�" :value="0"></el-option> - </el-select> --> - <template> + </el-select> + <template v-if="PROJECT=='妫�娴嬩腑蹇�'||PROJECT=='瑁呭鐢电紗'&&getInspectionValueType(n.i) != 2 "> <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 :style="`font-family:${n.v.ff} !important;`">寰呭畾</span> @@ -336,6 +347,7 @@ <el-option v-for="item in equipOptions" :key="item.value" :label="item.value" :value="item.value"> </el-option> </el-select> + <!-- <el-button type="primary" icon="el-icon-document-copy" size="small" circle title="鏁伴噰" v-if="n.isItADataAcquisitionDevice&&PROJECT=='妫�娴嬩腑蹇�'" @click="getDataAcquisitionDevice(n.v.v)"></el-button> --> </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> @@ -395,9 +407,9 @@ </tbody> </table> </div> - <div class="center-box" v-loading="tableLoading" v-else> + <div v-loading="tableLoading" v-else> <el-divider></el-divider> - <h4 style="margin-bottom: 20px;">娓╁害寰幆妫�楠屽師濮嬭褰�</h4> + <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> @@ -445,7 +457,7 @@ </el-option> </el-select> </el-form-item> - <el-form-item label="浠櫒鍚嶇О:" style="margin-left: 80px;"> + <el-form-item label="浠櫒鍚嶇О:" > <el-input clearable v-model="equipForm.value1" disabled size="small" placeholder=""></el-input> </el-form-item> <el-form-item label="浠櫒缂栧彿:"> @@ -468,76 +480,92 @@ <el-table-column label="搴忓彿" type="index" - width="65" + width="60" align="center" > </el-table-column> <el-table-column prop="bushColor" label="绠¤壊鏍�" - width="120" + width="80" align="center"> </el-table-column> <el-table-column prop="code" label="鍏夌氦甯︾紪鍙�" - width="150" + width="110" align="center"> </el-table-column> <el-table-column prop="color" label="鍏夌氦鑹叉爣" align="center" - width="120"> + width="90"> </el-table-column> - <el-table-column - prop="inspectionItemClass" - label="鍏夌氦椤圭洰" - align="center" - width="130"> - </el-table-column> - <el-table-column - prop="value0" - label="澶栫" - align="center" - width="130"> - <template slot-scope="scope"> - <el-input size="small" v-model="scope.row.value0" placeholder="" @change="m=>changeItem(scope.row)"></el-input> - </template> - </el-table-column> - <el-table-column - prop="value1" - label="鍐呯" - align="center" - width="130"> - <template slot-scope="scope"> - <el-input size="small" v-model="scope.row.value1" placeholder="" @change="m=>changeItem(scope.row)"></el-input> - </template> - </el-table-column> - <el-table-column - prop="comValue" - align="center" - label="骞冲潎鍊�" - min-width="150"> - </el-table-column> - <el-table-column - prop="resValue" - label="琛板噺宸�" - align="center" - v-if="wareForm.inspectionItemSubclass!=20" - min-width="150"> - </el-table-column> - <el-table-column - prop="insResult" - label="缁撹" - align="center" - min-width="150" v-if="wareForm.inspectionItemSubclass!=20"> - <template slot-scope="scope"> - <span v-if="scope.row.insResult===1" style="color: green;">鍚堟牸</span> - <span v-else-if="scope.row.insResult===0" style="color: red;">涓嶅悎鏍�</span> - <span v-else>寰呭畾</span> - </template> - </el-table-column> + <template v-for="(item,index) in wareLength"> + <el-table-column + prop="value0" + label="澶栫" + align="center" + width="80" :key="(new Date())+'1'"> + <template slot="header"> + {{ '澶栫'+(index+1) }} + </template> + <template slot-scope="scope"> + <el-input size="small" v-model="scope.row.arr[index].value0" placeholder="" @change="m=>changeItem(scope.row.arr[index])"></el-input> + </template> + </el-table-column> + <el-table-column + prop="value1" + label="鍐呯" + align="center" + width="80" :key="(new Date())+'2'"> + <template slot="header"> + {{ '鍐呯'+(index+1) }} + </template> + <template slot-scope="scope"> + <el-input size="small" v-model="scope.row.arr[index].value1" placeholder="" @change="m=>changeItem(scope.row.arr[index])"></el-input> + </template> + </el-table-column> + <el-table-column + prop="comValue" + align="center" + min-width="150" :key="(new Date())+'3'"> + <template slot="header"> + {{ '琛板噺绯绘暟'+item }} + </template> + <template slot-scope="scope"> + <span>{{ scope.row.arr[index].comValue }}</span> + </template> + </el-table-column> + <el-table-column + prop="resValue" + label="琛板噺宸�" + align="center" + v-if="wareForm.inspectionItemSubclass!='20(甯告俯)'" + min-width="90" :key="(new Date())+'4'"> + <template slot="header"> + {{ '琛板噺宸�'+(index+1) }} + </template> + <template slot-scope="scope"> + <span>{{ scope.row.arr[index].resValue }}</span> + </template> + </el-table-column> + <el-table-column + prop="insResult" + label="缁撹" + align="center" + min-width="70" v-if="wareForm.inspectionItemSubclass!='20(甯告俯)'" :key="(new Date())+'5'"> + <template slot="header"> + {{ '缁撹'+(index+1) }} + </template> + <template slot-scope="scope"> + <span v-if="scope.row.arr[index].insResult===1" style="color: green;">鍚堟牸</span> + <span v-else-if="scope.row.arr[index].insResult===0" style="color: red;">涓嶅悎鏍�</span> + <span v-else>寰呭畾</span> + </template> + </el-table-column> + </template> </el-table> </div> <el-upload :action="action" @@ -658,6 +686,7 @@ 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: { @@ -793,14 +822,12 @@ currentTab:null, wareForm:{ inspectionItem:1, - inspectionItemSubclass:20, + inspectionItemSubclass:'20(甯告俯)', }, wareForm0:{}, numOptions:[], temperatureOptions:[], - wareTableData:[ - {} - ], + wareTableData:[], otherForm:{ humidity:null, temperature:null, @@ -810,7 +837,14 @@ code0:null, value1:null, code1:null, - } + }, + result: null, + worker: null, + wareLength:[], + dataAcquisitionInfo:{}, + dataAcquisitionEidt:0, + dataAcquisitionEidtAble:false, + dataAcquisitionLoading:false } }, computed: { @@ -835,6 +869,7 @@ this.getAuthorizedPerson() this.scrollInit() this.getPower() + this.startWorker() }, watch: { id(val) { @@ -948,12 +983,88 @@ this.saveInsContext() } } + }, + param:{ + deep:true, + handler(val){ + this.dataAcquisitionEidt = 0 + if(val){ + for (let key in val) { + val[key].equipValue.forEach(m=>{ + if(m.isItADataAcquisitionDevice){ + this.dataAcquisitionEidt++ + } + }) + } + } + } } }, + beforeDestroy() { + // 鍦ㄧ粍浠堕攢姣佸墠纭繚鍋滄 Worker锛岄伩鍏嶅唴瀛樻硠婕� + 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=>{ + this.dataAcquisitionLoading = false + if(res.code!=200){ + return + } + this.dataAcquisitionInfo = res.data + let list = this.tableList[0].arr + list.forEach((item,index)=>{ + item.forEach(m=>{ + if(m.v.ps&&(m.v.ps.value=='妫�楠屽瓙椤�'||m.v.ps.value=='妫�楠岄」')){ + if(this.dataAcquisitionInfo[m.v.m]){ + 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++ + } + }) + list[index].forEach((n,i)=>{ + if(n.v.ps&&n.v.ps.value&&typeof n.v.ps.value == 'string'&&n.v.ps.value.includes('妫�楠屽��')){ + if(n.v.ps.value.includes(this.dataAcquisitionInfo.frequency)&&!n.v.ps.value.includes(this.dataAcquisitionInfo.frequency+'0')){ + setTimeout(()=>{ + this.$delete(n.v,'v') + this.$set(n.v,'v',this.dataAcquisitionInfo[m.v.m]) + 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.changeInput('',`${this.currentSample.insProduct[0].templateId}-${n.r}-${n.c}-${n.i}`,n) + },1000) + } + } + } + }) + } + } + }) + }) + }) + }, + startWorker() { + if (this.worker) { + this.stopWorker(); // 纭繚涔嬪墠鐨� Worker 宸插仠姝� + } + // 鍒涘缓 Worker 瀹炰緥 + this.worker = new Worker('/static/js/worker.js'); + }, + stopWorker() { + if (this.worker) { + this.worker.terminate(); + this.worker = null; + } + }, changeItem(row){ if(row.value0&&row.value1){ - this.$set(row,'comValue',((Number(row.value0)+Number(row.value1))/2).toFixed(5)) + this.$set(row,'comValue',((Number(row.value0)+Number(row.value1))/2).toFixed(3)) }else{ return } @@ -977,11 +1088,10 @@ v:row.comValue } }] - if(this.wareForm.inspectionItemSubclass!=20){ - row.resValue = row.comValue?Math.abs(row.comValue-20).toFixed(5):'' + if(this.wareForm.inspectionItemSubclass!='20(甯告俯)'){ + row.resValue = row.comValue?Math.abs(row.comValue-Number(row.insProduct.complue)).toFixed(3):'' this.param[row.id].resValue.v.v = row.resValue if(row.ask&&row.resValue){ - console.log(row.ask,row.resValue) if(row.ask.includes('<')){ row.insResult = row.resValue<row.ask.split('<')[1]?1:0 }else if(row.ask.includes('>')){ @@ -1002,11 +1112,19 @@ this.saveInsContext() }, wareFormChange(m,type){ + if(this.PROJECT!='妫�娴嬩腑蹇�'||!this.tableLists.find(m=>m.templateId==this.currentTable)||this.tableLists.find(m=>m.templateId==this.currentTable).templateName!='娓╁害寰幆妫�楠屽師濮嬭褰�'){ + return + } + // this.$refs.wareTableData&&this.$refs.wareTableData.doLayout() if(m&&type){ - this.wareForm[type] = Number(m) + this.wareForm[type] = m } let wareForm = {...this.wareForm} - wareForm.inspectionItemSubclass = wareForm.inspectionItemSubclass+'鈩�' + if(this.wareForm.inspectionItemSubclass=='20(甯告俯)'){ + wareForm.inspectionItemSubclass ='20鈩�(甯告俯)' + }else{ + wareForm.inspectionItemSubclass = wareForm.inspectionItemSubclass+'鈩�' + } this.wareTableDataLoading = true this.$axios.post(this.$api.insOrderPlan.temCycle,{ sampleId:this.currentSample.id, @@ -1095,9 +1213,53 @@ } return obj }) - this.wareTableData = productVos + let arr = [] + let arr0 = [] + let mySet = new Set() + productVos.forEach((m,i)=>{ + let num0 = mySet.size + mySet.add(m.inspectionItemClass) + let num1 = mySet.size + if(num0!=num1){ + if(i>0){ + arr.push(arr0) + } + arr0 = [] + arr0.push(m) + }else{ + arr0.push(m) + } + }) + arr.push(arr0) + let arr1 = [] + this.wareLength = []; + for(let i=0;i<arr.length;i++){ + arr1.push([]) + this.wareLength.push(arr[i][0].inspectionItemClass) + } + arr.forEach((item,index)=>{ + item.forEach((m,i)=>{ + try { + arr1[i].push(m) + } catch (e) { + console.log(e) + } + }) + }) + let arr2 = [] + arr1.forEach(item=>{ + let obj = { + bushColor:item[0].bushColor, + code:item[0].code, + color:item[0].color, + arr:item + } + arr2.push(obj) + }) + this.wareTableData = arr2 }) this.getEquipOptions(true,this.currentSample.insProduct[0].id) + // this.$refs.wareTableData&&this.$refs.wareTableData.doLayout() }, subOtherForm(m,type){ let ids = [] @@ -1231,6 +1393,9 @@ this.currentTab = null; }, getReportModel(id){ + if(this.PROJECT!='妫�娴嬩腑蹇�'){ + return + } this.$axios.post(this.$api.insOrderPlan.getReportModel+'?sampleId='+id, {}).then(res => { this.fibers = res.data['鍏夌氦甯�'] this.fiber = res.data['鍏夌氦'] @@ -1251,6 +1416,7 @@ } }) this.getTableLists0(list) + this.getReportModel(this.currentSample.id) }else{ this.tableLists = [] this.tableList = [] @@ -1393,7 +1559,7 @@ this.temperatureOptions = [] mySet1.forEach(m => { this.temperatureOptions.push({ - value:m, + value:String(m), label:m }) }) @@ -1428,7 +1594,6 @@ count++ }) }) - // 闂寮�濮� this.tableList.forEach(a => { let dels = new Set() let ids = [] @@ -1451,6 +1616,11 @@ str += c.v.v count4 += 1 } + }else if (c.v.ps != undefined && c.v.ps.value === '妫�楠屽瓙瀛愰」'&&this.PROJECT=='瑁呭鐢电紗') { + if (count4 === 2) { + str += c.v.v + count4 += 1 + } } } }) @@ -1458,9 +1628,7 @@ let count2 = 0 for (let i in this.currentSample.insProduct) { if (this.currentSample.insProduct[i].templateId === a.templateId && this.currentSample - .insProduct[i].inspectionItem + - (this.currentSample.insProduct[i].inspectionItemSubclass == null ? '' : this.currentSample - .insProduct[i].inspectionItemSubclass) === + .insProduct[i].inspectionItem +(this.currentSample.insProduct[i].inspectionItemSubclass == null ? '' : this.currentSample.insProduct[i].inspectionItemSubclass)+(this.currentSample.insProduct[i].inspectionItemClass==null||this.PROJECT!='瑁呭鐢电紗'?'':this.currentSample.insProduct[i].inspectionItemClass) === str) { ids.push({ r: b.r, @@ -1485,7 +1653,6 @@ } } }) - // return ids.forEach(id => { for (let b = 0; b < a.template.length; b++) { if (a.template[b].r === id.r) { @@ -1520,7 +1687,6 @@ } }) }) - // 闂缁撴潫 this.tableList.forEach(a => { let arrs = [] let set = new Set() @@ -1529,7 +1695,7 @@ let finalList = []; //鏈�缁堝�煎垪琛� 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 => { + 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++ @@ -1538,7 +1704,7 @@ if (b.v.ps != undefined && b.v.ps.value === '瑕佹眰鍊�') { b.v.v = this.getAsk(b.i) } - if (b.v.ps != undefined && b.v.ps.value === '妫�楠屽��') { + if (b.v.ps != undefined && typeof b.v.ps.value ==='string'&&b.v.ps.value.includes('妫�楠屽��')) { b.v.v = '' b.u = '' b.i && this.param[b.i].insValue.push(b) @@ -1600,7 +1766,7 @@ this.tableWidth += (a.style.columnlen[i] === undefined ? 100 : a.style.columnlen[i]) } }) - this.currentSample.insProduct.forEach(a => { + this.currentSample.insProduct.forEach(async a => { try { let comValue = JSON.parse(a.insProductResult.comValue) for (var i = 0; i < comValue.length; i++) { @@ -1610,19 +1776,39 @@ try { let insValue = JSON.parse(a.insProductResult.insValue) for (let i = 0; i < insValue.length; i++) { - this.param[a.id].insValue[i].v.v = insValue[i].v - this.param[a.id].insValue[i].u = insValue[i].u + 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 = insValue[i].v + 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) for (let i = 0; i < equipValue.length; i++) { - console.log(444,this.equipForm) if(this.tableLists.find(m=>m.templateId==this.currentTable)&&this.tableLists.find(m=>m.templateId==this.currentTable).templateName=='娓╁害寰幆妫�楠屽師濮嬭褰�'){ // 娓╁害寰幆璧嬪�� this.$set(this.equipForm,`code`+i,equipValue[i].v) }else{ this.param[a.id].equipValue[i].v.v = equipValue[i].v + if(equipValue[i].v){ + let isItADataAcquisitionDevice = await this.determineWhetherToCollectData(equipValue[i].v) + this.param[a.id].equipValue[i].isItADataAcquisitionDevice = isItADataAcquisitionDevice + + }else{ + this.param[a.id].equipValue[i].isItADataAcquisitionDevice = false + } + this.dataAcquisitionEidt = 0 + if(this.param){ + for (let key in this.param) { + this.param[key].equipValue.forEach(m=>{ + if(m.isItADataAcquisitionDevice){ + this.dataAcquisitionEidt++ + } + }) + } + } } } } catch (e) {} @@ -1644,233 +1830,82 @@ }) this.handleExcelMethod() }, - changeInput(m, code) { - let str = code.split('-') - let r = str[1] - let c = str[2] - let id = str[0] - let pId = str[3] - var list = [] - for (let a in this.tableList) { - if (this.tableList[a].templateId == id) { - list = this.tableList[a].arr - break + changeInput(m, code, n) { + if (n) { + // if (this.PROJECT === '瑁呭鐢电紗') { + // let num2 = new this.$Big(n.v.v) + // n.v.v = num2.toExponential() + // } + // 瀹氫箟涓�涓嚱鏁版潵楠岃瘉鍒嗘暟鏄惁鏈夋晥 + 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('/', '') } } - this.excelMethodList.forEach(item => { - if (item.valueList.find(m => m.r == r && m.c == c)) { - var comValue = {} - item.valueList.forEach(a => { - list.forEach(b => { - if (b[0].r == a.r) { - b.forEach(c => { - if (c.c == a.c) { - var tableCode = '' - for (var d in this.comparisonList) { - if (c.c == this.comparisonList[d].value) { - tableCode = this.comparisonList[d].label - break - } - } - if(this.getInspectionValueType(item.i)==1){ - if (!isNaN(parseFloat(c.v.v))) { - comValue[(tableCode + (c.r + 1))] = parseFloat(c.v.v) - } - }else{ - comValue[(tableCode + (c.r + 1))] = c.v.v - } + // 鍚� 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 + })); + + // 鐩戝惉 Worker 杩斿洖鐨勭粨鏋� + this.worker.onmessage = (event) => { + this.result = JSON.parse(event.data); + switch (this.result.method){ + case 'saveInsContext': + 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 + 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) } - }) - } - }) - }) - if (item.v.ps != undefined && item.v.ps.value == '缁撹') { - try { - if (this.currentSample.insProduct.find(m => m.id == item.i)) { - let ask = this.currentSample.insProduct.find(m => m.id == item.i).ask?this.currentSample.insProduct.find(m => m.id == item.i).ask.split('&'):null; - let res = Object.values(comValue)[0] - let comp = [] - if(res==''||res==null||res==undefined||res=='Infinity'){ - item.v.v = '' - }else{ - if(ask){ - comp = ask.map((m, i) => { - if (m.includes('=')) { - let str = m.split('=')[1] - if(typeof res == 'string'&&typeof str == 'string'){ - return res.trim() == str.trim() - }else{ - return eval(res) == eval(str) - } - } else if (m.includes('鈮�')) { - return eval(res) >= eval(m.split('鈮�')[1]) - }else if (m.includes('鈮�')) { - return eval(res) <= eval(m.split('鈮�')[1]) - }else if (m.includes('<')) { - return eval(res) < eval(m.split('<')[1]) - }else if (m.includes('>')) { - return eval(res) > eval(m.split('>')[1]) - }else if (m.includes('~')) { - let k = m.split('~') - return eval(res) >= eval(k[0]) && eval(res) <= eval(k[1]) - }else if(m.includes('-')){ - let k = m.split('-') - return eval(res) >= eval(k[0]) && eval(res) <= eval(k[1]) - }else if(m.includes('卤')){ - let k = m.split('卤') - return eval(res) >= eval((k[0] - k[1])) && eval(res) <= eval((k[0] + k[1])) - }else if(m.includes('锛�')){ - return eval(res) > eval(m.split('锛�')[1]) - }else if(m.includes('锛�')){ - return eval(res) < eval(m.split('锛�')[1]) - } - }) - } - if (comp.every(m => m)) { - item.v.v = 1 - } else { - item.v.v = 0 } } this.saveInsContext() - } - } catch (error) { - - } - - } else { - let comResult = '' - try { - if(this.getInspectionValueType(item.i)==1){ - comResult = excelFunction.compute(item.v.f.replace(/=/g, ' '),comValue) - }else{ - let valueList = []; - item.valueList.forEach(a => { - valueList.push({ - name: `${this.comparisonList.find(e=>e.value==a.c).label}${a.r+1}`, - value: 0, - }) - }) - for (var a in comValue) { - valueList.forEach(b => { - if (b.name == a) { - b.value = comValue[a] - } - }) - } - let str = item.v.f.replace(/=/g, ' ') - valueList.forEach(b => { - str = str.replace(b.name, b.value) - }) - comResult = str - } - } catch (error) { - - } - // comResult = excelFunction.compute(item.v.f.replace(/=/g, ' '),comValue); - // switch (item.methodName) { - // case 'AVERAGE': - // let num = 0 - // for (var a in comValue) { - // num += comValue[a] - // } - // comResult = num / Object.keys(comValue).length - // break; - // case 'SUM': - // let sum = 0 - // for (var a in comValue) { - // sum += comValue[a] - // } - // comResult = sum - // break; - // case 'MEDIAN': - // let arr = [] - // for (var a in comValue) { - // arr.push(comValue[a]) - // } - // comResult = this.median(arr) - // break; - // case 'APS': - // let arr0 = [] - // for (var a in comValue) { - // arr0.push(comValue[a]) - // } - // comResult = Math.abs(arr0[0]) - // break; - // // case 'MAX': - // // let arr1 = [] - // // for (var a in comValue) { - // // arr1.push(eval(comValue[a])) - // // } - // // comResult = Math.max(...arr1) - // // break; - // // case 'MIN': - // // let arr2 = [] - // // for (var a in comValue) { - // // arr2.push(eval(comValue[a])) - // // } - // // comResult = Math.median(...arr2) - // // break; - // default: - // let valueList = []; - // item.valueList.forEach(a => { - // valueList.push({ - // name: `${this.comparisonList.find(e=>e.value==a.c).label}${a.r+1}`, - // value: 0, - // }) - // }) - // for (var a in comValue) { - // valueList.forEach(b => { - // if (b.name == a) { - // b.value = comValue[a] - // } - // }) - // } - // let str = item.v.f.replace(/=/g, ' '); - // valueList.forEach(b => { - // str = str.replace(b.name, b.value) - // }) - // str = str.replaceAll('MAX', 'Math.max') - // str = str.replaceAll('MIN', 'Math.min') - // str = str.replaceAll('锛�', ',') - // try { - // if(this.getInspectionValueType(item.i)==1){ - // comResult = eval(str) - // }else{ - // comResult = str - // } - // } catch (error) { - - // } - // break; - // } - try { - list.forEach(a => { - if (a[0].r == item.r && comResult !== '') { - for (var b in a) { - if (a[b].c == item.c) { - try{ - let val = parseFloat(comResult.toFixed(3)) - a[b].v.v = isNaN(val) ? '' : val - }catch(e){ - a[b].v.v = comResult - } - break - } - } - } - }) - this.changeInput(comResult, `${id}-${item.r}-${item.c}-${pId}`) //鏀瑰彉鏈�缁堝�� - } catch (error) { - - } - } + }) + break; + case 'tableList': + this.$nextTick(()=>{ + this.$delete(this.tableList[0],'arr') + this.$set(this.tableList[0],'arr',this.result.value[0].arr) + }) + break; + case 'getCurrentInsProduct': + this.getCurrentInsProduct(this.result.value) + break; } - }) - try { - this.getCurrentInsProduct(pId) - } catch (error) { - + }; + }, + async determineWhetherToCollectData(managementNumber){ + let res = await this.$axios.get(this.$api.deviceScope.determineWhetherToCollectData+'?managementNumber='+managementNumber) + return res.data + }, + handleFraction(str){ + if(str&&typeof(str)=='string'&&str.includes('/')){ + return eval(str.split('/')[0]/str.split('/')[1]) + } else if (str && typeof(str) == 'string' && str.includes('*') && str.includes('^')) { + const num1 = str.split('*') + const num2 = num1[1].split('^') + let num3 = new this.$Big(num2[0]); + let num4 = new this.$Big(num2[1]); + let num5 = Math.pow(num3, num4) // 璁$畻娆℃柟 + return num1[0] * num5 // 鏈�鍚庤绠椾箻娉� + } else{ + return str } }, getCurrentInsProduct(pId) { @@ -1961,7 +1996,7 @@ } }, getValue(v){ - let str = v.v?v.v:(v.ct&&v.ct.s?v.ct.s.length>0&&v.ct.s[0].v:'').replaceAll('\n','<br/>') + 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/>'):'')) return str }, getInspectionValueType(id) { @@ -1991,11 +2026,11 @@ return sum }, handleInput (n) { - if (n.v.v > 10000) { - let num2 = new this.$Big(n.v.v) - n.v.v = num2.toExponential() - } - n.v.v = n.v.v.replace(/[^\d.^e]/g, ''); + 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("$#$","/"); }, getInspectionItemType(id) { for (var a in this.currentSample.insProduct) { @@ -2053,6 +2088,7 @@ this.equipOptions = res.data.map(m => { m.value = m.managementNumber m.label = m.deviceName + m.isItADataAcquisitionDevice = m.isItADataAcquisitionDevice return m }) } @@ -2140,7 +2176,9 @@ this.$axios.post(this.$api.insOrderPlan.submitPlan, { orderId: this.orderId, laboratory: this.sonLaboratory, - verifyUser: this.verifyUser + verifyUser: this.verifyUser, + entrustCode: this.insOrder.entrustCode, + sampleCode: this.currentSample.sampleCode }).then(res => { if (res.code === 200) { this.$message.success("鎿嶄綔鎴愬姛") @@ -2161,7 +2199,7 @@ } 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' },'浠ヤ笂椤圭洰涓嶅悎鏍硷紝纭畾鎻愪氦锛�')) + 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), @@ -2193,8 +2231,8 @@ return }, saveInsContext() { + // console.log(1111,this.param) if(this.param){ - console.log(33333,this.param) this.$axios.post(this.$api.insOrderPlan.saveInsContext, { param: JSON.stringify(this.param) }).then(res => { @@ -2211,9 +2249,21 @@ if (this.equipOptions[i].value === val) { 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.param[n.i].equipName[i1].v.v = this.equipOptions[i].label + this.$set(this.param[n.i].equipValue[i1].v,'v',val) + this.$set(this.param[n.i].equipName[i1].v,'v',this.equipOptions[i].label) + this.param[n.i].equipValue[i1].isItADataAcquisitionDevice = this.equipOptions[i].isItADataAcquisitionDevice } } + } + } + this.dataAcquisitionEidt = 0 + if(this.param){ + for (let key in this.param) { + this.param[key].equipValue.forEach(m=>{ + if(m.isItADataAcquisitionDevice){ + this.dataAcquisitionEidt++ + } + }) } } this.saveInsContext() @@ -2270,6 +2320,7 @@ this.currentSample = this.HaveJson(this.sampleProduct[index - 1]) let list = await this.getCurrentProduct(this.currentSample.id,0) this.currentSample.insProduct = this.HaveJson(list) + this.param = {} this.currentSample.insProduct.forEach(a => { this.param[a.id] = { insValue: [], -- Gitblit v1.9.3