licp
2024-07-31 cc702f8d62c082c8f4b97b44e094fb8b8c7b97d8
src/components/do/b1-inspect-order-plan/Inspection.vue
@@ -230,9 +230,9 @@
<template>
  <div v-loading="loading" class="inspection">
    <el-row class="title">
      <el-col :span="12" style="padding-left: 20px;text-align: left;" v-once>检验单详情
      <el-col :span="12" style="padding-left: 20px;text-align: left;" >检验单详情
      </el-col>
      <el-col :span="12" style="text-align: right;" v-once>
      <el-col :span="12" style="text-align: right;">
        <!-- <el-button size="small" type="primary" @click="fiberOpticVisible=true" v-if="fiberOptic.length>0">光纤切换</el-button>
        <el-button size="small" type="primary" @click="fiberOpticTapeVisible=true" v-if="fiberOpticTape.length>0">光纤带切换</el-button>
        <el-button size="small" type="primary" @click="bushingVisible=true" v-if="bushing.length>0">套管切换</el-button> -->
@@ -317,12 +317,12 @@
              <span style="margin-left: 4px;">%</span>
            </el-form-item>
          </el-form>
          <el-button type="primary" size="small" v-if="dataAcquisitionEidt>0&&PROJECT=='检测中心'&&state==1" @click="getDataAcquisitionDevice" :loading="dataAcquisitionLoading">数据采集</el-button>
          <el-button :type="dataAcquisitionEidtAble?'':'primary'" size="small" v-if="dataAcquisitionEidt>0&&PROJECT=='检测中心'&&collected&&state==1" @click="dataAcquisitionEidtAble=!dataAcquisitionEidtAble">{{dataAcquisitionEidtAble?'关闭编辑':'编辑数采'}}</el-button>
          <el-button type="primary" size="small" v-if="(dataAcquisitionEidt>0||tableLists.find(m=>m.templateId==currentTable)&&tableLists.find(m=>m.templateId==currentTable).templateName=='温度循环检验原始记录'&&temDataAcquisition)&&PROJECT=='检测中心'&&state==1" @click="getDataAcquisitionDevice" :loading="dataAcquisitionLoading">数据采集</el-button>
          <el-button :type="dataAcquisitionEidtAble?'':'primary'" size="small" v-if="(dataAcquisitionEidt>0)&&PROJECT=='检测中心'&&collected&&state==1" @click="dataAcquisitionEidtAble=!dataAcquisitionEidtAble">{{dataAcquisitionEidtAble?'关闭编辑':'编辑数采'}}</el-button>
        </div>
      </div>
      <div class="center-box" id="nav" v-loading="tableLoading" v-if="!tableLists.find(m=>m.templateId==currentTable)||(tableLists.find(m=>m.templateId==currentTable).templateName!='温度循环检验原始记录'&&!tableLists.find(m=>m.templateId==currentTable).templateName.includes('热循环')&&!tableLists.find(m=>m.templateId==currentTable).templateName.includes('温升试验'))">
        <table border="1" class="tables" cellpadding="10" v-for="(item,index) in tableList" :key="index">
        <table border="1" class="tables" cellpadding="10" v-for="(item,index) in tableList" :key="index+currentTable+currentSample.id">
          <tbody>
            <tr v-for="(m,i) in item.arr" :key="i">
              <td :id='item.templateId+"-"+n.i+"-"+n.r+"-"+n.c' v-for="(n,j) in m" :key="j"
@@ -376,6 +376,7 @@
                  <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='要求值' && state==1">
                    <span :style="`font-family:${n.v.ff} !important;`">{{getTell(n.i)}}</span>
                  </template>
                  <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='计算值' && state==1"><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==='最终值' && state==1">
                    <!-- <el-input class="table_input" type="textarea"
                      :disabled="getInspectionItemType(n.i) == 1 || (n.u != userId && n.u != undefined && n.u != '')"
