zouyu
2026-04-22 3ee153c34cd734bdb5845b60e6a207884d3b0838
src/views/business/inspectionTask/inspection.vue
@@ -1,203 +1,453 @@
<template>
  <div v-loading="loading" class="inspection" style="background-color: rgb(245, 247, 251);">
  <div
    v-loading="loading"
    class="inspection"
    style="background-color: rgb(245, 247, 251)"
  >
    <el-row class="title">
      <el-col v-if="insOrder.ifsOrderType!=='02wg'" :span="8" style="text-align: left;">
        <el-form :inline="true" :model="otherForm" class="form-inline" label-width="50px"
          style="text-align: right; padding-top: 0; display: inline">
      <el-col
        v-if="insOrder.ifsOrderType !== '02wg'"
        :span="8"
        style="text-align: left"
      >
        <el-form
          :inline="true"
          :model="otherForm"
          class="form-inline"
          label-width="50px"
          style="text-align: right; padding-top: 0; display: inline"
        >
          <el-form-item label="温度:" style="margin-bottom: 0">
            <el-input v-model="otherForm.temperature" :disabled="state > 1" placeholder="" size="small"
              style="width: 90px; line-height: 60px" @change="(m) => subOtherForm(m, 'temperature')"></el-input>
            <el-input
              v-model="otherForm.temperature"
              :disabled="state > 1"
              placeholder=""
              size="small"
              style="width: 90px; line-height: 60px"
              @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 v-model="otherForm.humidity" :disabled="state > 1" placeholder="" size="small"
              style="width: 90px; line-height: 60px" @change="(m) => subOtherForm(m, 'humidity')"></el-input>
            <el-input
              v-model="otherForm.humidity"
              :disabled="state > 1"
              placeholder=""
              size="small"
              style="width: 90px; line-height: 60px"
              @change="(m) => subOtherForm(m, 'humidity')"
            ></el-input>
            <span style="margin-left: 4px">%</span>
          </el-form-item>
        </el-form>
      </el-col>
      <el-col :span="insOrder.ifsOrderType!=='02wg'?16:24" style="text-align: right">
        <el-button v-if="insOrder.ifsOrderType && insOrder.ifsOrderType==='02wg'" size="small" type="primary" @click="showMaterialPropsDialog">IFS物料属性更新</el-button>
        <el-button size="small" type="primary" @click="refreshView">刷新</el-button>
        <el-button v-if="typeSource == 1" size="small" type="primary" @click="openPurchase">进货验证</el-button>
        <el-button v-if="state == 1 && [0,1].includes(Number(typeSource))" size="small" type="primary"
          @click="openUnPassDialog('add')">不合格处理</el-button>
        <el-button size="small" type="primary" @click="sampleVisible = true; uploadSample();">样品切换</el-button>
      <el-col
        :span="insOrder.ifsOrderType !== '02wg' ? 16 : 24"
        style="text-align: right"
      >
        <el-button
          v-if="insOrder.ifsOrderType && insOrder.ifsOrderType === '02wg'"
          size="small"
          type="primary"
          @click="showMaterialPropsDialog"
          >IFS物料属性更新</el-button
        >
        <el-button size="small" type="primary" @click="refreshView"
          >刷新</el-button
        >
        <el-button
          v-if="typeSource == 1"
          size="small"
          type="primary"
          @click="openPurchase"
          >进货验证</el-button
        >
        <el-button
          v-if="state == 1 && [0, 1].includes(Number(typeSource))"
          size="small"
          type="primary"
          @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="addVerifyDia = true">提交</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>
        <el-button type="primary" size="small" @click="exportTable('myTable')">下载原始记录</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
        >
        <el-button type="primary" size="small" @click="exportTable('myTable')"
          >下载原始记录</el-button
        >
        <el-button size="small" @click="goback">返回</el-button>
      </el-col>
    </el-row>
    <div class="search">
