From b403195a75a452b54fe2112158b454f6d80c0e11 Mon Sep 17 00:00:00 2001
From: gaoluyang <gaoluyang@rengu.cc>
Date: 星期四, 11 七月 2024 15:03:55 +0800
Subject: [PATCH] 科学计数法逻辑修改
---
src/components/do/b1-inspect-order-plan/Inspection.vue | 251 +++++++++++++++----------------------------------
1 files changed, 78 insertions(+), 173 deletions(-)
diff --git a/src/components/do/b1-inspect-order-plan/Inspection.vue b/src/components/do/b1-inspect-order-plan/Inspection.vue
index e97445c..dd44df3 100644
--- a/src/components/do/b1-inspect-order-plan/Inspection.vue
+++ b/src/components/do/b1-inspect-order-plan/Inspection.vue
@@ -278,11 +278,11 @@
</el-radio-group>
<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: 100px;" @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: 100px;" @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>
@@ -301,8 +301,8 @@
<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>
@@ -517,7 +517,7 @@
<el-table-column
prop="comValue"
align="center"
- label="骞冲潎鍊�"
+ label="琛板噺绯绘暟"
min-width="150">
</el-table-column>
<el-table-column
@@ -810,7 +810,9 @@
code0:null,
value1:null,
code1:null,
- }
+ },
+ result: null,
+ worker: null,
}
},
computed: {
@@ -950,7 +952,24 @@
}
}
},
+ 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(3))
@@ -1649,171 +1668,59 @@
})
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&&!isNaN(parseFloat(c.v.v))){
- 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('RTS')) {
- m = m.replace('RTS*', '')
- }
- if (m.includes('=')) {
- let str = this.handleFraction(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('鈮�')) {
- let str = this.handleFraction(m.split('鈮�')[1])
- return eval(res) >= eval(str)
- }else if (m.includes('鈮�')) {
- let str = this.handleFraction(m.split('鈮�')[1])
- return eval(res) <= eval(str)
- }else if (m.includes('<')) {
- let str = this.handleFraction(m.split('<')[1])
- return eval(res) < eval(str)
- }else if (m.includes('>')) {
- let str = this.handleFraction(m.split('>')[1])
- return eval(res) > eval(str)
- }else if (m.includes('~')) {
- let k = m.split('~')
- return eval(res) >= eval(this.handleFraction((k[0]))) && eval(res) <= eval(this.handleFraction(k[1]))
- }else if(m.includes('-')){
- let k = m.split('-')
- return eval(res) >= eval(this.handleFraction(k[0])) && eval(res) <= eval(this.handleFraction(k[1]))
- }else if(m.includes('卤')){
- let k = m.split('卤')
- return eval(res) >= eval((this.handleFraction(k[0]) - this.handleFraction(k[1]))) && eval(res) <= eval((this.handleFraction(k[0]) + this.handleFraction(k[1])))
- }else if(m.includes('锛�')){
- let str = this.handleFraction(m.split('锛�')[1])
- return eval(res) > eval(str)
- }else if(m.includes('锛�')){
- let str = this.handleFraction(m.split('锛�')[1])
- return eval(res) < eval(str)
- }
- })
- }
- 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){
- let ask = this.currentSample.insProduct.find(m => m.id == item.i).ask?this.currentSample.insProduct.find(m => m.id == item.i).ask.split('&'):null;
- comResult = excelFunction.compute(item.v.f.replace(/=/g, ' '),comValue)
- // 瑁呭椤圭洰妫�楠屽�艰浆鍖�
- if (this.PROJECT === '瑁呭鐢电紗' && ask[0].includes('RTS')) {
- let num2 = new this.$Big(comResult)
- comResult = num2.toExponential()
- }
- }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,
- })
- })
- 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('/')){
@@ -1949,12 +1856,10 @@
},
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) {
--
Gitblit v1.9.3