@@ -424,7 +425,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;`" v-html="getValue(n.v)" v-once></span>
                  <span v-else :style="`font-family:${n.v.ff} !important;`" v-html="getValue(n.v)" ></span>
                </div>
              </td>
            </tr>
@@ -504,20 +505,20 @@
          <el-table-column
            label="序号"
            type="index"
            width="60"
            width="59"
            align="center"
            >
          </el-table-column>
          <el-table-column
            prop="bushColor"
            label="管色标"
            width="80"
            width="75"
            align="center">
          </el-table-column>
          <el-table-column
            prop="code"
            label="光纤带编号"
            width="110"
            width="105"
            align="center">
          </el-table-column>
          <el-table-column
@@ -531,7 +532,7 @@
              prop="value0"
              label="外端"
              align="center"
              width="80" :key="(new Date())+'1'">
              width="100" :key="(new Date().getTime())+'1234567'">
              <template slot="header">
                {{ '外端'+(index+1) }}
              </template>
@@ -543,7 +544,7 @@
              prop="value1"
              label="内端"
              align="center"
              width="80" :key="(new Date())+'2'">
              width="100" :key="(new Date().getTime())+'23333333'">
              <template slot="header">
                {{ '内端'+(index+1) }}
              </template>
@@ -554,7 +555,7 @@
            <el-table-column
              prop="comValue"
              align="center"
              min-width="150" :key="(new Date())+'3'">
              min-width="150" :key="(new Date().getTime())+'364654654'">
              <template slot="header">
                {{ '衰减系数'+item }}
              </template>
@@ -567,7 +568,7 @@
              label="衰减差"
              align="center"
              v-if="wareForm.inspectionItemSubclass!='20(常温)'"
              min-width="90" :key="(new Date())+'4'">
              min-width="90" :key="(new Date().getTime())+'434634634634'">
              <template slot="header">
                {{ '衰减差'+(index+1) }}
              </template>
@@ -579,7 +580,7 @@
              prop="insResult"
              label="结论"
              align="center"
              min-width="70" v-if="wareForm.inspectionItemSubclass!='20(常温)'" :key="(new Date())+'5'">
              min-width="70" v-if="wareForm.inspectionItemSubclass!='20(常温)'" :key="(new Date().getTime())+'53457689809808-'">
              <template slot="header">
                {{ '结论'+(index+1) }}
              </template>
@@ -959,6 +960,7 @@
          inspectionItemClass:null,
        },
        thermalCyclingLoading:false,
        temDataAcquisition:false,
      }
    },
    computed: {
@@ -1049,11 +1051,48 @@
      },
      currentTable(val1, val0) {
        if (val0 != null && val1 != val0) {
          this.tableLists.forEach((m, i) => {
          this.tableLists.forEach(async (m, i) => {
            if (m.templateId == val1) {
              this.tableList = null;
              this.tableList = [(this.tableLists[i])];
              this.handleTableData()
              let list = await this.getCurrentProduct(this.currentSample.id,0)
              this.currentSample.insProduct = this.HaveJson(list)
              // console.log(this.currentSample)
              this.currentSample.insProduct.forEach(a => {
                this.param[a.id] = {
                  insValue: [],
                  comValue: [],
                  resValue: null,
                  equipValue: [],
                  equipName: [],
                  insResult: null
                }
              })
              this.getReportModel(this.currentSample.id)
              const mySet1 = new Set();
              this.tableLists = this.currentSample.insProduct.filter(m => {
                let num0 = mySet1.size;
                if (m.templateId != null&&m.template != null) {
                  try {
                    mySet1.add(JSON.stringify({
                      template: m.template,
                      templateId: m.templateId
                    }))
                  } catch (error) {
                    console.log(222,error);
                  }
                }
                let num1 = mySet1.size;
                if (num1 > num0) {
                  return m
                }
              });
              if (this.tableLists && this.tableLists.length > 0) {
                this.tableList = null;
                this.tableList = this.tableLists.filter(m => m.templateId == val1)
                this.handleTableData()
              }
              // this.$delete(this.tableList,0)
              // this.$set(this.tableList, 0, m)
              // this.handleTableData()
            }
          })
        }
@@ -1121,80 +1160,63 @@
    methods: {
      // 数据采集
      getDataAcquisitionDevice(){
        this.dataAcquisitionLoading = true
        this.$axios.get(this.$api.deviceScope.dataCollection+'?entrustCode='+this.insOrder.entrustCode+'&sampleCode='+this.currentSample.sampleCode + '&id=' + this.currentSample.id).then(res=>{
          this.dataAcquisitionLoading = false
          if(res.code!=200){
            return
        if(this.tableLists.find(m=>m.templateId==this.currentTable)&&this.tableLists.find(m=>m.templateId==this.currentTable).templateName=='温度循环检验原始记录'){
          // 温度循环检验原始记录----数采----PK8000
          let temperature = this.wareForm.inspectionItemSubclass;
          if(typeof temperature == 'string'&&temperature.includes('(常温)')){
            temperature = `20℃(常温)`
          }else{
            temperature = temperature + '℃'
          }
          this.dataAcquisitionInfo = res.data
          try {
            // 向 Worker 发送消息,开始处理逻辑
            this.worker0.postMessage(JSON.stringify({
              dataAcquisitionInfo: this.dataAcquisitionInfo,
              list:this.tableList[0].arr
            }));
          } catch (error) {
            console.log(1111,error);
          }
          // 监听 Worker 返回的结果
          this.worker0.onmessage = (event) => {
            let result = JSON.parse(event.data);
            if(result.method=='changeInput'){
              let {list,n} = result.value
              this.$set(this.tableList[0],'arr',list)
              this.changeInput('',`${this.currentSample.insProduct[0].templateId}-${n.r}-${n.c}-${n.i}`,n)
          this.dataAcquisitionLoading = true
          this.$axios.post(this.$api.deviceScope.temDataAcquisition,{
            entrustCode:this.insOrder.entrustCode,
            sampleCode:this.currentSample.sampleCode,
            model:this.wareForm0.model,
            cycles:this.wareForm.inspectionItem,
            temperature:temperature,
          }, {
          headers: {
            'Content-Type': 'application/json'
          },
          noQs:true
        }).then(res=>{
            this.dataAcquisitionLoading = false
            if(res.code!=200){
              return
            }
          };
          // let list = this.tableList[0].arr
          // list.forEach((item,index)=>{
          //   let num = 0;
          //   let str = ''
          //   item.forEach(m=>{
          //     if(m.v.ps&&(m.v.ps.value=='检验子项'||m.v.ps.value=='检验项')){
          //       if(m.v.ps&&m.v.ps.value=='检验项'){
          //         if(num==0){
          //           str = m.v.v+','
          //           num++
          //         }
          //       }
          //       if(m.v.ps&&m.v.ps.value=='检验子项'){
          //         if(num==1){
          //           str = str+m.v.v
          //         }
          //       }
          //       if(this.dataAcquisitionInfo[str]){
          //         let num = 0;
          //         list[index].forEach(n=>{
          //           if(n.v.ps&&n.v.ps.value&&typeof n.v.ps.value == 'string'&&n.v.ps.value.includes('检验值')){
          //             num++
          //           }
          //         })
          //         list[index].forEach((n,i)=>{
          //           if(n.v.ps&&n.v.ps.value&&typeof n.v.ps.value == 'string'&&n.v.ps.value.includes('检验值')){
          //             let arr = n.v.ps.value.split('值')
          //             if(arr[1] ==this.dataAcquisitionInfo.frequency){
          //               setTimeout(()=>{
          //                 this.$delete(n.v,'v')
          //                 this.$set(n.v,'v',this.dataAcquisitionInfo[str])
          //                 this.changeInput('',`${this.currentSample.insProduct[0].templateId}-${n.r}-${n.c}-${n.i}`,n)
          //               },1000)
          //             }else if(Number(this.dataAcquisitionInfo.frequency)>num){
          //               if(n.v.ps.value.includes(num)){
          //                 setTimeout(()=>{
          //                   this.$delete(n.v,'v')
          //                   this.$set(n.v,'v',this.dataAcquisitionInfo[str])
          //                   this.changeInput('',`${this.currentSample.insProduct[0].templateId}-${n.r}-${n.c}-${n.i}`,n)
          //                 },1000)
          //               }
          //             }
          //           }
          //         })
          //       }
          //     }
          //   })
          // })
        })
            // console.log(res.data)
            this.wareFormChange()
          })
        }else{
          // 一般的数据采集
          this.dataAcquisitionLoading = true
          this.$axios.get(this.$api.deviceScope.dataCollection+'?entrustCode='+this.insOrder.entrustCode+'&sampleCode='+this.currentSample.sampleCode + '&id=' + this.currentSample.id).then(res=>{
            this.dataAcquisitionLoading = false
            if(res.code!=200){
              return
            }
            this.dataAcquisitionInfo = res.data
            try {
              // 向 Worker 发送消息,开始处理逻辑
              this.worker0.postMessage(JSON.stringify({
                dataAcquisitionInfo: this.dataAcquisitionInfo,
                list:this.tableList[0].arr
              }));
            } catch (error) {
              console.log(1111,error);
            }
            // 监听 Worker 返回的结果
            this.worker0.onmessage = (event) => {
              let result = JSON.parse(event.data);
              if(result.method=='changeInput'){
                let {list,n} = result.value
                this.$set(this.tableList[0],'arr',list)
                this.changeInput('',`${this.currentSample.insProduct[0].templateId}-${n.r}-${n.c}-${n.i}`,n)
              }
            };
          })
        }
      },
      // 多线程
      startWorker() {
@@ -1221,7 +1243,11 @@
      },
      // 温度循环---开始
      changeItem(row){
        if(row.value0&&row.value1){
        if(row.value0&&!row.value1){
          this.$set(row,'comValue',Number(row.value0).toFixed(3))
        }else if(!row.value0&&row.value1){
          this.$set(row,'comValue',Number(row.value1).toFixed(3))
        }else if(row.value0&&row.value1){
          this.$set(row,'comValue',((Number(row.value0)+Number(row.value1))/2).toFixed(3))
        }else{
          return
@@ -1391,8 +1417,10 @@
          let arr1 = []
          this.wareLength = [];
          for(let i=0;i<arr.length;i++){
            arr1.push([])
            this.wareLength.push(arr[i][0].inspectionItemClass)
          }
          for(let i=0;i<arr[0].length;i++){
            arr1.push([])
          }
          arr.forEach((item,index)=>{
            item.forEach((m,i)=>{
@@ -1703,6 +1731,7 @@
        let fileDel = false
        let fileAdd = false
        let collected = false
        let temDataAcquisition = false
        for (var i = 0; i < power.length; i++) {
               if (power[i].menuMethod == 'uploadFile') {
                  fileAdd = true
@@ -1713,12 +1742,16 @@
          if (power[i].menuMethod == 'isItAllowedToModifyTheCollectedValues') {
                  collected = true
               }
          if (power[i].menuMethod == 'temDataAcquisition') {
                  temDataAcquisition = true
               }
            }
        if (!fileDel) {
               this.componentData0.do.splice(1, 1)
            }
        this.fileAdd = fileAdd
        this.collected = collected
        this.temDataAcquisition = temDataAcquisition
      },
      async getCurrentProduct(id,type){
        this.tableLoading = true;
@@ -2368,7 +2401,8 @@
            comparisonList:this.comparisonList,
            currentSample:this.currentSample,
            PROJECT:this.PROJECT,
            param:this.param
            param:this.param,
            currentTable:this.currentTable
          }));
        } catch (error) {
          console.log(444,error);
@@ -2714,6 +2748,14 @@
          this.$message.error("请指定复核人员")
          return
        }
        if(!this.otherForm.humidity){
          this.$message.error("请输入湿度")
          return
        }
        if(!this.otherForm.temperature){
          this.$message.error("请输入温度")
          return
        }
        this.addVerifyDia = false
        this.submitLoading = true;
        this.$axios.post(this.$api.insOrderPlan.checkSubmitPlan, {
@@ -2726,8 +2768,7 @@
                orderId: this.orderId,
                laboratory: this.sonLaboratory,
                verifyUser: this.verifyUser,
                entrustCode: this.insOrder.entrustCode,
                sampleCode: this.currentSample.sampleCode
                entrustCode: this.insOrder.entrustCode
              }).then(res => {
                if (res.code === 200) {
                  this.$message.success("操作成功")
@@ -2780,7 +2821,7 @@
        return
      },
      saveInsContext() {
        // console.log(1111,this.param)
        console.log(1111,this.param)
        try {
          if(this.param){
            this.$axios.post(this.$api.insOrderPlan.saveInsContext, {
@@ -2796,7 +2837,8 @@
            this.worker.postMessage(JSON.stringify({
              type: 'saveData',
              tableList:this.tableList,
              param:this.param
              param:this.param,
              currentTable:this.currentTable
            }));
          }
        }catch (error) {
@@ -2804,11 +2846,25 @@
        }
      },
      changeEquip(val, n) {
        this.tableList[0].arr.forEach((item,index)=>{
          item.forEach((m,i)=>{
            if(this.param[m.i]){
              this.param[m.i].state = 1
            }
          })
        })
        for (let i in this.param) {
          if(this.param[i].state!=1){
            delete this.param[i]
          }
        }
        for (let i in this.equipOptions) {
          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.$delete(this.param[n.i].equipValue[i1].v,'v')
                this.$set(this.param[n.i].equipValue[i1].v,'v',val)
                this.$delete(this.param[n.i].equipName[i1].v,'v')
                this.$set(this.param[n.i].equipName[i1].v,'v',this.equipOptions[i].label)
                this.param[n.i].equipValue[i1].isItADataAcquisitionDevice = this.equipOptions[i].isItADataAcquisitionDevice
              }
@@ -2831,11 +2887,14 @@
      getAuthorizedPerson() {
        this.$axios.get(this.$api.user.getUserMenu).then(res => {
          let data = []
          let userName = JSON.parse(localStorage.getItem("user")).name;
          res.data.forEach(a => {
            data.push({
            if(a.name !== userName) {
              data.push({
              label: a.name,
              value: a.id
            })
            }
          })
          this.personList = data
        })