<!--      <el-form :inline="true" :model="searchForm" class="form-inline" label-position="right" label-width="100px">-->
<!--        <el-form-item label="委托编号:">-->
<!--          <el-input v-model="insOrder.entrustCode" clearable disabled placeholder="请输入" size="small"></el-input>-->
<!--        </el-form-item>-->
<!--        <el-form-item label="样品编号:">-->
<!--          <el-tooltip :content="currentSample.sampleCode" :disabled="!currentSample.sampleCode">-->
<!--            <el-input v-model="currentSample.sampleCode" clearable disabled placeholder="请输入" size="small"></el-input>-->
<!--          </el-tooltip>-->
<!--        </el-form-item>-->
<!--        <el-form-item label="样品名称:">-->
<!--          <el-input v-model="currentSample.sample" clearable disabled placeholder="请输入" size="small"></el-input>-->
<!--        </el-form-item>-->
<!--        <el-form-item label="样品数量:">-->
<!--          <el-input v-model="sampleProduct.length" clearable disabled placeholder="请输入" size="small"></el-input>-->
<!--        </el-form-item>-->
<!--        <el-form-item label="样品型号:">-->
<!--          <el-input v-model="currentSample.model" clearable disabled placeholder="请输入" size="small"></el-input>-->
<!--        </el-form-item>-->
<!--        <el-form-item label="下发时间:">-->
<!--          <el-input v-model="insOrder.sendTime" clearable disabled placeholder="请输入" size="small"></el-input>-->
<!--        </el-form-item>-->
<!--        <el-form-item label="紧急程度:">-->
<!--          <el-input v-model="insOrder.typeName" clearable disabled placeholder="请输入" size="small"></el-input>-->
<!--        </el-form-item>-->
<!--        <el-form-item label="约定时间:">-->
<!--          <el-input v-model="insOrder.appointed" clearable disabled placeholder="请输入" size="small"></el-input>-->
<!--        </el-form-item>-->
<!--        <el-form-item v-if="typeSource === 1" label="抽检数量:">-->
<!--          <el-input v-model="insOrder.testQuantity" clearable disabled placeholder="请输入" size="small"></el-input>-->
<!--        </el-form-item>-->
<!--        <el-form-item v-if="typeSource === 1" label="厂家密度:">-->
<!--          <el-input v-model="supplierDensity" clearable disabled placeholder="请输入" size="small"></el-input>-->
<!--        </el-form-item>-->
<!--        <el-form-item label="当前样品位数:" label-width="120px">-->
<!--          <el-tag v-if="currentKey">{{ `NO.${currentKey}` }}</el-tag>-->
<!--        </el-form-item>-->
<!--        <el-form-item label="备注:">-->
<!--          &lt;!&ndash;          <span style="color:red">{{ insOrder.remark?insOrder.remark:'-' }}</span>&ndash;&gt;-->
<!--          <el-input v-model="insOrder.remark" :disabled="state != 1" clearable placeholder="请输入" size="small"-->
<!--            @blur="subOtherForm(insOrder.remark, 'remark')"></el-input>-->
<!--          &lt;!&ndash; <el-tag v-if="currentKey">{{ insOrder.remark }}</el-tag> &ndash;&gt;-->
<!--        </el-form-item>-->
<!--        <template v-if="insOrder.isSplitOrder && insOrder.isSplitOrder===1">-->
<!--          <el-form-item label="外护颜色:">-->
<!--            <el-input v-model="insOrder.outerColor" clearable disabled placeholder="" size="small"></el-input>-->
<!--          </el-form-item>-->
<!--          <el-form-item label="绝缘颜色:">-->
<!--            <el-input v-model="insOrder.insulationColor" clearable disabled placeholder="" size="small"></el-input>-->
<!--          </el-form-item>-->
<!--          <el-form-item label="盘号:">-->
<!--            <el-input v-model="insOrder.drumNo" clearable disabled placeholder="" size="small"></el-input>-->
<!--          </el-form-item>-->
<!--        </template>-->
<!--      </el-form>-->
<!--      -->
      <!--      <el-form :inline="true" :model="searchForm" class="form-inline" label-position="right" label-width="100px">-->
      <!--        <el-form-item label="委托编号:">-->
      <!--          <el-input v-model="insOrder.entrustCode" clearable disabled placeholder="请输入" size="small"></el-input>-->
      <!--        </el-form-item>-->
      <!--        <el-form-item label="样品编号:">-->
      <!--          <el-tooltip :content="currentSample.sampleCode" :disabled="!currentSample.sampleCode">-->
      <!--            <el-input v-model="currentSample.sampleCode" clearable disabled placeholder="请输入" size="small"></el-input>-->
      <!--          </el-tooltip>-->
      <!--        </el-form-item>-->
      <!--        <el-form-item label="样品名称:">-->
      <!--          <el-input v-model="currentSample.sample" clearable disabled placeholder="请输入" size="small"></el-input>-->
      <!--        </el-form-item>-->
      <!--        <el-form-item label="样品数量:">-->
      <!--          <el-input v-model="sampleProduct.length" clearable disabled placeholder="请输入" size="small"></el-input>-->
      <!--        </el-form-item>-->
      <!--        <el-form-item label="样品型号:">-->
      <!--          <el-input v-model="currentSample.model" clearable disabled placeholder="请输入" size="small"></el-input>-->
      <!--        </el-form-item>-->
      <!--        <el-form-item label="下发时间:">-->
      <!--          <el-input v-model="insOrder.sendTime" clearable disabled placeholder="请输入" size="small"></el-input>-->
      <!--        </el-form-item>-->
      <!--        <el-form-item label="紧急程度:">-->
      <!--          <el-input v-model="insOrder.typeName" clearable disabled placeholder="请输入" size="small"></el-input>-->
      <!--        </el-form-item>-->
      <!--        <el-form-item label="约定时间:">-->
      <!--          <el-input v-model="insOrder.appointed" clearable disabled placeholder="请输入" size="small"></el-input>-->
      <!--        </el-form-item>-->
      <!--        <el-form-item v-if="typeSource === 1" label="抽检数量:">-->
      <!--          <el-input v-model="insOrder.testQuantity" clearable disabled placeholder="请输入" size="small"></el-input>-->
      <!--        </el-form-item>-->
      <!--        <el-form-item v-if="typeSource === 1" label="厂家密度:">-->
      <!--          <el-input v-model="supplierDensity" clearable disabled placeholder="请输入" size="small"></el-input>-->
      <!--        </el-form-item>-->
      <!--        <el-form-item label="当前样品位数:" label-width="120px">-->
      <!--          <el-tag v-if="currentKey">{{ `NO.${currentKey}` }}</el-tag>-->
      <!--        </el-form-item>-->
      <!--        <el-form-item label="备注:">-->
      <!--          &lt;!&ndash;          <span style="color:red">{{ insOrder.remark?insOrder.remark:'-' }}</span>&ndash;&gt;-->
      <!--          <el-input v-model="insOrder.remark" :disabled="state != 1" clearable placeholder="请输入" size="small"-->
      <!--            @blur="subOtherForm(insOrder.remark, 'remark')"></el-input>-->
      <!--          &lt;!&ndash; <el-tag v-if="currentKey">{{ insOrder.remark }}</el-tag> &ndash;&gt;-->
      <!--        </el-form-item>-->
      <!--        <template v-if="insOrder.isSplitOrder && insOrder.isSplitOrder===1">-->
      <!--          <el-form-item label="外护颜色:">-->
      <!--            <el-input v-model="insOrder.outerColor" clearable disabled placeholder="" size="small"></el-input>-->
      <!--          </el-form-item>-->
      <!--          <el-form-item label="绝缘颜色:">-->
      <!--            <el-input v-model="insOrder.insulationColor" clearable disabled placeholder="" size="small"></el-input>-->
      <!--          </el-form-item>-->
      <!--          <el-form-item label="盘号:">-->
      <!--            <el-input v-model="insOrder.drumNo" clearable disabled placeholder="" size="small"></el-input>-->
      <!--          </el-form-item>-->
      <!--        </template>-->
      <!--      </el-form>-->
      <!--      -->
      <el-descriptions title="检验单概况" :column="4" border>
        <template v-if="insOrder.ifsOrderType">
          <el-descriptions-item label="零件号">{{insOrder.partNo}}</el-descriptions-item>
          <el-descriptions-item label="零件名称">{{insOrder.partDetail}}</el-descriptions-item>
          <el-descriptions-item label="批次号">{{ insOrder.lotBatchNo }}</el-descriptions-item>
          <el-descriptions-item label="样品型号" >{{currentSample.model}}</el-descriptions-item>
          <el-descriptions-item label="抽检数量">{{insOrder.testQuantity}}</el-descriptions-item>
          <el-descriptions-item label="厂家密度">{{supplierDensity}}</el-descriptions-item>
          <template v-if="insOrder.ifsOrderType && insOrder.ifsOrderType==='02wg'">
            <el-descriptions-item label="载具编号">{{insOrder.drumNo}}</el-descriptions-item>
            <el-descriptions-item label="起始米标(km)">{{insOrder.startMeterMark}}</el-descriptions-item>
            <el-descriptions-item label="截止米标(km)">{{insOrder.endMeterMark}}</el-descriptions-item>
            <el-descriptions-item label="入库长度(km)">{{calcInbondLength(insOrder.startMeterMark,insOrder.endMeterMark)}}</el-descriptions-item>
            <el-descriptions-item label="绝缘颜色">{{insOrder.insulationColor}}</el-descriptions-item>
            <el-descriptions-item label="外护颜色">{{insOrder.outerColor}}</el-descriptions-item>
            <el-descriptions-item label="印字信息">{{insOrder.letteringInfo}}</el-descriptions-item>
          <el-descriptions-item label="零件号">{{
            insOrder.partNo
          }}</el-descriptions-item>
          <el-descriptions-item label="零件名称">{{
            insOrder.partDetail
          }}</el-descriptions-item>
          <el-descriptions-item label="批次号">{{
            insOrder.lotBatchNo
          }}</el-descriptions-item>
          <el-descriptions-item label="样品型号">{{
            currentSample.model
          }}</el-descriptions-item>
          <el-descriptions-item label="抽检数量">{{
            insOrder.testQuantity
          }}</el-descriptions-item>
          <el-descriptions-item label="厂家密度">{{
            supplierDensity
          }}</el-descriptions-item>
          <template
            v-if="insOrder.ifsOrderType && insOrder.ifsOrderType === '02wg'"
          >
            <el-descriptions-item label="载具编号">{{
              insOrder.drumNo
            }}</el-descriptions-item>
            <el-descriptions-item label="起始米标(km)">{{
              insOrder.startMeterMark
            }}</el-descriptions-item>
            <el-descriptions-item label="截止米标(km)">{{
              insOrder.endMeterMark
            }}</el-descriptions-item>
            <el-descriptions-item label="入库长度(km)">{{
              calcInbondLength(insOrder.startMeterMark, insOrder.endMeterMark)
            }}</el-descriptions-item>
            <el-descriptions-item label="绝缘颜色">{{
              insOrder.insulationColor
            }}</el-descriptions-item>
            <el-descriptions-item label="外护颜色">{{
              insOrder.outerColor
            }}</el-descriptions-item>
            <el-descriptions-item label="印字信息">{{
              insOrder.letteringInfo
            }}</el-descriptions-item>
          </template>
        </template>
        <template v-else>
          <el-descriptions-item label="委托编号">{{ insOrder.entrustCode }}</el-descriptions-item>
          <el-descriptions-item label="样品编号">{{ currentSample.sampleCode }}</el-descriptions-item>
          <el-descriptions-item label="样品名称">{{ currentSample.sample }}</el-descriptions-item>
          <el-descriptions-item label="样品数量">{{ sampleProduct.length }}</el-descriptions-item>
          <el-descriptions-item label="样品型号">{{ currentSample.model }}</el-descriptions-item>
          <el-descriptions-item label="下发时间">{{ insOrder.sendTime }}</el-descriptions-item>
          <el-descriptions-item label="紧急程度">{{ insOrder.typeName }}</el-descriptions-item>
          <el-descriptions-item label="约定时间">{{ insOrder.appointed }}</el-descriptions-item>
          <el-descriptions-item label="委托编号">{{
            insOrder.entrustCode
          }}</el-descriptions-item>
          <el-descriptions-item label="样品编号">{{
            currentSample.sampleCode
          }}</el-descriptions-item>
          <el-descriptions-item label="样品名称">{{
            currentSample.sample
          }}</el-descriptions-item>
          <el-descriptions-item label="样品数量">{{
            sampleProduct.length
          }}</el-descriptions-item>
          <el-descriptions-item label="样品型号">{{
            currentSample.model
          }}</el-descriptions-item>
          <el-descriptions-item label="下发时间">{{
            insOrder.sendTime
          }}</el-descriptions-item>
          <el-descriptions-item label="紧急程度">{{
            insOrder.typeName
          }}</el-descriptions-item>
          <el-descriptions-item label="约定时间">{{
            insOrder.appointed
          }}</el-descriptions-item>
        </template>
        <el-descriptions-item label="当前样品位数"><el-tag v-if="currentKey">{{ `NO.${currentKey}` }}</el-tag></el-descriptions-item>
        <el-descriptions-item label="当前样品位数"
          ><el-tag v-if="currentKey">{{
            `NO.${currentKey}`
          }}</el-tag></el-descriptions-item
        >
        <el-descriptions-item label="备注">
          <el-input v-model="insOrder.remark" :disabled="state != 1" clearable placeholder="请输入" size="small"
                    @blur="subOtherForm(insOrder.remark, 'remark')"></el-input>
          <el-input
            v-model="insOrder.remark"
            :disabled="state != 1"
            clearable
            placeholder="请输入"
            size="small"
            @blur="subOtherForm(insOrder.remark, 'remark')"
          ></el-input>
        </el-descriptions-item>
      </el-descriptions>
    </div>
    <div class="center">
      <div class="search" style="
      <div
        class="search"
        style="
          text-align: left;
          display: flex;
          align-items: center;
          justify-content: space-between;
        ">
        "
      >
        <div style="display: flex; align-items: center">
          <span v-if="tableList.length > 0">检验模板:</span>
          <el-radio-group v-model="currentTable" size="small">
            <el-radio-button v-for="(item, index) in tableLists" :key="index" :label="item.templateId" size="small">{{
              item.templateName }}</el-radio-button>
            <el-radio-button
              v-for="(item, index) in tableLists"
              :key="index"
              :label="item.templateId"
              size="small"
              >{{ item.templateName }}</el-radio-button
            >
          </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="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="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
          >
          <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)
              " @focus="getCableTag(currentSample.id)">
            <el-option v-for="item in cableTagList" :key="item.cableTag" :label="item.cableTag" :value="item.cableTag">
          <el-select
            v-if="cableTagList.length > 0"
            v-model="currentTab"
            clearable
            placeholder="请选择"
            size="small"
            @change="
              (m) => handleChangeCableTag(currentSample.id, 0, 'cableTag', m)
            "
            @focus="getCableTag(currentSample.id)"
          >
            <el-option
              v-for="item in cableTagList"
              :key="item.cableTag"
              :label="item.cableTag"
              :value="item.cableTag"
            >
              <span style="float: left">{{ item.cableTag }}</span>
              <el-tag v-if="item.status == 0" size="small" style="float: right; margin-top: 5px"
                type="danger">未检</el-tag>
              <el-tag v-if="item.status == 1" size="small" style="float: right; margin-top: 5px"
                type="warning">检验中</el-tag>
              <el-tag v-if="item.status == 2" size="small" style="float: right; margin-top: 5px"
                type="success">已检</el-tag>
              <el-tag
                v-if="item.status == 0"
                size="small"
                style="float: right; margin-top: 5px"
                type="danger"
                >未检</el-tag
              >
              <el-tag
                v-if="item.status == 1"
                size="small"
                style="float: right; margin-top: 5px"
                type="warning"
                >检验中</el-tag
              >
              <el-tag
                v-if="item.status == 2"
                size="small"
                style="float: right; margin-top: 5px"
                type="success"
                >已检</el-tag
              >
            </el-option>
          </el-select>
          <span v-if="repetitionTagList.length > 0">&nbsp;&nbsp;重复检验项:</span>
          <el-select v-if="repetitionTagList.length > 0" v-model="repetitionTag" clearable placeholder="请选择"
            size="small" @change="(m) =>
              handleChangeCableTag(currentSample.id, 0, 'repetitionTag', m)
              " @focus="getRepetitionTag(currentSample.id)">
            <el-option v-for="item in repetitionTagList" :key="item.repetitionTag" :label="item.radius"
              :value="item.repetitionTag">
          <span v-if="repetitionTagList.length > 0"
            >&nbsp;&nbsp;重复检验项:</span
          >
          <el-select
            v-if="repetitionTagList.length > 0"
            v-model="repetitionTag"
            clearable
            placeholder="请选择"
            size="small"
            @change="
              (m) =>
                handleChangeCableTag(currentSample.id, 0, 'repetitionTag', m)
            "
            @focus="getRepetitionTag(currentSample.id)"
          >
            <el-option
              v-for="item in repetitionTagList"
              :key="item.repetitionTag"
              :label="item.radius"
              :value="item.repetitionTag"
            >
              <span style="float: left">{{ item.radius }}</span>
              <el-tag v-if="item.status == 0" size="small" style="float: right; margin-top: 5px"
                type="danger">未检</el-tag>
              <el-tag v-if="item.status == 1" size="small" style="float: right; margin-top: 5px"
                type="warning">检验中</el-tag>
              <el-tag v-if="item.status == 2" size="small" style="float: right; margin-top: 5px"
                type="success">已检</el-tag>
              <el-tag
                v-if="item.status == 0"
                size="small"
                style="float: right; margin-top: 5px"
                type="danger"
                >未检</el-tag
              >
              <el-tag
                v-if="item.status == 1"
                size="small"
                style="float: right; margin-top: 5px"
                type="warning"
                >检验中</el-tag
              >
              <el-tag
                v-if="item.status == 2"
                size="small"
                style="float: right; margin-top: 5px"
                type="success"
                >已检</el-tag
              >
            </el-option>
          </el-select>
          <span v-if="typeSource == '1'">&nbsp;&nbsp;待检验数量:</span>
          <el-select v-if="typeSource == '1'" v-model="rawMaterialTag" placeholder="请选择" size="small" @change="(m) => handleChangeCableTag(currentSample.id, 4, 'cableTag', m)
            " @focus="getRawMaterialTag(currentSample.id)">
            <el-option v-for="item in rawMaterialTagList" :key="item.rawMaterialTag" :label="item.rawMaterialTag"
              :value="item.rawMaterialTag">
          <el-select
            v-if="typeSource == '1'"
            v-model="rawMaterialTag"
            placeholder="请选择"
            size="small"
            @change="
              (m) => handleChangeCableTag(currentSample.id, 4, 'cableTag', m)
            "
            @focus="getRawMaterialTag(currentSample.id)"
          >
            <el-option
              v-for="item in rawMaterialTagList"
              :key="item.rawMaterialTag"
              :label="item.rawMaterialTag"
              :value="item.rawMaterialTag"
            >
              <span style="float: left">{{ item.rawMaterialTag }}</span>
              <el-tag v-if="item.status == 0" size="small" style="float: right; margin-top: 5px"
                type="danger">未检</el-tag>
              <el-tag v-if="item.status == 1" size="small" style="float: right; margin-top: 5px"
                type="warning">检验中</el-tag>
              <el-tag v-if="item.status == 2" size="small" style="float: right; margin-top: 5px"
                type="success">已检</el-tag>
              <el-tag
                v-if="item.status == 0"
                size="small"
                style="float: right; margin-top: 5px"
                type="danger"
                >未检</el-tag
              >
              <el-tag
                v-if="item.status == 1"
                size="small"
                style="float: right; margin-top: 5px"
                type="warning"
                >检验中</el-tag
              >
              <el-tag
                v-if="item.status == 2"
                size="small"
                style="float: right; margin-top: 5px"
                type="success"
                >已检</el-tag
              >
            </el-option>
          </el-select>
          <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"
            @click="dataAcquisitionEidtAble = !dataAcquisitionEidtAble">{{ dataAcquisitionEidtAble ? "关闭编辑" : "编辑数采"
            }}</el-button>
          <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"
            @click="dataAcquisitionEidtAble = !dataAcquisitionEidtAble"
            >{{ dataAcquisitionEidtAble ? "关闭编辑" : "编辑数采" }}</el-button
          >
        </div>
      </div>
      <!-- 常规检验原始记录 -->
      <div id="nav" v-loading="tableLoading" class="center-box">
        <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">
        <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>
              <tr style="white-space: nowrap">
                委托编号:{{
@@ -205,51 +455,86 @@
                }}
              </tr>
              <tr v-for="(m, i) in item.arr" :key="i">
                <td v-for="(n, j) in m" v-if="n.v.mc == undefined || Object.keys(n.v.mc).length === 4"
                  :id="item.templateId + '-' + n.i + '-' + n.r + '-' + n.c" :key="j"
                  :colspan="n.v.mc && n.v.mc.cs ? n.v.mc.cs : 1" :rowspan="n.v.mc && n.v.mc.rs ? n.v.mc.rs : 1" :style="`background:${n.v.bg ? n.v.bg : ''};color:${n.v.fc
                    };font-size:${n.v.fs}px;width:${handleWidth(
                      n
                    )}px !important;height:${item.style.rowlen[n.r]}px;font-wight:${n.v.bl ? 'bold' : ''
                    };`">
                  <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 &&
                      typeof n.v.ps.value === 'string' &&
                      n.v.ps.value.includes('检验值') &&
                      state == 1
                    ">
                      <el-input v-if="getInspectionValueType(n.i) == 1"
                        :key="'abc-' + '000' + index + '000' + i + '000' + j" v-model="n.v.v" :disabled="(getInspectionItemType(n.i) == 1 &&
                          !dataAcquisitionEidtAble) ||
                <td
                  v-for="(n, j) in m"
                  v-if="n.v.mc == undefined || Object.keys(n.v.mc).length === 4"
                  :id="item.templateId + '-' + n.i + '-' + n.r + '-' + n.c"
                  :key="j"
                  :colspan="n.v.mc && n.v.mc.cs ? n.v.mc.cs : 1"
                  :rowspan="n.v.mc && n.v.mc.rs ? n.v.mc.rs : 1"
                  :style="`background:${n.v.bg ? n.v.bg : ''};color:${
                    n.v.fc
                  };font-size:${n.v.fs}px;width:${handleWidth(
                    n
                  )}px !important;height:${
                    item.style.rowlen[n.r]
                  }px;font-wight:${n.v.bl ? 'bold' : ''};`"
                >
                  <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 &&
                        typeof n.v.ps.value === 'string' &&
                        n.v.ps.value.includes('检验值') &&
                        state == 1
                      "
                    >
                      <el-input
                        v-if="getInspectionValueType(n.i) == 1"
                        :key="'abc-' + '000' + index + '000' + i + '000' + j"
                        v-model="n.v.v"
                        :disabled="
                          (getInspectionItemType(n.i) == 1 &&
                            !dataAcquisitionEidtAble) ||
                          (n.u != userId && n.u != undefined && n.u != '')
                          " class="table_input" @change="(m) =>
                        "
                        class="table_input"
                        @change="
                          (m) =>
                            changeInput(
                              m,
                              `${item.templateId}-${n.r}-${n.c}-${n.i}`,
                              n,
                              'getDataType'
                            )
                            " @input="handleInput(n)" @mousewheel.native.prevent @keydown.enter="
                              changeInput(
                                '',
                                `${item.templateId}-${n.r}-${n.c}-${n.i}`,
                                n,
                                'getDataType'
                              )
                              ">
                      </el-input>
                      <el-input v-else-if="getInspectionValueType(n.i) == 2" v-model="n.v.v" :disabled="getInspectionItemType(n.i) == 1 ||
                        (n.u != userId && n.u != undefined && n.u != '')
                        " class="table_input" type="textarea" @change="(m) =>
                        "
                        @input="handleInput(n)"
                        @mousewheel.native.prevent
                        @keydown.enter="
                          changeInput(
                            m,
                            '',
                            `${item.templateId}-${n.r}-${n.c}-${n.i}`,
                            n,
                            'getDataType'
                          )
                          " />
                        "
                      >
                      </el-input>
                      <el-input
                        v-else-if="getInspectionValueType(n.i) == 2"
                        v-model="n.v.v"
                        :disabled="
                          getInspectionItemType(n.i) == 1 ||
                          (n.u != userId && n.u != undefined && n.u != '')
                        "
                        class="table_input"
                        type="textarea"
                        @change="
                          (m) =>
                            changeInput(
                              m,
                              `${item.templateId}-${n.r}-${n.c}-${n.i}`,
                              n,
                              'getDataType'
                            )
                        "
                      />
                      <!-- <el-select v-else-if="getInspectionValueType(n.i) == 5" v-model="n.v.v" :disabled="state > 1 ||
                      getInspectionItemType(n.i) == 1 ||
                      (n.u != userId && n.u != undefined && n.u != '')
@@ -263,116 +548,204 @@
                        " @visible-change="(e) => getDic(e, n.i)">
                      <el-option v-for="(e, i) in enumList" :key="i" :label="e.label" :value="e.value"></el-option>
                    </el-select> -->
                      <span v-else-if="getInspectionValueType(n.i) == 4"
                        :style="`font-family:${n.v.ff} !important;`">/</span>
                      <span
                        v-else-if="getInspectionValueType(n.i) == 4"
                        :style="`font-family:${n.v.ff} !important;`"
                        >/</span
                      >
                    </template>
                    <template v-else-if="n.v.ps != undefined && n.v.ps.value === '结论'">
                      <el-select v-if="
                        (getInspectionValueType(n.i) == 2 ||
                          getInspectionValueType(n.i) == 5) &&
                        state == 1
                      " v-model="n.v.v" class="table_input" @change="(m) =>
                        changeInput(
                          m,
                          `${item.templateId}-${n.r}-${n.c}-${n.i}`,
                          n,
                          'getDataType',
                          'changeSelect'
                        )
                        ">
                    <template
                      v-else-if="n.v.ps != undefined && n.v.ps.value === '结论'"
                    >
                      <el-select
                        v-if="
                          (getInspectionValueType(n.i) == 2 ||
                            getInspectionValueType(n.i) == 5) &&
                          state == 1
                        "
                        v-model="n.v.v"
                        class="table_input"
                        @change="
                          (m) =>
                            changeInput(
                              m,
                              `${item.templateId}-${n.r}-${n.c}-${n.i}`,
                              n,
                              'getDataType',
                              'changeSelect'
                            )
                        "
                      >
                        <el-option :value="1" label="合格"></el-option>
                        <el-option :value="0" label="不合格"></el-option>
                        <el-option :value="3" label="不判定"></el-option>
                        <el-option :value="2" label="待定"></el-option>
                      </el-select>
                      <template v-if="state > 1">
                        <span v-if="n.v.v === 1" :style="`font-family:${n.v.ff} !important;color: green;`">合格</span>
                        <span v-else-if="n.v.v === 0" :style="`font-family:${n.v.ff} !important;color: red;`">不合格</span>
                        <span v-else-if="n.v.v === 3"
                          :style="`font-family:${n.v.ff} !important;color: #3A7BFA;`">不判定</span>
                        <span v-else :style="`font-family:${n.v.ff} !important;`">待定</span>
                        <span
                          v-if="n.v.v === 1"
                          :style="`font-family:${n.v.ff} !important;color: green;`"
                          >合格</span
                        >
                        <span
                          v-else-if="n.v.v === 0"
                          :style="`font-family:${n.v.ff} !important;color: red;`"
                          >不合格</span
                        >
                        <span
                          v-else-if="n.v.v === 3"
                          :style="`font-family:${n.v.ff} !important;color: #3A7BFA;`"
                          >不判定</span
                        >
                        <span
                          v-else
                          :style="`font-family:${n.v.ff} !important;`"
                          >待定</span
                        >
                      </template>
                      <template v-if="getInspectionValueType(n.i) != 2 &&
                        state == 1">
                        <span v-if="n.v.v === 1" :style="`font-family:${n.v.ff} !important;color: green;`">合格</span>
                        <span v-else-if="n.v.v === 0" :style="`font-family:${n.v.ff} !important;color: red;`">不合格</span>
                        <span v-else-if="n.v.v === 3"
                          :style="`font-family:${n.v.ff} !important;color: #3A7BFA;`">不判定</span>
                        <span v-else :style="`font-family:${n.v.ff} !important;`">待定</span>
                      <template
                        v-if="getInspectionValueType(n.i) != 2 && state == 1"
                      >
                        <span
                          v-if="n.v.v === 1"
                          :style="`font-family:${n.v.ff} !important;color: green;`"
                          >合格</span
                        >
                        <span
                          v-else-if="n.v.v === 0"
                          :style="`font-family:${n.v.ff} !important;color: red;`"
                          >不合格</span
                        >
                        <span
                          v-else-if="n.v.v === 3"
                          :style="`font-family:${n.v.ff} !important;color: #3A7BFA;`"
                          >不判定</span
                        >
                        <span
                          v-else
                          :style="`font-family:${n.v.ff} !important;`"
                          >待定</span
                        >
                      </template>
                    </template>
                    <template v-else-if="
                      n.v.ps != undefined &&
                      n.v.ps.value === '设备编码' &&
                      state == 1
                    ">
                    <template
                      v-else-if="
                        n.v.ps != undefined &&
                        n.v.ps.value === '设备编码' &&
                        state == 1
                      "
                    >
                      <span>{{ n.v.v }}</span>
                    </template>
                    <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)"
                        @visible-change="(e) => getEquipOptions(e, n.i)">
                        <el-option v-for="item in equipOptions" :key="item.value" :label="item.label"
                          :value="item.value">
                    <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)"
                        @visible-change="(e) => getEquipOptions(e, n.i)"
                      >
                        <el-option
                          v-for="item in equipOptions"
                          :key="item.value"
                          :label="item.label"
                          :value="item.value"
                        >
                          {{ item.label + "--" + item.value }}
                        </el-option>
                      </el-select>
                    </template>
                    <template v-else-if="
                      n.v.ps != undefined &&
                      n.v.ps.value === '要求值' &&
                      state == 1
                    ">
                    <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
                    ">
                    <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
                      "
                    >
                      <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 === '样品编号'
                    ">
                      <div :title="currentSample.sampleCode" style="
                        display: flex;
                        flex-wrap: nowrap;
                        align-items: center;
                        width: 100%;
                      ">
                        <i class="el-icon-caret-left table_caret" style="width: 16px" @click="caretSample(-1)"></i>
                    <template
                      v-else-if="
                        n.v.ps != undefined && n.v.ps.value === '样品编号'
                      "
                    >
                      <div
                        :title="currentSample.sampleCode"
                        style="
                          display: flex;
                          flex-wrap: nowrap;
                          align-items: center;
                          width: 100%;
                        "
                      >
                        <i
                          class="el-icon-caret-left table_caret"
                          style="width: 16px"
                          @click="caretSample(-1)"
                        ></i>
                        <div
                          :style="`font-family:${n.v.ff} !important;overflow: hidden;white-space: nowrap;width: calc(100% - 32px);`">
                          :style="`font-family:${n.v.ff} !important;overflow: hidden;white-space: nowrap;width: calc(100% - 32px);`"
                        >
                          {{ currentSample.sampleCode }}
                        </div>
                        <i class="el-icon-caret-right table_caret" style="width: 16px" @click="caretSample(1)"></i>
                        <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 === '样品型号'
                    ">
                      <div v-if="
                        currentSample.model !== undefined &&
                        currentSample.model !== null
                      " :style="`font-family:${n.v.ff} !important;`">
                    <template
                      v-else-if="
                        n.v.ps != undefined && n.v.ps.value === '样品型号'
                      "
                    >
                      <div
                        v-if="
                          currentSample.model !== undefined &&
                          currentSample.model !== null
                        "
                        :style="`font-family:${n.v.ff} !important;`"
                      >
                        {{ currentSample.model }}
                      </div>
                    </template>
                    <span v-else :style="`font-family:${n.v.ff} !important;`" v-html="getValue(n.v)"></span>
                    <span
                      v-else
                      :style="`font-family:${n.v.ff} !important;`"
                      v-html="getValue(n.v)"
                    ></span>
                  </div>
                </td>
              </tr>
