| | |
| | | }) |
| | | if (item.methodName == '自定义方法' && 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] |
| | | } else if (m.includes('≥')) { |
| | |
| | | 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 |
| | |
| | | } |
| | | 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[a.c].label}${a.r+1}`, |
| | | name: `${this.comparisonList.find(e=>e.value==a.c).label}${a.r+1}`, |
| | | value: 0, |
| | | }) |
| | | }) |
| | |
| | | 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 { |
| | | 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; |
| | | } |
| | |
| | | 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; |
| | | } |
| | | } |
| | |
| | | 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(':')) { |
| | | if(item.v.f.includes('MAX') || item.v.f.includes('MIN')){ |
| | | item.methodName = '自定义方法' |
| | | let regex = /[=\+\-\*\%\/\^\s]/g |
| | | let mode = item.v.f.replace(regex, ' ').split(' '); |
| | | let that = this |
| | | if(item.v.f.includes('MAX')){ |
| | | item.v.f = Judgment(item.v.f, 'MAX') |
| | | } |
| | | if(item.v.f.includes('MIN')){ |
| | | item.v.f = Judgment(item.v.f, 'MIN') |
| | | } |
| | | function Judgment(f,type) { |
| | | let newF = f |
| | | let mode4 = mode.filter(m => m&&m.includes(type)) |
| | | mode4.forEach(m => { |
| | | let mode0 = m |
| | | if(mode0.includes(':')){ |
| | | let r0 = null; |
| | | let c0 = null; |
| | | let r1 = null; |
| | | let c1 = null; |
| | | let mode1 = mode0.split('(')[1].split(')')[0]; |
| | | let start = mode1.split(':')[0] |
| | | let end = mode1.split(':')[1] |
| | | c0 = that.comparisonList.find(j => j.label == start.split('')[0]).value |
| | | r0 = start.replace(/[a-zA-Z]/g, "") - 1 |
| | | c1 = that.comparisonList.find(j => j.label == end.split('')[0]).value |
| | | r1 = end.replace(/[a-zA-Z]/g, "") - 1 |
| | | let valueList0 = [] |
| | | for (let i = Number(r0); i <= Number(r1); i++) { |
| | | for (let u = Number(c0); u <= Number(c1); u++) { |
| | | valueList0.push({ |
| | | r: i, |
| | | c: u |
| | | }) |
| | | } |
| | | } |
| | | let valueList1 = [] |
| | | valueList0.forEach(v => { |
| | | let r = ''; |
| | | let c = ''; |
| | | r = v.r +1; |
| | | c = that.comparisonList.find(j => j.value == v.c).label |
| | | valueList1.push(c+r) |
| | | }) |
| | | let mode3 = type+'('+valueList1.join(',')+')' |
| | | newF = newF.replace(mode0, mode3) |
| | | valueList = [...valueList,...valueList0] |
| | | }else{ |
| | | let mode1 = mode0.replace(type, '').replace(/[=\+\-\*\%\(\)\/\^\s]/g, ''); |
| | | let modeList = mode1.split(','); |
| | | modeList.filter(m => m && !Number(m)).forEach(m => { |
| | | let r = m.replace(/[a-zA-Z]/g, "") - 1 |
| | | let c = that.comparisonList.find(j => j.label == m.split('')[0]).value |
| | | valueList.push({ |
| | | c, |
| | | r |
| | | }) |
| | | }) |
| | | } |
| | | }) |
| | | return newF |
| | | } |
| | | }else if (item.v.f.includes(':')) { |
| | | valueList = []; |
| | | let r0 = null; |
| | | let c0 = null; |
| | |
| | | } |
| | | } else { |
| | | valueList = [] |
| | | let regex = /[=\+\-\*\%\(\)\/\s]/g |
| | | 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 |
| | |
| | | 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; |
| | | } |
| | | }, |
| | | getInspectionValueType(id) { |
| | | for (var a in this.currentSample.insProduct) { |
| | |
| | | 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, |