spring
2025-04-18 14f660981c502a71fd61c74667204ac293b1165a
src/views/business/inspectionTask/inspection.vue
@@ -23,7 +23,7 @@
          @click="openUnPassDialog('add')">不合格处理</el-button>
        <el-button size="small" type="primary" @click="sampleVisible = true; uploadSample();">样品切换</el-button>
        <!--        <el-button v-if="state == 1" size="small" type="primary" @click="taskVisible = true">任务切换</el-button>-->
        <el-button v-if="state == 1" size="small" type="primary" @click="viewManHour">提交</el-button>
        <el-button v-if="state == 1" size="small" type="primary" @click="addVerifyDia = true">提交</el-button>
        <!-- 复核 -->
        <el-button v-if="state == 2" size="medium" type="primary" @click="openAddCheck">通过</el-button>
        <el-button v-if="state == 2" size="medium" @click="upInsReview(0)">不通过</el-button>
@@ -91,9 +91,9 @@
          </el-radio-group>
        </div>
        <div style="display: flex; align-items: center">
          <el-button v-if="state == 1" size="small" type="primary" @click="openAddUnpass">新增不合格复测</el-button>
          <!-- <el-button v-if="state == 1" size="small" type="primary" @click="openAddUnpass">新增不合格复测</el-button>
          <el-button v-if="state == 1" size="small" type="primary" @click="unpassCheck">不合格复测</el-button>
          <el-button v-if="state > 1" size="small" type="primary" @click="viewUnpassCheck">查看不合格复测</el-button>
          <el-button v-if="state > 1" size="small" type="primary" @click="viewUnpassCheck">查看不合格复测</el-button> -->
          <span v-if="cableTagList.length > 0">&nbsp;&nbsp;电缆配置:</span>
          <el-select v-if="cableTagList.length > 0" v-model="currentTab" clearable placeholder="请选择" size="small"
            @change="(m) => handleChangeCableTag(currentSample.id, 0, 'cableTag', m)
@@ -138,6 +138,10 @@
                type="success">已检</el-tag>
            </el-option>
          </el-select>
          <!-- 网分仪数采国产/进口 -->
          <NetworkAnalyzerDataAcquisition :itemList="currentSample.insProduct" :param="param"
            :equipOptions="equipOptions"
            v-if="currentSample.insProduct && currentSample.insProduct.length > 0 && param" />
          <el-button :loading="dataAcquisitionLoading" v-if="state == 1" size="small" type="primary"
            @click="getDataAcquisitionDevice">数据采集</el-button>
          <el-button :type="dataAcquisitionEidtAble ? '' : 'primary'" v-if="state == 1" size="small"
@@ -147,8 +151,7 @@
      </div>
      <!-- 常规检验原始记录 -->
      <div id="nav" v-loading="tableLoading" class="center-box">
        <template v-if="
          tableLists.find((m) => m.templateId == currentTable)">
        <template v-if="tableLists.find((m) => m.templateId == currentTable)">
          <table v-for="(item, index) in tableList" :key="index + currentTable + currentSample.id" border="1"
            cellpadding="10" class="tables" id="myTable">
            <tbody>