@@ -380,54 +753,147 @@
          </table>
        </template>
      </div>
      <el-upload v-if="state == 1" ref="upload" :action="action" :before-upload="beforeUpload" :data="{
        orderId: id,
      }" :headers="uploadHeader" :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false"
      <el-upload
        v-if="state == 1"
        ref="upload"
        :action="action"
        :before-upload="beforeUpload"
        :data="{
          orderId: id,
        }"
        :headers="uploadHeader"
        :on-error="onError"
        :on-success="handleSuccessUp"
        :show-file-list="false"
        accept=".jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar"
        style="width: 80px !important;margin-top: 10px;">
        <el-button v-if="state == 1" size="small" type="primary">附件上传</el-button></el-upload>
      <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading"
        :height="'calc(100vh - 290px)'" @pagination="pagination" style="height: 100%; margin-top: 16px"></lims-table>
        style="width: 80px !important; margin-top: 10px"
      >
        <el-button v-if="state == 1" size="small" type="primary"
          >附件上传</el-button
        ></el-upload
      >
      <lims-table
        :tableData="tableData"
        :column="column"
        :page="page"
        :tableLoading="tableLoading"
        :height="'calc(100vh - 290px)'"
        @pagination="pagination"
        style="height: 100%; margin-top: 16px"
      ></lims-table>
    </div>
    <el-drawer :size="550" :visible.sync="sampleVisible" title="样品切换">
      <el-table v-if="sampleVisible" ref="productTable" :current-row-key="currentKey" :data="sampleProduct"
                :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
        v-if="sampleVisible"
        ref="productTable"
        :current-row-key="currentKey"
        :data="sampleProduct"
        :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>
        <el-table-column label="样品型号" min-width="100px" prop="model" show-overflow-tooltip></el-table-column>
        <el-table-column label="检测状态" prop="insState" show-overflow-tooltip width="100px">
        <el-table-column
          label="样品编号"
          min-width="100px"
          prop="sampleCode"
          show-overflow-tooltip
        ></el-table-column>
        <el-table-column
          label="样品型号"
          min-width="100px"
          prop="model"
          show-overflow-tooltip
        ></el-table-column>
        <el-table-column
          label="检测状态"
          prop="insState"
          show-overflow-tooltip
          width="100px"
        >
          <template slot-scope="scope">
            <el-tag v-for="(item, i) in typeList" v-if="item.value == scope.row.insState" :key="i" :type="item.type"
              size="medium" style="margin-right: 5px">{{ item.label }}</el-tag>
            <el-tag
              v-for="(item, i) in typeList"
              v-if="item.value == scope.row.insState"
              :key="i"
              :type="item.type"
              size="medium"
              style="margin-right: 5px"
              >{{ item.label }}</el-tag
            >
          </template>
        </el-table-column>
        <el-table-column align="center" label="是否留样" prop="isLeave" show-overflow-tooltip width="95px">
        <el-table-column
          align="center"
          label="是否留样"
          prop="isLeave"
          show-overflow-tooltip
          width="95px"
        >
          <template slot-scope="scope">
            <span>{{ scope.row.isLeave == 0 ? "否" : "是" }}</span>
          </template>
        </el-table-column>
        <!-- 检验单会有一个是否有配套样品字段控制显示 -->
        <el-table-column v-if="insOrder.mating > 0" label="配套样品型号" min-width="130px" prop="joinModel"
          show-overflow-tooltip></el-table-column>
        <el-table-column v-if="insOrder.mating > 0" label="配套样品名称" min-width="130px" prop="joinName"
          show-overflow-tooltip></el-table-column>
        <el-table-column v-if="insOrder.mating > 0" label="配套样品数量" min-width="130px" prop="joinNum"
          show-overflow-tooltip></el-table-column>
        <el-table-column
          v-if="insOrder.mating > 0"
          label="配套样品型号"
          min-width="130px"
          prop="joinModel"
          show-overflow-tooltip
        ></el-table-column>
        <el-table-column
          v-if="insOrder.mating > 0"
          label="配套样品名称"
          min-width="130px"
          prop="joinName"
          show-overflow-tooltip
        ></el-table-column>
        <el-table-column
          v-if="insOrder.mating > 0"
          label="配套样品数量"
          min-width="130px"
          prop="joinNum"
          show-overflow-tooltip
        ></el-table-column>
      </el-table>
    </el-drawer>
    <el-drawer :size="500" :visible.sync="taskVisible" title="任务切换">
      <lims-table :tableData="tableData0" :column="column0" :page="page0" :tableLoading="tableLoading0"
        :height="'calc(100vh - 90px)'" :currentChange="handleChangeTask"></lims-table>
      <lims-table
        :tableData="tableData0"
        :column="column0"
        :page="page0"
        :tableLoading="tableLoading0"
        :height="'calc(100vh - 90px)'"
        :currentChange="handleChangeTask"
      ></lims-table>
    </el-drawer>
    <el-dialog
      title="哑铃片设备试样类型"
      :visible.sync="dialogVisible"
      :before-close="handleDialogCancel"
      width="30%">
      <el-select v-model="deviceDbTableName" placeholder="请选择试样类型" style="width:100%" size="small">
      width="30%"
    >
      <el-select
        v-model="deviceDbTableName"
        placeholder="请选择试样类型"
        style="width: 100%"
        size="small"
      >
        <el-option label="片状" value="TestData"></el-option>
        <el-option label="管状" value="TestData2"></el-option>
      </el-select>
