zouyu
2025-03-07 1bf6023783ecfdb2e578b22145d9911099280b98
src/views/business/inspectionOrder/add.vue
@@ -1,3 +1,4387 @@
<template>
  <div>
    <div v-show="!configShow && !equipConfigShow && !cableConfigShow">
      <el-row class="title">
        <el-col :span="6" style="padding-left: 20px; text-align: left"
          >委托单信息&nbsp;&nbsp;&nbsp;总价:<span style="color: #3a7bfa"
            >¥{{ total }}</span
          ></el-col
        >
        <el-col :span="18" style="text-align: right">
          <el-select
            v-model="template"
            size="medium"
            filterable
            placeholder="下单模板"
            style="margin-right: 10px"
            v-show="active == 1"
            @change="selectInsOrderTemplateById"
          >
            <el-option
              v-for="(a, ai) in templates"
              :key="ai"
              :value="a.id"
              :label="a.name"
            >
              <span style="float: left">{{ a.name }}</span>
              <i
                class="el-icon-delete"
                style="float: right; color: #66b1ff; font-size: 16px"
                @click.stop="handleDelete(a)"
              ></i>
            </el-option>
          </el-select>
          <el-button
            size="medium"
            @click="templateDia = true"
            v-show="active == 1"
          >
            <span style="color: #3a7bfa">保存模板</span>
          </el-button>
          <el-button
            size="medium"
            type="primary"
            @click="openCableConfig"
            v-if="
              active == 1 &&
              PROJECT == '装备电缆' &&
              addObj.sampleType != undefined &&
              addObj.sampleType.indexOf('电缆') > -1
            "
            >电缆配置</el-button
          >
          <el-button
            size="medium"
            type="primary"
            @click="openEquipConfig"
            v-if="active == 1"
            >子样品配置</el-button
          >
          <el-button
            size="medium"
            type="primary"
            @click="openConfig"
            v-if="addObj.sampleType === '光缆'"
            >光纤配置</el-button
          >
          <el-button
            size="medium"
            type="primary"
            @click="save"
            :loading="saveLoad"
            v-show="active == 1"
            >提交</el-button
          >
          <!-- 审核 -->
          <el-button
            size="medium"
            @click="upInsOrderOfState(2)"
            :loading="saveLoad"
            v-show="active == 3 && addObj.companyId"
            :disabled="saveLoad"
            >不通过</el-button
          >
          <el-button
            size="medium"
            type="primary"
            @click="upInsOrderOfState(1)"
            :loading="saveLoad"
            v-show="active == 3 && addObj.companyId"
            >通过</el-button
          >
          <el-button size="medium" @click="$parent.playOrder(0)">
            <span style="color: #3a7bfa">返回</span>
          </el-button>
        </el-col>
      </el-row>
    </div>
    <basic-container>
      <div
        class="search"
        v-show="!configShow && !equipConfigShow && !cableConfigShow"
      >
        <el-form
          :model="addObj"
          :rules="formRule"
          label-position="right"
          inline
        >
          <el-row>
            <el-col :span="6">
              <el-form-item label="委托编号:" prop="entrustCode">
                <el-input
                  v-model="addObj.entrustCode"
                  size="small"
                  class="search_input"
                  placeholder="系统生成"
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="检验类别:" prop="orderType">
                <el-select
                  size="small"
                  class="search_input"
                  clearable
                  v-model="addObj.orderType"
                  :disabled="active > 1"
                >
                  <el-option
                    v-for="(a, ai) in orderType"
                    :key="ai"
                    :value="a.dictValue"
                    :label="a.dictLabel"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="制单人:" prop="custom">
                <el-input
                  size="small"
                  class="search_input"
                  clearable
                  disabled
                  v-model="addObj.custom"
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item
                label="委托单位:"
                prop="company"
                class="company_input"
              >
                <el-input
                  readonly
                  size="small"
                  v-model="addObj.company"
                  placeholder="选择委托单位"
                >
                  <template slot="append"
                    ><el-button
                      slot="append"
                      icon="el-icon-search"
                      @click="selectUserDia = true"
                      :disabled="
                        active > 1 || addObj.company != '中天科技检测中心'
                      "
                    ></el-button
                  ></template>
                </el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="联系方式:" prop="phone">
                <el-input
                  size="small"
                  placeholder="请输入"
                  class="search_input"
                  clearable
                  :readonly="active > 1"
                  v-model="addObj.phone"
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="紧急程度:" prop="type">
                <el-select
                  @change="changeType"
                  size="small"
                  class="search_input"
                  clearable
                  v-model="addObj.type"
                  :disabled="active > 1"
                >
                  <el-option
                    v-for="(a, ai) in type"
                    :key="ai"
                    :value="a.dictValue"
                    :label="a.dictLabel"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item
                label="样品名称:"
                prop="sample"
                class="sample_input"
              >
                <el-input readonly size="small" v-model="addObj.sample">
                  <template slot="append"
                    ><el-button
                      slot="append"
                      icon="el-icon-search"
                      @click="selectStandardTree = true"
                      :disabled="active > 1"
                    ></el-button
                  ></template>
                </el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="样品数量:" prop="sampleNum">
                <el-input-number
                  size="small"
                  v-model="addObj.sampleNum"
                  :min="1"
                  :max="100"
                  :precision="0"
                  @change="addStandardTree"
                  :disabled="active > 1"
                ></el-input-number>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="来样方式:" prop="formType">
                <el-select
                  v-model="addObj.formType"
                  size="small"
                  class="search_input"
                  :disabled="active > 1"
                >
                  <el-option
                    v-for="(a, ai) in formType"
                    :key="ai"
                    :label="a.dictLabel"
                    :value="a.dictValue"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="报告发送方式:" prop="send">
                <el-radio-group v-model="addObj.send">
                  <el-radio :label="1">自取</el-radio>
                  <el-radio :label="0">其他</el-radio>
                </el-radio-group>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item
                label="样品处理方式:"
                prop="processing"
                class="processing_input"
              >
                <el-radio-group v-model="addObj.processing" size="mini">
                  <el-radio :label="0">委托单位取回</el-radio>
                  <el-radio :label="1">实验室处理</el-radio>
                </el-radio-group>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="工程名称:" prop="engineering">
                <el-input
                  size="small"
                  class="search_input"
                  :placeholder="active > 1 ? '' : '请输入'"
                  clearable
                  v-model="addObj.engineering"
                  :readonly="active > 1"
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item
                label="工程名称EN:"
                prop="engineeringEn"
                class="engineeringEn_input"
              >
                <el-input
                  size="small"
                  :placeholder="active > 1 ? '' : '请输入'"
                  clearable
                  v-model="addObj.engineeringEn"
                  :readonly="active > 1"
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="生产单位:" prop="production">
                <el-input
                  size="small"
                  class="search_input"
                  placeholder="请输入"
                  clearable
                  v-model="addObj.production"
                  :readonly="active > 1"
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item
                label="生产单位EN:"
                prop="productionEn"
                class="productionEn_input"
              >
                <el-input
                  size="small"
                  class="search_input"
                  placeholder="请输入"
                  clearable
                  v-model="addObj.productionEn"
                  :readonly="active > 1"
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="是否留样:" prop="isLeave">
                <el-radio-group v-model="addObj.isLeave">
                  <el-radio :label="0">不留样</el-radio>
                  <el-radio :label="1">留样</el-radio>
                </el-radio-group>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="是否涉及配套样品:" prop="mating">
                <el-radio-group
                  v-model="addObj.mating"
                  @change="$refs.sampleTable.doLayout()"
                >
                  <el-radio :label="1">是</el-radio>
                  <el-radio :label="0">否</el-radio>
                </el-radio-group>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item
                label="OTC订单号:"
                prop="otcCode"
                class="otcCode_input"
              >
                <el-input
                  size="small"
                  :placeholder="active > 1 ? '' : '请输入'"
                  clearable
                  v-model="addObj.otcCode"
                  :readonly="active > 1"
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="委托人:" prop="prepareUser">
                <el-input
                  size="small"
                  class="search_input"
                  :placeholder="active > 1 ? '' : '请输入'"
                  clearable
                  v-model="addObj.prepareUser"
                  :readonly="active > 1"
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="备注:" prop="remark">
                <el-input
                  type="textarea"
                  :autosize="{ minRows: 2, maxRows: 2 }"
                  size="small"
                  clearable
                  :placeholder="active > 1 ? '' : '请输入'"
                  v-model="addObj.remark"
                  :readonly="active > 1"
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row>
        </el-form>
      </div>
    </basic-container>
    <basic-container>
      <div style="height: auto">
        <div
          class="search"
          v-if="active == 1"
          style="display: flex; background: transparent"
        >
          <div>
            <div class="search_label">样品型号:</div>
            <div class="search_input">
              <el-select
                v-model="model"
                :placeholder="active > 1 ? '' : '请输入'"
                filterable
                allow-create
                default-first-option
                size="small"
                @change="changeModel"
              >
                <el-option
                  v-for="item in models"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                >
                </el-option>
              </el-select>
            </div>
          </div>
          <div>
            <div class="search_label">检验标准:</div>
            <div class="search_input">
              <el-select
                filterable
                v-model="standardMethodListId"
                :placeholder="active > 1 ? '' : '请输入'"
                size="small"
                @focus="methodFocus"
                :loading="methodLoad"
                @change="changeStandardMethodListId"
              >
                <el-option
                  v-for="item in methods"
                  :key="item.id"
                  :label="item.code"
                  :value="item.id"
                >
                </el-option>
              </el-select>
            </div>
          </div>
        </div>
        <el-table
          class="el-table sampleTable"
          ref="sampleTable"
          :data="sampleList"
          max-height="400px"
          tooltip-effect="dark"
          border
          @selection-change="selectSample"
          highlight-current-row
          @row-click="rowClick"
          style="margin-top: 10px"
        >
          <el-table-column
            type="selection"
            width="60"
            :selectable="selectable"
            v-if="active == 1"
          ></el-table-column>
          <el-table-column
            type="index"
            label="序号"
            width="65"
            align="center"
          ></el-table-column>
          <el-table-column
            prop="sample"
            label="样品名称"
            align="center"
            min-width="100"
          >
            <template slot-scope="scope">
              <el-input
                size="small"
                v-model="scope.row.sample"
                clearable
                :readonly="active > 1"
              ></el-input>
            </template>
          </el-table-column>
          <el-table-column
            prop="sampleCode"
            label="样品编号"
            min-width="140"
            align="center"
          >
            <template slot-scope="scope">
              <el-input
                size="small"
                v-model="scope.row.sampleCode"
                clearable
                placeholder="不填写则系统自动生成"
                :readonly="active > 1"
              ></el-input>
            </template>
          </el-table-column>
          <el-table-column
            prop="model"
            label="样品型号"
            align="center"
            min-width="100"
          >
            <template slot-scope="scope">
              <el-select
                v-model="scope.row.model"
                filterable
                allow-create
                default-first-option
                placeholder="样品型号"
                size="small"
                @change="handleChangeModel"
                :disabled="active > 1"
                style="width: 100%"
              >
                <el-option
                  v-for="item in models"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                >
                </el-option>
              </el-select>
            </template>
          </el-table-column>
          <el-table-column
            prop="modelNum"
            label="型号参数"
            width="130"
            align="center"
            v-if="!(active > 1)"
          >
            <template slot-scope="scope">
              <el-input
                size="small"
                v-model="scope.row.modelNum"
                clearable
                placeholder="非必填"
                @keyup.enter.native="
                  methodChange(scope.row.standardMethodListId, scope.row)
                "
                @clear="methodChange(scope.row.standardMethodListId, scope.row)"
              ></el-input>
            </template>
          </el-table-column>
          <el-table-column
            prop="standardMethodListId"
            label="检验标准"
            align="center"
            min-width="100"
          >
            <template slot-scope="scope">
              <el-select
                v-model="scope.row.standardMethodListId"
                :disabled="scope.row.model == null || active > 1"
                placeholder="检验标准"
                filterable
                size="small"
                :loading="methodLoad"
                @change="(value) => methodChange(value, scope.row)"
                @focus="methodFocus"
                :readonly="active > 1"
                style="width: 100%"
                clearable
                @clear="productList = []"
              >
                <el-option
                  v-for="item in methods"
                  :key="item.id"
                  :label="item.code"
                  :value="item.id"
                >
                </el-option>
              </el-select>
            </template>
          </el-table-column>
          <el-table-column
            prop="joinName"
            label="配套样品名称"
            width="140"
            align="center"
            v-if="addObj.mating == 1"
          >
            <template slot-scope="scope">
              <el-input
                size="small"
                type="textarea"
                :autosize="{ minRows: 1, maxRows: 1 }"
                v-model="scope.row.joinName"
              ></el-input>
            </template>
          </el-table-column>
          <el-table-column
            prop="joinModel"
            label="配套样品型号"
            width="140"
            align="center"
            v-if="addObj.mating == 1"
          >
            <template slot-scope="scope">
              <el-input
                size="small"
                type="textarea"
                :autosize="{ minRows: 1, maxRows: 1 }"
                v-model="scope.row.joinModel"
              ></el-input>
            </template>
          </el-table-column>
          <el-table-column
            prop="joinNum"
            label="配套样品数量"
            width="140"
            align="center"
            v-if="addObj.mating == 1"
          >
            <template slot-scope="scope">
              <el-input-number
                size="small"
                v-model="scope.row.joinNum"
                :min="1"
                :max="100"
                :precision="0"
                :controls="false"
                style="width: 80%"
              ></el-input-number>
            </template>
          </el-table-column>
          <el-table-column
            prop="proNum"
            label="待检项数量"
            width="105"
            align="center"
          ></el-table-column>
        </el-table>
        <el-table
          class="el-table"
          ref="productTable"
          :data="productList"
          max-height="400px"
          tooltip-effect="dark"
          border
          @selection-change="selectProduct"
          style="margin-bottom: 10px"
          @select="upProductSelect"
          :row-class-name="tableRowClassName"
          v-loading="standardLoading || getProductLoad"
          @select-all="handleAll"
        >
          <el-table-column
            type="selection"
            width="65"
            :selectable="selectable"
            v-if="active == 1"
          ></el-table-column>
          <el-table-column
            prop="inspectionItem"
            label="检验项"
            min-width="140"
            show-overflow-tooltip
          >
            <template slot="header" slot-scope="scope">
              <div
                style="
                  display: flex;
                  align-items: center;
                  flex-direction: column;
                  font-size: 14px;
                "
              >
                <span>检验项</span>
                <el-input
                  v-if="active == 1"
                  v-model="inspectionItem"
                  @input="searchFilterList"
                  size="mini"
                  placeholder="请输入"
                />
              </div>
            </template>
          </el-table-column>
          <el-table-column
            prop="inspectionItemSubclass"
            label="检验项子项"
            min-width="140"
            show-overflow-tooltip
          >
            <template slot="header" slot-scope="scope">
              <div
                style="
                  display: flex;
                  align-items: center;
                  flex-direction: column;
                  font-size: 14px;
                "
              >
                <span>检验项子项</span>
                <el-input
                  v-if="active == 1"
                  v-model="inspectionItemSubclass"
                  @input="searchFilterList"
                  size="mini"
                  placeholder="请输入"
                />
              </div>
            </template>
          </el-table-column>
          <el-table-column prop="tell" label="要求描述" min-width="220px">
            <template slot-scope="scope">
              <el-input
                size="small"
                placeholder="要求描述"
                v-model="scope.row.tell"
                clearable
                type="textarea"
                :autosize="{ minRows: 1, maxRows: 3 }"
                @change="(e) => requestChange(e, scope.row, 'tell')"
                v-if="active == 1 && isAskOnlyRead"
              ></el-input>
              <span v-else>
                <template>{{ scope.row.tell }}</template>
              </span>
            </template>
          </el-table-column>
          <el-table-column
            prop="ask"
            label="要求值"
            min-width="220px"
            v-if="isAskOnlyRead"
          >
            <template slot-scope="scope">
              <el-input
                size="small"
                placeholder="要求值"
                v-model="scope.row.ask"
                clearable
                type="textarea"
                :autosize="{ minRows: 1, maxRows: 3 }"
                @change="(e) => requestChange(e, scope.row, 'ask')"
                v-if="
                  active == 1 &&
                  isAskOnlyRead &&
                  scope.row.inspectionValueType != '5'
                "
              ></el-input>
              <span v-else>
                <template>{{ scope.row.ask }}</template>
              </span>
            </template>
          </el-table-column>
          <el-table-column
            prop="methodS"
            label="试验方法"
            min-width="120"
            show-overflow-tooltip
          >
            <template slot="header" slot-scope="scope">
              <div
                style="
                  display: flex;
                  align-items: center;
                  flex-direction: column;
                  font-size: 14px;
                "
              >
                <span>试验方法</span>
                <el-input
                  v-if="active == 1"
                  v-model="methodS"
                  @input="searchFilterList"
                  size="mini"
                  placeholder="请输入"
                />
              </div>
            </template>
          </el-table-column>
          <el-table-column
            prop="unit"
            label="计量单位"
            width="100"
            show-overflow-tooltip
          ></el-table-column>
          <el-table-column
            prop="price"
            label="单价"
            width="100"
            show-overflow-tooltip
          ></el-table-column>
          <el-table-column
            prop="section"
            label="区间"
            min-width="120"
            show-overflow-tooltip
          ></el-table-column>
          <el-table-column
            prop="sonLaboratory"
            label="子实验室"
            min-width="130"
            show-overflow-tooltip
            :filters="filters"
            :filter-method="filterHandler"
          ></el-table-column>
        </el-table>
      </div>
    </basic-container>
  </div>
