From e20c00b978046bb77fc302aa0a49cda49f4f1345 Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期三, 26 六月 2024 18:03:54 +0800 Subject: [PATCH] 完善计算 --- src/components/do/b1-inspect-order-plan/Inspection.vue | 290 ++++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 190 insertions(+), 100 deletions(-) diff --git a/src/components/do/b1-inspect-order-plan/Inspection.vue b/src/components/do/b1-inspect-order-plan/Inspection.vue index d97b387..25a7495 100644 --- a/src/components/do/b1-inspect-order-plan/Inspection.vue +++ b/src/components/do/b1-inspect-order-plan/Inspection.vue @@ -60,6 +60,8 @@ width: 100px; text-align: center; font-size: 14px; + word-wrap: break-word; + white-space: normal; } .content { @@ -133,6 +135,14 @@ .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 */ + } </style> <style> .inspection .el-form-item__label { @@ -155,9 +165,12 @@ } .inspection .el-input-group__append { - padding: 0 10px; + padding: 0 14px; color: #3A7BFA; background-color: #fff; + height: 100%; + display: flex; + align-items: center; } .inspection .center-box .el-input__inner { @@ -259,7 +272,7 @@ <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 != '')" - @change="m=>changeInput(m,`${item.templateId}-${n.r}-${n.c}-${n.i}`)"> + @change="m=>changeInput(m,`${item.templateId}-${n.r}-${n.c}-${n.i}`)" type="number"> <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> @@ -276,12 +289,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" 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 v-else> + </el-select> --> + <template> <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> @@ -305,7 +318,7 @@ :disabled="state>1" @visible-change="e=>getDic(e,n.i)" @change="saveInsContext()"> <el-option v-for="(e, i) in enumList" :key="i" :label="e.label" :value="e.value"></el-option> </el-select> --> - <span :style="`font-family:${n.v.ff} !important;`">{{n.v.v}}</span> + <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 style="display: flex;flex-wrap: nowrap;align-items: center;width: 100%" :title="currentSample.sampleCode"> @@ -345,7 +358,7 @@ 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;`">{{n.v.v}}</span> + <span v-else :style="`font-family:${n.v.ff} !important;`" v-html="getValue(n.v)" ></span> </div> </td> </tr> @@ -469,6 +482,7 @@ <script> import ValueTable from '../../tool/value-table.vue' import file from '../../../util/file' + import excelFunction from '../../../util/excelFountion' export default { props: ['sonLaboratory', 'orderId', 'state'], components: { @@ -613,6 +627,7 @@ this.componentData.entity.sonLaboratory = this.sonLaboratory; this.id = this.orderId; this.getUserInfo() + // excelFunction.compute('SUM(MAX(SUM(A1,B1,C1),2,3)*2-MIN(A1:D3),1,2)') }, mounted() { this.getTypeDicts() @@ -1074,12 +1089,12 @@ } else { this.param[b.i].resValue = b } */ - if (b.i !== undefined) { + if (b.i !== undefined&&!this.param[b.i].resValue) { this.param[b.i].resValue = b } } if (b.v.ps != undefined && b.v.ps.value === '缁撹') { - if (b.i !== undefined) { + if (b.i !== undefined&&!this.param[b.i].insResult) { this.param[b.i].insResult = b conclusionList.forEach((n, i) => { if (n.r == b.r && n.c == b.c) { @@ -1183,13 +1198,20 @@ } }) }) - if (item.methodName == '鑷畾涔夋柟娉�' && item.v.ps != undefined && item.v.ps.value == '缁撹') { + if (item.v.ps != undefined && item.v.ps.value == '缁撹') { if (this.currentSample.insProduct.find(m => m.id == item.i)) { - let ask = this.currentSample.insProduct.find(m => m.id == item.i).ask.split('&'); + 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 = ask.map((m, i) => { + let comp = [] + if(ask){ + comp = ask.map((m, i) => { if (m.includes('=')) { - return res == m.split('=')[1] + let str = m.split('=')[1] + if(typeof res == 'string'&&typeof str == 'string'){ + return res.trim() == str.trim() + }else{ + return res == str + } } else if (m.includes('鈮�')) { return res >= m.split('鈮�')[1] }else if (m.includes('鈮�')) { @@ -1209,37 +1231,24 @@ return res >= (k[0] - k[1]) && res <= (k[0] + k[1]) } }) - if(this.getInspectionValueType(item.i)==1){ - if (comp.every(m => m)) { - item.v.v = 1 - } else { - item.v.v = 0 - } + } + if (comp.every(m => m)) { + item.v.v = 1 + } else { + item.v.v = 0 } this.saveInsContext() } } else { - let comResult = 0; - 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; - default: + 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[a.c].label}${a.r+1}`, + name: `${this.comparisonList.find(e=>e.value==a.c).label}${a.r+1}`, value: 0, }) }) @@ -1250,25 +1259,92 @@ } }) } - let str = item.v.f.replace(/=/g, ' '); + let str = item.v.f.replace(/=/g, ' ') valueList.forEach(b => { str = str.replace(b.name, b.value) }) - if (item.v.f.includes('/')) { - if (Object.getOwnPropertyNames(comValue).length == valueList.length) { - comResult = eval(str) - } else { - comResult = '' - } - } else { - if(this.getInspectionValueType(item.i)==1){ - comResult = eval(str) - }else{ - comResult = str - } - } - break; + 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; + // } list.forEach(a => { if (a[0].r == item.r && comResult != '') { for (var b in a) { @@ -1347,10 +1423,10 @@ this.tableList[0].insProductResult[m] = JSON.stringify(this.tableList[0].insProductResult[m]) break; case 'resValue': - this.tableList[0].lastValue = value.v.v + this.tableList[0].lastValue = value?value.v.v:'' break; case 'insResult': - this.tableList[0].insResult = value.v.v + this.tableList[0].insResult = value?value.v.v:'' break; } } @@ -1358,47 +1434,28 @@ handleExcelMethod() { if (this.excelMethodList.length > 0) { this.excelMethodList.map(item => { - item.methodName = item.v.f.split('=').length > 1 && item.v.f.split('=')[1].split('(') && item.v.f.split( - '=')[1].split('(')[0] ? item.v.f.split('=')[1].split('(')[0] : '鑷畾涔夋柟娉�'; - let valueList = []; - if (item.v.f.includes(':')) { - valueList = []; - let r0 = null; - let c0 = null; - let r1 = null; - let c1 = null; - let mode = item.v.f.split('(')[1].split(')')[0]; - let start = mode.split(':')[0] - let end = mode.split(':')[1] - c0 = this.comparisonList.find(j => j.label == start.split('')[0]).value - r0 = start.replace(/[a-zA-Z]/g, "") - 1 - c1 = this.comparisonList.find(j => j.label == end.split('')[0]).value - r1 = end.replace(/[a-zA-Z]/g, "") - 1 - for (let i = Number(r0); i <= Number(r1); i++) { - for (let u = Number(c0); u <= Number(c1); u++) { - valueList.push({ - r: i, - c: u - }) - } - } - } else { - valueList = [] - let regex = /[=\+\-\*\%\(\)\/\s]/g - let mode = item.v.f.replace(regex, ' ').split(' '); - mode.filter(m => m && !Number(m)).forEach(m => { - let r = m.replace(/[a-zA-Z]/g, "") - 1 - let c = this.comparisonList.find(j => j.label == m.split('')[0]).value - valueList.push({ - c, - r - }) - }) - } - item.valueList = valueList; + item.valueList = excelFunction.changeParameter(item.v.f); return item; }) } + }, + median(arr) { + // 瀵规暟缁勮繘琛屾帓搴� + const sortedArr = arr.sort((a, b) => a - b); + // 璁$畻鏁扮粍闀垮害鐨勪竴鍗� + const half = Math.floor(sortedArr.length / 2); + // 濡傛灉鏁扮粍闀垮害涓哄鏁帮紝杩斿洖涓棿鐨勫厓绱狅紱濡傛灉涓哄伓鏁帮紝杩斿洖涓棿涓や釜鍏冪礌鐨勫钩鍧囧�� + if (sortedArr.length % 2) { + // 濂囨暟浣嶇疆鐨勫厓绱� + return sortedArr[half]; + } else { + // 鍋舵暟浣嶇疆鐨勫钩鍧囧�� + return (sortedArr[half - 1] + sortedArr[half]) / 2; + } + }, + 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/>') + return str }, getInspectionValueType(id) { for (var a in this.currentSample.insProduct) { @@ -1441,20 +1498,34 @@ } }, getSystemValue(n) { + let code = null try { - if (this.param[n.i].equipValue.v.v == null || this.param[n.i].equipValue.v.v == '') { - this.$message.error('璇峰厛閫夋嫨閲囬泦鐨勮澶�') - return - } + 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('鎵句笉鍒拌澶囧唴瀹�') } - 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) { @@ -1551,7 +1622,6 @@ laboratory: this.sonLaboratory, }).then(res => { if (res.code === 200) { - console.log(res.data) if(!res.data||res.data.length==0){ this.$axios.post(this.$api.insOrderPlan.submitPlan, { orderId: this.orderId, @@ -1575,7 +1645,7 @@ if(lastChar=='-'){ res.data[i] = res.data[i].slice(0, -1); } - newData.push(h('p', {style: 'font-size: 12px;'}, (Number(i)+1)+'銆�'+res.data[i])) + 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' },'浠ヤ笂椤圭洰涓嶅悎鏍硷紝纭畾鎻愪氦锛�')) this.$confirm('鎻愮ず',{ @@ -1815,6 +1885,26 @@ }).catch(error => { }) + }, + /** + * 灏嗘暟鍊紇淇濈暀ct.fa涓�'##'鍚庣殑鎸囧畾灏忔暟浣嶆暟锛屽苟杩斿洖鏍煎紡鍖栧悗鐨勫瓧绗︿覆銆� + * + * @param v 瑕佹牸寮忓寲鐨勬暟鍊� + * @param ct 鍖呭惈鏍煎紡鍖栭厤缃殑瀵硅薄 + * @param ct.fa 鏍煎紡鍖栭厤缃瓧绗︿覆锛岃嫢鍖呭惈'##'鍒欐寜鐓у叾鍚庣殑鍐呭纭畾灏忔暟浣嶆暟 + * @returns 鏍煎紡鍖栧悗鐨勫瓧绗︿覆鎴栧師濮嬫暟鍊硷紙鑻ラ厤缃笉绗﹀悎瑕佹眰锛� + */ + toFixed(v,ct){ + if(v&&ct&&ct.fa&&ct.fa.includes('##')){ + if(ct.fa.includes('.')){ + let num = ct.fa.slice(4).length + return Number(v).toFixed(num) + }else{ + return Number(v).toFixed(0) + } + }else{ + return v + } } } } -- Gitblit v1.9.3