@@ -441,33 +907,67 @@
          <span class="required-span">* </span>不通过的理由:
        </div>
        <div class="search_input" style="width: 100%">
          <el-input v-model="noReason" :autosize="{ minRows: 4 }" clearable size="small" type="textarea"></el-input>
          <el-input
            v-model="noReason"
            :autosize="{ minRows: 4 }"
            clearable
            size="small"
            type="textarea"
          ></el-input>
        </div>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="reviewDia = false">取 消</el-button>
        <el-button :loading="reviewLoading" type="primary" @click="handleReviewDia">确 定</el-button>
        <el-button
          :loading="reviewLoading"
          type="primary"
          @click="handleReviewDia"
          >确 定</el-button
        >
      </span>
    </el-dialog>
    <el-dialog :visible.sync="addVerifyDia" title="指定复核人员" width="400px">
      <div class="body" style="display: flex; padding: 10px; align-items: center">
      <div
        class="body"
        style="display: flex; padding: 10px; align-items: center"
      >
        <div class="search_label" style="width: 150px">
          <span class="required-span">*</span>复核人
        </div>
        <div class="search_input" style="width: 100%">
          <el-select v-model="verifyUser" clearable filterable placeholder="请选择" size="small" style="width: 100%">
            <el-option v-for="(item, i) in personList" :key="i" :label="item.label" :value="item.value">
          <el-select
            v-model="verifyUser"
            clearable
            filterable
            placeholder="请选择"
            size="small"
            style="width: 100%"
          >
            <el-option
              v-for="(item, i) in personList"
              :key="i"
              :label="item.label"
              :value="item.value"
            >
            </el-option>
          </el-select>
        </div>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="addVerifyDia = false">取 消</el-button>
        <el-button :loading="submitLoading" type="primary" @click="submit()">确 定</el-button>
        <el-button :loading="submitLoading" type="primary" @click="submit()"
          >确 定</el-button
        >
      </span>
    </el-dialog>
    <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false"
      :visible.sync="dataGetDia" title="数据采集" width="80%">
    <el-dialog
      :close-on-click-modal="false"
      :close-on-press-escape="false"
      :show-close="false"
      :visible.sync="dataGetDia"
      title="数据采集"
      width="80%"
    >
      <div>
        <table border="1" cellpadding="10" class="thermal-table">
          <tr>