</template>
<script>
import { mapGetters } from "vuex";
import fiberOpticConfig from "./fiberoptic-config.vue";
import fiberOpticConfigReadOnly from "./fiberoptic-config-readonly.vue";
import equipConfig from "./equip-config.vue";
import cableConfig from "./cable-config.vue";
import getLodop from "@/utils/lodop";
import { bigEval } from "@/utils/bigEval";
import { getDicts } from "@/api/system/dict/data";
export default {
  components: {
    fiberOpticConfig,
    fiberOpticConfigReadOnly,
    equipConfig,
    cableConfig,
  },
  computed: {
    ...mapGetters(["nickName", "company"]),
  },
  props: {
    examine: {
      type: Number,
      default: () => 0,
    },
    active: {
      type: Number,
      default: () => 0,
    },
    currentId: {
      type: Number,
      default: () => 0,
    },
  },
  data() {
    return {
      pickerOptions: {
        disabledDate(time) {
          // 当前时间加上三天的时间戳
          const threeDaysLater = Date.now() + 24 * 60 * 60 * 1000;
          // 禁用三天后之前的所有日期
          return time.getTime() < threeDaysLater;
        },
      },
      fiberLoss: [],
      qrDataList: [],
      isFocus: false,
      methodCount: 0,
      standardLoading: false,
      errorInspectionItemList: [],
      errorInspectionItem: false,
      inspectionItemST: null,
      sampleSelectionList: [], //样品表格选中数据
      editTable: [],
      template: null,
      templates: [],
      addObj: {
        entrustCode: null,
        custom: null,
        company: null,
        userId: null,
        type: "0",
        code: null,
        appointed: null,
        remark: null,
        otcCode: null,
        mating: 0,
        sample: null,
        factory: null,
        laboratory: null,
        sampleType: null,
        sampleNum: 1,
        unit: null,
        model: null,
        method: null,
        phone: null,
        processing: 1,
        isLeave: 0,
        orderType: null,
        send: 1,
        formType: "送检",
        engineering: null,
        engineeringEn: null,
        production: null,
        productionEn: null,
        companyId: null,
        prepareUser: null,
      },
      formRule: {
        orderType: {
          required: true,
          message: "请选择检验类别",
          trigger: "change",
        },
        custom: { required: true, message: "", trigger: "blur" },
        company: { required: true, message: "请选择委托单位", trigger: "blur" },
        phone: { required: true, message: "请输入联系方式", trigger: "blur" },
        type: { required: true, message: "请选择紧急程度", trigger: "change" },
        sample: { required: true, message: "请选择样品名称", trigger: "blur" },
        sampleNum: {
          required: true,
          message: "请输入样品数量",
          trigger: "blur",
        },
        formType: {
          required: true,
          message: "请选择来样方式",
          trigger: "change",
        },
        production: {
          required: true,
          message: "请输入生产单位",
          trigger: "blur",
        },
        productionEn: {
          required: true,
          message: "请输入生产单位EN",
          trigger: "blur",
        },
      },
      sample: {
        sampleCode: null,
        laboratory: null,
        factory: null,
        sampleType: null,
        sample: null,
        model: null,
        modelNum: null,
        sampleNum: 1,
        isLeave: 0,
        unit: null,
      },
      type: [],
      selectUserDia: false,
      componentData2: {
        entity: {
          orderBy: {
            field: "id",
            order: "desc",
          },
        },
        isIndex: true,
        showSelect: true,
        select: false,
        do: [],
        tagField: {
          state: {
            select: [
              {
                value: 1,
                type: "success",
                label: "启用",
              },
              {
                value: 0,
                type: "danger",
                label: "停用",
              },
            ],
          },
        },
        selectField: {},
      },
      selectStandardTree: false,
      search: null,
      list: [],
      selectTree: null,
      expandedKeys: [],
      sampleList: [],
      sampleIds: [],
      methodList: [],
      addSampleDia: false,
      count: 1,
      productList: [],
      productList0: [],
      bsm1DiaList: [],
      productIds: [],
      productListSelected: [],
      getProductLoad: false,
      saveLoad: false,
      templateDia: false,
      templateLoading: false,
      templateName: "",
      issuedDialogVisible: false,
      distributeData: {
        appointed: "",
        userId: [],
        sonLaboratory: "",
        isCreate: false,
      },
      personList: [],
      upLoad: false,
      units: [],
      models: [],
      methods: [],
      methodLoad: false,
      noDialogVisible: false,
      tell: "",
      noLoading: false,
      orderType: [],
      filters: [],
      formType: [],
      configShow: false,
      currentMethod: null,
      isAskOnlyRead: false,
      sampleId: null,
      bsmRow: null,
      bsm1: false,
      bsm1Val: null,
      bsm1Dia: false,
      bsm1DiaAll: false,
      equipConfigShow: false,
      cableConfigShow: false,
      bsm2: false,
      bsm2Val: null,
      bsm2Dia: false,
      bsm2Val2: [],
      bsm2Val3: [],
      bsmRow3: null,
      bsm3Val: null,
      bsm3Dia: false,
      total: 0,
      RTS: "",
      totalArr: [],
      model: null,
      standardMethodListId: null,
      symbolList: [
        "RTS",
        "A",
        "B",
        "C",
        "D",
        "E",
        "F",
        "G",
        "H",
        "I",
        "J",
        "K",
        "L",
        "M",
        "N",
        "O",
        "P",
        "Q",
        "R",
        "S",
        "T",
        "U",
        "V",
        "W",
        "X",
        "Y",
        "Z",
      ],
      inspectionItem: null,
      inspectionItemSubclass: null,
      methodS: null,
      circulateShow: false,
      circulateForm: {
        entrustTime: "",
        entrustNum: "",
        entrustPoint: "",
      },
      singleVerticalCombustionShow: false, //单根垂直燃烧检验项弹框
      singleVerticalCombustionNum: 0, //单根垂直燃烧检验项计数
      isBsm2Val2: false,
      opticalProject: [], // 温度循环弹框光纤项目列表
      opticalProjectList: [], // 温度循环弹框光纤项目选中的数组
      temperatureData: [], // 温度循环弹框温度点集合列表
      temperatureDataList: [
        { label: "<", value: "<" },
        { label: "≤", value: "≤" },
        { label: "=", value: "=" },
        { label: "≥", value: "≥" },
        { label: ">", value: ">" },
      ],
      temperatureShow: false, // 温升试验检验项弹框
      temperatureTest: [],
      temperatureList: [],
      temperatureEngList: [],
      temperatureTitle: "",
      temperatureTestNum: "",
      isShowInput: false,
      temId: "",
      sonLaboratoryList: [],
      selectiveEcho: [], // 检验下单的时候勾选检验项目,如果使用筛选提交显示检验项目为空 回显列表
      fiberPairing: [], //光纤配置里的熔接配对
    };
  },
  watch: {
    productList: {
      deep: true,
      handler(val) {
        if (val && val.length > 0) {
          let arr = [];
          val.forEach((item) => {
            if (
              item.sonLaboratory &&
              !arr.find((a) => a.value == item.sonLaboratory)
            ) {
              arr.push({
                text: item.sonLaboratory,
                value: item.sonLaboratory,
              });
            }
          });
          this.filters = arr;
        }
      },
    },
    sampleList: {
      deep: true,
      handler(val) {
        console.log(val);
        if (val.length > 0) {
          this.getTotal(val[0].bushing, false);
        }
      },
    },
    "addObj.sample"(val) {
      this.model = null;
      this.standardMethodListId = null;
    },
    "addObj.sampleNum"(val) {
      this.model = null;
      this.standardMethodListId = null;
    },
  },
  mounted() {
    if (this.addObj.custom == "" || this.addObj.custom == null) {
      this.addObj.custom = this.nickName; //设置制单人为当前登录人
    }
    this.addObj.company = this.company;
    this.selectDictForType();
    this.selectDictForOrderType();
    this.selectDictForUnit();
    this.selectDictForSampleForm();
    if (this.active != 3) {
      this.getUserNow();
    }
    this.selectStandardTreeList();
    this.getAuthorizedPerson();
    this.selectStandardMethods();
    if (this.active != 1) {
      // 查看/审核流程
      // 请求接口,回显数据
      this.$axios
        .post(this.$api.insOrder.getInsOrder, {
          orderId: this.currentId,
        })
        .then((res) => {
          this.addObj = {
            ...res.data.insOrder,
          };
          this.addObj.type = String(this.addObj.type);
          this.sampleList = this.HaveJson(res.data.sampleProduct);
          this.getProNum();
          this.addObj.sampleNum = this.sampleList.length;
          this.$nextTick(() => {
            this.$refs.sampleTable.doLayout();
            if (this.addObj.sampleNum > 0) {
              this.$refs.sampleTable.setCurrentRow(this.sampleList[0], true);
              this.rowClick(this.sampleList[0]);
            }
          });
        });
    }
  },
  methods: {
    changeType(type) {
      this.hasSendUrgentOrder(type)
        .then((res) => {
          console.log(res);
          if (!res) {
            this.addObj.type = "1";
            this.$message.error("当天加急额度已用完");
            throw "当天加急额度已用完";
          }
        })
        .catch((err) => {
          console.log(err);
        });
    },
    //判断当天是否可下发紧急订单
    async hasSendUrgentOrder(type) {
      let flag = true;
      //如果是类型是紧急,判断当前客户当天的紧急额度是否用完
      if (type == 2) {
        await this.$axios
          .post(this.$api.insOrder.hasSendUrgentOrder, {})
          .then((res) => {
            flag = res.data;
            return flag;
            // if (!res.data) {
            //   this.addObj.type = "1";
            //   this.$message.error("当天紧急额度已用完");
            //   throw "当天紧急额度已用完";
            // }
          });
      }
      return flag;
    },
    //光纤配置保存回调
    saveFiberConfigEvent(event) {
      console.log(event);
      this.$nextTick(() => {
        this.getTotal(event.bushing);
        this.fiberPairing = event.fiberPairing;
      });
    },
    //保存单根垂直燃烧特殊值
    saveSingleVerticalCombustionData() {},
    openSingleVerticalCombustionDialog() {
      this.$prompt("单根垂直燃烧次数", "特殊检测项目", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        inputValidator: this.customDecimalValidate,
        closeOnClickModal: false,
      })
        .then(({ value }) => {
          this.sampleList.forEach((item) => {
            this.singleVerticalData(item.insProduct, value);
          });
          this.singleVerticalData(this.productList, value);
          this.singleVerticalData(this.productList0, value);
          this.changeProductList0();
          this.currentMethod.insProduct = this.productList0;
          this.getProNum();
        })
        .catch(() => {});
    },
    singleVerticalData(arr, value) {
      arr.forEach((ins) => {
        if (ins.inspectionItem == "单根垂直燃烧" && ins.state == 1) {
          let tell = "";
          if (ins.tell.includes(",")) {
            tell = ins.tell.split(",")[0];
          } else {
            tell = ins.tell;
          }
          ins.tell = tell + "," + value + "根";
        }
      });
    },
    customDecimalValidate(value) {
      console.log(value);
      if (value == 0) {
        return "不能为0,请输入数字";
      } else if (!/^[0-9]*[1-9][0-9]*$/.test(value)) {
        return "请输入正整数";
      }
    },
    //特殊值填写处理
    inputValueHandler(row, index) {
      if (row) {
        const nextIndex = index + 1;
        // console.log(nextIndex, this.editTable)
        for (let i = nextIndex; i < this.editTable.length; i++) {
          const element = this.editTable[i];
          if (
            element.model == row.model &&
            row.symbolItem == element.symbolItem
          ) {
            this.editTable[i].value = row.value;
          }
        }
      }
    },
    spliceData() {
      if (
        !this.circulateForm.entrustNum ||
        !this.circulateForm.entrustTime ||
        !this.circulateForm.entrustPoint ||
        this.opticalProjectList.length === 0 ||
        this.temperatureData.length === 0
      ) {
        this.$message.error("请填写完整数据");
        return;
      }
      // 拼接要求值ask
      const opticalProjectList = JSON.parse(
        JSON.stringify(this.opticalProjectList)
      );
      opticalProjectList.forEach((o) => {
        o.temperatureData.forEach((t) => {
          if (!t.temperaturePoint || !t.askSymbol || !t.askNum) {
            throw this.$message.error("请填写完整数据");
          }
        });
        if (!o.temperatureData.some((item) => item.temperaturePoint == "20")) {
          throw this.$message.error(`${o.value + "波长没有配置20℃温度点"}`);
        }
      });
      let entrustTime = this.circulateForm.entrustTime;
      let entrustNum = this.circulateForm.entrustNum;
      let opticalProjectList2 = JSON.parse(
        JSON.stringify(this.opticalProjectList)
      );
      let askArr = [];
      let opticalProjectArr = [];
      opticalProjectList.forEach((o) => {
        opticalProjectArr.push(o.value);
        o.temperatureData.unshift({ temperaturePoint: 20 });
        o.temperatureData.forEach((t) => {
          if (!t.askSymbol) {
            const askObj =
              t.temperaturePoint + "℃(常温)" + "," + o.value + "," + null;
            askArr.push(askObj);
          } else {
            const askObj =
              t.temperaturePoint +
              "℃" +
              "," +
              o.value +
              "," +
              t.askSymbol +
              t.askNum;
            askArr.push(askObj);
          }
        });
      });
      askArr.push(this.circulateForm.entrustNum);
      const ask = askArr.join(";");
      // 拼接要求描述tell
      let askNum = [];
      let temperaturePointList = [];
      let temperaturePointList2 = [];
      entrustTime = entrustTime + "h";
      entrustNum = entrustNum + "次";
      opticalProjectList2.forEach((o) => {
        o.temperatureData.forEach((t) => {
          t.temperaturePoint = t.temperaturePoint + "℃";
          temperaturePointList2.push(t.temperaturePoint);
          temperaturePointList.push(t.temperaturePoint);
          askNum.push(t.askSymbol + t.askNum + "dB/Km");
        });
      });
      temperaturePointList = Array.from(new Set(temperaturePointList));
      temperaturePointList2 = Array.from(new Set(temperaturePointList2));
      temperaturePointList2.unshift(20 + "℃(常温)");
      let additionArr = [];
      askNum.forEach((a) => {
        additionArr.push(temperaturePointList.join(",") + a);
      });
      additionArr = Array.from(new Set(additionArr));
      const tell =
        "温度范围:" +
        temperaturePointList2.join(",") +
        ";" +
        "保温时间:" +
        entrustTime +
        ";" +
        "循环次数:" +
        entrustNum +
        ";" +
        "光纤(" +
        opticalProjectArr.join(",") +
        ")" +
        "附加衰减绝对值:" +
        additionArr.join(";");
      this.productList.forEach((item) => {
        if (item.inspectionItem === "温度循环") {
          item.ask = ask;
          item.tell = tell;
        }
      });
      this.circulateShow = false;
      this.changeProductList0();
      this.currentMethod.insProduct = this.productList0;
      this.sampleList.forEach((ele) => {
        ele.insProduct = this.productList0;
      });
      this.getProNum();
    },
    //温升/热循环特殊项目生成
    //调整:无需用户选择,默认生成四个子项,循环一次
    spliceTemperatureTest() {
      // console.log(this.temperatureList)
      // if (this.temperatureTest.length === 0) {
      //   this.$message.error("请选择");
      //   return;
      // }
      let askStr = "";
      let askArr1 = [];
      let askArr2 = "";
      let ask = "";
      let index = "";
      // this.temperatureTest.map((val) => {
      //   index = this.temperatureEngList.findIndex((item) => item.label === val);
      //   if (index > -1) {
      //     askStr = val + "," + this.temperatureEngList[index].value;
      //   }
      //   askArr1.push(askStr);
      // });
      this.temperatureEngList.forEach((item, i) => {
        index = i;
        if (index > -1) {
          askStr = item.label + "," + this.temperatureEngList[index].value;
        }
        askArr1.push(askStr);
      });
      askArr2 = askArr1.join(";");
      ask = askArr2 + ";1";
      // if (this.temperatureTitle === "温升试验要求填写") {
      //   askArr2 = askArr1.join(";");
      //   ask = askArr2 + ";1";
      // } else {
      //   if (!this.temperatureTestNum) {
      //     this.$message.error("请填写循环次数");
      //     return;
      //   }
      //   askArr2 = askArr1.join(";");
      //   ask = askArr2 + ";" + this.temperatureTestNum;
      // }
      this.productList.forEach((item) => {
        if (item.id === this.temId) {
          item.ask = ask;
          item.tell = ask;
        }
      });
      //将温升试验/热循环的要求值和要求描述,赋给sampleList
      this.sampleList.forEach((ele) => {
        if (ele.id == this.currentMethod.id) {
          ele.insProduct.forEach((item) => {
            if (item.id === this.temId) {
              item.ask = ask;
              item.tell = ask;
              item.state = 1;
            }
          });
        }
      });
      // this.temperatureShow = false;
    },
    temperatureShowClose() {
      if (
        this.temperatureTitle === "热循环要求填写" &&
        !this.temperatureTestNum
      ) {
        this.$message.error("请填写循环次数");
        return;
      }
      if (this.temperatureTest.length === 0) {
        this.$message.error("请选择");
        return;
      }
      this.spliceTemperatureTest();
    },
    cleanTemperatureTest() {
      this.temperatureTest = [];
      this.temperatureTestNum = "";
      this.temperatureShow = false;
    },
    cleanSpliceData() {
      this.circulateForm.entrustNum = null;
      this.circulateForm.entrustTime = null;
      this.circulateForm.entrustPoint = null;
      this.opticalProjectList = [];
      this.$refs.multipleTable.clearSelection();
      this.temperatureData = [];
      this.circulateShow = false;
    },
    beforeCirculateShowClose() {
      if (
        !this.circulateForm.entrustNum ||
        !this.circulateForm.entrustTime ||
        !this.circulateForm.entrustPoint ||
        this.opticalProjectList.length === 0 ||
        this.temperatureData.length === 0
      ) {
        this.$message.error("请填写完整数据");
        return;
      }
      // 拼接要求值ask
      const opticalProjectList = JSON.parse(
        JSON.stringify(this.opticalProjectList)
      );
      opticalProjectList.forEach((o) => {
        o.temperatureData.forEach((t) => {
          if (!t.temperaturePoint || !t.askSymbol || !t.askNum) {
            throw this.$message.error("请填写完整数据");
          }
        });
        if (!o.temperatureData.some((item) => item.temperaturePoint == "20")) {
          throw this.$message.error(`${o.value + "波长没有配置20℃温度点"}`);
        }
      });
      this.spliceData();
    },
    handleTemperatureTestChange(value) {
      // console.log('value---', value)
    },
    handleSelectionChange(val) {
      this.opticalProjectList = val;
    },
    selectAllOptical(val) {
      if (val.length > 0) {
        if (val[val.length - 1].temperatureData) {
          this.temperatureData = this.HaveJson(val.temperatureData);
        } else {
          this.temperatureData = [];
        }
      } else {
        this.temperatureData = [];
      }
      this.circulateForm.entrustPoint = this.temperatureData.length;
    },
    selectOpticalProject(val) {
      if (val.temperatureData) {
        this.temperatureData = this.HaveJson(val.temperatureData);
      } else {
        this.temperatureData = [];
      }
      this.circulateForm.entrustPoint = this.temperatureData.length;
    },
    rowClickOptical(val) {
      const index = this.opticalProjectList.findIndex(
        (item) => item.value === val.value
      );
      if (index > -1 && val.temperatureData) {
        this.temperatureData = this.HaveJson(val.temperatureData);
      }
      this.circulateForm.entrustPoint = this.temperatureData.length;
    },
    changeTemperature() {
      this.opticalProjectList.forEach((item) => {
        item.temperatureData = this.HaveJson(this.temperatureData);
      });
    },
    addTemperatureData() {
      const obj = {};
      this.temperatureData.push(obj);
      this.circulateForm.entrustPoint = this.temperatureData.length;
    },
    deleteTemperatureData() {
      if (this.temperatureData.length > 0) {
        this.temperatureData = this.temperatureData.slice(0, -1);
      }
      this.circulateForm.entrustPoint = this.temperatureData.length;
    },
    changeTemperatureData() {
      const length = this.temperatureData.length;
      const entrustPoint = Number(this.circulateForm.entrustPoint);
      if (entrustPoint > length) {
        for (let i = 0; i < entrustPoint - length; i++) {
          const obj = {};
          this.temperatureData.push(obj);
        }
      } else if (entrustPoint < length) {
        const deleteNum = length - entrustPoint;
        this.temperatureData = this.temperatureData.slice(0, -deleteNum);
      }
      setTimeout(() => {
        this.isFocus = false;
      }, 300);
    },
    changeProductList0() {
      this.productList0.forEach((a) => {
        let obj = this.productList.find((m) => m.id == a.id);
        if (obj) {
          a.state = obj.state;
          a.section = obj.section;
          a.ask = obj.ask;
          a.manHour = obj.manHour;
          a.price = obj.price;
          a.tell = obj.tell;
        }
        if (a.state == 0 && a.bsmRow) {
          a = this.HaveJson(a.bsmRow);
        }
      });
    },
    searchFilterList() {
      const vtw = {
        inspectionItem: this.inspectionItem, // 检验项
        inspectionItemSubclass: this.inspectionItemSubclass, // 检验项子项
        methodS: this.methodS, // 试验方法
      };
      const isHaveValue = Object.values(vtw).some((item) => {
        return item;
      });
      this.changeProductList0();
      if (isHaveValue) {
        for (let i in vtw) {
          if (vtw[i]) {
            this.productList = this.productList0.filter((item) => {
              return item[i] && item[i].includes(vtw[i]);
            });
          }
        }
        this.$nextTick(() => {
          this.productList.forEach((a) => {
            if (a.state == 1) this.toggleSelection(a);
          });
        });
      } else {
        // 没有查询条件时渲染所有数据
        this.productList = this.productList0;
        this.$nextTick(() => {
          this.productList.forEach((a) => {
            if (a.state == 1) this.toggleSelection(a);
          });
        });
      }
    },
    getAuthorizedPerson() {
      this.$axios.get(this.$api.user.getLaboratoryPersonList).then((res) => {
        this.personList = res.data;
      });
    },
    selectDictForType() {
      getDicts("urgency_level")
        .then((res) => {
          if (res.code === 200) {
            this.type = res.data;
          }
        })
        .catch((error) => {
          console.error(error);
        });
    },
    selectUser() {
      let selects = this.$refs.ValueTable2.multipleSelection;
      if (selects.length == 0) {
        this.$message.error("未选择数据");
        return;
      }
      this.addObj.company = selects.company;
      this.addObj.code = selects.code;
      this.addObj.companyId = selects.id;
      this.selectUserDia = false;
      if (this.active == 1) {
        // TODO
        this.selectInsOrderTemplate();
      }
    },
    containsValue(str) {
      if (str) {
        let symbolItem = "";
        this.symbolList.some((value) => {
          if (str.includes(value)) {
            symbolItem = value;
            return true;
          }
        });
        return symbolItem;
      }
    },
    /**
     * 获取小数的最大位数
     * @param number  型号参数
     * @param ask     要求值
     * @param calcNum 计算值
     */
    getDecimalPlaces(number, ask, calcNum) {
      console.log("计算小数点-->", number, ask, calcNum);
      let count1 = 0;
      let count2 = 0;
      const reg = /(\d+\.)(\d+)/g;
      let matches = [];
      if (ask) {
        matches = ask.match(reg);
      }
      if (
        matches &&
        matches.length > 0 &&
        matches[0].toString().indexOf(".") > -1
      ) {
        count1 = matches[0].toString().split(".")[1].length;
      }
      if (number.toString().indexOf(".") > -1) {
        count2 = number.toString().split(".")[1].length;
      }
      if (calcNum.toString().indexOf(".") > -1) {
        const pointLength2 = calcNum.toString().split(".")[1].length;
        count2 = count2 > pointLength2 ? count2 : pointLength2;
      }
      return count1 > count2 ? count1 : count2;
    },
    handleAsk(ask, symbolItem, value) {
      console.log("处理要求值--》", ask, symbolItem, value);
      try {
        let code = [">", "<", "=", ">", "<", "≥", "≤", "±"];
        if (ask.includes("&")) {
          // 多个条件
          let arr0 = ask.split("&");
          let arr1 = [];
          arr0.forEach((m) => {
            let index = code.findIndex((b) => m.includes(b));
            // console.log("index--》", index);
            if (index > -1) {
              let arr = m.split(code[index]).filter((b) => !!b);
              let calcNum = this.$Big(
                bigEval(this.replaceAll(arr[0], symbolItem, value))
              );
              let num = calcNum.toFixed(
                this.getDecimalPlaces(value, ask, calcNum)
              );
              m = code[index] + "" + num;
              arr1.push(m);
            }
          });
          // console.log("处理多个条件要求值--》", arr1.join("&"));
          return arr1.join("&");
        } else {
          // 单个条件
          let index = code.findIndex((b) => ask.includes(b));
          // console.log("index--》", index);
          if (index > -1) {
            let arr = ask.split(code[index]).filter((b) => !!b);
            console.log("特殊值替换--》", arr);
            let calcNum = this.$Big(
              bigEval(this.replaceAll(arr[0], symbolItem, value))
            );
            let num = calcNum.toFixed(
              this.getDecimalPlaces(value, ask, calcNum)
            );
            console.log("处理单个条件要求值--》", code[index] + "" + num);
            return code[index] + "" + num;
          }
        }
      } catch (e) {
        console.error("处理要求值异常-->", e);
      }
    },
    handleTell(tell, symbolItem, value) {
      try {
        let num = this.replaceAll(tell, symbolItem, value);
        return num;
      } catch (e) {}
    },
    replaceAll(str, find, value) {
      if (str === undefined) {
        return str;
      }
      return str.split(find).join(value);
    },
    save() {
      if (!this.addObj.companyId) {
        this.$message.error("未选择客户单位");
        return;
      }
      if (!this.addObj.type) {
        this.$message.error("未选择紧急程度");
      } else if (!this.addObj.formType) {
        this.$message.error("请输入来样方式");
      } else if (!this.addObj.orderType) {
        this.$message.error("请选择检验类别");
      } else if (!this.addObj.production) {
        this.$message.error("请输入生产单位");
      } else if (!this.addObj.productionEn) {
        this.$message.error("请输入生产单位EN");
      } else if (this.sampleList.length < 1) {
        this.$message.error("请添加一个样品");
      } else if (!this.sampleList.every((m) => m.sample)) {
        this.$message.error("请输入样品名称");
      } else if (!this.sampleList.every((m) => m.model)) {
        this.$message.error("请输入样品型号");
      } else if (!this.sampleList.every((m) => m.standardMethodListId)) {
        this.$message.error("请选择检验标准");
      } else {
        const select = this.selectTree.split(" - ");
        const productListSelected = this.productListSelected.some(
          (item) => item.inspectionItem === "温度循环"
        );
        let isHaveBushing = "";
        this.sampleList.forEach((item) => {
          if (!item.bushing || item.bushing.length === 0) {
            isHaveBushing = false;
          }
        });
        //判断紧急额度是否用完
        this.hasSendUrgentOrder(this.addObj.type).then((res) => {
          if (!res) {
            this.addObj.type = "1";
            this.$message.error("当天紧急额度已用完");
          } else {
            let sampleCodes = new Set();
            let flag = false;
            for (let i = 0; i < this.sampleList.length; i++) {
              if (
                this.sampleList[i].sampleCode &&
                this.sampleList[i].sampleCode.trim() !== "" &&
                this.sampleList[i].sampleCode != null
              ) {
                if (sampleCodes.has(this.sampleList[i].sampleCode)) {
                  flag = true;
                  break;
                }
                sampleCodes.add(this.sampleList[i].sampleCode);
              }
            }
            if (flag) {
              this.$message.error("样品编号不能重复");
              return;
            }
            //过滤检测项:去除特殊项
            let filterProductList = this.productListSelected
              .filter((ele) => ele.bsm == 0)
              .filter((ele) => {
                if (
                  select[1].indexOf("通信") >= 0 &&
                  ["光缆", "光纤"].includes(select[2])
                ) {
                  return !["温度循环", "光纤接头损耗"].includes(
                    ele.inspectionItem
                  );
                }
                return true;
              })
              .filter((ele) => {
                if (select[1].indexOf("电力") >= 0) {
                  return !["温升试验", "热循环"].includes(ele.inspectionItem);
                }
                return true;
              });
            //校验检验项的要求值和要求描述,仅委托要求
            const isTrue = this.checkRequiredValueAndRemark(
              filterProductList,
              this.isAskOnlyRead
            );
            if (!isTrue) {
              this.errorInspectionItem = true;
              this.errorInspectionItemList = [
                ...new Set(this.errorInspectionItemList),
              ];
              let newData = [];
              const h = this.$createElement;
              for (let i in this.errorInspectionItemList) {
                const lastChar = this.errorInspectionItemList[i].slice(-1);
                if (lastChar == "-") {
                  this.errorInspectionItemList[i] =
                    this.errorInspectionItemList[i].slice(0, -1);
                }
                newData.push(
                  h(
                    "p",
                    { style: "font-size: 14px;color: red;" },
                    Number(i) + 1 + "、" + this.errorInspectionItemList[i]
                  )
                );
              }
              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(() => {
                  console.log("确定");
                  // console.log('isHaveBushing===', this.totalArr)
                  let spcialItem = this.totalArr.filter(
                    (a) =>
                      a.state == 1 &&
                      (a.inspectionItem.includes("松套管") ||
                        (a.inspectionItemSubclass &&
                          a.inspectionItemSubclass.includes("松套管")))
                  );
                  if (
                    productListSelected &&
                    select[2] === "光缆" &&
                    isHaveBushing === false &&
                    spcialItem.length == 0
                  ) {
                    this.$message.error("光缆温度循环项目必须进行光纤配置");
                    this.$refs.sampleTable.setCurrentRow(
                      this.currentMethod,
                      true
                    );
                    this.rowClick(this.currentMethod);
                    this.sampleIds = [this.currentMethod.id];
                    this.openConfig();
                    return;
                  } else if (spcialItem.length > 0 && isHaveBushing === false) {
                    this.$message.error("松套管项目必须进行光纤配置");
                    this.$refs.sampleTable.setCurrentRow(
                      this.currentMethod,
                      true
                    );
                    this.rowClick(this.currentMethod);
                    this.sampleIds = [this.currentMethod.id];
                    // spcialItem.forEach(item=>{
                    //   this.sampleIds.push(item.id)
                    // })
                    this.openConfig();
                    return;
                  }
                  let sampleList = this.HaveJson(this.sampleList);
                  let projectNum = this.totalArr.filter(
                    (a) => a.state == 1
                  ).length;
                  if (projectNum == 0) {
                    this.$confirm("检验项目为空,是否确认提交?", "提示", {
                      confirmButtonText: "确定",
                      cancelButtonText: "取消",
                      type: "warning",
                    })
                      .then(() => {
                        this.saveMethod(sampleList);
                      })
                      .catch(() => {});
                  } else {
                    let isRTS = this.totalArr.find(
                      (a) =>
                        a.ask != null &&
                        this.symbolList.find((b) => a.ask.includes(b)) &&
                        a.state == 1
                    );
                    if (isRTS && this.PROJECT == "检测中心") {
                      this.editTable = this.handleData(
                        sampleList,
                        this.containsValue,
                        0
                      );
                      if (this.editTable.length === 0) {
                        this.$message.error("要求值为空,需要去标准库维护!");
                        return;
                      }
                      // console.log('editTable1===', this.editTable);
                      this.editTable.forEach((item) => {
                        item.value = item.modelNum;
                      });
                      this.bsm3Dia = true;
                      return;
                    }
                    this.saveMethod(sampleList);
                  }
                  this.errorInspectionItemList = [];
                })
                .catch(() => {
                  this.errorInspectionItemList = [];
                  this.errorInspectionItem = false;
                  return;
                });
              //this.$message.error('检验项'+this.errorInspectionItemList+'的要求值与要求描述不匹配, 请检查')
              //return
            }
            if (this.errorInspectionItem) {
              return;
            }
            // console.log('isHaveBushing===', this.totalArr)
            let spcialItem = this.totalArr.filter(
              (a) =>
                a.state == 1 &&
                (a.inspectionItem.includes("松套管") ||
                  (a.inspectionItemSubclass &&
                    a.inspectionItemSubclass.includes("松套管")))
            );
            if (
              productListSelected &&
              select[2] === "光缆" &&
              isHaveBushing === false &&
              spcialItem.length == 0
            ) {
              this.$message.error("光缆温度循环项目必须进行光纤配置");
              this.$refs.sampleTable.setCurrentRow(this.currentMethod, true);
              this.rowClick(this.currentMethod);
              this.sampleIds = [this.currentMethod.id];
              this.openConfig();
              return;
            } else if (spcialItem.length > 0 && isHaveBushing === false) {
              this.$message.error("松套管项目必须进行光纤配置");
              this.$refs.sampleTable.setCurrentRow(this.currentMethod, true);
              this.rowClick(this.currentMethod);
              this.sampleIds = [this.currentMethod.id];
              // spcialItem.forEach(item=>{
              //   this.sampleIds.push(item.id)
              // })
              this.openConfig();
              return;
            }
            let sampleList = this.HaveJson(this.sampleList);
            let projectNum = this.totalArr.filter((a) => a.state == 1).length;
            if (projectNum == 0) {
              this.$confirm("检验项目为空,是否确认提交?", "提示", {
                confirmButtonText: "确定",
                cancelButtonText: "取消",
                type: "warning",
              })
                .then(() => {
                  this.saveMethod(sampleList);
                })
                .catch(() => {});
            } else {
              let isRTS = this.totalArr.find(
                (a) =>
                  a.ask != null &&
                  this.symbolList.find((b) => a.ask.includes(b)) &&
                  a.state == 1
              );
              if (isRTS && this.PROJECT == "检测中心") {
                this.editTable = this.handleData(
                  sampleList,
                  this.containsValue,
                  0
                );
                if (this.editTable.length === 0) {
                  this.$message.error("要求值为空,需要去标准库维护!");
                  return;
                }
                // console.log('editTable1===', this.editTable);
                this.editTable.forEach((item) => {
                  item.value = item.modelNum;
                });
                this.bsm3Dia = true;
                return;
              }
              this.saveMethod(sampleList);
            }
          }
        });
      }
    },
    errorSet() {},
    /**
     * 校验委托要求的检验项的要求描述和要求值
     *
     */
    checkRequiredValueAndRemark(data, isAskOnlyRead) {
      let isTrue = true;
      //过滤要求值或要求描述为空的检验项
      let emptyList = data.filter(
        (ele) =>
          ele.ask == undefined ||
          ele.ask == "" ||
          ele.ask == null ||
          ele.tell == undefined ||
          ele.tell == "" ||
          ele.tell == null
      );
      if (emptyList.length > 0) {
        emptyList.forEach((ele) => {
          console.log("ask or tell is null");
          this.errorInspectionItemList.push(
            ele.inspectionItem +
              " " +
              (ele.inspectionItemSubclass == null
                ? ""
                : ele.inspectionItemSubclass)
          );
        });
        isTrue = false;
      }
      //委托要求才走下面的校验
      if (isAskOnlyRead) {
        try {
          data.forEach((ele) => {
            //要求值和要求描述不能为空
            // if(!ele.ask || !ele.tell){
            //   console.log(111111);
            //   this.errorInspectionItemList.push(ele.inspectionItem + ' ' + (ele.inspectionItemSubclass == null ? '' : ele.inspectionItemSubclass))
            //   //this.errorInspectionItemList.push(h('p', {style: 'font-size: 14px;color: red;'},ele.inspectionItem + ' ' + ele.inspectionItemSubclass))
            //   //this.errorInspectionItemList.push(h('p',  { style: 'font-size: 16px;color:#000;margin-top:12px;overflow-y: auto;max-height:80vh' },'以上项目不合格,确定提交?'))
            //   isTrue = false
            // }else{
            // }
            if (/[0-9]/.test(ele.ask)) {
              //判断(≤,≥,>,<,=)这几种情况
              //判断要求值中的数字是否包含在要求描述中
              //.match(/\d+(\.\d+)?/g) 此正则截取字符中的整数和小数
              if (["≤", "≥", ">", "<", "="].includes(ele.ask[0])) {
                const askVal = ele.ask.match(/\d+(\.\d+)?/g);
                // 判断要求值是否包含在要求描述中
                if (ele.tell.includes(ele.ask[0])) {
                  const regex = /([≤≥<>!=]=?|[<>=])[+-]?\d*(\.\d+)?/g;
                  const matches = ele.tell.match(regex);
                  if (
                    ele.ask != ele.tell &&
                    matches.filter((item) => item == ele.ask).length == 0
                  ) {
                    console.log(
                      "要求值和要求描述不相等,并且要求描述中不包含要求值"
                    );
                    this.errorInspectionItemList.push(
                      ele.inspectionItem +
                        " " +
                        (ele.inspectionItemSubclass == null
                          ? ""
                          : ele.inspectionItemSubclass)
                    );
                    isTrue = false;
                  }
                }
                if (isNaN(askVal[0])) {
                  console.log("要求值中没有数字");
                  this.errorInspectionItemList.push(
                    ele.inspectionItem +
                      " " +
                      (ele.inspectionItemSubclass == null
                        ? ""
                        : ele.inspectionItemSubclass)
                  );
                  isTrue = false;
                }
                if (
                  ele.tell.includes("直径公差之半") &&
                  ele.ask.indexOf("0.5") < 0
                ) {
                  console.log("直径公差之半与0.5不匹配");
                  this.errorInspectionItemList.push(
                    ele.inspectionItem +
                      " " +
                      (ele.inspectionItemSubclass == null
                        ? ""
                        : ele.inspectionItemSubclass)
                  );
                  isTrue = false;
                  //   if(ele.tell.indexOf(askVal[0])<0 && ele.tell.indexOf('半')<0){
                  //   console.log(askVal);
                  //   console.log(2222233);
                  //   isTrue = false
                  // }else if(askVal==0.5&&ele.tell.indexOf('半')<0){
                  //   console.log(22222);
                  //   isTrue = false
                  // }
                }
              }
              //判断范围(10-25),要求值必须是-
              if (
                ele.ask.indexOf("-") > 0 &&
                ele.ask.length > 1 &&
                ele.ask.indexOf("&") < 0
              ) {
                //要求描述的~和要求值的-,等效
                let tell = ele.tell;
                if (
                  ele.tell.indexOf("~") > 0 ||
                  ele.tell.indexOf("(") ||
                  ele.tell.indexOf(")")
                ) {
                  tell = tell.replace("~", "-");
                  tell = tell.replace("(", "(");
                  tell = tell.replace(")", ")");
                }
                const splits = ele.ask.split("-");
                //满足格式要求,并且两个都是数字
                if (
                  splits.length == 2 &&
                  !isNaN(splits[0]) &&
                  !isNaN(splits[1])
                ) {
                  /**
                   * 判断情况
                   * 1.要求描述与要求描述相同
                   * 2.要求描述包含要求值
                   * 3.要求描述为3N-10N这种情况
                   * 4.要求描述为10±5这种情况
                   * 5.要求描述为(10-15)±5这种情况
                   */
                  let min = Math.min(...splits);
                  let max = Math.max(...splits);
                  if (min == max) {
                    console.log("最大值和最小值相等");
                    this.errorInspectionItemList.push(
                      ele.inspectionItem +
                        " " +
                        (ele.inspectionItemSubclass == null
                          ? ""
                          : ele.inspectionItemSubclass)
                    );
                    isTrue = false;
                  }
                  //要求描述中不包含±以及区间的数字,则返回false
                  if (tell.indexOf("±") < 0 && tell.indexOf("-") < 0) {
                    console.log("要求描述中不包含±以及区间的数字");
                    this.errorInspectionItemList.push(
                      ele.inspectionItem +
                        " " +
                        (ele.inspectionItemSubclass == null
                          ? ""
                          : ele.inspectionItemSubclass)
                    );
                    isTrue = false;
                  } else if (ele.tell.indexOf("-") == 0) {
                    console.log("要求值的区间格式错误");
                    this.errorInspectionItemList.push(
                      ele.inspectionItem +
                        " " +
                        (ele.inspectionItemSubclass == null
                          ? ""
                          : ele.inspectionItemSubclass)
                    );
                    isTrue = false;
                  } else if (tell.indexOf("-") > 0 || tell.indexOf("±") > 0) {
                    if (tell.indexOf("±") > 0 && tell.indexOf("-") > 0) {
                      const num = tell.split("±")[1];
                      const startIndex = tell.indexOf("(");
                      const endIndex = tell.indexOf(")");
                      ////校验要求描述为(10-15)±5这种写法的情况
                      if (startIndex > -1 && endIndex > 0) {
                        const str = tell.substring(startIndex, endIndex);
                        if (str && str.indexOf("-") > 0) {
                          let strList = str.split("-");
                          const minNum = Number(strList[0] - num);
                          const maxNum = Number(strList[1] + num);
                          if (minNum > min || maxNum < max) {
                            console.log("错误的区间设置");
                            this.errorInspectionItemList.push(
                              ele.inspectionItem +
                                " " +
                                (ele.inspectionItemSubclass == null
                                  ? ""
                                  : ele.inspectionItemSubclass)
                            );
                            isTrue = false;
                          }
                        }
                      }
                    } else if (tell.indexOf("±") > 0 && tell.indexOf("-") < 0) {
                      //校验要求描述为10±5这种写法的情况
                      let splitNums = tell.split("±");
                      if (splitNums.length < 2) {
                        console.log(777777);
                        this.errorInspectionItemList.push(
                          ele.inspectionItem +
                            " " +
                            (ele.inspectionItemSubclass == null
                              ? ""
                              : ele.inspectionItemSubclass)
                        );
                        isTrue = false;
                      } else {
                        let leftNum = splitNums[0].match(/\d+(\.\d+)?/g);
                        let rightNum = splitNums[1].match(/\d+(\.\d+)?/g);
                        console.log(leftNum, rightNum);
                        let minTell = Number(
                          Number(leftNum) - Number(rightNum)
                        ).toFixed(6);
                        let maxTell = Number(
                          Number(leftNum) + Number(rightNum)
                        ).toFixed(6);
                        if (minTell != min || maxTell != max) {
                          console.log(888888);
                          this.errorInspectionItemList.push(
                            ele.inspectionItem +
                              " " +
                              (ele.inspectionItemSubclass == null
                                ? ""
                                : ele.inspectionItemSubclass)
                          );
                          isTrue = false;
                        }
                      }
                    } else {
                      const splitTells = tell.split("-");
                      if (
                        splitTells[0].indexOf(min) < 0 ||
                        splitTells[1].indexOf(max) < 0
                      ) {
                        console.log(99999);
                        this.errorInspectionItemList.push(
                          ele.inspectionItem +
                            " " +
                            (ele.inspectionItemSubclass == null
                              ? ""
                              : ele.inspectionItemSubclass)
                        );
                        isTrue = false;
                      }
                    }
                  }
                } else {
                  console.log(1010101001);
                  this.errorInspectionItemList.push(
                    ele.inspectionItem +
                      " " +
                      (ele.inspectionItemSubclass == null
                        ? ""
                        : ele.inspectionItemSubclass)
                  );
                  isTrue = false;
                }
              }
              // else if(ele.ask.indexOf('&')>0 && ele.ask.length>1){
              //   //判断
              // }
            }
          });
        } catch (error) {
          console.log(error);
          isTrue = false;
        }
      }
      return isTrue;
    },
    save0() {
      console.log("editTable2===", this.editTable);
      if (this.editTable.every((m) => m.value)) {
        let sampleList = this.handleData(
          this.HaveJson(this.sampleList),
          this.handleAsk,
          1
        );
        if (sampleList.length === 0) {
          this.$message.error("要求值为空,需要去标准库维护!");
          return;
        }
        this.saveMethod(sampleList);
      } else {
        this.$message.error("请填写识别符值");
      }
    },
    handleData(sampleList, calBack, type) {
      let editTable = [];
      let isTrue = true;
      sampleList.forEach((item) => {
        let obj = {
          sampleCode: item.sampleCode,
          model: item.model,
          symbolList: [],
          sampleId: item.id,
          modelNum: item.modelNum,
        };
        if (item.insProduct && item.insProduct.length > 0) {
          item.insProduct.forEach((a) => {
            if (a.state == 1) {
              if (type == 0) {
                let str = calBack(a.ask);
                str &&
                  obj.symbolList.push({
                    symbolItem: str,
                    inspectionItem: a.inspectionItem,
                  });
              } else if (type == 1) {
                let arr = this.HaveJson(
                  this.editTable.filter((b) => b.sampleId == item.id)
                );
                for (var i = 0; i < arr.length; i++) {
                  if (a.ask) {
                    if (a.ask.includes(arr[i].symbolItem)) {
                      let ask = calBack(a.ask, arr[i].symbolItem, arr[i].value);
                      if (ask) {
                        a.ask = ask;
                      }
                      let tell = this.handleTell(
                        a.tell,
                        arr[i].symbolItem,
                        arr[i].value
                      );
                      if (tell) {
                        a.tell = tell;
                      }
                    }
                  } else {
                    isTrue = false;
                  }
                }
                // arr.forEach(f => {
                //   if(a.ask){
                //     if(a.ask.includes(f.symbolItem)){
                //       let ask = calBack(a.ask, f.symbolItem,f.value)
                //       if (ask) {
                //         a.ask = ask
                //       }
                //       let tell = this.handleTell(a.tell, f.symbolItem,f.value)
                //       if (tell) {
                //         a.tell = tell
                //       }
                //     }
                //   }else{}
                // })
              }
            }
          });
        }
        // 光纤带项目
        if (item.bushing && item.bushing.length > 0) {
          item.bushing.forEach((a) => {
            if (a.fiber && a.fiber.length > 0) {
              a.fiber.forEach((b) => {
                if (b.productList && b.productList.length > 0) {
                  b.productList.forEach((c) => {
                    if (c.state == 1) {
                      if (type == 0) {
                        let str = calBack(c.ask);
                        str &&
                          obj.symbolList.push({
                            symbolItem: str,
                            inspectionItem: c.inspectionItem,
                          });
                      } else if (type == 1) {
                        let arr = this.editTable.filter(
                          (b) => b.sampleId == item.id
                        );
                        arr.forEach((f) => {
                          if (c.ask.includes(f.symbolItem)) {
                            let ask = calBack(c.ask, f.symbolItem, f.value);
                            if (ask) {
                              c.ask = ask;
                            }
                            let tell = this.handleTell(
                              c.tell,
                              f.symbolItem,
                              f.value
                            );
                            if (tell) {
                              c.tell = tell;
                            }
                          }
                        });
                      }
                    }
                  });
                }
              });
            }
            if (a.fibers && a.fibers.length > 0) {
              a.fibers.forEach((b) => {
                if (b.productList && b.productList.length > 0) {
                  b.productList.forEach((c) => {
                    if (c.state == 1) {
                      if (type == 0) {
                        let str = calBack(c.ask);
                        str &&
                          obj.symbolList.push({
                            symbolItem: str,
                            inspectionItem: c.inspectionItem,
                          });
                      } else if (type == 1) {
                        // let ask = calBack(c.ask, c.rts)
                        // if (ask && c.state == 1) {
                        //   c.ask = csk
                        // }
                        let arr = this.editTable.filter(
                          (b) => b.sampleId == item.id
                        );
                        arr.forEach((f) => {
                          if (c.ask.includes(f.symbolItem)) {
                            let ask = calBack(c.ask, f.symbolItem, f.value);
                            if (ask) {
                              c.ask = ask;
                            }
                            let tell = this.handleTell(
                              c.tell,
                              f.symbolItem,
                              f.value
                            );
                            if (tell) {
                              c.tell = tell;
                            }
                          }
                        });
                      }
                    }
                  });
                }
                if (b.fiber && b.fiber.length > 0) {
                  b.fiber.forEach((c) => {
                    if (c.productList && c.productList.length > 0) {
                      c.productList.forEach((d) => {
                        if (d.state == 1) {
                          if (type == 0) {
                            let str = calBack(d.ask);
                            str &&
                              obj.symbolList.push({
                                symbolItem: str,
                                inspectionItem: d.inspectionItem,
                              });
                          } else if (type == 1) {
                            // let ask = calBack(d.ask, d.rts)
                            // if (ask && d.state == 1) {
                            //   d.ask = ask
                            // }
                            let arr = this.editTable.filter(
                              (b) => b.sampleId == item.id
                            );
                            arr.forEach((f) => {
                              if (d.ask.includes(f.symbolItem)) {
                                let ask = calBack(d.ask, f.symbolItem, f.value);
                                if (ask) {
                                  d.ask = ask;
                                }
                                let tell = this.handleTell(
                                  d.tell,
                                  f.symbolItem,
                                  f.value
                                );
                                if (tell) {
                                  d.tell = tell;
                                }
                              }
                            });
                          }
                        }
                      });
                    }
                  });
                }
              });
            }
          });
        }
        if (type == 0) {
          editTable.push(obj);
        }
      });
      if (type == 0) {
        editTable.forEach((a) => {
          a.symbolList.forEach((b) => {
            let arr = a.symbolList.filter((c) => c.symbolItem == b.symbolItem);
            b.inspectionItemList = arr.map((c) => c.inspectionItem).join(",");
          });
        });
        editTable.forEach((a) => {
          let mySet = new Set();
          a.symbolList = a.symbolList.filter((b) => {
            let num0 = mySet.size;
            mySet.add(b.symbolItem);
            let num1 = mySet.size;
            if (num0 != num1) {
              return true;
            } else {
              return false;
            }
          });
        });
        let editTableNew = [];
        editTable.forEach((a) => {
          a.symbolList.forEach((b) => {
            let obj = {
              sampleCode: a.sampleCode,
              model: a.model,
              symbolItem: b.symbolItem,
              sampleId: a.sampleId,
              sampleIdTwo: a.sampleId,
              value: null,
              inspectionItemList: b.inspectionItemList,
              modelNum: a.modelNum,
            };
            editTableNew.push(obj);
          });
        });
        return isTrue ? editTableNew : [];
      } else {
        return isTrue ? sampleList : [];
      }
    },
    saveMethod(sampleList0) {
      let sampleList = this.HaveJson(sampleList0);
      sampleList.forEach((a) => {
        a.insProduct.forEach((b) => {
          delete b.bsmRow;
        });
      });
      this.editTable.forEach((item) => {
        sampleList.forEach((a) => {
          if (item.sampleIdTwo == a.id) {
            a.insProduct.forEach((b) => {
              if (item.inspectionItemList == b.inspectionItem) {
                b.ask = b.ask.replace(item.symbolItem, item.value);
                this.$set(b, "specialValue", item.value);
              }
            });
          }
        });
      });
      console.log(this.sampleList);
      console.log(this.fiberPairing);
      this.saveLoad = true;
      this.$axios
        .post(this.$api.insOrder.addInsOrder, {
          str: JSON.stringify({
            insOrder: this.addObj,
            list: JSON.stringify(
              sampleList.map((a) => {
                if (this.PROJECT === "装备电缆") {
                  if (a.modelNum) {
                    const index = a.modelNum.indexOf("×");
                    if (index === 0) {
                      a.model = a.model + a.modelNum;
                    } else if (index === -1) {
                      a.model = a.model + "-" + a.modelNum;
                    } else {
                      a.model = a.modelNum + a.model;
                    }
                  } else {
                    a.model =
                      a.model +
                      (a.modelNum == null ||
                      a.modelNum == "" ||
                      a.modelNum == "null"
                        ? ""
                        : "-" + a.modelNum);
                  }
                } else {
                  a.model =
                    a.model +
                    (a.modelNum == null ||
                    a.modelNum == "" ||
                    a.modelNum == "null"
                      ? ""
                      : "-" + a.modelNum);
                }
                a.insProduct = a.insProduct.filter((b) => b.state === 1);
                return a;
              })
            ),
            pairing: JSON.stringify(this.bsm2Val2),
            fiberPairing: JSON.stringify(this.fiberPairing),
          }),
        })
        .then((res) => {
          this.saveLoad = false;
          if (res.code == 201) return;
          this.$message.success("已提交");
          this.bsm3Dia = false;
          this.$parent.playOrder(0);
        })
        .catch((e) => {
          this.saveLoad = false;
        });
    },
    upInsOrderOfState(state) {
      if (state == 1) {
        //this.saveLoad = true
        this.issuedDialogVisible = true;
        this.$axios
          .post(this.$api.insOrder.selectOrderManDay, {
            id: this.currentId,
          })
          .then((ress) => {
            this.distributeData.orderId = this.currentId;
            this.distributeData.appointed = ress.data;
            console.log("约定时间", this.distributeData.appointed);
          });
        setTimeout(() => {
          this.issuedDialogVisible = true;
        }, 1000);
        // this.$axios.post(this.$api.insOrder.upInsOrderOfState, {
        //   state,
        //   id: this.currentId,
        //   companyId:this.addObj.companyId,
        //   laboratory:this.addObj.laboratory,
        //   company: this.addObj.company
        // }, {
        //   headers: {
        //     'Content-Type': 'application/json'
        //   }
        // }).then(res => {
        //   this.saveLoad = false
        //   if (res.code == 201) return
        //   this.$message.success('提交成功')
        // this.$parent.multipleSelection = [{id: this.currentId}]
        // this.$parent.print()
        // 如果紧急程度为紧急,需要直接下发人员
        // if (this.addObj.type == 2) {
        //    this.issuedDialogVisible = true;
        //    this.$axios.post(this.$api.insOrder.selectOrderManDay, {
        //       id: this.currentId
        //    }).then(ress => {
        //       this.distributeData.orderId = this.currentId
        //       this.distributeData.appointed = ress.data
        //    })
        // } else {
        //    this.$parent.playOrder(0)
        // }
        //   this.$axios.post(this.$api.insOrder.selectOrderManDay, {
        //     id: this.currentId
        //   }).then(ress => {
        //     this.distributeData.orderId = this.currentId
        //     this.distributeData.appointed = ress.data
        //   })
        //   setTimeout(() => {
        //     this.issuedDialogVisible = true;
        //   }, 1000)
        // })
      } else {
        // 不通过
        this.noDialogVisible = true;
      }
    },
    getLabelPrinting(currentId) {
      this.$axios
        .post(this.$api.insOrder.labelPrinting, {
          ids: currentId,
        })
        .then((res) => {
          //审核通过,默认只打印第一个样品标签
          let firstSample = res.data[0];
          let arr1 = [];
          firstSample.insProduct.forEach((b) => {
            arr1.push(b.inspectionItem);
          });
          firstSample.item = [...new Set(arr1)].join(",");
          // arr.forEach((a) => {
          //   let arr1 = [];
          //   a.insProduct.forEach((b) => {
          //     arr1.push(b.inspectionItem);
          //   });
          //   a.item = [...new Set(arr1)].join(",");
          // });
          this.beginPrint(firstSample);
        });
    },
    //开始标签打印
    beginPrint(qrData) {
      console.log("qrData", qrData);
      if (qrData == null || qrData.code == null || qrData.code == "") {
        return;
      }
      this.LODOP = getLodop();
      this.LODOP.SET_LICENSES(
        "南通市鑫阳软件开发有限公司",
        "60F8E5078AE17DEB340C94BC7E83CAFF",
        "",
        ""
      );
      this.LODOP.PRINT_INITA();
      let qrStr =
        "https://zttx-lims.ztt.cn:8021/lims/qr/qrScan?code=" +
        qrData.id +
        "&type=sample";
      // this.LODOP.NEWPAGE()
      // this.LODOP.SET_PRINT_PAGESIZE(0, 100, 360, '')
      this.LODOP.SET_PRINT_MODE("PRINT_NOCOLLATE", 1);
      this.LODOP.ADD_PRINT_BARCODE(2, 5, 80, 80, "QRCode", qrStr);
      this.LODOP.ADD_PRINT_TEXT(5, 85, 60, 18, "样品编号:");
      this.LODOP.SET_PRINT_STYLEA(2, "FontSize", 5);
      this.LODOP.ADD_PRINT_TEXT(5, 117, 280, 18, qrData.sampleCode);
      this.LODOP.SET_PRINT_STYLEA(3, "FontSize", 5);
      this.LODOP.ADD_PRINT_TEXT(15, 85, 60, 18, "委托单号:");
      this.LODOP.SET_PRINT_STYLEA(4, "FontSize", 5);
      this.LODOP.ADD_PRINT_TEXT(15, 117, 280, 18, qrData.code);
      this.LODOP.SET_PRINT_STYLEA(5, "FontSize", 5);
      this.LODOP.ADD_PRINT_TEXT(25, 85, 60, 18, "规格型号:");
      this.LODOP.SET_PRINT_STYLEA(6, "FontSize", 5);
      this.LODOP.ADD_PRINT_TEXT(25, 117, 280, 18, qrData.model);
      this.LODOP.SET_PRINT_STYLEA(7, "FontSize", 5);
      this.LODOP.ADD_PRINT_TEXT(35, 85, 60, 18, "样品名称:");
      this.LODOP.SET_PRINT_STYLEA(8, "FontSize", 5);
      this.LODOP.ADD_PRINT_TEXT(35, 117, 280, 18, qrData.sample);
      this.LODOP.SET_PRINT_STYLEA(9, "FontSize", 5);
      this.LODOP.ADD_PRINT_TEXT(45, 85, 60, 20, "检测项目:");
      this.LODOP.SET_PRINT_STYLEA(10, "FontSize", 5);
      this.LODOP.ADD_PRINT_TEXT(
        45,
        117,
        150,
        20,
        qrData.item.length > 42
          ? qrData.item.substring(0, 39) + "..."
          : qrData.item
      );
      this.LODOP.SET_PRINT_STYLEA(11, "FontSize", 5);
      this.LODOP.ADD_PRINT_TEXT(67, 85, 60, 18, "样品状态:");
      this.LODOP.SET_PRINT_STYLEA(12, "FontSize", 5);
      let stateStr = "▢待检 ▢在检 ▢已检";
      let leaveStr =
        qrData.isLeave && qrData.isLeave === 1 ? " ▣留样" : " ▢留样";
      if (qrData.insState == 0) {
        stateStr = "▣待检 ▢在检 ▢已检";
      } else if (qrData.insState == 1) {
        stateStr = "▢待检 ▣在检 ▢已检";
      } else if (qrData.insState == 2) {
        stateStr = "▢待检 ▢在检 ▣已检";
      }
      this.LODOP.ADD_PRINT_TEXT(67, 117, 280, 18, stateStr + leaveStr);
      this.LODOP.SET_PRINT_STYLEA(13, "FontSize", 5);
      this.LODOP.PRINT();
      // this.LODOP.PREVIEW()
    },
    // 下发
    submitForm2() {
      if (
        this.distributeData.appointed == null ||
        this.distributeData.appointed == ""
      ) {
        this.$message.error("约定时间未填写");
        return;
      }
      if (
        this.addObj.type == 2 &&
        (this.distributeData.userId == null ||
          this.distributeData.userId.length == 0)
      ) {
        this.$message.error("指派人员未填写");
        return;
      }
      if (
        this.distributeData.userId.length > 0 &&
        (this.distributeData.sonLaboratory == null ||
          this.distributeData.sonLaboratory == "")
      ) {
        this.$message.error("试验室未填写");
        return;
      }
      // let flag = true;
      this.$axios
        .post(
          this.$api.insOrder.upInsOrderOfState,
          {
            state: 1,
            id: this.currentId,
            companyId: this.addObj.companyId,
            laboratory: this.addObj.laboratory,
            company: this.addObj.company,
            isCreate: this.distributeData.isCreate,
          },
          {
            headers: {
              "Content-Type": "application/json",
            },
          }
        )
        .then((res) => {
          // flag = false;
          // if (flag) {
          //   this.$message.error("委托编号生成失败");
          //   return;
          // }
          this.upLoad = true;
          this.$axios
            .post(
              this.$api.insOrder.upInsOrder,
              {
                orderId: this.distributeData.orderId,
                appointed: this.distributeData.appointed,
                userIdList: this.distributeData.userId,
                sonLaboratory: this.distributeData.sonLaboratory,
              },
              {
                headers: {
                  "Content-Type": "application/json",
                },
              }
            )
            .then((res) => {
              if (res.code === 201) {
                this.upLoad = false;
                return;
              }
              this.$message.success("提交成功");
              this.upLoad = false;
              this.issuedDialogVisible = false;
              this.$parent.playOrder(0);
              //审核通过后,自动打印二维码
              //TODO: 电力试验室暂时不用标签打印
              if (
                this.sonLaboratoryList.filter((f) => f.value === "电力试验室")
                  .length === 0
              ) {
                this.$nextTick(() => {
                  this.getLabelPrinting(this.currentId);
                });
              }
            })
            .catch((e) => {
              this.$message.error("提交失败");
              this.upLoad = false;
            });
        });
    },
    getUserNow() {
      this.$axios.get(this.$api.user.getUserNow).then((res) => {
        let selects = res.data;
        if (selects == null) return;
        this.addObj.userId = selects.id;
        this.addObj.company = selects.company;
        this.addObj.custom = selects.name;
        this.addObj.code = selects.code;
        this.addObj.phone = selects.phone;
        this.addObj.companyId = selects.departId;
        this.addObj.production = "/";
        this.addObj.productionEn = "/";
        if (this.active == 1) {
          this.selectInsOrderTemplate();
        }
      });
    },
    getProNum() {
      this.sampleSelectionList.forEach((m, i) => {
        Vue.set(
          this.sampleSelectionList[i],
          "proNum",
          m.insProduct.filter((a) => a.state == 1).length
        );
      });
      this.$refs.sampleTable.doLayout();
    },
    searchFilter() {
      this.$refs.tree.filter(this.search);
    },
    nodeOpen(data, node, el) {
      $($(el.$el).find(".node_i")[0]).attr(
        "class",
        "node_i el-icon-folder-opened"
      );
    },
    nodeClose(data, node, el) {
      $($(el.$el).find(".node_i")[0]).attr("class", "node_i el-icon-folder");
    },
    handleNodeClick(val, node, el) {
      this.selectTree = "";
      this.models = val.children;
      this.getNodeParent(node);
      let flag = false;
      if (node.level == 3) {
        if (node.data.children.length > 0) {
          node.data.children.forEach((a) => {
            let key = Object.keys(a);
            if (!key.includes("level")) {
              flag = true;
            }
          });
        }
      }
      this.selectTree = this.selectTree.replace(" - ", "");
      if (flag) {
        this.selectTree = " -  - " + this.selectTree;
      }
      console.log("00000", this.selectTree);
      let data = this.selectTree.split(" - ");
      let data2 = "";
      for (let index = data.length - 1; index >= 0; index--) {
        data2 += " - " + data[index];
      }
      this.selectTree = data2.replace(" - ", "");
    },
    getNodeParent(val) {
      if (val.parent != null) {
        if (val.data.children === null) {
          this.selectTree += " - " + val.label + " - " + "";
        } else {
          this.selectTree += " - " + val.label;
        }
        this.getNodeParent(val.parent);
      }
    },
    selectStandardTreeList() {
      this.$axios
        .get(this.$api.standardTree.selectStandardTreeList2)
        .then((res) => {
          this.list = res.data;
          this.list.forEach((a) => {
            this.expandedKeys.push(a.label);
          });
        });
    },
    filterNode(value, data) {
      if (!value) return true;
      return data.label.indexOf(value) !== -1;
    },
    activeStandardTree() {
      let trees = this.selectTree.split(" - ");
      if (trees.length < 3) {
        this.$message.error("未选择对象");
        return;
      }
      this.addObj.factory = trees[0];
      this.addObj.laboratory = trees[1];
      this.addObj.sampleType = trees[2];
      if (trees[3] === undefined || trees[3] === "" || trees[3] === "- ") {
        this.addObj.sample = trees[2];
      } else {
        this.addObj.sample = trees[3];
      }
      this.addObj.model = trees[4] == undefined ? null : trees[4];
      this.selectStandardTree = false;
      this.sampleList = [];
      for (var i = 0; i < this.addObj.sampleNum; i++) {
        this.sample.joinName = null;
        this.sample.joinModel = null;
        this.sample.joinNum = 1;
        this.sample.sample = this.addObj.sample;
        this.sample.model = this.addObj.model;
        this.sample.unit = this.addObj.unit;
        this.sample.standardMethodListId = null;
        this.sample.insProduct = [];
        this.sample.id = this.count;
        this.sample.childSampleList = [];
        this.sample.insulating = null;
        this.sample.sheath = null;
        this.sampleList.push(this.HaveJson(this.sample));
        this.count++;
      }
      this.$refs.sampleTable.doLayout();
      // this.selectsStandardMethodByFLSSM()
    },
    selectsStandardMethodByFLSSM() {
      this.methodLoad = true;
      this.$axios
        .post(this.$api.standardTree.selectsStandardMethodByFLSSM, {
          tree: this.selectTree,
        })
        .then((res) => {
          this.methodLoad = false;
          try {
            if (
              res.data.standardMethodList.length == 0 &&
              this.selectTree.split("-").length == 5
            ) {
              let arr = this.selectTree.split("-");
              let arr0 = arr.slice(0, arr.length - 1);
              let selectTree = arr0
                .join("-")
                .substring(0, arr0.join("-").length - 1);
              this.$axios
                .post(this.$api.standardTree.selectsStandardMethodByFLSSM, {
                  tree: selectTree,
                })
                .then((ress) => {
                  this.methods = ress.data.standardMethodList;
                });
            } else {
              this.methods = res.data.standardMethodList;
            }
          } catch (e) {}
        });
    },
    addStandardTree(currentValue, oldValue) {
      if (this.selectTree == null) return;
      //减一个样品
      const absNum = Math.abs(currentValue - oldValue);
      if (absNum == 1) {
        if (currentValue < oldValue) {
          this.sampleList.splice(currentValue, 1);
        } else if (currentValue > oldValue) {
          //加一个样品
          //复制第一个样品信息
          let copySample = this.HaveJson(this.sampleList[0]);
          copySample.id = parseInt(currentValue);
          this.sampleList.push(copySample);
        }
      } else {
        //直接输的数量,循环生成
        if (currentValue > oldValue) {
          const num = currentValue - oldValue;
          for (let i = 1; i <= num; i++) {
            //复制第一个样品信息
            let copySample = this.HaveJson(this.sampleList[0]);
            copySample.id = parseInt(oldValue + i);
            this.sampleList.push(copySample);
          }
        } else if (oldValue > currentValue) {
          const num = oldValue - currentValue;
          this.sampleList.splice(currentValue, num);
        }
      }
      // this.sampleList = []
      // this.productList = []
      // for (var i = 0; i < this.addObj.sampleNum; i++) {
      // this.sample.joinName = null
      // this.sample.joinModel = null
      // this.sample.joinNum = 1
      // this.sample.sample = this.addObj.sample
      // this.sample.model = this.addObj.model
      // this.sample.unit = this.addObj.unit
      // this.sample.standardMethodListId = null
      // this.sample.insProduct = []
      // this.sample.id = parseInt(i+1)
      // this.sample.childSampleList = []
      // this.sample.insulating = null
      // this.sample.sheath = null
      // this.sampleList.push(this.HaveJson(this.sample))
      // this.count++
      // }
      this.computationalPairing(this.sampleList.length);
      this.bsm2Val2 = this.HaveJson(this.bsm2Val3);
    },
    selectSample(val) {
      this.sampleIds = [];
      val.forEach((a) => {
        this.sampleIds.push(a.id);
      });
      this.sampleSelectionList = val;
      console.log("selectSample", this.sampleList);
      console.log("val", val);
    },
    delSample() {
      this.sampleIds.forEach((a) => {
        for (var i = 0; i < this.sampleList.length; i++) {
          if (this.sampleList[i].id == a) {
            this.sampleList.splice(i, 1);
            i -= 1;
            break;
          }
        }
      });
      this.$refs.sampleTable.doLayout();
    },
    selectProduct(val) {
      this.productListSelected = val;
      this.productIds = [];
      val.forEach((a) => {
        this.productIds.push(a.id);
      });
      console.log("selectChange", this.sampleList);
    },
    rowClick(row, column, event) {
      this.currentMethod = row;
      let obj = this.methods.find(
        (a) => a.id == this.currentMethod.standardMethodListId
      );
      if (obj && obj.code == "委托要求") {
        this.isAskOnlyRead = true;
      } else {
        this.isAskOnlyRead = false;
      }
      this.sampleId = row.id;
      if (this.active !== 1) {
        this.sampleIds = [];
        this.sampleSelectionList.forEach((ele) => {
          if (ele.id == row.id) {
            this.sampleIds.push(row.id);
          }
        });
      }
      this.productList = row.insProduct;
      this.productList0 = JSON.parse(JSON.stringify(this.productList));
      setTimeout(() => {
        this.productList.forEach((a) => {
          if (a.state == 1) {
            this.toggleSelection(a);
          } else {
            this.$refs.productTable.toggleRowSelection(a, false);
          }
        });
      }, 200);
    },
    toggleSelection(row) {
      this.$refs.productTable.toggleRowSelection(row, true);
    },
    upProductSelect(selection, row) {
      let list = this.productListSelected.filter(
        (item) => item.inspectionItem == "光纤接头损耗"
      );
      if (list.length > 0) {
        this.fiberLoss = list.map(
          (item) => item.inspectionItem + "" + item.inspectionItemSubclass
        );
      }
      if (row.inspectionItem == "光纤接头损耗") {
        this.fiberLoss.push(
          row.inspectionItem + "" + row.inspectionItemSubclass
        );
      }
      let arr1 = [...new Set(this.fiberLoss)];
      this.bsm1DiaList = [];
      row.state = row.state == 1 ? 0 : 1;
      if (row.section === null) {
        row.section = "";
      }
      let arr = this.productList.filter(
        (m) =>
          m.state == 1 &&
          row.section.includes(m.section) &&
          m.ask &&
          m.section.indexOf("[") == -1
      );
      if (
        row.bsm === "1" &&
        row.section !== "" &&
        row.section !== null &&
        row.state === 1 &&
        arr.length == 0
      ) {
        if (row.section.indexOf("[") > -1) {
          row.bsmRow = this.HaveJson(row);
        }
        row.bsm1 = true;
        this.bsm1DiaList.push(row);
        this.bsm1DiaAll = true;
      } else if (
        row.bsm === "1" &&
        row.section !== "" &&
        row.section !== null &&
        row.state === 0 &&
        arr.length == 0
      ) {
        row.bsm1 = false;
      } else if (arr.length > 0) {
        try {
          row.bsmRow = this.HaveJson(row);
          if (row.section.indexOf("[") > -1) {
            row.section = arr[0].section;
            row.bsm1Val = arr[0].section;
            this.bsm1DiaList.push(row);
            this.upBsmAll(row);
          } else {
            let section = arr[0].section;
            let arr0 = JSON.parse(row.section);
            let arr1 = JSON.parse(row.ask);
            let arr2 = JSON.parse(row.manHour);
            let arr3 = JSON.parse(row.price);
            let arr4 = JSON.parse(row.tell);
            let index = arr0.indexOf(section);
            row.section = section;
            row.ask = arr1[index];
            row.manHour = arr2[index];
            row.price = arr3[index];
            row.tell = arr4[index];
          }
          // let section = arr[0].section;
          // let arr0 = JSON.parse(row.section);
          // let arr1 = JSON.parse(row.ask);
          // let arr2 = JSON.parse(row.manHour);
          // let arr3 = JSON.parse(row.price);
          // let arr4 = JSON.parse(row.tell);
          // let index = arr0.indexOf(section);
          // row.section = section;
          // row.ask = arr1[index];
          // row.manHour = arr2[index];
          // row.price = arr3[index];
          // row.tell = arr4[index];
        } catch (e) {}
      }
      if (
        row.bsm === "1" &&
        row.inspectionItem === "光纤接头损耗" &&
        this.sampleList.length > 1 &&
        row.state === 1 &&
        !this.isBsm2Val2
      ) {
        this.bsm1Dia = arr1.length == 3 ? true : false;
        this.bsm2 = this.bsm1Dia ? true : false;
        //this.bsm2 = true;
        // this.bsm1Dia = true;
        if (this.bsm2Val2.length === 0) {
          this.bsm2Val =
            ((this.sampleList.length - 1) * this.sampleList.length) / 2;
          this.computationalPairing(this.sampleList.length);
          this.bsm2Val2 = this.HaveJson(this.bsm2Val3);
        }
      } else if (
        row.bsm === "1" &&
        row.inspectionItem === "光纤接头损耗" &&
        row.state === 1 &&
        this.sampleList.length > 1
      ) {
        this.bsm2 = false;
      } else if (
        row.bsm === "1" &&
        row.inspectionItem === "光纤接头损耗" &&
        this.sampleList.length < 2
      ) {
        this.$message.error("样品数量不足够进行配对操作");
        row.state = row.state == 1 ? 0 : 1;
        this.$refs.productTable.toggleRowSelection(row, false);
        return;
      }
      /* if (row.ask.includes('D')&&row.state === 1) {
          this.bsmRow3 = null;
          row.rts = ''
          this.bsm3Val = ''
          this.bsm3Dia = true
          this.bsmRow3 = row
        }else{
          this.bsm3Dia = false
        } */
      this.sampleList.map((item) => {
        if (this.sampleIds.indexOf(item.id) > -1) {
          item.insProduct.map((m) => {
            if (m.id == row.id) {
              m.state = row.state;
            }
            return m;
          });
        }
        return item;
      });
      const select = this.selectTree.split(" - ");
      if (
        row.inspectionItem === "温度循环" &&
        select[2] === "光缆" &&
        row.state === 1 &&
        this.isAskOnlyRead
      ) {
        this.circulateShow = true;
        return;
      } else if (
        row.inspectionItem === "温度循环" &&
        select[2] === "光缆" &&
        row.state === 0
      ) {
        this.circulateShow = false;
      }
      if (
        (row.inspectionItem === "温升试验" ||
          row.inspectionItem === "热循环") &&
        row.state === 1
      ) {
        // console.log('row---', row)
        this.temperatureTitle = `${row.inspectionItem}要求填写`;
        this.isShowInput = row.inspectionItem === "热循环";
        this.temId = row.id;
        // this.temperatureShow = true;
        this.spliceTemperatureTest();
        return;
      } else if (
        (row.inspectionItem === "温升试验" ||
          row.inspectionItem === "热循环") &&
        row.state === 0
      ) {
        this.temperatureShow = false;
      }
      if (
        row.inspectionItem === "单根垂直燃烧" &&
        select[2] === "光缆" &&
        row.state === 1
      ) {
        this.singleVerticalCombustionNum++;
        if (this.singleVerticalCombustionNum > 1) {
          this.openSingleVerticalCombustionDialog();
          return;
        }
      } else if (
        row.inspectionItem === "单根垂直燃烧" &&
        select[2] === "光缆" &&
        row.state === 0
      ) {
        this.singleVerticalCombustionNum--;
      }
      this.changeProductList0();
      this.currentMethod.insProduct = this.productList0;
      this.getProNum();
      console.log("upProductSelect", this.sampleList);
    },
    searchProject() {
      this.$axios
        .post(this.$api.enums.selectEnumByCategory, {
          category: "光纤项目",
        })
        .then((res) => {
          this.opticalProject = res.data;
        });
    },
    permute(nums) {
      const result = [];
      function backtrack(temp, nums) {
        if (temp.length === 2) {
          result.push([...temp]);
          return;
        }
        for (let i = 0; i < nums.length; i++) {
          if (temp.includes(nums[i])) continue;
          // 避免重复数字
          if (temp.length > 0 && nums[i] < temp[temp.length - 1]) continue; // 规定顺序,避免重复组合
          temp.push(nums[i]);
          backtrack(temp, nums);
          temp.pop();
        }
      }
      backtrack([], nums);
      return result;
    },
    computationalPairing(n) {
      const nums = [];
      for (let i = 1; i <= n; i++) {
        nums.push(i);
      }
      this.bsm2Val3 = this.HaveJson(this.permute(nums));
    },
    tableRowClassName({ row, rowIndex }) {
      if (row.state === 0) {
        return "";
      }
      return "warning-row";
    },
    selectInsOrderTemplate() {
      this.$axios
        .get(
          this.$api.insOrder.selectInsOrderTemplate +
            "?company=" +
            this.addObj.company
        )
        .then((res) => {
          if (res.code == 201) return;
          this.templates = res.data;
        });
    },
    // 删除模板--调用接口
    handleDelete(row) {
      this.$confirm("是否删除当前数据?", "警告", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          this.$axios
            .post(this.$api.insOrder.delInsOrderTemplate, {
              id: row.id,
            })
            .then((res) => {
              if (res.code === 201) {
                return;
              }
              this.$message.success("删除成功");
              this.selectInsOrderTemplate();
            })
            .catch((e) => {
              this.$message.error("删除失败");
            });
        })
        .catch(() => {});
    },
    // 保存模板
    addTemplateDia() {
      if (this.templateName) {
        this.templateLoading = true;
        this.$axios
          .post(
            this.$api.insOrder.addInsOrderTemplate,
            {
              name: this.templateName,
              thing: JSON.stringify({
                addObj: this.addObj,
                sampleList: this.sampleList,
                selectTree: this.selectTree,
              }),
            },
            {
              headers: {
                "Content-Type": "application/json",
              },
            }
          )
          .then((res) => {
            if (res.code == 201) return;
            this.templateLoading = false;
            this.templateDia = false;
            this.$message.success("保存成功");
            this.selectInsOrderTemplate();
            this.templateName = "";
          });
      } else {
        this.$message.error("请填写模板名称");
      }
    },
    // 查询模板
    selectInsOrderTemplateById(e) {
      this.$axios
        .post(this.$api.insOrder.selectInsOrderTemplateById + "?id=" + e)
        .then((res) => {
          if (res.code == 201) return;
          // let obj = JSON.parse(res.data)
          let obj = res.data;
          console.log(obj);
          //制单人设置为当前登录用户
          let user = JSON.parse(localStorage.getItem("user"));
          obj.addObj.custom = user.name;
          obj.addObj.userId = user.userId;
          this.addObj = obj.addObj;
          this.sampleList = obj.sampleList;
          this.selectTree = obj.selectTree;
          //默认选中第一个样品
          this.$nextTick(() => {
            if (this.sampleList.length > 0) {
              this.rowClick(this.sampleList[0]);
            }
          });
        });
    },
    delSampleAndProduct() {
      this.sampleList.splice(scope.$index, 1);
      this.productList = [];
    },
    selectDictForUnit() {
      getDicts("sys_unit")
        .then((res) => {
          if (res.code === 200) {
            this.units = res.data;
          }
        })
        .catch((error) => {
          console.error(error);
        });
    },
    //查询
    selectDictForOrderType() {
      getDicts("check_type1")
        .then((res) => {
          if (res.code === 200) {
            this.orderType = res.data;
            if (res.data.length > 0) {
              this.addObj.orderType = res.data[0].dictValue;
            }
          }
        })
        .catch((error) => {
          console.error(error);
        });
    },
    selectDictForSampleForm() {
      getDicts("form_type")
        .then((res) => {
          if (res.code === 200) {
            this.formType = res.data;
            if (this.formType.length > 0) {
              this.addObj.formType = this.formType[0].dictValue;
            }
          }
        })
        .catch((error) => {
          console.error(error);
        });
    },
    methodChange(val, row) {
      if (val === null || val === "") return;
      this.currentMethod = row;
      let obj = this.methods.find(
        (a) => a.id == this.currentMethod.standardMethodListId
      );
      if (obj && obj.code == "委托要求") {
        this.isAskOnlyRead = true;
      } else {
        this.isAskOnlyRead = false;
      }
      this.getProductLoad = true;
      let selectTreeList = this.selectTree.split(" - ");
      this.addObj.model &&
        (selectTreeList[selectTreeList.length - 1] = this.addObj.model);
      this.$axios
        .post(
          this.$api.standardTree.selectStandardProductList,
          {
            model:
              (this.addObj.model ? this.addObj.model : row.model) +
              "-" +
              row.modelNum,
            standardMethodListId: val,
            factory: selectTreeList.join(" - "),
          },
          {
            headers: {
              "Content-Type": "application/json",
            },
          }
        )
        .then((res) => {
          res.data.forEach((a) => {
            a.state = 0;
          });
          row.insProduct = this.HaveJson(res.data);
          this.productList = row.insProduct;
          this.productList0 = JSON.parse(JSON.stringify(this.productList));
          // this.$refs.sampleTable.setCurrentRow(row)
          // setTimeout(() => {
          //   this.productList.forEach(a => {
          //     if (a.state == 1) this.toggleSelection(a)
          //   })
          // }, 200)
          this.$nextTick(() => {
            this.methodCount++;
            this.getProductLoad = false;
            if (this.sampleSelectionList.length == this.methodCount) {
              this.standardLoading = false;
            }
          });
        });
      this.searchProject();
      this.searchTemList();
    },
    //批量修改标准方法
    batchMethodChange(val, row) {
      if (val === null || val === "") return;
      this.currentMethod = row;
      let obj = this.methods.find(
        (a) => a.id == this.currentMethod.standardMethodListId
      );
      if (obj && obj.code == "委托要求") {
        this.isAskOnlyRead = true;
      } else {
        this.isAskOnlyRead = false;
      }
      this.getProductLoad = true;
      let selectTreeList = this.selectTree.split(" - ");
      this.addObj.model &&
        (selectTreeList[selectTreeList.length - 1] = this.addObj.model);
      this.$axios
        .post(
          this.$api.standardTree.selectStandardProductList,
          {
            model:
              (this.addObj.model ? this.addObj.model : row.model) +
              "-" +
              row.modelNum,
            standardMethodListId: val,
            factory: selectTreeList.join(" - "),
          },
          {
            headers: {
              "Content-Type": "application/json",
            },
          }
        )
        .then((res) => {
          res.data.forEach((a) => {
            a.state = 0;
          });
          row.insProduct = this.HaveJson(res.data);
          this.productList = row.insProduct;
          this.productList0 = JSON.parse(JSON.stringify(this.productList));
          // this.$refs.sampleTable.setCurrentRow(row)
          // setTimeout(() => {
          //   this.productList.forEach(a => {
          //     if (a.state == 1) this.toggleSelection(a)
          //   })
          // }, 200)
          this.$nextTick(() => {
            this.methodCount++;
            this.getProductLoad = false;
            if (this.sampleSelectionList.length == this.methodCount) {
              this.standardLoading = false;
            }
          });
        });
      this.searchProject();
      this.searchTemList();
    },
    searchTemList() {
      this.temperatureList = [];
      this.$axios
        .post(this.$api.enums.selectEnumByCategory, {
          category: "电力温度循环检验",
        })
        .then((res) => {
          if (res.data.length > 0) {
            this.temperatureEngList = res.data;
            res.data.forEach((item) => {
              this.temperatureList.push(item.label);
            });
          }
        });
    },
    changeModel() {
      this.sampleList.forEach((a) => {
        let obj = this.sampleIds.find((b) => b == a.id);
        if (obj) {
          a.model = this.model;
        }
      });
    },
    changeStandardMethodListId() {
      this.methodCount = 0;
      this.standardLoading = true;
      for (let i = 0; i < this.sampleSelectionList.length; i++) {
        let a = this.sampleSelectionList[i];
        let obj = this.sampleIds.find((b) => b == a.id);
        if (obj) {
          a.standardMethodListId = this.standardMethodListId;
          this.methodChange(this.standardMethodListId, a);
        }
      }
    },
    methodFocus() {
      this.selectsStandardMethodByFLSSM();
    },
    handleChangeModel(e) {
      this.productList = [];
      let num = this.selectTree.split("-").length;
      if (num != 5) {
        this.selectTree = this.selectTree + " - " + e;
      } else {
        let arr = this.selectTree.split("-");
        let arr0 = arr.slice(0, arr.length - 1);
        this.selectTree = arr0.join("-") + "- " + e;
      }
    },
    // 要求值变化时
    requestChange(e, row, type) {
      //this.currentMethod 当前样品id
      this.sampleList.forEach((item) => {
        if (item.id == this.currentMethod.id) {
          item.insProduct.forEach((i) => {
            if (i.id == row.id) {
              i[type] = e;
            }
          });
        }
      });
      let flag =
        this.sampleSelectionList.filter((a) => a.id == this.currentMethod.id)
          .length > 0
          ? true
          : false;
      if (!flag) {
        return;
      }
      // this.sampleSelectionList 勾选的样品
      this.sampleSelectionList.forEach((item) => {
        // 在this.sampleList获取勾选的样品
        this.sampleList.forEach((s) => {
          if (s.id == item.id) {
            // 遍历勾选的样品
            if (s.insProduct.length > 0) {
              s.insProduct.forEach((a) => {
                if (a.id == row.id && a.state == 1) {
                  a[type] = e;
                }
                //   if(a.id == row.id && a.state == 1) {
                //   a[type] = e
                // }
              });
            }
          }
        });
      });
      // this.sampleList.map(item => {
      //   if (this.sampleIds.indexOf(item.id) > -1) {
      //     item.insProduct.map(m => {
      //       if (m.id == row.id) {
      //         m[type] = e;
      //       }
      //       return m;
      //     })
      //   }
      //   return item
      // })
    },
    selectStandardMethods() {
      this.$axios
        .get(this.$api.standardTree.selectStandardMethodEnum)
        .then((res) => {
          this.methods = res.data;
        });
    },
    selectable() {
      if (this.active > 1) {
        return false;
      } else {
        return true;
      }
    },
    handleAll(e) {
      console.log("e", e);
      if (e.length > 0) {
        this.productList.map((m) => {
          if (e.find((a) => a.id == m.id)) {
            m.state = 1;
          }
          return m;
        });
      } else {
        this.productList.map((m) => {
          m.state = 0;
          return m;
        });
      }
      this.bsmRow3 = [];
      this.bsm1DiaList = [];
      this.productList.forEach((p) => {
        if (
          p.bsm === "1" &&
          p.section !== "" &&
          p.section !== null &&
          p.state === 1
        ) {
          if (p.section.indexOf("[") > -1) {
            p.bsmRow = this.HaveJson(p);
          }
          p.bsm1 = true;
          this.bsm1DiaList.push(p);
          this.bsm1DiaAll = true;
        } else if (
          p.bsm === "1" &&
          p.section !== "" &&
          p.section !== null &&
          p.state === 0
        ) {
          p.bsm1 = false;
        }
        if (
          p.bsm === "1" &&
          p.inspectionItem === "光纤接头损耗" &&
          this.sampleList.length > 1 &&
          p.state === 1 &&
          !this.isBsm2Val2
        ) {
          this.bsm2 = true;
          this.bsm1Dia = true;
          if (this.bsm2Val2.length === 0) {
            this.bsm2Val =
              ((this.sampleList.length - 1) * this.sampleList.length) / 2;
            this.computationalPairing(this.sampleList.length);
            this.bsm2Val2 = this.HaveJson(this.bsm2Val3);
          }
        } else if (
          p.bsm === "1" &&
          p.inspectionItem === "光纤接头损耗" &&
          p.state === 1 &&
          this.sampleList.length > 1
        ) {
          this.bsm2 = false;
        } else if (
          p.bsm === "1" &&
          p.inspectionItem === "光纤接头损耗" &&
          this.sampleList.length < 2
        ) {
          this.$message.error("样品数量不足够进行配对操作");
          this.$refs.productTable.clearSelection();
          return;
        }
        const select = this.selectTree.split(" - ");
        if (
          p.inspectionItem === "温度循环" &&
          select[2] === "光缆" &&
          p.state === 1 &&
          this.isAskOnlyRead
        ) {
          this.circulateShow = true;
          return;
        } else if (
          p.inspectionItem === "温度循环" &&
          select[2] === "光缆" &&
          p.state === 0
        ) {
          this.circulateShow = false;
        }
        if (
          (p.inspectionItem === "温升试验" || p.inspectionItem === "热循环") &&
          p.state === 1
        ) {
          // console.log('p---', p)
          this.temperatureTitle = `${p.inspectionItem}要求填写`;
          this.isShowInput = p.inspectionItem === "热循环";
          this.temId = p.id;
          this.spliceTemperatureTest();
          // this.temperatureShow = true;
          return;
        } else if (
          (p.inspectionItem === "温升试验" || p.inspectionItem === "热循环") &&
          p.state === 0
        ) {
          this.temperatureShow = false;
        }
        if (
          p.inspectionItem === "单根垂直燃烧" &&
          select[2] === "光缆" &&
          p.state === 1
        ) {
          this.singleVerticalCombustionNum++;
          if (this.singleVerticalCombustionNum > 1) {
            this.openSingleVerticalCombustionDialog();
            return;
          }
        } else if (
          p.inspectionItem === "单根垂直燃烧" &&
          select[2] === "光缆" &&
          p.state === 0
        ) {
          this.singleVerticalCombustionNum--;
        }
        /* if (p.ask.includes('RTS')&&p.state === 1) {
            p.rts = ''
            this.bsm3Val = ''
            this.bsm3 = true
            this.bsm3Dia = true
            this.bsmRow3.push(p)
          } */
      });
      if (e.length > 0) {
        // this.sampleList.map(item => {
        //   if (item.id === this.currentMethod.id) {
        //     item.insProduct.map(m => {
        //       m.state = 1
        //       return m;
        //     })
        //   }
        // })
        console.log("aaa-----", this.sampleList);
        this.sampleList.map((item) => {
          console.log("this.sampleSelectionList-->", this.sampleSelectionList);
          this.sampleSelectionList.forEach((ele) => {
            if (ele.id == item.id) {
              item.insProduct.map((m) => {
                m.state = 1;
                return m;
              });
            }
          });
        });
      } else {
        this.sampleList.map((item) => {
          if (this.sampleIds.indexOf(item.id) > -1) {
            item.insProduct.map((m) => {
              m.state = 0;
              return m;
            });
          }
          return item;
        });
      }
      this.changeProductList0();
      this.currentMethod.insProduct = this.productList0;
      this.getProNum();
      this.$nextTick(() => {
        this.$refs.productTable.doLayout();
      });
    },
    submitTell() {
      if (!this.tell) {
        this.$message.error("请输入不通过原因");
        return;
      }
      this.noLoading = true;
      this.$axios
        .post(
          this.$api.insOrder.upInsOrderOfState,
          {
            state: 2,
            id: this.currentId,
            tell: this.tell,
          },
          {
            headers: {
              "Content-Type": "application/json",
            },
          }
        )
        .then((res) => {
          this.noLoading = false;
          this.tell = "";
          if (res.code == 201) return;
          this.$message.success("提交成功");
          this.issuedDialogVisible = false;
          this.$parent.playOrder(0);
        });
    },
    selectEnumByCategoryForSonLaboratory() {
      this.$axios
        .post(this.$api.enums.selectEnumByCategory, {
          category: "子实验室",
        })
        .then((res) => {
          this.factory = [];
          res.data.forEach((a) => {
            this.filters.push({
              text: a.label,
              value: a.value,
            });
          });
        });
    },
    filterHandler(value, row, column) {
      const property = column["property"];
      return row[property] === value;
    },
    openConfig() {
      if (this.active === 1) {
        if (this.sampleIds.length === 0) {
          this.$message.error("未选择样品");
          return;
        }
        this.configShow = true;
      } else {
        if (this.sampleId === null) {
          this.$message.error("未选中样品");
          return;
        }
        this.sampleIds = [this.sampleId];
        this.$axios
          .post(this.$api.insBushing.selectBushingBySampleId, {
            sampleId: this.sampleId,
          })
          .then((res) => {
            if (res.data.length === 0) {
              this.$message.error("该样品没有配置光纤");
              return;
            }
            for (var i in this.sampleList) {
              if ((this.sampleList[i].id = this.sampleId)) {
                this.sampleList[i].bushing = res.data;
                break;
              }
            }
            this.$nextTick(() => {
              this.configShow = true;
            });
          });
      }
    },
    openEquipConfig() {
      if (this.active === 1) {
        if (this.sampleIds.length === 0) {
          this.$message.error("未选择样品");
          return;
        }
        this.equipConfigShow = true;
      } else {
        if (this.sampleId === null) {
          this.$message.error("未选中样品");
          return;
        }
        // this.$axios.post(this.$api.insBushing.selectBushingBySampleId, {
        //   sampleId: this.sampleId
        // }).then(res => {
        //   if (res.data.length === 0) {
        //     this.$message.error('该样品没有配置光纤')
        //     return
        //   }
        //   for (var i in this.sampleList) {
        //     if (this.sampleList[i].id = this.sampleId) {
        //       this.sampleList[i].bushing = res.data
        //       break
        //     }
        //   }
        //   this.configShow = true
        // })
      }
    },
    openCableConfig() {
      if (this.active === 1) {
        if (this.sampleIds.length === 0) {
          this.$message.error("未选择样品");
          return;
        }
        this.cableConfigShow = true;
      } else {
        if (this.sampleId === null) {
          this.$message.error("未选中样品");
          return;
        }
        // this.$axios.post(this.$api.insBushing.selectBushingBySampleId, {
        //   sampleId: this.sampleId
        // }).then(res => {
        //   if (res.data.length === 0) {
        //     this.$message.error('该样品没有配置光纤')
        //     return
        //   }
        //   for (var i in this.sampleList) {
        //     if (this.sampleList[i].id = this.sampleId) {
        //       this.sampleList[i].bushing = res.data
        //       break
        //     }
        //   }
        //   this.configShow = true
        // })
      }
    },
    upBsm1(val) {
      let sections = JSON.parse(this.bsmRow.section);
      let asks = JSON.parse(this.bsmRow.ask);
      let tells = JSON.parse(this.bsmRow.tell);
      let manHours = JSON.parse(this.bsmRow.manHour);
      let prices = JSON.parse(this.bsmRow.price);
      for (var a in sections) {
        if (val === sections[a]) {
          this.productList.forEach((p) => {
            if (p.id === this.bsmRow.id) {
              p.section = sections[a];
              p.ask = asks[a];
              p.tell = tells[a];
              p.manHour = manHours[a];
              p.price = prices[a];
            }
          });
          break;
        }
      }
    },
    upBsmAll(item) {
      // console.log(1111,item,this.bsm1DiaList)
      for (let i = 0; i < this.bsm1DiaList.length; i++) {
        this.bsm1DiaList[i].bsm1Val = item.bsm1Val;
        let sections = JSON.parse(this.bsm1DiaList[i].bsmRow.section);
        let asks = JSON.parse(this.bsm1DiaList[i].bsmRow.ask);
        let tells = JSON.parse(this.bsm1DiaList[i].bsmRow.tell);
        let manHours = JSON.parse(this.bsm1DiaList[i].bsmRow.manHour);
        let prices = JSON.parse(this.bsm1DiaList[i].bsmRow.price);
        for (var a in sections) {
          console.log(
            this.bsm1DiaList[i].bsm1Val === sections[a],
            "====",
            this.bsm1DiaList[i],
            "===="
          );
          if (this.bsm1DiaList[i].bsm1Val === sections[a]) {
            this.productList.forEach((p) => {
              if (p.id === this.bsm1DiaList[i].bsmRow.id) {
                p.section = sections[a];
                p.ask = asks[a];
                p.tell = tells[a];
                p.manHour = manHours[a];
                p.price = prices[a];
              }
            });
            this.sampleSelectionList.forEach((item) => {
              item.insProduct.forEach((p) => {
                if (p.id === this.bsm1DiaList[i].bsmRow.id) {
                  p.section = sections[a];
                  p.ask = asks[a];
                  p.tell = tells[a];
                  p.manHour = manHours[a];
                  p.price = prices[a];
                }
              });
            });
            break;
          }
        }
      }
      console.log("tthis.sampleSelectionList", this.sampleSelectionList);
      console.log("this.sampleList", this.sampleList);
      console.log("this.productList", this.productList);
      this.changeProductList0();
      this.currentMethod.insProduct = this.productList0;
    },
    save1() {
      if (this.bsm1DiaList.length > 0) {
        this.bsm1DiaList.forEach((item) => {
          if (!item.bsm1Val) {
            throw this.$message.error("特殊项目必须处理");
          }
        });
      }
      if (this.bsm2) {
        if (this.bsm2Val2.length === 0) {
          this.$message.error("特殊项目必须处理");
          return;
        }
        console.log("this.bsm2Val2", this.bsm2Val2);
        let set = new Set();
        for (let i = 0; i < this.bsm2Val2.length; i++) {
          let num0 = set.size;
          set.add(JSON.stringify(this.bsm2Val2[i]));
          let num1 = set.size;
          if (num1 == num0) {
            this.$message.error("关联项目不能重复");
            return;
          }
          set.add(JSON.stringify(this.bsm2Val2[i].reverse()));
          let num2 = set.size;
          if (num1 == num2) {
            this.$message.error("关联项目不能重复");
            return;
          }
        }
        this.isBsm2Val2 = true;
      }
      this.bsm1DiaAll = false;
    },
    save2() {
      if (this.bsm1DiaList.length > 0) {
        this.bsm1DiaList.forEach((item) => {
          if (!item.bsm1Val) {
            throw this.$message.error("特殊项目必须处理");
          }
        });
      }
      if (this.bsm2) {
        if (this.bsm2Val2.length === 0) {
          this.$message.error("特殊项目必须处理");
          return;
        }
        let set = new Set();
        for (let i = 0; i < this.bsm2Val2.length; i++) {
          let num0 = set.size;
          set.add(JSON.stringify(this.bsm2Val2[i]));
          let num1 = set.size;
          if (num1 == num0) {
            this.$message.error("关联项目不能重复");
            return;
          }
          set.add(JSON.stringify(this.bsm2Val2[i].reverse()));
          let num2 = set.size;
          if (num1 == num2) {
            this.$message.error("关联项目不能重复");
            return;
          }
        }
        this.isBsm2Val2 = true;
      }
      this.bsm1Dia = false;
    },
    beforeClose(done) {
      // if (this.bsm1) {
      //   if (this.bsm1Val === null || this.bsm1Val === '') {
      //     this.$message.error('特殊项目必须处理')
      //     return
      //   }
      // }
      if (this.bsm1DiaList.length > 0) {
        this.bsm1DiaList.forEach((item) => {
          if (!item.bsm1Val) {
            throw this.$message.error("特殊项目必须处理");
          }
        });
      }
      if (this.bsm2) {
        if (this.bsm2Val2.length === 0) {
          this.$message.error("特殊项目必须处理");
          return;
        }
        let set = new Set();
        for (let i = 0; i < this.bsm2Val2.length; i++) {
          let num0 = set.size;
          set.add(JSON.stringify(this.bsm2Val2[i]));
          let num1 = set.size;
          if (num1 == num0) {
            this.$message.error("关联项目不能重复");
            return;
          }
          set.add(JSON.stringify(this.bsm2Val2[i].reverse()));
          let num2 = set.size;
          if (num1 == num2) {
            this.$message.error("关联项目不能重复");
            return;
          }
        }
        this.isBsm2Val2 = true;
      }
      // if(this.bsm3){
      //   if(!this.bsm3Val){
      //     this.$message.error('RST必须填写')
      //     return
      //   }else{
      //     if(Array.isArray(this.bsmRow3)){
      //       this.bsmRow3.forEach(item=>{
      //         item.rts = this.bsm3Val
      //       })
      //     }else{
      //       this.bsmRow3.rts = this.bsm3Val
      //     }
      //   }
      // }
      done();
    },
    beforeClose0(done) {
      if (!this.bsm3Val) {
        this.$message.error("RST必须填写");
        return;
      } else {
        if (Array.isArray(this.bsmRow3)) {
          this.bsmRow3.forEach((item) => {
            item.rts = this.bsm3Val;
          });
        } else {
          this.bsmRow3.rts = this.bsm3Val;
        }
      }
      done();
    },
    getTotal(bushing, flag = true) {
      this.totalArr = [];
      this.total = 0;
      // 将选中的样品添加bushing 没有勾选就是全部 表格监听调用不进行光线配置的赋值
      if (flag) {
        if (this.sampleSelectionList.length > 0) {
          +this.sampleSelectionList.forEach((item) => {
            this.sampleList.forEach((a) => {
              if (a.id == item.id) {
                a.bushing = bushing;
              }
            });
          });
        } else {
          this.sampleList.forEach((a) => {
            a.bushing = bushing;
          });
        }
      }
      console.log("sampleSelectionList", this.sampleSelectionList);
      console.log("this.sampleList", this.sampleList);
      this.sampleList.forEach((item) => {
        if (item.insProduct && item.insProduct.length > 0) {
          item.insProduct.forEach((a) => {
            this.totalArr.push(a);
          });
        }
        if (item.bushing && item.bushing.length > 0) {
          item.bushing.forEach((a) => {
            if (a.fiber && a.fiber.length > 0) {
              a.fiber.forEach((b) => {
                if (b.productList && b.productList.length > 0) {
                  b.productList.forEach((c) => {
                    this.totalArr.push(c);
                  });
                }
              });
            }
            if (a.fibers && a.fibers.length > 0) {
              a.fibers.forEach((b) => {
                if (b.productList && b.productList.length > 0) {
                  b.productList.forEach((c) => {
                    this.totalArr.push(c);
                  });
                }
                if (b.fiber && b.fiber.length > 0) {
                  b.fiber.forEach((c) => {
                    if (c.productList && c.productList.length > 0) {
                      c.productList.forEach((d) => {
                        this.totalArr.push(d);
                      });
                    }
                  });
                }
              });
            }
          });
        }
      });
      let mySet = new Set();
      let arr0 = this.totalArr.filter((item) => {
        if (item.state == 1) {
          let num1 = mySet.size;
          if (item.manHourGroup === "" || !item.manHourGroup) {
            return true;
          } else {
            mySet.add(item.manHourGroup);
            let num2 = mySet.size;
            if (num2 > num1) {
              return true;
            } else {
              return false;
            }
          }
        }
      });
      arr0.forEach((item) => {
        this.total += Number(item.price);
      });
      let arr1 = this.totalArr.filter((item) => item.state == 1);
      let mySet0 = new Set();
      this.sonLaboratoryList = [];
      arr1.forEach((item) => {
        let num1 = mySet0.size;
        mySet0.add(item.sonLaboratory);
        let num2 = mySet0.size;
        if (num2 > num1) {
          this.sonLaboratoryList.push({
            label: item.sonLaboratory,
            value: item.sonLaboratory,
          });
        }
      });
    },
    bsm2Up(val) {
      let list = [];
      for (let a = 1; a < this.bsm2Val3.length + 1; a++) {
        list.push(a);
      }
      let set = new Set();
      let size1 = set.length;
      while (set.size < val) {
        set.add(Math.ceil(Math.random() * this.bsm2Val3.length));
      }
      this.bsm2Val2 = [];
      for (let a of set) {
        this.bsm2Val2.push(this.HaveJson(this.bsm2Val3[a - 1]));
      }
    },
    changeUser() {
      if (this.sonLaboratoryList.length > 0) {
        this.distributeData.sonLaboratory = this.sonLaboratoryList[0].value;
      }
    },
  },
};
</script>
<style scoped>
.ins_order_add {
  width: 100%;
@@ -16,7 +4400,7 @@
}
.search {
  width: calc(100% - 40px);
  height: 100%;
  background-color: #fff;
  padding: 5px 40px 5px 0;
}
@@ -34,7 +4418,7 @@
}
.search_input {
  width: calc(100% - 120px);
  width: calc(100% - 20px);
}
.node_i {
@@ -131,12 +4515,16 @@
.ins_order_add .el-select .is-disabled .el-input__inner {
  background: transparent !important;
}
.company_input .el-form-item__content,
.sample_input .el-form-item__content {
  width: 72%;
}
.engineeringEn_input .el-form-item__content,
.otcCode_input .el-form-item__content,
.productionEn_input .el-form-item__content {
  width: 65%;
}
.processing_input .el-form-item__content {
  width: 60%;
}
</style>
<template>
  <div>add</div>
</template>
<script>
export default {};
</script>