| | |
| | | <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-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> |
| | |
| | | <template v-if="n.v.ps!=undefined && n.v.ps.value==='检验值' && 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 != '')" |
| | | @input="handleInput(n)" @blur="bigNum(n)" |
| | | @change="m=>changeInput(m,`${item.templateId}-${n.r}-${n.c}-${n.i}`)" @mousewheel.native.prevent :key="'abc-'+'000'+index+'000'+i+'000'+j"> |
| | | @input="handleInput(n)" |
| | | @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> |
| | |
| | | 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> |
| | |
| | | </div> |
| | | <div class="center-box" 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;">温度循环检验原始记录</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-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="仪器编号:"> |
| | |
| | | <el-table-column |
| | | prop="comValue" |
| | | align="center" |
| | | label="平均值" |
| | | label="衰减系数" |
| | | min-width="150"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="resValue" |
| | | label="衰减差" |
| | | align="center" |
| | | v-if="wareForm.inspectionItemSubclass!=20" |
| | | 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"> |
| | | 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> |
| | |
| | | currentTab:null, |
| | | wareForm:{ |
| | | inspectionItem:1, |
| | | inspectionItemSubclass:20, |
| | | inspectionItemSubclass:'20(常温)', |
| | | }, |
| | | wareForm0:{}, |
| | | numOptions:[], |
| | |
| | | code0:null, |
| | | value1:null, |
| | | code1:null, |
| | | } |
| | | }, |
| | | result: null, |
| | | worker: null, |
| | | } |
| | | }, |
| | | computed: { |
| | |
| | | } |
| | | } |
| | | }, |
| | | beforeDestroy() { |
| | | // 在组件销毁前确保停止 Worker,避免内存泄漏 |
| | | this.stopWorker(); |
| | | }, |
| | | methods: { |
| | | 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 |
| | | } |
| | |
| | | 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-20).toFixed(3):'' |
| | | this.param[row.id].resValue.v.v = row.resValue |
| | | if(row.ask&&row.resValue){ |
| | | if(row.ask.includes('<')){ |
| | |
| | | return |
| | | } |
| | | 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, |
| | |
| | | this.temperatureOptions = [] |
| | | mySet1.forEach(m => { |
| | | this.temperatureOptions.push({ |
| | | value:m, |
| | | value:String(m), |
| | | label:m |
| | | }) |
| | | }) |
| | |
| | | count++ |
| | | }) |
| | | }) |
| | | // 问题开始 |
| | | this.tableList.forEach(a => { |
| | | let dels = new Set() |
| | | let ids = [] |
| | |
| | | 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 |
| | | } |
| | | } |
| | | } |
| | | }) |
| | |
| | | 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, |
| | |
| | | } |
| | | } |
| | | }) |
| | | // return |
| | | ids.forEach(id => { |
| | | for (let b = 0; b < a.template.length; b++) { |
| | | if (a.template[b].r === id.r) { |
| | |
| | | } |
| | | }) |
| | | }) |
| | | // 问题结束 |
| | | this.tableList.forEach(a => { |
| | | let arrs = [] |
| | | let set = new Set() |
| | |
| | | }) |
| | | 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))) { |
| | | if(c.v.v.includes('^') || c.v.v.includes('/')){ |
| | | comValue[(tableCode + (c.r + 1))] = c.v.v |
| | | }else{ |
| | | comValue[(tableCode + (c.r + 1))] = parseFloat(c.v.v) |
| | | } |
| | | } |
| | | }else{ |
| | | comValue[(tableCode + (c.r + 1))] = c.v.v |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | }) |
| | | 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] |
| | | console.log(res,str) |
| | | if(typeof res == 'string'&&typeof str == 'string'){ |
| | | console.log(res,str) |
| | | 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.startWorker() |
| | | |
| | | // 向 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.tableList = this.result.value.tableList |
| | | this.param = this.result.value.param |
| | | 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 => { |
| | | console.log(a) |
| | | valueList.push({ |
| | | name: `${this.comparisonList.find(e=>e.value==a.c).label}${a.r+1}`, |
| | | value: 0, |
| | | }) |
| | | }) |
| | | console.log(comValue) |
| | | 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) |
| | | }) |
| | | console.log(str) |
| | | comResult = str |
| | | } |
| | | } catch (error) { |
| | | } |
| | | 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.tableList = this.result.value |
| | | }) |
| | | break; |
| | | case 'getCurrentInsProduct': |
| | | this.getCurrentInsProduct(this.result.value) |
| | | break; |
| | | } |
| | | }) |
| | | try { |
| | | this.getCurrentInsProduct(pId) |
| | | } catch (error) { |
| | | |
| | | // if(this.result.method=='saveInsContext'){ |
| | | // this.stopWorker(); // 处理完成后停止 Worker |
| | | // } |
| | | }; |
| | | }, |
| | | 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) { |
| | |
| | | } |
| | | }, |
| | | 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.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) { |
| | |
| | | }, |
| | | handleInput (n) { |
| | | n.v.v = n.v.v.replace(/[^\d.^e\-/+]/g, ''); |
| | | }, |
| | | bigNum (n) { |
| | | if (n.v.v > 10000 && this.PROJECT === '装备电缆') { |
| | | let num2 = new this.$Big(n.v.v) |
| | | n.v.v = num2.toExponential() |
| | | } |
| | | 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) { |