@@ -484,150 +984,296 @@
              <td style="text-align: left">
                <!-- 添加容器 div -->
                <div class="data-collection-items">
                <el-select v-if="item.child[0].isShowSelect" v-model="item.child[0].getDataIndex1"
                  :multiple-limit="item.child[0].maxNum" clearable filterable multiple placeholder="请选择"
                  @change="setData(item)">
                  <el-option v-for="(subItem, subIndex) in item.child[0].arr" :key="index + '-' + subIndex" :filter-method="filterMethod"
                    :label="subIndex + 1 + '^' + subItem.result" :value="subIndex + '^' + subItem.result">
                    <span>{{
                      "序号:" +
                      (subIndex + 1) +
                      "," +
                      "结果:" +
                      subItem.result +
                      "," +
                      "厚度:" +
                      subItem.thickness +
                      "," +
                      "时间:" +
                      subItem.mergedDateTime
                    }}</span>
                  </el-option>
                </el-select>
                <el-checkbox-group v-if="!item.child[0].isShowSelect" v-model="item.child[0].getDataIndex1"
                  :max="item.child[0].maxNum">
                  <el-checkbox v-for="(n, j) in item.child[0].arr" :key="index + '-' + j + 'aaaaaa'" :label="j + '^' + n"
                  @change="handleGroupSelect(item.child[0], j, item.child[0].arr.length)" >{{ n }}</el-checkbox>
                </el-checkbox-group>
              </div>
            </td>
          </tr>
          <tr v-for="(m, i) in item.child" v-show="i > 0" :key="index + '-' + i + 'bbbbbbbbbbbbbb'">
            <td>{{ m.name }}</td>
            <td style="text-align: left">
              <!-- 添加容器 div -->
              <div class="data-collection-items">
                <el-select v-if="m.isShowSelect" v-model="m.getDataIndex1" :multiple-limit="m.maxNum" clearable
                  filterable multiple placeholder="请选择">
                  <el-option v-for="(subItem, index1) in m.arr" :key="index + '-' + index1 + 'cccccccc'"
                    :label="index1 + 1 + '^' + subItem.result" :value="index1 + '^' + subItem.result">
                    <span>{{
                      "序号:" +
                      (index1 + 1) +
                      "," +
                      "结果:" +
                      subItem.result +
                      "," +
                      "厚度:" +
                      subItem.thickness +
                      "," +
                      "时间:" +
                      subItem.mergedDateTime
                    }}</span>
                  </el-option>
                </el-select>
                <el-checkbox-group v-if="!m.isShowSelect" v-model="m.getDataIndex1" :max="m.maxNum">
                  <el-checkbox v-for="(n, j) in m.arr" :key="index + '-' + j + 'dddddddd'" :label="j + '^' + n"
                  @change="handleGroupSelect(m, j, m.arr.length)" >{{ n }}</el-checkbox>
                </el-checkbox-group>
              </div>
            </td>
          </tr>
        </template>
      </table>
    </div>
    <span slot="footer" class="dialog-footer">
      <el-button @click="dataGetDia = false">取 消</el-button>
      <el-button :loading="getDataIndexLoading" type="primary" @click="submitDataGet()">确 定</el-button>
    </span>
  </el-dialog>
                  <el-select
                    v-if="item.child[0].isShowSelect"
                    v-model="item.child[0].getDataIndex1"
                    :multiple-limit="item.child[0].maxNum"
                    clearable
                    filterable
                    multiple
                    placeholder="请选择"
                    @change="setData(item)"
                  >
                    <el-option
                      v-for="(subItem, subIndex) in item.child[0].arr"
                      :key="index + '-' + subIndex"
                      :filter-method="filterMethod"
                      :label="subIndex + 1 + '^' + subItem.result"
                      :value="subIndex + '^' + subItem.result"
                    >
                      <span>{{
                        "序号:" +
                        (subIndex + 1) +
                        "," +
                        "结果:" +
                        subItem.result +
                        "," +
                        "厚度:" +
                        subItem.thickness +
                        "," +
                        "时间:" +
                        subItem.mergedDateTime
                      }}</span>
                    </el-option>
                  </el-select>
                  <el-checkbox-group
                    v-if="!item.child[0].isShowSelect"
                    v-model="item.child[0].getDataIndex1"
                    :max="item.child[0].maxNum"
                  >
                    <el-checkbox
                      v-for="(n, j) in item.child[0].arr"
                      :key="index + '-' + j + 'aaaaaa'"
                      :label="j + '^' + n"
                      @change="
                        handleGroupSelect(
                          item.child[0],
                          j,
                          item.child[0].arr.length
                        )
                      "
                      >{{ n }}</el-checkbox
                    >
                  </el-checkbox-group>
                </div>
              </td>
            </tr>
            <tr
              v-for="(m, i) in item.child"
              v-show="i > 0"
              :key="index + '-' + i + 'bbbbbbbbbbbbbb'"
            >
              <td>{{ m.name }}</td>
              <td style="text-align: left">
                <!-- 添加容器 div -->
                <div class="data-collection-items">
                  <el-select
                    v-if="m.isShowSelect"
                    v-model="m.getDataIndex1"
                    :multiple-limit="m.maxNum"
                    clearable
                    filterable
                    multiple
                    placeholder="请选择"
                  >
                    <el-option
                      v-for="(subItem, index1) in m.arr"
                      :key="index + '-' + index1 + 'cccccccc'"
                      :label="index1 + 1 + '^' + subItem.result"
                      :value="index1 + '^' + subItem.result"
                    >
                      <span>{{
                        "序号:" +
                        (index1 + 1) +
                        "," +
                        "结果:" +
                        subItem.result +
                        "," +
                        "厚度:" +
                        subItem.thickness +
                        "," +
                        "时间:" +
                        subItem.mergedDateTime
                      }}</span>
                    </el-option>
                  </el-select>
                  <el-checkbox-group
                    v-if="!m.isShowSelect"
                    v-model="m.getDataIndex1"
                    :max="m.maxNum"
                  >
                    <el-checkbox
                      v-for="(n, j) in m.arr"
                      :key="index + '-' + j + 'dddddddd'"
                      :label="j + '^' + n"
                      @change="handleGroupSelect(m, j, m.arr.length)"
                      >{{ n }}</el-checkbox
                    >
                  </el-checkbox-group>
                </div>
              </td>
            </tr>
          </template>
        </table>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="dataGetDia = false">取 消</el-button>
        <el-button
          :loading="getDataIndexLoading"
          type="primary"
          @click="submitDataGet()"
          >确 定</el-button
        >
      </span>
    </el-dialog>
    <el-dialog :close-on-click-modal="false" :visible.sync="addCheck" title="指定报告审核人员" width="400px"
      @close="closeAddVerifyDia">
      <div class="body" style="display: flex; padding: 10px; align-items: center">
    <el-dialog
      :close-on-click-modal="false"
      :visible.sync="addCheck"
      title="指定报告审核人员"
      width="400px"
      @close="closeAddVerifyDia"
    >
      <div
        class="body"
        style="display: flex; padding: 10px; align-items: center"
      >
        <div class="search_label" style="width: 150px">
          <span class="required-span">*</span>审核人:
        </div>
        <div class="search_input" style="width: 100%">
          <el-select v-model="checkUser" clearable filterable placeholder="请选择" size="small" style="width: 100%">
            <el-option v-for="(item, i) in personList" :key="i" :label="item.label" :value="item.value">
          <el-select
            v-model="checkUser"
            clearable
            filterable
            placeholder="请选择"
            size="small"
            style="width: 100%"
          >
            <el-option
              v-for="(item, i) in personList"
              :key="i"
              :label="item.label"
              :value="item.value"
            >
            </el-option>
          </el-select>
        </div>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="closeAddVerifyDia">取 消</el-button>
        <el-button :loading="reviewLoading" type="primary" @click="upInsReview(1)">确 定</el-button>
        <el-button
          :loading="reviewLoading"
          type="primary"
          @click="upInsReview(1)"
          >确 定</el-button
        >
      </span>
    </el-dialog>
    <!-- 添加不合格复测弹框-->
    <add-un-pass v-if="addUnPassDialog" ref="addUnPassDialog" :addUnPassDialog="addUnPassDialog"
      @resetAddUnPass="resetAddUnPass"></add-un-pass>
    <add-un-pass
      v-if="addUnPassDialog"
      ref="addUnPassDialog"
      :addUnPassDialog="addUnPassDialog"
      @resetAddUnPass="resetAddUnPass"
    ></add-un-pass>
    <!-- 不合格处理弹框-->
    <UnPassDialog v-if="unPassDialog" ref="unPassDialog" :orderId="orderId" :unPassDialog="unPassDialog"
      @resetForm="resetForm"></UnPassDialog>
    <UnPassDialog
      v-if="unPassDialog"
      ref="unPassDialog"
      :orderId="orderId"
      :unPassDialog="unPassDialog"
      @resetForm="resetForm"
    ></UnPassDialog>
    <!-- 不合格复测弹框-->
    <InspectionWord v-if="unPassCheck" :inspectorList="inspectorList" :orderId="orderId"
                    :cableTag="temCableTag" :repetitionTag="repetitionTag"
      :rawMaterialTag="rawMaterialTag" :sonLaboratory="sonLaboratory" :state="state" :typeSource="typeSource"
      :unPassCheck="unPassCheck" @closeUnPassCheckDialog="closeUnPassCheckDialog" @refreshView="refreshView" />
    <InspectionWord
      v-if="unPassCheck"
      :inspectorList="inspectorList"
      :orderId="orderId"
      :cableTag="temCableTag"
      :repetitionTag="repetitionTag"
      :rawMaterialTag="rawMaterialTag"
      :sonLaboratory="sonLaboratory"
      :state="state"
      :typeSource="typeSource"
      :unPassCheck="unPassCheck"
      @closeUnPassCheckDialog="closeUnPassCheckDialog"
      @refreshView="refreshView"
    />
    <!-- 进货验证弹框-->
    <purchase-verification v-if="purchaseDialog" ref="purchaseDialog" :orderId="orderId"
      :purchaseDialog="purchaseDialog" @resetPurchaseDialog="resetPurchaseDialog"></purchase-verification>
    <purchase-verification
      v-if="purchaseDialog"
      ref="purchaseDialog"
      :orderId="orderId"
      :purchaseDialog="purchaseDialog"
      @resetPurchaseDialog="resetPurchaseDialog"
    ></purchase-verification>
    <!--查看工时弹框-->
    <viewManHourDia ref="viewManHourDia" @submit="openAddVerifyDia"></viewManHourDia>
<!--    IFS物料属性编辑弹框-->
    <viewManHourDia
      ref="viewManHourDia"
      @submit="openAddVerifyDia"
    ></viewManHourDia>
    <!--    IFS物料属性编辑弹框-->
    <el-dialog
      title="更新IFS库存物料批次属性"
      :visible.sync="ifsMaterialPropsVisible"
      width="20%">
      <el-form style="width:100%" :model="ifsMaterialPropsForm">
      width="20%"
    >
      <el-form style="width: 100%" :model="ifsMaterialPropsForm">
        <el-form-item label="载具编号(Attr1):">
          <el-input placeholder="载具编号" size="small" v-model="ifsMaterialPropsForm.drumNo"></el-input>
          <el-input
            placeholder="载具编号"
            size="small"
            v-model="ifsMaterialPropsForm.drumNo"
          ></el-input>
        </el-form-item>
        <el-form-item label="起始米标(Attr2):">
          <el-input @blur="validateQuality()" placeholder="起始米标" size="small" v-model="ifsMaterialPropsForm.startMeterMark">
          <el-input
            @blur="validateQuality()"
            placeholder="起始米标"
            size="small"
            v-model="ifsMaterialPropsForm.startMeterMark"
          >
            <span slot="suffix">km</span>
          </el-input>
        </el-form-item>
        <el-form-item label="截止米标(Attr3):">
          <el-input @blur="validateQuality()" placeholder="截止米标" size="small" v-model="ifsMaterialPropsForm.endMeterMark">
          <el-input
            @blur="validateQuality()"
            placeholder="截止米标"
            size="small"
            v-model="ifsMaterialPropsForm.endMeterMark"
          >
            <span slot="suffix">km</span>
          </el-input>
        </el-form-item>