@@ -167,8 +170,7 @@
                    };`">
                  <div :class="`content-h-${n.v.ht} content-v-${n.v.vt}`" :style="`width:${handleWidth(n)}px !important;min-height:${item.style.rowlen[n.r]
                    }px;`" class="content">
                    <template v-if="
                      n.v.ps != undefined &&
                    <template v-if="n.v.ps != undefined &&
                      typeof n.v.ps.value === 'string' &&
                      n.v.ps.value.includes('检验值') &&
                      state == 1
@@ -223,7 +225,7 @@
                      <el-select v-if="
                        (getInspectionValueType(n.i) == 2 ||
                          getInspectionValueType(n.i) == 5) &&
                        state == 1
                        state == 1 && (n.u != userId && n.u != undefined && n.u != '')
                      " v-model="n.v.v" class="table_input" @change="(m) =>
                        changeInput(
                          m,
@@ -254,8 +256,7 @@
                        <span v-else :style="`font-family:${n.v.ff} !important;`">待定</span>
                      </template>
                    </template>
                    <template v-else-if="
                      n.v.ps != undefined &&
                    <template v-else-if="n.v.ps != undefined &&
                      n.v.ps.value === '设备编码' &&
                      state == 1
                    ">
@@ -264,8 +265,9 @@
                    <template v-else-if="
                      n.v.ps != undefined && n.v.ps.value === '设备名称'
                    ">
                      <el-select v-model="n.v.v" :disabled="state > 1" class="table_input" filterable multiple
                        placeholder="设备" remote @change="(val) => changeEquip(val, n)"
                      <el-select v-model="n.v.v"
                        :disabled="state > 1 || (n.u != userId && n.u != undefined && n.u != '')" class="table_input"
                        filterable multiple placeholder="设备" remote @change="(val) => changeEquip(val, n)"
                        @visible-change="(e) => getEquipOptions(e, n.i)">
                        <el-option v-for="item in equipOptions" :key="item.value" :label="item.label"
                          :value="item.value">
@@ -273,8 +275,7 @@
                        </el-option>
                      </el-select>
                    </template>
                    <template v-else-if="
                      n.v.ps != undefined &&
                    <template v-else-if="n.v.ps != undefined &&
                      n.v.ps.value === '要求值' &&
                      state == 1
                    ">
@@ -298,8 +299,7 @@
                        toFixed(n.v.v, n.v.ct)
                      }}</span>
                    </template>
                    <template v-else-if="
                      n.v.ps != undefined && n.v.ps.value === '样品编号'
                    <template v-else-if="n.v.ps != undefined && n.v.ps.value === '样品编号'
                    ">
                      <div :title="currentSample.sampleCode" style="
                        display: flex;
@@ -315,15 +315,27 @@
                        <i class="el-icon-caret-right table_caret" style="width: 16px" @click="caretSample(1)"></i>
                      </div>
                    </template>
                    <template v-else-if="
                      n.v.ps != undefined && n.v.ps.value === '样品型号'
                    <template v-else-if="n.v.ps != undefined && n.v.ps.value === '样品型号'
                    ">
                      <div v-if="
                        currentSample.model !== undefined &&
                      <div v-if="currentSample.model !== undefined &&
                        currentSample.model !== null
                      " :style="`font-family:${n.v.ff} !important;`">
                        {{ currentSample.model }}
                      </div>
                    </template>
                    <template v-else-if="n.v.ps != undefined && n.v.ps.value === '起始时间'
                    ">
                      <span v-if="state > 1 || (n.u != userId && n.u != undefined && n.u != '')">{{ n.v.v }}</span>
                      <el-date-picker v-else v-model="n.v.v" type="datetime" placeholder="" format="yyyy-MM-dd HH:mm:ss"
                        value-format="yyyy-MM-dd HH:mm:ss" @change="(val) => changeTestTime(val, n, 'testStartTime')">
                      </el-date-picker>
                    </template>
                    <template v-else-if="n.v.ps != undefined && n.v.ps.value === '终止时间'
                    ">
                      <span v-if="state > 1 || (n.u != userId && n.u != undefined && n.u != '')">{{ n.v.v }}</span>
                      <el-date-picker v-else v-model="n.v.v" type="datetime" placeholder="" format="yyyy-MM-dd HH:mm:ss"
                        value-format="yyyy-MM-dd HH:mm:ss" @change="(val) => changeTestTime(val, n, 'testEndTime')">
                      </el-date-picker>
                    </template>
                    <span v-else :style="`font-family:${n.v.ff} !important;`" v-html="getValue(n.v)"></span>
                  </div>
@@ -344,8 +356,9 @@
    </div>
    <el-drawer :size="550" :visible.sync="sampleVisible" title="样品切换">
      <el-table v-if="sampleVisible" ref="productTable" :current-row-key="currentKey" :data="sampleProduct"
        :row-class-name="tableRowClassName" :row-key="(record) => record.index" border class="el-table" height="100%"
        highlight-current-row tooltip-effect="dark" @row-click="handleChangeSample">
        :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border :row-class-name="tableRowClassName"
        :row-key="(record) => record.index" border class="el-table" height="100%" highlight-current-row
        tooltip-effect="dark" @row-click="handleChangeSample">
        <el-table-column :key="Math.random()" align="center" label="序号" type="index" width="70px">
        </el-table-column>
        <el-table-column label="样品编号" min-width="100px" prop="sampleCode" show-overflow-tooltip></el-table-column>
@@ -507,7 +520,7 @@
    <InspectionWord v-if="unPassCheck" :inspectorList="inspectorList" :orderId="orderId"
      :rawMaterialTag="rawMaterialTag" :sonLaboratory="sonLaboratory" :state="state" :typeSource="typeSource"
      :unPassCheck="unPassCheck" @closeUnPassCheckDialog="closeUnPassCheckDialog" @refreshView="refreshView" />
    <purchase-verification v-if="purchaseDialog" ref="purchaseDialog" :orderId="orderId"
    <purchase-verification v-if="purchaseDialog" ref="purchaseDialog" :orderId="orderId" :workShopId="workShopId"
      :purchaseDialog="purchaseDialog" @resetPurchaseDialog="resetPurchaseDialog"></purchase-verification>
    <!--查看工时弹框-->
    <viewManHourDia ref="viewManHourDia" @submit="openAddVerifyDia"></viewManHourDia>
@@ -520,6 +533,7 @@
import UnPassDialog from "../unpass/components/unPassDialog.vue";
import AddUnPass from "../unpass/components/addUnPass.vue";
import InspectionWord from "./components/InspectionWord.vue";
import NetworkAnalyzerDataAcquisition from "./components/NetworkAnalyzerDataAcquisition.vue";
import PurchaseVerification from "../unpass/components/PurchaseVerification.vue";
import {
  doInsOrder,
@@ -540,8 +554,8 @@
  delfile,
  inspectionOrderDetailsTaskSwitching
} from "@/api/business/inspectionTask.js";
import InspectionWorker from '../../../InspectionWorker.worker';
import DataWorker from '../../../DataWorker.worker';
import InspectionWorker from '../../../workers/InspectionWorker.worker';
import DataWorker from '../../../workers/DataWorker.worker';
import html2canvas from "html2canvas";
import { mapGetters } from "vuex";
import viewManHourDia from "@/views/business/inspectionTask/components/viewManHourDia.vue";
@@ -554,10 +568,12 @@
    limsTable,
    UnPassDialog,
    InspectionWord,
    NetworkAnalyzerDataAcquisition,
  },
  data() {
    return {
      sonLaboratory: null,
      workShopId: null,
      orderId: null,
      state: null,
      inspectorList: null,
@@ -774,8 +790,9 @@
    },
  },
  created() {
    let { sonLaboratory, orderId, state, inspectorList, typeSource } =
    let { sonLaboratory, orderId, state, inspectorList, typeSource, workShopId } =
      this.$route.query;
    this.workShopId = workShopId
    this.sonLaboratory = sonLaboratory;
    this.orderId = orderId;
    this.id = this.orderId;
@@ -788,7 +805,6 @@
    this.getInsStateDicts();
    this.getComparisonList();
    this.getAuthorizedPerson();
    // this.getPower();
    this.startWorker();
    // this.getList0() // 任务切换
    this.scrollInit();
@@ -798,7 +814,6 @@
    this.getInsStateDicts();
    this.getComparisonList();
    this.getAuthorizedPerson();
    // this.getPower();
    this.startWorker();
    // this.getList0() // 任务切换
    this.scrollInit();
@@ -828,6 +843,8 @@
                equipValue: [],
                equipName: [],
                insResult: null,
                testEndTime: [],
                testStartTime: [],
              };
            });
            // 去重模板,返回有几个模板
@@ -955,7 +972,7 @@
        // 赋值当前样品列表
        this.sampleProduct = res.data.sampleProduct;
        this.currentSample = this.HaveJson(this.sampleProduct[0]);
        let insProduct = this.HaveJson(this.currentSample.insProduct);
        // let insProduct = this.HaveJson(this.currentSample.insProduct);
        // 温度、湿度赋值
        this.otherForm = {
          temperature: this.insOrder.temperature
@@ -982,6 +999,8 @@
            equipValue: [],
            equipName: [],
            insResult: null,
            testEndTime: [],
            testStartTime: [],
          };
        });
        if (this.currentSample.index == undefined)
@@ -1134,7 +1153,6 @@
      this.dataAcquisitionInfo = {};
      this.getData = [];
      for (let i in this.objectOrder(data)) {
        console.log("i---", i);
        let obj = {};
        if (i.includes("@")) {
          obj = {
@@ -1477,12 +1495,10 @@
    },
    // 保存湿度、温度数据
    subOtherForm(m, type) {
      console.log("m---", m);
      write({
        [type]: type === "remark" ? m : Number(m),
        id: this.insOrder.id,
      }).then((res) => {
        if (res.code == 201) return;
        this.$message.success("保存成功");
      });
    },
@@ -1501,34 +1517,6 @@
        a.download = "table.png";
        a.click();
      });
    },
    // 权限获取
    getPower() {
      let power = JSON.parse(sessionStorage.getItem("power"));
      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;
        }
        if (power[i].menuMethod == "delfile") {
          fileDel = true;
        }
        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;
    },
    uploadSample() {
      doInsOrder({
@@ -1555,7 +1543,7 @@
        repetitionTag: this.repetitionTag
      });
      this.tableLoading = false;
      if (res.data.length > 0) {
      if (res.data) {
        return res.data;
      }
    },
@@ -1580,6 +1568,8 @@
          equipValue: [],
          equipName: [],
          insResult: null,
          testEndTime: [],
          testStartTime: [],
        };
      });
      // 处理页面列表数据
@@ -1625,6 +1615,8 @@
              equipValue: [],
              equipName: [],
              insResult: null,
              testEndTime: [],
              testStartTime: [],
            };
          });
          this.getTableLists0(list);
@@ -1985,6 +1977,12 @@
              ) {
                a.template[b].v.v = id.product.methodS;
              }
              if (
                a.template[b].v.ps != undefined &&
                a.template[b].v.ps.value === "试验条件"
              ) {
                a.template[b].v.v = id.product.radius;
              }
            }
          }
        });
@@ -2024,6 +2022,7 @@
          (n) => n.v.ps != undefined && n.v.ps.value === "最终值"
        ); //最终值列表
        a.template.forEach((b) => {
          // console.log(444444, b)
          if (
            b.v.ps != undefined &&
            b.v.ps.value === "序号" &&
@@ -2046,6 +2045,10 @@
            this.$set(b.v, "v", "");
            // b.v.v = ''
            b.u = "";
            let obj = this.currentSample.insProduct.find(m => m.id == b.i)
            if (obj) {
              this.$set(b, "u", obj.checkUserId);
            }
            b.i && this.param[b.i] && this.param[b.i].insValue.push(b);
          }
          if (b.v.ps != undefined && b.v.ps.value === "计算值") {
@@ -2060,8 +2063,31 @@
          }
          if (b.v.ps != undefined && b.v.ps.value === "设备名称") {
            this.$set(b.v, "v", "");
            b.u = "";
            let obj = this.currentSample.insProduct.find(m => m.id == b.i)
            if (obj) {
              this.$set(b, "u", obj.checkUserId);
            }
            // b.v.v = ''
            b.i && this.param[b.i] && this.param[b.i].equipName.push(b);
          }
          if (b.v.ps != undefined && b.v.ps.value === "起始时间") {
            this.$set(b.v, "v", '');
            let obj = this.currentSample.insProduct.find(m => m.id == b.i)
            if (obj) {
              this.$set(b, "u", obj.checkUserId);
            }
            // this.param[b.i].testStartTime = []
            b.i && this.param[b.i] && this.param[b.i].testStartTime.push(b);
          }
          if (b.v.ps != undefined && b.v.ps.value === "终止时间") {
            this.$set(b.v, "v", "");
            let obj = this.currentSample.insProduct.find(m => m.id == b.i)
            if (obj) {
              this.$set(b, "u", obj.checkUserId);
            }
            // this.param[b.i].testEndTime = []
            b.i && this.param[b.i] && this.param[b.i].testEndTime.push(b);
          }
          if (b.v.ps != undefined && b.v.ps.value === "最终值") {
            // b.v.v = ''
@@ -2075,6 +2101,11 @@
            }
          }
          if (b.v.ps != undefined && b.v.ps.value === "结论") {
            b.u = "";
            let obj = this.currentSample.insProduct.find(m => m.id == b.i)
            if (obj) {
              this.$set(b, "u", obj.checkUserId);
            }
            if (
              b.i !== undefined &&
              this.param[b.i] &&
@@ -2197,6 +2228,24 @@
        } catch (e) {
          console.log("设备名称赋值----", e);
        }
        try {
          // 起始时间赋值
          let testStartTime = a.insProductResult.testStartTime ? JSON.parse(a.insProductResult.testStartTime) : []
          for (let i = 0; i < testStartTime.length; i++) {
            // 普通设备名称赋值
            this.param[a.id].testStartTime[i].v.v = testStartTime[i].v;
          }
        } catch (e) {
        }
        try {
          // 终止时间赋值
          let testEndTime = a.insProductResult.testEndTime ? JSON.parse(a.insProductResult.testEndTime) : []
          for (let i = 0; i < testEndTime.length; i++) {
            // 普通设备名称赋值
            this.param[a.id].testEndTime[i].v.v = testEndTime[i].v;
          }
        } catch (e) { }
        try {
          // 最终值赋值
          this.param[a.id].resValue.v.v = this.toFixed(
@@ -2394,6 +2443,46 @@
              }
            }
            break;
          // 赋值起始时间
          case "testEndTime":
            if (value && value.length > 0) {
              this.tableList[0].insProductResult[m] = [];
              value.forEach((a, i) => {
                let obj = {
                  v: a.v.v,
                };
                this.tableList[0].insProductResult[m].push(obj);
              });
              try {
                this.tableList[0].insProductResult[m] = JSON.stringify(
                  this.tableList[0].insProductResult[m]
                );
              } catch (error) {
                console.log(888, error);
              }
            }
            // this.tableList[0].insProductResult[m] = value ? value.v.v : "";
            break;
          // 赋值终止时间
          case "testStartTime":
            if (value && value.length > 0) {
              this.tableList[0].insProductResult[m] = [];
              value.forEach((a, i) => {
                let obj = {
                  v: a.v.v,
                };
                this.tableList[0].insProductResult[m].push(obj);
              });
              try {
                this.tableList[0].insProductResult[m] = JSON.stringify(
                  this.tableList[0].insProductResult[m]
                );
              } catch (error) {
                console.log(888, error);
              }
            }
            // this.tableList[0].insProductResult[m] = value ? value.v.v : "";
            break;
          // 赋值最终值
          case "resValue":
            this.tableList[0].lastValue = value ? value.v.v : "";
@@ -2590,7 +2679,7 @@
    viewManHour() {
      this.$refs.viewManHourDia.showDialog(this.id, 99);
    },
    openAddVerifyDia () {
    openAddVerifyDia() {
      this.addVerifyDia = true;
    },
    submit() {
@@ -2710,10 +2799,6 @@
            orderId: this.orderId,
            sonLaboratory: this.sonLaboratory
          }).then((res) => {
            if (res.code == 201) {
              this.$message.error("保存失败");
              return;
            }
            this.$message.success("已保存");
          });
          // 向 Worker 发送消息,开始处理逻辑
@@ -2780,8 +2865,13 @@
        console.log("changeEquip----", e);
      }
    },
    // 起始时间/终止时间保存
    changeTestTime(val, n, type) {
      this.$set(this.param[n.i][type][0].v, 'v', val)
      this.saveInsContext(n.i);
    },
    getAuthorizedPerson() {
      selectUserCondition({ type: 0 }).then((res) => {
      selectUserCondition({ type: 1 }).then((res) => {
        let data = [];
        res.data.forEach((a) => {
          data.push({
@@ -2846,6 +2936,8 @@
          equipValue: [],
          equipName: [],
          insResult: null,
          testEndTime: [],
          testStartTime: [],
        };
      });
      // 页面数据处理
@@ -2884,7 +2976,7 @@
    },
    handleDown(row) {
      downFile({ id: row.id }).then((res) => {
        this.$download.downloadFileFromUrl(res.data.fileUrl, row.fileName)
        this.$download.saveAs(res.data.fileUrl, row.fileName)
      })
        .catch((error) => { });
    },
@@ -3046,7 +3138,7 @@
}
.content-h-2 {
  justify-content: end;
  justify-content: flex-end;
}
.content-v-0 {