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: 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>
@@ -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))
@@ -1459,16 +1478,30 @@
                      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
                    }
                  }
                  // else if (c.v.ps != undefined && c.v.ps.value === '单位'&&this.PROJECT=='检测中心'){
                  //   if(count4==1||count4==2){
                  //     str += c.v.v?c.v.v:''
                  //     console.log('str',str,c)
                  //     count4 += 1
                  //   }
                  // }
                }
              })
              if (str != '') {
                console.log('str',str)
                let count2 = 0
                for (let i in this.currentSample.insProduct) {
                  // (this.currentSample
                  // .insProduct[i].unit?this.currentSample
                  // .insProduct[i].unit:'')
                  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,
@@ -1649,171 +1682,68 @@
        })
        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
                      }
        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
                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('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.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('/')){
@@ -1917,8 +1847,7 @@
          }
      },
      getValue(v){
        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/>'):'')
        // str.replace(new RegExp(search, 'g'), replace)
        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) {
@@ -1949,12 +1878,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) {
@@ -2169,7 +2096,8 @@
          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].equipName[i1].v,'v',this.equipOptions[i].label)
                // this.param[n.i].equipName[i1].v.v = this.equipOptions[i].label
              }
            }
          }
@@ -2228,6 +2156,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: [],