<!--        <el-form-item label="入库长度">-->
<!--          <el-input v-model="ifsMaterialPropsForm.inboundLength"></el-input>-->
<!--        </el-form-item>-->
        <!--        <el-form-item label="入库长度">-->
        <!--          <el-input v-model="ifsMaterialPropsForm.inboundLength"></el-input>-->
        <!--        </el-form-item>-->
        <el-form-item label="外护颜色(Attr4):">
          <el-select size="small" v-model="ifsMaterialPropsForm.outerColor">
            <el-option v-for="(item,index) in outerColorList" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
            <el-option
              v-for="(item, index) in outerColorList"
              :label="item.dictLabel"
              :value="item.dictValue"
              :key="index"
            ></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="绝缘颜色(Attr5):">
          <el-select size="small" v-model="ifsMaterialPropsForm.insulationColor">
            <el-option v-for="(item,index) in insulationColorList" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
          <el-select
            size="small"
            v-model="ifsMaterialPropsForm.insulationColor"
          >
            <el-option
              v-for="(item, index) in insulationColorList"
              :label="item.dictLabel"
              :value="item.dictValue"
              :key="index"
            ></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="印字信息(Attr8):">
          <el-select size="small" v-model="ifsMaterialPropsForm.letteringInfo" placeholder="请选择">
            <el-option v-for="(item,index) in letteringInfoList" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
          <el-select
            size="small"
            v-model="ifsMaterialPropsForm.letteringInfo"
            placeholder="请选择"
          >
            <el-option
              v-for="(item, index) in letteringInfoList"
              :label="item.dictLabel"
              :value="item.dictValue"
              :key="index"
            ></el-option>
          </el-select>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
    <el-button @click="closePartPropDialog()">取 消</el-button>
    <el-button type="primary" @click="saveOrUpdatePartProp()">确 定</el-button>
  </span>
        <el-button @click="closePartPropDialog()">取 消</el-button>
        <el-button type="primary" @click="saveOrUpdatePartProp()"
          >确 定</el-button
        >
      </span>
    </el-dialog>
  </div>
</template>
@@ -656,17 +1302,20 @@
  downFile,
  getFileList,
  delfile,
  inspectionOrderDetailsTaskSwitching
  inspectionOrderDetailsTaskSwitching,
} from "@/api/business/inspectionTask.js";
import InspectionWorker from '@/workers/InspectionWorker.worker.js';
import DataWorker from '@/workers/DataWorker.worker.js';
import InspectionWorker from "@/workers/InspectionWorker.worker.js";
import DataWorker from "@/workers/DataWorker.worker.js";
import html2canvas from "html2canvas";
import { mapGetters } from "vuex";
import viewManHourDia from "@/views/business/inspectionTask/components/viewManHourDia.vue";
import {getOneByIfsId,saveOrUpdateProps} from "@/api/business/ifsPartProps.js";
import {getDicts} from "@/api/system/dict/data";
import {
  getOneByIfsId,
  saveOrUpdateProps,
} from "@/api/business/ifsPartProps.js";
import { getDicts } from "@/api/system/dict/data";
export default {
  name: 'Inspection',
  name: "Inspection",
  components: {
    viewManHourDia,
    PurchaseVerification,
@@ -681,22 +1330,22 @@
      dialogResolve: null,
      dialogReject: null,
      dialogVisible: false,
      deviceDbTableName: '',
      outerColorList:[],
      insulationColorList:[],
      deviceDbTableName: "",
      outerColorList: [],
      insulationColorList: [],
      letteringInfoList: [],
      ifsMaterialPropsForm:{
        id:null,
      ifsMaterialPropsForm: {
        id: null,
        ifsInventoryId: null,
        drumNo: '', // 载具编号
        startMeterMark: '', // 起始米标
        endMeterMark: '', // 截止米标
        insulationColor: '', // 绝缘颜色
        outerColor: '', // 外护颜色
        inboundLength: '', // 入库长度
        letteringInfo: '', // 印字信息
        drumNo: "", // 载具编号
        startMeterMark: "", // 起始米标
        endMeterMark: "", // 截止米标
        insulationColor: "", // 绝缘颜色
        outerColor: "", // 外护颜色
        inboundLength: "", // 入库长度
        letteringInfo: "", // 印字信息
      },
      ifsMaterialPropsVisible:false,
      ifsMaterialPropsVisible: false,
      sonLaboratory: null,
      orderId: null,
      state: null,
@@ -827,14 +1476,16 @@
      tableData: [],
      column: [
        {
          label: "类型", prop: "type", dataType: "tag",
          label: "类型",
          prop: "type",
          dataType: "tag",
          formatData: (params) => {
            if (params == 1) {
              return '图片'
              return "图片";
            } else {
              return '文件'
              return "文件";
            }
          }
          },
        },
        { label: "附件名称", prop: "fileName" },
        { label: "上传人", prop: "name" },
@@ -873,28 +1524,32 @@
      // 任务切换列表--开始
      tableData0: [],
      column0: [
        { label: "委托编号", prop: "entrustCode", width: '160px' },
        { label: "检验对象", prop: "sampleType", width: '140px' },
        { label: "委托编号", prop: "entrustCode", width: "160px" },
        { label: "检验对象", prop: "sampleType", width: "140px" },
        {
          label: "紧急程度", prop: "type", dataType: "tag",
          label: "紧急程度",
          prop: "type",
          dataType: "tag",
          formatData: (params) => {
            return this.urgentList.find(m => m.value == params).label
            return this.urgentList.find((m) => m.value == params).label;
          },
          formatType: (params) => {
            return this.urgentList.find(m => m.value == params).type
          }
            return this.urgentList.find((m) => m.value == params).type;
          },
        },
        {
          label: "状态", prop: "insState", dataType: "tag",
          label: "状态",
          prop: "insState",
          dataType: "tag",
          formatData: (params) => {
            return this.typeList.find(m => m.value == params).label
            return this.typeList.find((m) => m.value == params).label;
          },
          formatType: (params) => {
            return this.typeList.find(m => m.value == params).type
          }
            return this.typeList.find((m) => m.value == params).type;
          },
        },
        { label: "约定时间", prop: "appointed", width: '140px' },
        { label: "下发时间", prop: "sendTime", width: '140px' },
        { label: "约定时间", prop: "appointed", width: "140px" },
        { label: "下发时间", prop: "sendTime", width: "140px" },
      ],
      page0: {
        total: 0,
@@ -914,7 +1569,7 @@
    },
  },
  created() {
    let { sonLaboratory, orderId, state, inspectorList, typeSource,isSplit } =
    let { sonLaboratory, orderId, state, inspectorList, typeSource, isSplit } =
      this.$route.query;
    this.sonLaboratory = sonLaboratory;
    this.orderId = orderId;
@@ -945,7 +1600,7 @@
  watch: {
    // 监听任务id,获取任务信息
    id(val) {
      this.refreshView()
      this.refreshView();
    },
    // 监听当前模板变化
    currentTable(val1, val0) {
@@ -1005,7 +1660,7 @@
    // 特殊检验项--监听设备信息改变
    equipForm: {
      deep: true,
      handler(val) { },
      handler(val) {},
    },
  },
  beforeDestroy() {
@@ -1013,87 +1668,99 @@
    this.stopWorker();
  },
  methods: {
    validateQuality(){
      let inboundLength = Number(this.calcInbondLength(this.ifsMaterialPropsForm.startMeterMark,this.ifsMaterialPropsForm.endMeterMark));
    validateQuality() {
      let inboundLength = Number(
        this.calcInbondLength(
          this.ifsMaterialPropsForm.startMeterMark,
          this.ifsMaterialPropsForm.endMeterMark
        )
      );
      let testQuantity = Number(this.insOrder.testQuantity);
      if(inboundLength!=null && testQuantity!==inboundLength){
        this.$message.warning(`入库长度(${inboundLength}km)与检验数量(${testQuantity}km)不符,请确认!`);
      if (inboundLength != null && testQuantity !== inboundLength) {
        this.$message.warning(
          `入库长度(${inboundLength}km)与检验数量(${testQuantity}km)不符,请确认!`
        );
      }
    },
    calcInbondLength(startMeterMark,endMeterMark){
    calcInbondLength(startMeterMark, endMeterMark) {
      let inboundLength = null;
      if((startMeterMark!=null && startMeterMark!=='') && (endMeterMark!=null&&endMeterMark!=='')){
      if (
        startMeterMark != null &&
        startMeterMark !== "" &&
        endMeterMark != null &&
        endMeterMark !== ""
      ) {
        let minus = this.$Big(endMeterMark).minus(this.$Big(startMeterMark));
        inboundLength = Math.abs(minus)
        inboundLength = Math.abs(minus);
      }
      return inboundLength;
    },
    getLetteringInfoDicts(){
      getDicts("lettering_info_type").then(res=>{
        if(res.code==200){
          this.letteringInfoList = res.data
    getLetteringInfoDicts() {
      getDicts("lettering_info_type").then((res) => {
        if (res.code == 200) {
          this.letteringInfoList = res.data;
        }
      })
      });
    },
    getInsulationColorDicts(){
      getDicts("insulation_color_type").then(res=>{
        if(res.code==200){
          this.insulationColorList = res.data
    getInsulationColorDicts() {
      getDicts("insulation_color_type").then((res) => {
        if (res.code == 200) {
          this.insulationColorList = res.data;
        }
      })
      });
    },
    getOuterColorDicts(){
      getDicts("outer_color_type").then(res=>{
        if(res.code==200){
          this.outerColorList = res.data
    getOuterColorDicts() {
      getDicts("outer_color_type").then((res) => {
        if (res.code == 200) {
          this.outerColorList = res.data;
        }
      })
      });
    },
    closePartPropDialog(){
    closePartPropDialog() {
      this.ifsMaterialPropsForm = {
        id:null,
        id: null,
        ifsInventoryId: null,
        drumNo: '', // 载具编号
        startMeterMark: '', // 起始米标
        endMeterMark: '', // 截止米标
        insulationColor: '', // 绝缘颜色
        outerColor: '', // 外护颜色
        inboundLength: '', // 入库长度
        letteringInfo: '', // 印字信息
      }
        drumNo: "", // 载具编号
        startMeterMark: "", // 起始米标
        endMeterMark: "", // 截止米标
        insulationColor: "", // 绝缘颜色
        outerColor: "", // 外护颜色
        inboundLength: "", // 入库长度
        letteringInfo: "", // 印字信息
      };
      this.ifsMaterialPropsVisible = false;
    },
    getPartProps(ifsId){
      getOneByIfsId(ifsId).then((res)=>{
        if(res.code==200 && res.data){
    getPartProps(ifsId) {
      getOneByIfsId(ifsId).then((res) => {
        if (res.code == 200 && res.data) {
          this.ifsMaterialPropsForm = res.data;
        }
      })
      });
    },
    saveOrUpdatePartProp(){
      this.ifsMaterialPropsForm.ifsInventoryId = this.insOrder.ifsInventoryId
    saveOrUpdatePartProp() {
      this.ifsMaterialPropsForm.ifsInventoryId = this.insOrder.ifsInventoryId;
      saveOrUpdateProps({
        ...this.ifsMaterialPropsForm,
        partNo: this.insOrder.partNo,
        lotBatchNo: this.insOrder.lotBatchNo,
        contract: this.insOrder.contract
      }).then((res)=>{
        if(res.code==200){
        contract: this.insOrder.contract,
      }).then((res) => {
        if (res.code == 200) {
          this.$message.success("保存成功");
          this.ifsMaterialPropsVisible = false;
          this.refreshView()
          this.refreshView();
        }
      })
      });
    },
    //打开IFS物料属性弹框
    showMaterialPropsDialog(){
      this.getPartProps(this.insOrder.ifsInventoryId)
      this.getOuterColorDicts()
      this.getInsulationColorDicts()
      this.getLetteringInfoDicts()
      this.$nextTick(()=>{
    showMaterialPropsDialog() {
      this.getPartProps(this.insOrder.ifsInventoryId);
      this.getOuterColorDicts();
      this.getInsulationColorDicts();
      this.getLetteringInfoDicts();
      this.$nextTick(() => {
        this.ifsMaterialPropsVisible = true;
      })
      });
    },
    // 文件管理--开始
    getList() {
@@ -1122,19 +1789,21 @@
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      }).then(() => {
        delfile({ id: row.id }).then((res) => {
          this.$message.success("删除成功");
          this.getList();
        });
      }).catch(() => { });
      })
        .then(() => {
          delfile({ id: row.id }).then((res) => {
            this.$message.success("删除成功");
            this.getList();
          });
        })
        .catch(() => {});
    },
    // 文件管理--结束
    // 处理整组勾选逻辑的方法
    handleGroupSelect(childItem, clickedIndex, groupSize = 5) {
      if(groupSize == 6){
      if (groupSize == 6) {
        groupSize = 6;
      }else{
      } else {
        groupSize = 5;
      }
      // 计算所在组的起始索引
@@ -1142,15 +1811,23 @@
      // 清空当前已选
      childItem.getDataIndex1 = [];
      // 遍历当前组的 groupSize 个元素,添加到选中列表
      for (let i = groupStartIndex; i < groupStartIndex + groupSize && i < childItem.arr.length; i++) {
        childItem.getDataIndex1.push(i + '^' + childItem.arr[i]);
      for (
        let i = groupStartIndex;
        i < groupStartIndex + groupSize && i < childItem.arr.length;
        i++
      ) {
        childItem.getDataIndex1.push(i + "^" + childItem.arr[i]);
      }
    },
    // 任务切换--开始
    getList0() {
      this.tableLoading0 = true;
      let param = { userId: this.userId, sonLaboratory: this.sonLaboratory, ...this.page0 };
      let param = {
        userId: this.userId,
        sonLaboratory: this.sonLaboratory,
        ...this.page0,
      };
      delete param.total;
      inspectionOrderDetailsTaskSwitching({ ...param })
        .then((res) => {
@@ -1177,12 +1854,12 @@
        laboratory: this.sonLaboratory,
      }).then(async (res) => {
        this.insOrder = res.data.insOrder;
        if(res.data.insOrder.ifsOrderType==='02wg'){
        if (res.data.insOrder.ifsOrderType === "02wg") {
          //查询零件属性
          this.getPartProps(res.data.insOrder.ifsInventoryId)
          this.getPartProps(res.data.insOrder.ifsInventoryId);
        }
        this.supplierDensity = res.data.supplierDensity;
        this.getList()
        this.getList();
        this.urgentList.forEach((m) => {
          if (m.value == this.insOrder.type) {
            this.insOrder.typeName = m.label;
@@ -1333,7 +2010,7 @@
    },
    openDialog() {
      this.dialogVisible = true;
      this.deviceDbTableName = ''; // 重置表单
      this.deviceDbTableName = ""; // 重置表单
      // 返回 Promise,等待用户操作
      return new Promise((resolve, reject) => {
        this.dialogResolve = resolve;
@@ -1350,7 +2027,7 @@
    // 弹框取消/关闭
    handleDialogCancel() {
      console.log(111)
      console.log(111);
      this.dialogVisible = false;
      // 调用 reject,终止后续代码
      this.dialogReject();
@@ -1358,56 +2035,58 @@
    // 数据采集
    async getDataAcquisitionDevice() {
      //过滤选中的设备列表
    let deviceList = []
    for (let item in this.param){
      let val1 = this.param[item]
      for(let item2 in val1){
        if(item2==='equipName'){
          let equipName = val1[item2]
          equipName.forEach(item=>{
            if(item.v.v && Array.isArray(item.v.v)){
              deviceList.push(...item.v.v)
      let deviceList = [];
      for (let item in this.param) {
        let val1 = this.param[item];
        for (let item2 in val1) {
          if (item2 === "equipName") {
            let equipName = val1[item2];
            equipName.forEach((item) => {
              if (item.v.v && Array.isArray(item.v.v)) {
                deviceList.push(...item.v.v);
              }
            });
          }
        }
      }
      //数组去重
      let deviceSetList = [...new Set(deviceList)];
      try {
        if (deviceSetList.includes("NS-YL3141") && !this.deviceDbTableName) {
          await this.openDialog();
        }
        let itemIds = [];
        this.currentSample.insProduct.forEach((item) => {
          if (item.inspectionItemType === "1") {
            itemIds.push(item.id);
          }
        });
        const params = {
          entrustCode: this.insOrder.entrustCode,
          lotBatchNo: this.insOrder.lotBatchNo,
          sampleCode: this.currentSample.sampleCode,
          id: this.currentSample.id,
          itemIds: itemIds,
          dbTable: this.deviceDbTableName,
        };
        this.dataAcquisitionLoading = true;
        dataCollection(params)
          .then((res) => {
            this.dataAcquisitionLoading = false;
            if (res.code != 200) {
              return;
            }
            this.dataAcquisitionInfoNew = this.HaveJson(res.data);
            // 对数采回来的值进行处理
            this.handleDataAcquisition(res.data);
          })
        }
          .catch((err) => {
            this.dataAcquisitionLoading = false;
          });
      } catch (error) {
        console.error("数据采集设备列表处理失败", error);
      }
    }
    //数组去重
    let deviceSetList = [...new Set(deviceList)]
    try{
      if(deviceSetList.includes('NS-YL3141') && !this.deviceDbTableName){
        await this.openDialog();
      }
      let itemIds = [];
      this.currentSample.insProduct.forEach((item) => {
        if (item.inspectionItemType === "1") {
          itemIds.push(item.id);
        }
      });
      const params = {
        entrustCode: this.insOrder.entrustCode,
        lotBatchNo: this.insOrder.lotBatchNo,
        sampleCode: this.currentSample.sampleCode,
        id: this.currentSample.id,
        itemIds: itemIds,
        dbTable: this.deviceDbTableName,
      };
      this.dataAcquisitionLoading = true;
      dataCollection(params).then((res) => {
        this.dataAcquisitionLoading = false;
        if (res.code != 200) {
          return;
        }
        this.dataAcquisitionInfoNew = this.HaveJson(res.data);
        // 对数采回来的值进行处理
        this.handleDataAcquisition(res.data);
      }).catch(err => {
        this.dataAcquisitionLoading = false;
      });
    }catch (error){
      console.error('数据采集设备列表处理失败',error)
    }
  },
    },
    objectOrder(obj) {
      let newkey = Object.keys(obj).sort();
      let newObj = {};
@@ -1534,10 +2213,10 @@
              } else {
                str0 = i + "," + j;
              }
            };
            }
            let list = this.tableList[0].arr;
            let maxNum = 0;
            let itemNum = 0;//包含检验值批注的个数
            let itemNum = 0; //包含检验值批注的个数
            list.forEach((item, index) => {
              let num0 = 0;
              let str = "";
@@ -1576,14 +2255,14 @@
                    ) {
                      num++;
                      const matchArray = n.v.ps.value.match(/\d+/g);
                      if(matchArray){
                      if (matchArray) {
                        const no = Number(matchArray[0]);
                        itemNum = itemNum>= no ? itemNum : no;
                        itemNum = itemNum >= no ? itemNum : no;
                      }
                    }
                  });
                  if (str0 == str) {
                    maxNum = num===itemNum ? num : itemNum;
                    maxNum = num === itemNum ? num : itemNum;
                  }
                }
                // 绑定设备
@@ -1818,9 +2497,9 @@
        id: id,
        type: type,
        laboratory: this.sonLaboratory,
        cableTag: (cableTag ? cableTag : this.temCableTag),
        cableTag: cableTag ? cableTag : this.temCableTag,
        rawMaterialTag: this.rawMaterialTag,
        repetitionTag: this.repetitionTag
        repetitionTag: this.repetitionTag,
      });
      this.tableLoading = false;
      if (res.data.length > 0) {
@@ -2138,21 +2817,24 @@
                let inspectionItemClass =
                  this.currentSample.insProduct[i].inspectionItemClass ==
                    null ||
                    this.currentSample.insProduct[i].inspectionItemClass ==
                  this.currentSample.insProduct[i].inspectionItemClass ==
                    undefined
                    ? ""
                    : this.currentSample.insProduct[i].inspectionItemClass;
                inspectionItemClass = inspectionItemClass.replace(/[\n\r\s]*/g, "");
                inspectionItemClass = inspectionItemClass.replace(
                  /[\n\r\s]*/g,
                  ""
                );
                let inspectionItem =
                  this.currentSample.insProduct[i].inspectionItem == null ||
                    this.currentSample.insProduct[i].inspectionItem == undefined
                  this.currentSample.insProduct[i].inspectionItem == undefined
                    ? ""
                    : this.currentSample.insProduct[i].inspectionItem;
                inspectionItem = inspectionItem.replace(/[\n\r\s]*/g, "");
                let inspectionItemSubclass =
                  this.currentSample.insProduct[i].inspectionItemSubclass ==
                    null ||
                    this.currentSample.insProduct[i].inspectionItemSubclass ==
                  this.currentSample.insProduct[i].inspectionItemSubclass ==
                    undefined
                    ? ""
                    : this.currentSample.insProduct[i].inspectionItemSubclass;
@@ -2167,17 +2849,17 @@
                    (this.currentSample.insProduct[i].templateId ===
                      a.templateId &&
                      inspectionItemClass +
                      inspectionItem +
                      inspectionItemSubclass +
                      unit ===
                      str2) ||
                        inspectionItem +
                        inspectionItemSubclass +
                        unit ===
                        str2) ||
                    (this.currentSample.insProduct[i].templateId ===
                      a.templateId &&
                      !unit2.includes("/") &&
                      inspectionItemClass +
                      inspectionItem +
                      inspectionItemSubclass ===
                      str)
                        inspectionItem +
                        inspectionItemSubclass ===
                        str)
                  ) {
                    ids.push({
                      r: b.r,
@@ -2188,16 +2870,17 @@
                  }
                } else {
                  // 如果相等,那么说明找到了,并且把id存起来,后续检验项也会在页面中显示出来
                  let aa = inspectionItemClass +
                  let aa =
                    inspectionItemClass +
                    inspectionItem +
                    inspectionItemSubclass;
                  if (
                    this.currentSample.insProduct[i].templateId ===
                    a.templateId &&
                      a.templateId &&
                    inspectionItemClass +
                    inspectionItem +
                    inspectionItemSubclass ===
                    str
                      inspectionItem +
                      inspectionItemSubclass ===
                      str
                  ) {
                    ids.push({
                      r: b.r,
@@ -2340,9 +3023,10 @@
              this.param[b.i].insResult = b;
              conclusionList.forEach((n, i) => {
                if (n.r == b.r && n.c == b.c) {
                  b.v.f = `(${this.comparisonList.find((j) => j.value == finalList[i].c)
                    .label
                    }${finalList[i].r + 1})`;
                  b.v.f = `(${
                    this.comparisonList.find((j) => j.value == finalList[i].c)
                      .label
                  }${finalList[i].r + 1})`;
                }
              });
            }
@@ -2354,7 +3038,7 @@
          }
        });
        // 以下是样式处理逻辑
        set = [...set]
        set = [...set];
        // set = set.sort();
        set.forEach((b) => {
          let arr = [];
@@ -2398,7 +3082,7 @@
              );
            }
          }
        } catch (e) { }
        } catch (e) {}
        try {
          // 检验值赋值
          let insValue = JSON.parse(a.insProductResult.insValue);
@@ -2423,7 +3107,7 @@
              // this.param[a.id].insValue[i].u = insValue[i].u
            }
          }
        } catch (e) { }
        } catch (e) {}
        try {
          // 设备编号赋值
          let equipValue = JSON.parse(a.insProductResult.equipValue);
@@ -2431,7 +3115,7 @@
            // 普通设备赋值
            this.param[a.id].equipValue[i].v.v = equipValue[i].v;
          }
        } catch (e) { }
        } catch (e) {}
        try {
          // 设备名称赋值
          let equipName = JSON.parse(a.insProductResult.equipName);
@@ -2462,7 +3146,7 @@
          );
          // 结论赋值
          this.param[a.id].insResult.v.v = a.insResult;
        } catch (e) { }
        } catch (e) {}
      });
      // 对excel函数进行处理
      this.handleExcelMethod();
@@ -2677,13 +3361,13 @@
      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/>")
            : "";
        ? 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/>")
        : "";
      // 对数据保留小数点进行处理
      if (v.ct && v.ct.fa && v.ct.fa.includes(".") && str) {
        let num = 0;
@@ -2764,15 +3448,16 @@
    getEquipOptions(e, id) {
      if (e) {
        this.equipOptions = [];
        search({ status: 0 }).then((res) => {
          if (res.code === 200 && res.data) {
            this.equipOptions = res.data.map((m) => {
              m.value = m.managementNumber;
              m.label = m.deviceName;
              return m;
            });
          }
        })
        search({ status: 0 })
          .then((res) => {
            if (res.code === 200 && res.data) {
              this.equipOptions = res.data.map((m) => {
                m.value = m.managementNumber;
                m.label = m.deviceName;
                return m;
              });
            }
          })
          .catch((error) => {
            console.error(error);
          });
@@ -2803,14 +3488,15 @@
          laboratory: this.sonLaboratory,
          tell: null,
          userId: this.checkUser,
        }).then((res) => {
          if (res.code === 200) {
            this.$message.success("操作成功");
            this.goback();
            this.addCheck = false;
          }
          this.reviewLoading = false;
        })
          .then((res) => {
            if (res.code === 200) {
              this.$message.success("操作成功");
              this.goback();
              this.addCheck = false;
            }
            this.reviewLoading = false;
          })
          .catch((error) => {
            console.error(error);
            this.reviewLoading = false;
@@ -2828,13 +3514,14 @@
          type: 0,
          laboratory: this.sonLaboratory,
          tell: this.noReason,
        }).then((res) => {
          if (res.code === 200) {
            this.$message.success("操作成功");
            this.goback();
          }
          this.reviewLoading = false;
        })
          .then((res) => {
            if (res.code === 200) {
              this.$message.success("操作成功");
              this.goback();
            }
            this.reviewLoading = false;
          })
          .catch((error) => {
            console.error(error);
            this.reviewLoading = false;
@@ -2850,21 +3537,22 @@
    openAddVerifyDia() {
      this.addVerifyDia = true;
    },
    confirmSubmit(registerInsResults){
    confirmSubmit(registerInsResults) {
      submitPlan({
        orderId: this.orderId,
        laboratory: this.sonLaboratory,
        verifyUser: this.verifyUser,
        entrustCode: this.insOrder.entrustCode,
        registerInsResults: registerInsResults
      }).then((res) => {
        if (res.code === 200) {
          this.$message.success("操作成功");
          this.goback();
          this.submitLoading = false;
          this.addVerifyDia = false;
        }
        registerInsResults: registerInsResults,
      })
        .then((res) => {
          if (res.code === 200) {
            this.$message.success("操作成功");
            this.goback();
            this.submitLoading = false;
            this.addVerifyDia = false;
          }
        })
        .catch((error) => {
          console.error(error);
          this.submitLoading = false;
@@ -2875,15 +3563,18 @@
        this.$message.error("请指定复核人员");
        return;
      }
      if (!this.otherForm.humidity && this.insOrder.ifsOrderType!=='02wg') {
      if (!this.otherForm.humidity && this.insOrder.ifsOrderType !== "02wg") {
        this.$message.error("请输入湿度");
        return;
      }
      if (!this.otherForm.temperature && this.insOrder.ifsOrderType!=='02wg') {
      if (
        !this.otherForm.temperature &&
        this.insOrder.ifsOrderType !== "02wg"
      ) {
        this.$message.error("请输入温度");
        return;
      }
      if (!this.insOrder.lotPartId && this.insOrder.ifsOrderType==='02wg') {
      if (!this.insOrder.lotPartId && this.insOrder.ifsOrderType === "02wg") {
        this.$message.error("请填写IFS库存物料批次属性");
        return;
      }
@@ -2891,67 +3582,75 @@
      checkSubmitPlan({
        orderId: this.orderId,
        laboratory: this.sonLaboratory,
      }).then((res) => {
        if (res.code === 200) {
          if (!res.data || res.data.errorMsg.length == 0) {
            this.submitLoading = true;
            //检验类型为原材料
            if(this.typeSource==1 && res.data.unInsOrderCount==0 && this.isSplit==1){
              const htmlStr = "是否登记IFS采购检验结果并移库?该操作会登记<span style='color:#ff4949'>同一零件同一订单的所有拆分批次</span>,请谨慎选择。"
              this.$confirm(htmlStr, '提示', {
                confirmButtonText: '是',
                cancelButtonText: '否',
                type: 'warning',
                dangerouslyUseHTMLString: true
              }).then(() => {
                this.confirmSubmit(true)
              }).catch(() => {
                this.confirmSubmit(false)
              });
            }else{
              this.confirmSubmit(true)
            }
          } else {
            let newData = [];
            const h = this.$createElement;
            for (let i in res.data.errorMsg) {
              const lastChar = res.data.errorMsg[i].slice(-1);
              if (lastChar == "-") {
                res.data.errorMsg[i] = res.data.errorMsg[i].slice(0, -1);
      })
        .then((res) => {
          if (res.code === 200) {
            if (!res.data || res.data.errorMsg.length == 0) {
              this.submitLoading = true;
              //检验类型为原材料
              if (
                this.typeSource == 1 &&
                res.data.unInsOrderCount == 0 &&
                this.isSplit == 1
              ) {
                const htmlStr =
                  "是否登记IFS采购检验结果并移库?该操作会登记<span style='color:#ff4949'>同一零件同一订单的所有拆分批次</span>,请谨慎选择。";
                this.$confirm(htmlStr, "提示", {
                  confirmButtonText: "是",
                  cancelButtonText: "否",
                  type: "warning",
                  dangerouslyUseHTMLString: true,
                })
                  .then(() => {
                    this.confirmSubmit(true);
                  })
                  .catch(() => {
                    this.confirmSubmit(false);
                  });
              } else {
                this.confirmSubmit(true);
              }
            } else {
              let newData = [];
              const h = this.$createElement;
              for (let i in res.data.errorMsg) {
                const lastChar = res.data.errorMsg[i].slice(-1);
                if (lastChar == "-") {
                  res.data.errorMsg[i] = res.data.errorMsg[i].slice(0, -1);
                }
                newData.push(
                  h(
                    "p",
                    { style: "font-size: 14px;color: red;" },
                    Number(i) + 1 + "、" + res.data.errorMsg[i]
                  )
                );
              }
              newData.push(
                h(
                  "p",
                  { style: "font-size: 14px;color: red;" },
                  Number(i) + 1 + "、" + res.data.errorMsg[i]
                  {
                    style:
                      "font-size: 16px;color:#000;margin-top:12px;overflow-y: auto;max-height:80vh",
                  },
                  "以上项目不合格,确定提交?"
                )
              );
            }
            newData.push(
              h(
                "p",
                {
                  style:
                    "font-size: 16px;color:#000;margin-top:12px;overflow-y: auto;max-height:80vh",
                },
                "以上项目不合格,确定提交?"
              )
            );
            this.$confirm("提示", {
              title: "提示",
              message: h("div", null, newData),
              confirmButtonText: "确定",
              cancelButtonText: "取消",
              type: "",
            })
              .then(() => {
                this.submitLoading = true;
                this.confirmSubmit(false)
              this.$confirm("提示", {
                title: "提示",
                message: h("div", null, newData),
                confirmButtonText: "确定",
                cancelButtonText: "取消",
                type: "",
              })
              .catch(() => { });
                .then(() => {
                  this.submitLoading = true;
                  this.confirmSubmit(false);
                })
                .catch(() => {});
            }
          }
        }
      })
        })
        .catch((error) => {
          console.error(error);
          this.submitLoading = false;
@@ -2968,13 +3667,13 @@
          } else {
            param = this.param;
          }
          let isNoTestValue = ''
          let isNoTestValue = "";
          for (let key in param) {
            if (param[key]) {
              if (param[key].insValue?.length === 0) {
                isNoTestValue = 1
                isNoTestValue = 1;
              } else {
                isNoTestValue = ''
                isNoTestValue = "";
              }
            }
          }
@@ -2984,7 +3683,7 @@
            sampleId: this.currentSample.id,
            orderId: this.orderId,
            sonLaboratory: this.sonLaboratory,
            isNoTestValue: isNoTestValue
            isNoTestValue: isNoTestValue,
          }).then((res) => {
            this.$message.success("已保存");
          });
@@ -3155,10 +3854,11 @@
      this.$refs.upload.clearFiles();
    },
    handleDown(row) {
      downFile({ id: row.id }).then((res) => {
        this.$download.saveAs(res.data.fileUrl, row.fileName)
      })
        .catch((error) => { });
      downFile({ id: row.id })
        .then((res) => {
          this.$download.saveAs(res.data.fileUrl, row.fileName);
        })
        .catch((error) => {});
    },
    /**
     * 将数值v保留ct.fa中'##'后的指定小数位数,并返回格式化后的字符串。
@@ -3181,8 +3881,8 @@
      }
    },
    goback() {
      this.$router.go(-1)
    }
      this.$router.go(-1);
    },
  },
};
</script>
@@ -3339,7 +4039,7 @@
  height: 100%;
}
.table_input>>>.el-input__inner {
.table_input >>> .el-input__inner {
  border-color: rgba(0, 0, 0, 0.5) !important;
}
@@ -3373,19 +4073,19 @@
  opacity: 0.8;
}
>>>input::-webkit-inner-spin-button {
>>> input::-webkit-inner-spin-button {
  -webkit-appearance: none !important;
  /* 隐藏微调按钮 */
  margin: 0 !important;
  /* 移除微调按钮的边距 */
}
>>>input[type="number"] {
>>> input[type="number"] {
  -moz-appearance: textfield !important;
  /* 针对 Firefox */
}
>>>.el-form-item__content {
>>> .el-form-item__content {
  display: inline-flex;
  align-items: center;
}
@@ -3458,14 +4158,13 @@
  /* 设置最大宽度 */
}
.data-collection-items {
  display: flex;
  flex-wrap: wrap;
}
.data-collection-items .el-select,
.data-collection-items .el-checkbox {
  flex-basis: 20% ;
  flex-basis: 20%;
  box-sizing: border-box;
  padding: 5px 2%;
}