spring
2025-04-10 5f13420b2258ae2741fae9b1d77963db9e43d222
src/views/business/materialOrder/customsInspection.vue
@@ -5,23 +5,25 @@
        <div>
          <span>采购订单信息</span>
          <ul class="tab" v-if="active > 1 && isShowTab">
            <li v-for="(m,i) in dataTitle" :key="i" :class="{active:i===dataIndex}" @click="handleDataTab(m,i)">{{m.label}}</li>
            <li v-for="(m, i) in dataTitle" :key="i" :class="{ active: i === dataIndex }" @click="handleDataTab(m, i)">
              {{ m.label }}</li>
          </ul>
        </div>
        <div>
          <el-select v-show="active==1" v-model="template" placeholder="下单模板" size="small" style="margin-right: 10px;"
                     @change="selectInsOrderTemplateByIdList">
          <el-select v-show="active == 1" v-model="template" placeholder="下单模板" size="small" style="margin-right: 10px;"
            @change="selectInsOrderTemplateByIdList">
            <el-option v-for="(a, ai) in templates" :key="ai" :label="a.name" :value="a.id">
              <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>
                @click.stop="handleDelete(a)"></i>
            </el-option>
          </el-select>
          <el-button v-show="active==1" size="small" @click="templateDia=true">
          <el-button v-show="active == 1" size="small" @click="templateDia = true">
            <span style="color: #3A7BFA;">保存模板</span>
          </el-button>
          <el-button v-show="active==1 && addObj.orderType === '进厂检验'" :loading="noNeedCheckLoad" size="small" type="primary" @click="noNeedCheck">免检</el-button>
          <el-button v-show="active==1" :loading="saveLoad" size="small" type="primary" @click="save">提交</el-button>
          <el-button v-show="active == 1 && addObj.orderType === '进厂检验'" :loading="noNeedCheckLoad" size="small"
            type="primary" @click="noNeedCheck">免检</el-button>
          <el-button v-show="active == 1" :loading="saveLoad" size="small" type="primary" @click="save">提交</el-button>
          <el-button size="small" @click="goBack">
            <span style="color: #3A7BFA;">返回</span>
          </el-button>
@@ -33,42 +35,41 @@
        <el-row>
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="采购订单号:">
              <el-input v-model="addObj.orderNo" class="addObj-info" clearable disabled placeholder="" size="small"></el-input>
              <el-input v-model="addObj.orderNo" class="addObj-info" clearable disabled placeholder=""
                size="small"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="委托单位:">
              <el-input v-model="addObj.company" class="addObj-info" clearable disabled placeholder="" size="small"></el-input>
              <el-input v-model="addObj.company" class="addObj-info" clearable disabled placeholder=""
                size="small"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="接收时间:">
              <el-date-picker
                v-model="addObj.receiverDate"
                disabled
                placeholder="选择日期"
                size="small"
                style="width: 100%;"
                type="date"
                value-format="yyyy-MM-dd">
              <el-date-picker v-model="addObj.receiverDate" disabled placeholder="选择日期" size="small"
                style="width: 100%;" type="date" value-format="yyyy-MM-dd">
              </el-date-picker>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="零件号:">
              <el-input v-model="addObj.partNo" class="addObj-info" clearable disabled placeholder="" size="small"></el-input>
              <el-input v-model="addObj.partNo" class="addObj-info" clearable disabled placeholder=""
                size="small"></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="样品名称:">
              <el-input v-model="addObj.sample" class="addObj-info" clearable disabled placeholder="" size="small"></el-input>
              <el-input v-model="addObj.sample" class="addObj-info" clearable disabled placeholder=""
                size="small"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="样品总数:">
              <el-input v-model="addObj.qtyArrived" class="addObj-info" clearable disabled placeholder="" size="small"></el-input>
              <el-input v-model="addObj.qtyArrived" class="addObj-info" clearable disabled placeholder=""
                size="small"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6">
@@ -90,22 +91,24 @@
          </el-col>
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="抽检数量:" prop="testQuantity">
              <el-input v-model="addObj.testQuantity" :disabled="active > 1" class="addObj-info"
                        clearable
                        placeholder="请填写抽检数量" size="small"></el-input>
              <el-input v-model="addObj.testQuantity" :disabled="active > 1" class="addObj-info" clearable
                placeholder="请填写抽检数量" size="small"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="检验类别:" prop="orderType">
              <el-select v-model="addObj.orderType" :disabled="active>1 || orderType==1" clearable size="small" style="width: 100%">
                <el-option v-for="a in dict.type.check_type" :key="a.value" :label="a.label" :value="a.value"></el-option>
              <el-select v-model="addObj.orderType" :disabled="active > 1 || orderType == 1" clearable size="small"
                style="width: 100%">
                <el-option v-for="a in dict.type.check_type" :key="a.value" :label="a.label"
                  :value="a.value"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="规格型号:" placeholder="请填写" prop="partDetail">
              <el-tooltip :content="addObj.partDetail" :disabled="!addObj.partDetail">
                <el-input v-model="addObj.partDetail" :disabled="active > 1" clearable class="addObj-info" size="small"></el-input>
                <el-input v-model="addObj.partDetail" :disabled="active > 1" clearable class="addObj-info"
                  size="small"></el-input>
              </el-tooltip>
            </el-form-item>
          </el-col>
@@ -113,226 +116,206 @@
        <el-row>
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="紧急程度:" placeholder="请选择" prop="type">
              <el-select v-model="addObj.type" :disabled="active>1" class="addObj-info" clearable size="small" style="width: 100%">
                <el-option v-for="a in dict.type.urgency_level" :key="a.value" :label="a.label" :value="a.value"></el-option>
              <el-select v-model="addObj.type" :disabled="active > 1" class="addObj-info" clearable size="small"
                style="width: 100%">
                <el-option v-for="a in dict.type.urgency_level" :key="a.value" :label="a.label"
                  :value="a.value"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="6">
          <!-- <el-col :span="6">
            <el-form-item class="addObj-form-item" label="约定时间:" prop="appointed">
              <el-date-picker
                v-model="addObj.appointed"
                :disabled="active > 1"
                format="yyyy-MM-dd"
                placeholder="选择日期"
                size="small"
                style="width: 100%"
                type="date"
                value-format="yyyy-MM-dd">
              <el-date-picker v-model="addObj.appointed" :disabled="active > 1" format="yyyy-MM-dd" placeholder="选择日期"
                size="small" style="width: 100%" type="date" value-format="yyyy-MM-dd">
              </el-date-picker>
            </el-form-item>
          </el-col> -->
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="报检类型:">
              <el-input v-model="addObj.inspectionType" class="addObj-info" clearable disabled size="small"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="车间名称:">
              <el-input v-model="addObj.workShopName" class="addObj-info" clearable disabled size="small"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="备注:">
              <el-input v-model="addObj.remark" :autosize="{ minRows: 2, maxRows: 2}" :disabled="active>1" :placeholder="active>1 ? '' : '请输入'" clearable
                        size="small" type="textarea"></el-input>
              <el-input v-model="addObj.remark" :autosize="{ minRows: 2, maxRows: 2 }" :disabled="active > 1"
                :placeholder="active > 1 ? '' : '请输入'" clearable size="small" type="textarea"></el-input>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
    </div>
    <div>
      <div style="display: flex;justify-content: space-between;">
        <div v-if="active==1">
      <div style="display: flex;justify-content: space-between;background-color: #F5F7FB;margin-bottom: 6px">
        <div v-if="active == 1">
          <el-form :inline="true" :model="addObj1" label-width="90px">
            <el-form-item label="样品型号:" style="margin-bottom: 6px">
              <el-select v-model="model" :placeholder="active>1 ? '' : '请输入'"
                         allow-create clearable default-first-option filterable
                         size="small"
                         @change="changeModel">
                <el-option v-for="item in models" :key="item.value" :label="item.label" :value="item.value">
                </el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="检验标准:">
              <el-select v-model="standardMethodListId" :loading="methodLoad"
                         :placeholder="active>1 ? '' : '请输入'" clearable size="small"
                         @change="changeStandardMethodListId" @focus="methodFocus">
                <el-option v-for="item in methods" :key="item.id" :label="item.code" :value="item.id">
                </el-option>
              </el-select>
            <el-form-item label="附件查看:" style="margin-bottom: 6px;margin-top: 6px">
              <el-button type="text" @click="handleFileDialog">
                <i class="el-icon-document"></i>
                车间附件查看
              </el-button>
            </el-form-item>
          </el-form>
        </div>
        <div style="margin-top: 3px">
          <el-button v-show="active==1" :disabled="sampleList.length === 2" size="small" type="primary" @click="handleSplitCountNum">拆分</el-button>
        <el-button type="text" @click="handleFileDialog" v-show="active != 1">
          <i class="el-icon-document"></i>
          车间附件查看
        </el-button>
        <el-dialog :visible.sync="fileDialogVisible" title="附件查看" width="80%">
          <fileList :currentNo="addObj.workShopId" v-if="fileDialogVisible" :isLook="true" />
        </el-dialog>
        <div style="margin-bottom: 6px;margin-top: 6px">
          <el-button v-show="active == 1" :disabled="sampleList.length === 2" size="small" type="primary"
            @click="handleSplitCountNum">拆分</el-button>
        </div>
      </div>
      <el-table ref="sampleTable" :data="sampleList"
                class="el-table sampleTable"
                highlight-current-row
                max-height="400px"
                tooltip-effect="dark"
                @selection-change="selectSample" @row-click="rowClick">
        <el-table-column v-if="active==1" :selectable="selectable" type="selection" width="65"></el-table-column>
      <el-table ref="sampleTable" :data="sampleList" class="el-table sampleTable" highlight-current-row
        :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border max-height="400px" tooltip-effect="dark"
        @selection-change="selectSample" @row-click="rowClick">
        <el-table-column v-if="active == 1" :selectable="selectable" type="selection" width="65"></el-table-column>
        <el-table-column align="center" label="序号" prop="index" type="index" width="65"></el-table-column>
        <el-table-column align="center" label="样品名称" min-width="100" prop="sample">
          <template slot-scope="scope">
            <el-input v-model="scope.row.sample" :disabled="active>1 || scope.$index !== 0" size="small" @change="(val)=>changeValue(val, 'sample')"></el-input>
            <el-input v-model="scope.row.sample" :disabled="active > 1 || scope.$index !== 0" size="small"
              @change="(val) => changeValue(val, 'sample')"></el-input>
          </template>
        </el-table-column>
        <el-table-column align="center" label="样品编号" min-width="140" prop="sampleCode">
          <template slot-scope="scope">
            <el-input v-model="scope.row.sampleCode" :disabled="active>1 || scope.$index !== 0" clearable placeholder="不填写则系统自动生成"
                      size="small"
                      @change="(val)=>changeValue(val, 'sampleCode')"></el-input>
            <el-input v-model="scope.row.sampleCode" :disabled="active > 1 || scope.$index !== 0" clearable
              placeholder="不填写则系统自动生成" size="small" @change="(val) => changeValue(val, 'sampleCode')"></el-input>
          </template>
        </el-table-column>
        <el-table-column align="center" label="样品型号" min-width="100" prop="model">
          <template slot-scope="scope">
            <el-select v-model="scope.row.model" :disabled="active>1 || scope.$index !== 0" allow-create default-first-option filterable
                       placeholder="样品型号" size="small" style="width: 100%;" @change="handleChangeModel">
            <el-select v-model="scope.row.model" :disabled="active > 1 || scope.$index !== 0" allow-create
              default-first-option filterable placeholder="样品型号" size="small" style="width: 100%;"
              @change="handleChangeModel">
              <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 v-if="!(active>1)" align="center" label="型号参数" prop="modelNum" width="130">
        <el-table-column v-if="!(active > 1)" align="center" label="型号参数" prop="modelNum" width="130">
          <template slot-scope="scope">
            <el-input v-model="scope.row.modelNum" :disabled="active>1|| scope.$index !== 0" clearable placeholder="非必填"
                      size="small"
                      @input="methodChange(scope.row.standardMethodListId, scope.row)"></el-input>
            <el-input v-model="scope.row.modelNum" :disabled="active > 1 || scope.$index !== 0" clearable
              placeholder="非必填" size="small"
              @input="methodChange(scope.row.standardMethodListId, scope.row)"></el-input>
          </template>
        </el-table-column>
        <el-table-column align="center" label="检验标准" min-width="100" prop="standardMethodListId">
          <template slot-scope="scope">
            <el-select v-model="scope.row.standardMethodListId" :disabled="scope.row.model==null||active>1|| scope.$index !== 0"
                       :loading="methodLoad" clearable placeholder="检验标准" size="small"
                       style="width: 100%;" @change="(value)=>methodChange(value, scope.row)" @clear="productList = []" @focus="methodFocus">
            <el-select v-model="scope.row.standardMethodListId"
              :disabled="scope.row.model == null || active > 1 || scope.$index !== 0" :loading="methodLoad" clearable
              placeholder="检验标准" size="small" style="width: 100%;" @change="(value) => methodChange(value, scope.row)"
              @clear="productList = []" @focus="methodFocus" multiple>
              <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 v-if="addObj.mating==1" align="center" label="配套样品名称" prop="joinName" width="140">
        <el-table-column v-if="addObj.mating == 1" align="center" label="配套样品名称" prop="joinName" width="140">
          <template slot-scope="scope">
            <el-input v-model="scope.row.joinName" :autosize="{ minRows: 1, maxRows: 1}" size="small"
                      type="textarea"></el-input>
            <el-input v-model="scope.row.joinName" :autosize="{ minRows: 1, maxRows: 1 }" size="small"
              type="textarea"></el-input>
          </template>
        </el-table-column>
        <el-table-column v-if="addObj.mating==1" align="center" label="配套样品型号" prop="joinModel" width="140">
        <el-table-column v-if="addObj.mating == 1" align="center" label="配套样品型号" prop="joinModel" width="140">
          <template slot-scope="scope">
            <el-input v-model="scope.row.joinModel" :autosize="{ minRows: 1, maxRows: 1}" size="small"
                      type="textarea"></el-input>
            <el-input v-model="scope.row.joinModel" :autosize="{ minRows: 1, maxRows: 1 }" size="small"
              type="textarea"></el-input>
          </template>
        </el-table-column>
        <el-table-column v-if="addObj.mating==1" align="center" label="配套样品数量" prop="joinNum" width="140">
        <el-table-column v-if="addObj.mating == 1" align="center" label="配套样品数量" prop="joinNum" width="140">
          <template slot-scope="scope">
            <el-input-number v-model="scope.row.joinNum" :controls="false" :max="100" :min="1" :precision="0"
                             size="small" style="width: 80%;"></el-input-number>
              size="small" style="width: 80%;"></el-input-number>
          </template>
        </el-table-column>
        <el-table-column align="center" label="待检项数量" prop="quantity" width="105">
          <template slot-scope="scope">
            <el-select v-model="scope.row.quantity" :disabled="active>1|| scope.$index !== 0 || sampleList.length > 1" clearable
                       size="small">
              <el-option v-for="item in quantityList" :key="item.value" :label="item.label" :value="item.value"></el-option>
            <el-select v-model="scope.row.quantity" disabled clearable size="small">
              <el-option v-for="item in quantityList" :key="item.value" :label="item.label"
                :value="item.value"></el-option>
            </el-select>
          </template>
        </el-table-column>
      </el-table>
      <el-table ref="productTable" v-loading="getProductLoad" :data="productList"
                :row-class-name="tableRowClassName"
                class="el-table"
                max-height="400px"
                style="margin-bottom: 10px;"
                tooltip-effect="dark"
                @select="selectOne"
                @selection-change="selectProduct"
                @select-all="handleAll">
        <el-table-column v-if="active==1" :selectable="selectable" type="selection" width="65"></el-table-column>
      <el-table ref="productTable" v-loading="getProductLoad" :data="productList" :row-class-name="tableRowClassName"
        class="el-table" max-height="400px" style="margin-bottom: 10px;"
        :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border tooltip-effect="dark">
        <!-- <el-table-column v-if="active == 1" :selectable="selectable" type="selection" width="65"></el-table-column> -->
        <el-table-column label="检验项" min-width="140" prop="inspectionItem" 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"
                placeholder="请输入"
                size="mini"
                @input="searchFilterList"/>
              <el-input v-if="active == 1" v-model="inspectionItem" placeholder="请输入" size="mini"
                @input="searchFilterList" />
            </div>
          </template>
        </el-table-column>
        <el-table-column label="检验项子项" min-width="140" prop="inspectionItemSubclass"
                         show-overflow-tooltip>
        <el-table-column label="检验项子项" min-width="140" prop="inspectionItemSubclass" 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"
                placeholder="请输入"
                size="mini"
                @input="searchFilterList"/>
              <el-input v-if="active == 1" v-model="inspectionItemSubclass" placeholder="请输入" size="mini"
                @input="searchFilterList" />
            </div>
          </template>
        </el-table-column>
        <el-table-column label="要求值" min-width="220px" prop="ask">
          <template slot-scope="scope">
            <el-input v-if="active==1&&isAskOnlyRead" v-model="scope.row.ask" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="要求值"
                      size="small" type="textarea"
                      @change="e=>requestChange(e,scope.row)"></el-input>
            <el-input v-if="active == 1 && isAskOnlyRead" v-model="scope.row.ask" :autosize="{ minRows: 1, maxRows: 3 }"
              clearable placeholder="要求值" size="small" type="textarea"
              @change="e => requestChange(e, scope.row)"></el-input>
            <span v-else>
              <template >{{ scope.row.ask }}</template>
              <template>{{ scope.row.ask }}</template>
            </span>
          </template>
        </el-table-column>
        <el-table-column label="要求描述" min-width="220px" prop="tell">
          <template slot-scope="scope">
            <el-input v-if="active==1&&isAskOnlyRead" v-model="scope.row.tell" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="要求描述"
                      size="small" type="textarea"
                      @change="e=>requestChange(e,scope.row,'tell')"></el-input>
            <el-input v-if="active == 1 && isAskOnlyRead" v-model="scope.row.tell"
              :autosize="{ minRows: 1, maxRows: 3 }" clearable placeholder="要求描述" size="small" type="textarea"
              @change="e => requestChange(e, scope.row, 'tell')"></el-input>
            <span v-else>
                <template >{{ scope.row.tell }}</template>
              </span>
              <template>{{ scope.row.tell }}</template>
            </span>
          </template>
        </el-table-column>
        <el-table-column label="条件" min-width="140" prop="radius" show-overflow-tooltip></el-table-column>
        <el-table-column label="试验方法" min-width="120" prop="methodS" show-overflow-tooltip>
        <el-table-column label="试验条件" min-width="140" prop="radius" show-overflow-tooltip></el-table-column>
        <el-table-column label="试验方法" min-width="120" prop="method" 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"
                placeholder="请输入"
                size="mini"
                @input="searchFilterList"/>
              <el-input v-if="active == 1" v-model="methodS" placeholder="请输入" size="mini" @input="searchFilterList" />
            </div>
          </template>
        </el-table-column>
        <el-table-column label="计量单位" prop="unit" show-overflow-tooltip width="100"></el-table-column>
        <el-table-column label="单价" prop="price" show-overflow-tooltip width="100"></el-table-column>
        <el-table-column label="区间" min-width="120" prop="section" show-overflow-tooltip></el-table-column>
        <el-table-column :filter-method="filterHandler" :filters="filters" label="子实验室" min-width="130" prop="sonLaboratory"
                         show-overflow-tooltip></el-table-column>
        <el-table-column :filter-method="filterHandler" :filters="filters" label="子实验室" min-width="130"
          prop="sonLaboratory" show-overflow-tooltip></el-table-column>
      </el-table>
    </div>
    <!--特殊值处理框-->
    <el-dialog :before-close="beforeClose" :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false"
               :visible.sync="bsm1DiaAll"
               min-width="400px"
               title="检测到特殊项,请作出以下选择">
    <el-dialog :before-close="beforeClose" :close-on-click-modal="false" :close-on-press-escape="false"
      :show-close="false" :visible.sync="bsm1DiaAll" min-width="400px" title="检测到特殊项,请作出以下选择">
      <div v-for="(item, index) in bsm1DiaList" :key="item.id" class="body" style="max-height: 60vh;">
        <span>{{item.inspectionItem}}</span>
        <span>{{ item.inspectionItem }}</span>
        <el-row v-if="item.bsm1">
          <el-col :span="24" class="search_thing" style="height: initial;margin: 5px 0;">
            <div class="search_label" style="width: 80px;"><span class="required-span">* </span>选项:</div>
            <div class="search_input">
              <el-radio-group v-model="item.bsm1Val" v-removeAriaHidden @input="upBsmAll(item)">
                <el-radio v-for="(a, ai) in JSON.parse(item.bsmRow.sectionCopy)" :key="ai" :label="a" style="margin-bottom: 2px;margin-top: 2px;"></el-radio>
                <el-radio v-for="(a, ai) in JSON.parse(item.bsmRow.sectionCopy)" :key="ai" :label="a"
                  style="margin-bottom: 2px;margin-top: 2px;"></el-radio>
              </el-radio-group>
            </div>
          </el-col>
@@ -340,8 +323,8 @@
            <div class="search_label" style="width: 80px;">要求值:</div>
            <div class="search_input">
              <el-radio-group v-model="item.bsm1Val" v-removeAriaHidden @input="upBsmAll(item)">
                <el-radio v-for="(a, ai) in JSON.parse(item.bsmRow.sectionCopy)" :key="ai"
                          :label="a">{{JSON.parse(item.bsmRow.askCopy)[ai]}}</el-radio>
                <el-radio v-for="(a, ai) in JSON.parse(item.bsmRow.sectionCopy)" :key="ai" :label="a">{{
                  JSON.parse(item.bsmRow.askCopy)[ai] }}</el-radio>
              </el-radio-group>
            </div>
          </el-col>
@@ -354,8 +337,8 @@
      </span>
    </el-dialog>
    <el-dialog :close-on-click-modal="false" :close-on-press-escape="false"
               :show-close="false" :visible.sync="bsm3Dia"
               title="区间值填写" width="800px">
      :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border :show-close="false"
      :visible.sync="bsm3Dia" title="区间值填写" width="800px">
      <el-table :data="editTable" height="80vh" style="width: 100%">
        <!-- inspectionItemList -->
        <el-table-column label="检验项" prop="inspectionItemList" width="180">
@@ -368,36 +351,27 @@
        </el-table-column>
        <el-table-column label="识别符值" prop="value">
          <template slot-scope="scope">
            <el-input v-model="scope.row.value" placeholder="请输入" size="small" @input="inputValueHandler(scope.row,scope.$index)"></el-input>
            <el-input v-model="scope.row.value" placeholder="请输入" size="small"
              @input="inputValueHandler(scope.row, scope.$index)"></el-input>
          </template>
        </el-table-column>
      </el-table>
      <span slot="footer" class="dialog-footer">
        <el-row>
          <el-button @click="bsm3Dia=false">取 消</el-button>
          <el-button @click="bsm3Dia = false">取 消</el-button>
          <el-button :loading="saveLoad" type="primary" @click="save0">确 定</el-button>
        </el-row>
      </span>
    </el-dialog>
    <el-dialog
      :close-on-click-modal="false"
      :close-on-press-escape="false"
      :show-close="false"
      :visible.sync="dialogVisible"
      title="提示"
      width="32%">
    <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false"
      :visible.sync="dialogVisible" title="提示" width="32%">
      <span>{{ dialogMessage }}</span>
      <span slot="footer" class="dialog-footer">
        <el-button type="primary" @click="dialogVisible= false,closeOpenPage()">确 定</el-button>
        <el-button type="primary" @click="dialogVisible = false, closeOpenPage()">确 定</el-button>
      </span>
    </el-dialog>
    <el-dialog
      :close-on-click-modal="false"
      :close-on-press-escape="false"
      :show-close="false"
      :visible.sync="dialogVisible2"
      title="提示"
      width="32%">
    <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false"
      :visible.sync="dialogVisible2" title="提示" width="32%">
      <span>{{ dialogMessage2 }}</span>
      <span slot="footer" class="dialog-footer">
        <el-button type="primary" @click="dialogVisible2 = false">确 定</el-button>
@@ -415,13 +389,8 @@
        <el-button :loading="templateLoading" type="primary" @click="addTemplateDia">确 定</el-button>
      </span>
    </el-dialog>
    <el-dialog
      :close-on-click-modal="false"
      :close-on-press-escape="false"
      :show-close="false"
      :visible.sync="noNeedCheckDia"
      title="免检提示"
      width="32%">
    <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false"
      :visible.sync="noNeedCheckDia" title="免检提示" width="32%">
      <span>确认免检当前检验单?</span>
      <span slot="footer" class="dialog-footer">
        <el-button :loading="noNeedCheckLoad" type="primary" @click="handleNoNeedCheck">确 定</el-button>
@@ -445,21 +414,24 @@
  selectStandardProductList,
  selectStandardTreeListByPartNo
} from "@/api/business/rawMaterialOrder";
import fileList from "../../structural/capabilityAndLaboratory/workshop/components/fileList.vue"
import limsTable from "@/components/Table/lims-table.vue";
export default {
  name: "CustomsInspection",
  dicts: ['check_type', 'urgency_level'],
  components: {},
  components: { limsTable, fileList },
  props: {
  },
  data() {
    return {
      customsInspection: {},
      fileDialogVisible: false,
      orderType: '',
      active: 0,
      currentId: 0,
      isReport: '',
      editTable:[], // 区间特殊值填写
      editTable: [], // 区间特殊值填写
      template: null,
      saveLoad: false, // 保存按钮loading
      noNeedCheckLoad: false, // 免检按钮loading
@@ -500,6 +472,8 @@
        typeSource: 1,
        ifsInventoryId: '',
        sampleStatus: 'In good condition',
        workShopName: '',//车间名称
        workShopId: '',//车间ID
      },
      addObjRules: { // 表单校验规则
        testQuantity: [
@@ -551,10 +525,10 @@
      totalArr: [],
      addObj1: {},
      model: null,
      standardMethodListId: null,
      inspectionItem:null,
      inspectionItemSubclass:null,
      methodS:null,
      standardMethodListId: [],
      inspectionItem: null,
      inspectionItemSubclass: null,
      methodS: null,
      codeLevel: '', // 样品所在级别
      selectTreeTem: '', // 样品父级
      checkType: [], // 检验类型选项数据
@@ -567,14 +541,14 @@
      templateName: '', // 保存模版名称
      templates: [], // 模版下拉框数据
      quantityList: [
        { label: 1, value: 1},
        { label: 2, value: 2},
        { label: 3, value: 3},
        { label: 4, value: 4},
        { label: 5, value: 5},
        { label: 6, value: 6},
        { label: 7, value: 7},
        { label: 8, value: 8},
        { label: 1, value: 1 },
        { label: 2, value: 2 },
        { label: 3, value: 3 },
        { label: 4, value: 4 },
        { label: 5, value: 5 },
        { label: 6, value: 6 },
        { label: 7, value: 7 },
        { label: 8, value: 8 },
      ],
      types: [], // 紧急程度下拉框
      dataTitle: [
@@ -583,13 +557,13 @@
          value: 0
        },
        {
          label: '季度检验',
          label: '可靠性检验',
          value: 1
        },
      ],
      dataIndex: 0,
      isShowTab: false,
      symbolList:['RTS'],
      symbolList: ['RTS'],
      bsm3Dia: false, // 区间值填写弹框
      bsmRow: {},
      bsm1: false,
@@ -626,11 +600,11 @@
    },
    'addObj.sample'(val) {
      this.model = null
      this.standardMethodListId = null
      this.standardMethodListId = []
    },
    'addObj.qtyArrived'(val) {
      this.model = null
      this.standardMethodListId = null
      this.standardMethodListId = []
    }
  },
  created() {
@@ -639,19 +613,24 @@
    this.currentId = this.$route.query.currentId
    this.isReport = this.$route.query.isReport
    this.customsInspection = this.$route.query.customsInspection
    this.getInfo();
  },
  activated() {
    if (this.active==1) {
      this.getInfo();
    }
    this.active = this.$route.query.active
    this.orderType = this.$route.query.orderType
    this.currentId = this.$route.query.currentId
    this.isReport = this.$route.query.isReport
    this.customsInspection = this.$route.query.customsInspection
    this.getInfo();
  },
  getInfo() {
    this.getUserNowList() // 获取当前用户信息
    this.selectStandardMethods() // 获取检验标准下拉框数据
    this.getInfo() // 获取数据
  },
  // getInfo() {
  //   this.getInfo() // 获取数据
  // },
  methods: {
    save1 () {
    handleFileDialog() {
      this.fileDialogVisible = true
    },
    save1() {
      if (this.bsm1DiaList.length > 0) {
        this.bsm1DiaList.forEach(item => {
          if (!item.bsm1Val) {
@@ -672,24 +651,26 @@
      done()
    },
    //特殊值填写处理
    inputValueHandler(row,index){
      if(row){
        const nextIndex = index+1
    inputValueHandler(row, index) {
      if (row) {
        const nextIndex = index + 1
        for (let i = nextIndex; i < this.editTable.length; i++) {
          const element = this.editTable[i];
          if(element.model==row.model&&row.symbolItem==element.symbolItem){
          if (element.model == row.model && row.symbolItem == element.symbolItem) {
            this.editTable[i].value = row.value
          }
        }
      }
    },
    // 查看时切换tab栏
    handleDataTab (m, i) {
    handleDataTab(m, i) {
      this.dataIndex = i
      this.getInfo()
    },
    // 获取数据
    getInfo () {
    getInfo() {
      this.getUserNowList() // 获取当前用户信息
      this.selectStandardMethods() // 获取检验标准下拉框数据
      if (this.active == 2) {
        let orderId = ''
        if (!this.customsInspection.enterOrderId && this.customsInspection.quarterOrderId) {
@@ -725,6 +706,11 @@
            this.addObj.updateBatchNo = res.data.insOrderTemplate.updateBatchNo
            this.addObj.type = String(this.addObj.type)
            this.sampleList = this.HaveJson(res.data.sampleProduct)
            this.sampleList.forEach(m => {
              if (m.standardMethodListId) {
                m.standardMethodListId = JSON.parse(m.standardMethodListId)
              }
            })
            this.getProNum()
            this.$nextTick(() => {
              this.$refs.sampleTable.doLayout()
@@ -737,11 +723,13 @@
          }
        })
      } else {
        notificationRawOrder({ifsInventoryId:this.customsInspection.id}).then(res => {
        notificationRawOrder({ ifsInventoryId: this.customsInspection.id }).then(res => {
          if (res.code === 200) {
            if (res.data === 1) {
              this.dialogVisible2 = true
              this.dialogMessage2 = '当前批次的样品已检验过, 可以免检'
              if (this.orderType != 1) {
                this.dialogVisible2 = true
                this.dialogMessage2 = '当前批次的样品已检验过, 可以免检'
              }
            } else if (res.data === 2) {
              this.dialogVisible2 = true
              this.dialogMessage2 = '当前批次的样品已超20吨, 需要多级多次检验'
@@ -749,35 +737,43 @@
          }
        })
        // 报检流程
        selectStandardTreeListByPartNo({partNo:this.customsInspection.partNo}).then(res => {
          this.addObj.sample = res.data.label
          this.codeLevel = res.data.code
          this.$set(this.addObj, 'qtyArrived', this.customsInspection.qtyArrived)
          this.$set(this.addObj, 'partNo', this.customsInspection.partNo)
          this.$set(this.addObj, 'receiverDate', this.customsInspection.receiverDate)
          this.$set(this.addObj, 'orderNo', this.customsInspection.orderNo)
          this.$set(this.addObj, 'declareUser', this.customsInspection.declareUser)
          this.$set(this.addObj, 'testQuantity', this.customsInspection.testQuantity)
          this.$set(this.addObj, 'buyUnitMeas', this.customsInspection.buyUnitMeas)
          this.$set(this.addObj, 'updateBatchNo', this.customsInspection.updateBatchNo)
          this.$set(this.addObj, 'partDetail', this.customsInspection.partDesc)
          if (this.orderType == 1) {
            this.$set(this.addObj, 'orderType', 'Quarterly inspection')
        selectStandardTreeListByPartNo({ partNo: this.customsInspection.partNo }).then(res => {
          if (res.data !== null) {
            this.addObj.sample = res.data.label
            this.codeLevel = res.data.code
            this.$set(this.addObj, 'qtyArrived', this.customsInspection.qtyArrived)
            this.$set(this.addObj, 'partNo', this.customsInspection.partNo)
            this.$set(this.addObj, 'receiverDate', this.customsInspection.receiverDate)
            this.$set(this.addObj, 'orderNo', this.customsInspection.orderNo)
            this.$set(this.addObj, 'declareUser', this.customsInspection.declareUser)
            this.$set(this.addObj, 'testQuantity', this.customsInspection.testQuantity)
            this.$set(this.addObj, 'buyUnitMeas', this.customsInspection.buyUnitMeas)
            this.$set(this.addObj, 'updateBatchNo', this.customsInspection.updateBatchNo)
            this.$set(this.addObj, 'partDetail', this.customsInspection.partDesc)
            this.$set(this.addObj, 'workShopName', res.data.workShopName)
            this.$set(this.addObj, 'workShopId', res.data.workShopId)
            this.$set(this.addObj, 'inspectionType', this.customsInspection.inspectionType)
            console.log(111111, this.addObj)
            if (this.orderType == 1) {
              this.$set(this.addObj, 'orderType', 'Quarterly inspection')
            }
            const str = res.data.treeName.split('-')
            this.selectTreeTem = str.join(' - ')
            this.selectTree = str.join(' - ')
            this.addListInfo(this.codeLevel, res.data) // 原辅材样品是固定的,就默认赋值一条数据,可拆分
            this.selectInsOrderTemplate() // 原辅材模板列表查询
          } else {
            this.dialogVisible = true
            this.dialogMessage = res.message
          }
          const str = res.data.treeName.split('-')
          this.selectTreeTem = str.join(' - ')
          this.selectTree = str.join(' - ')
          this.addListInfo(this.codeLevel, res.data) // 原材料样品是固定的,就默认赋值一条数据,可拆分
          this.selectInsOrderTemplate() // 原材料模板列表查询
        }).catch(err => {
          this.dialogVisible = true
          this.dialogMessage = err.message
        })
      }
    },
    // 查询模板-反显模板
    selectInsOrderTemplateByIdList(e) {
      selectRawMaterOrderTemplateById({id: e}).then(res => {
      selectRawMaterOrderTemplateById({ id: e }).then(res => {
        let obj = JSON.parse(res.data)
        this.sampleList = obj.sampleList;
        this.productList = obj.sampleList[0].insProduct
@@ -799,7 +795,7 @@
          thing: JSON.stringify({
            // addObj: this.addObj,
            sampleList: sampleList,
            selectTree:this.selectTree
            selectTree: this.selectTree
          })
        }).then(res => {
          this.templateLoading = false;
@@ -819,22 +815,22 @@
        cancelButtonText: "取消",
        type: "warning"
      }).then(() => {
        delRawMaterOrderTemplate({id: row.id}).then(res => {
        delRawMaterOrderTemplate({ id: row.id }).then(res => {
          this.$message.success('删除成功')
          this.selectInsOrderTemplate()
        }).catch(e => {
          this.$message.error('删除失败')
        })
      }).catch(() => {})
      }).catch(() => { })
    },
    // 查询模板列表
    selectInsOrderTemplate() {
      selectRawMaterOrderTemplate({partNo:this.addObj.partNo}).then(res => {
      selectRawMaterOrderTemplate({ partNo: this.addObj.partNo }).then(res => {
        this.templates = res.data
      })
    },
    // 拆分
    handleSplitCountNum () {
    handleSplitCountNum() {
      this.sample.joinName = null
      this.sample.joinModel = null
      this.sample.joinNum = 1
@@ -857,7 +853,7 @@
      this.computationalPairing(this.sampleList.length)
    },
    // 检验项列表筛选
    searchFilterList () {
    searchFilterList() {
      const vtw = {
        inspectionItem: this.inspectionItem, // 检验项
        inspectionItemSubclass: this.inspectionItemSubclass, // 检验项子项
@@ -868,7 +864,7 @@
      })
      this.changeProductList0()
      if (isHaveValue) {
        for(let i in vtw) {
        for (let i in vtw) {
          if (vtw[i]) {
            this.productList = this.productList0.filter((item) => {
              return item[i] && item[i].includes(vtw[i])
@@ -881,11 +877,11 @@
      }
    },
    containsValue(str) {
      if(str){
      if (str) {
        let symbolItem = ''
        this.symbolList.some(value =>{
          if(str.includes(value)){
            symbolItem  = value
        this.symbolList.some(value => {
          if (str.includes(value)) {
            symbolItem = value
            return true
          }
        })
@@ -896,12 +892,8 @@
    save() {
      this.$refs['addObj'].validate((valid) => {
        if (valid) {
          if (!this.sampleList.every(m => m.standardMethodListId)) {
          if (!this.sampleList.every(m => m.standardMethodListId && m.standardMethodListId.length > 0)) {
            this.$message.error('请选择检验标准')
            return
          }
          if (!this.sampleList.every(m => m.quantity)) {
            this.$message.error('请选择待检项数量')
            return
          }
          const sampleList = this.HaveJson(this.sampleList)
@@ -909,19 +901,19 @@
            item.insProduct = this.productList
          })
          this.getTotal(sampleList)
          let projectNum = this.totalArr.filter(a => a.state == 1).length
          if(projectNum==0){
          let projectNum = this.totalArr.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)
            }).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.editTable = this.handleData(sampleList,this.containsValue, 0)
              this.editTable = this.handleData(sampleList, this.containsValue, 0)
              this.editTable.forEach(item => {
                item.value = item.modelNum
              })
@@ -937,24 +929,24 @@
      });
    },
    // 提交区间值
    save0(){
      if(this.editTable.every(m=>m.value)){
    save0() {
      if (this.editTable.every(m => m.value)) {
        this.sampleList.forEach(item => {
          item.insProduct = this.productList
        })
        let sampleList = this.handleData(this.HaveJson(this.sampleList),this.handleAsk,1)
        let sampleList = this.handleData(this.HaveJson(this.sampleList), this.handleAsk, 1)
        sampleList.forEach(a => {
          a.insProduct = a.insProduct.filter(b=>b.state === 1)
          a.insProduct = a.insProduct.filter(b => b.state === 1)
        })
        this.saveMethod(sampleList)
      }else{
      } else {
        this.$message.error('请填写识别符值')
      }
    },
    noNeedCheck () {
    noNeedCheck() {
      this.$refs['addObj'].validate((valid) => {
        if (valid) {
          if (!this.sampleList.every(m => m.standardMethodListId)) {
          if (!this.sampleList.every(m => m.standardMethodListId && m.standardMethodListId.length > 0)) {
            this.$message.error('请选择检验标准')
            return
          }
@@ -965,7 +957,7 @@
          })
          this.getTotal(sampleList)
          let projectNum = this.totalArr.filter(a => a.state == 1).length
          if (projectNum!=0){
          if (projectNum != 0) {
            this.$message.error('免检不可选择检验项')
            return
          }
@@ -976,7 +968,7 @@
        }
      });
    },
    handleNoNeedCheck () {
    handleNoNeedCheck() {
      // 检验类型为进厂检验时可选择免检,但不能选择检验项
      const sampleList = this.HaveJson(this.sampleList)
      sampleList.forEach(item => {
@@ -984,19 +976,19 @@
      })
      this.getTotal(sampleList)
      let trees = this.selectTree.split(" - ")
      if (trees.length < 3) {
      if (trees.length < 5) {
        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.length === 4) {
        this.addObj.sample = trees[2]
      this.addObj.sampleType = trees[3]
      if ((trees[5] === undefined || trees[5] === '') || trees.length === 6) {
        this.addObj.sample = trees[4]
      } else {
        this.addObj.sample = trees[3]
        this.addObj.sample = trees[5]
      }
      this.addObj.model = (trees[4] == undefined ? null : trees[4])
      this.addObj.model = (trees[6] == undefined ? null : trees[6])
      this.addObj.ifsInventoryId = this.customsInspection.id
      this.noNeedCheckLoad = true
      addExemptionOrder({
@@ -1016,7 +1008,7 @@
          } else {
            a.model = a.model + ((a.modelNum == null || a.modelNum == '' || a.modelNum == 'null') ? '' : ('-' + a.modelNum))
          }
          a.insProduct = a.insProduct.filter(b=>b.state === 1)
          a.insProduct = a.insProduct.filter(b => b.state === 1)
          return a
        }),
      }).then(res => {
@@ -1024,35 +1016,41 @@
        this.noNeedCheckDia = false
        this.$message.success('已提交')
        this.closeOpenPage()
      }).catch(e=>{
      }).catch(e => {
        this.noNeedCheckLoad = false
      })
    },
    saveMethod(sampleList){
    saveMethod(sampleList) {
      let trees = this.selectTree.split(" - ")
      if (trees.length < 3) {
      if (trees.length < 5) {
        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.length === 4) {
        this.addObj.sample = trees[2]
      this.addObj.sampleType = trees[4]
      if ((trees[5] === undefined || trees[5] === '') || trees.length === 6) {
        this.addObj.sample = trees[4]
      } else {
        this.addObj.sample = trees[3]
        this.addObj.sample = trees[5]
      }
      this.addObj.model = (trees[4] == undefined ? null : trees[4])
      this.addObj.model = (trees[6] == undefined ? null : trees[6])
      this.addObj.ifsInventoryId = this.customsInspection.id
      this.saveLoad = true
      if (this.addObj.createTime) {
        delete this.addObj.createTime
      }
      addInsOrder({
        insOrder: this.addObj,
        insOrder: {
          ...this.addObj,
          workShopId: this.addObj.workShopId || ''  // 确保 workShopId 传递给后端
        },
        sampleList: sampleList.map(a => {
          if (a.insProduct.length > 0) {
            a.insProduct.forEach(c => {
              delete c.id
            })
          }
          a.standardMethodListId = JSON.stringify(a.standardMethodListId)
          a.insProduct = this.fullProductList.map(item => ({
            ...item,
            state: 1
          }))
          if (a.modelNum) {
            // 根据x号判断型号参数与样品型号的拼接位置
            // 例如×4,就为500ML×4;4×,就为4×500ML
@@ -1067,21 +1065,19 @@
          } 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
        }),
      }).then(res => {
        this.saveLoad = false
        if (res.code == 201) return
        this.$message.success('已提交')
        this.bsm3Dia = false;
        this.closeOpenPage()
      }).catch(e=>{
      }).catch(e => {
        this.saveLoad = false
      })
    },
    handleAsk(ask,symbolItem, value) {
      try{
    handleAsk(ask, symbolItem, value) {
      try {
        let code = [">", "<", "=", ">", "<", "≥", "≤", "±", "*", "/"];
        let code2 = ['+', '*', '/', '-']
        if (ask.includes('&')) {
@@ -1125,42 +1121,42 @@
            return code[index] + '' + num
          }
        }
      }catch(e){}
      } catch (e) { }
    },
    handleData(sampleList,calBack,type){
    handleData(sampleList, calBack, type) {
      let editTable = []
      sampleList.forEach(item => {
        let obj = {
          sampleCode:item.sampleCode,
          model:item.model,
          symbolList:[],
          sampleId:item.id,
          modelNum:item.modelNum,
          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){
              if (type == 0) {
                let str = calBack(a.ask)
                str&&obj.symbolList.push({
                  symbolItem:str,
                  inspectionItem:a.inspectionItem,
                str && obj.symbolList.push({
                  symbolItem: str,
                  inspectionItem: a.inspectionItem,
                })
              }else if(type==1){
              } else if (type == 1) {
                let arr = 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)
                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.handleAsk(a.tell, arr[i].symbolItem,arr[i].value)
                      let tell = this.handleAsk(a.tell, arr[i].symbolItem, arr[i].value)
                      if (tell) {
                        a.tell = tell
                      }
                    }
                  }else{
                  } else {
                    this.$message.error('要求值为空,需要去标准库维护!')
                  }
                }
@@ -1176,21 +1172,21 @@
                if (b.productList && b.productList.length > 0) {
                  b.productList.forEach(c => {
                    if (c.state == 1) {
                      if(type==0){
                      if (type == 0) {
                        let str = calBack(c.ask)
                        str&&obj.symbolList.push({
                          symbolItem:str,
                          inspectionItem:c.inspectionItem,
                        str && obj.symbolList.push({
                          symbolItem: str,
                          inspectionItem: c.inspectionItem,
                        })
                      }else if(type==1){
                      } 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 (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)
                            let tell = this.handleTell(c.tell, f.symbolItem, f.value)
                            if (tell) {
                              c.tell = tell
                            }
@@ -1207,25 +1203,25 @@
                if (b.productList && b.productList.length > 0) {
                  b.productList.forEach(c => {
                    if (c.state == 1) {
                      if(type==0){
                      if (type == 0) {
                        let str = calBack(c.ask)
                        str&&obj.symbolList.push({
                          symbolItem:str,
                          inspectionItem:c.inspectionItem,
                        str && obj.symbolList.push({
                          symbolItem: str,
                          inspectionItem: c.inspectionItem,
                        })
                      }else if(type==1){
                      } 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 (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)
                            let tell = this.handleTell(c.tell, f.symbolItem, f.value)
                            if (tell) {
                              c.tell = tell
                            }
@@ -1240,25 +1236,25 @@
                    if (c.productList && c.productList.length > 0) {
                      c.productList.forEach(d => {
                        if (d.state == 1) {
                          if(type==0){
                          if (type == 0) {
                            let str = calBack(d.ask)
                            str&&obj.symbolList.push({
                              symbolItem:str,
                              inspectionItem:d.inspectionItem,
                            str && obj.symbolList.push({
                              symbolItem: str,
                              inspectionItem: d.inspectionItem,
                            })
                          }else if(type==1){
                          } 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 (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)
                                let tell = this.handleTell(d.tell, f.symbolItem, f.value)
                                if (tell) {
                                  d.tell = tell
                                }
@@ -1274,11 +1270,11 @@
            }
          })
        }
        if(type==0){
        if (type == 0) {
          editTable.push(obj)
        }
      })
      if(type==0){
      if (type == 0) {
        editTable.forEach(a => {
          a.symbolList.forEach(b => {
            let arr = a.symbolList.filter(c => c.symbolItem == b.symbolItem);
@@ -1287,13 +1283,13 @@
        })
        editTable.forEach(a => {
          let mySet = new Set();
          a.symbolList = a.symbolList.filter(b =>{
          a.symbolList = a.symbolList.filter(b => {
            let num0 = mySet.size;
            mySet.add(b.symbolItem);
            let num1 = mySet.size;
            if(num0!=num1){
            if (num0 != num1) {
              return true;
            }else{
            } else {
              return false
            }
          })
@@ -1302,19 +1298,19 @@
        editTable.forEach(a => {
          a.symbolList.forEach(b => {
            let obj = {
              sampleCode:a.sampleCode,
              model:a.model,
              symbolItem:b.symbolItem,
              sampleId:a.sampleId,
              value:null,
              inspectionItemList:b.inspectionItemList,
              modelNum:a.modelNum,
              sampleCode: a.sampleCode,
              model: a.model,
              symbolItem: b.symbolItem,
              sampleId: a.sampleId,
              value: null,
              inspectionItemList: b.inspectionItemList,
              modelNum: a.modelNum,
            }
            editTableNew.push(obj)
          })
        })
        return editTableNew
      }else{
      } else {
        return sampleList
      }
    },
@@ -1324,7 +1320,7 @@
      } catch (e) {
      }
    },
    replaceAll(str,find,value) {
    replaceAll(str, find, value) {
      if (str === undefined) {
        return str
      }
@@ -1402,10 +1398,10 @@
        let num1 = mySet0.size
        mySet0.add(item.sonLaboratory)
        let num2 = mySet0.size
        if(num2>num1){
        if (num2 > num1) {
          this.sonLaboratoryList.push({
            label:item.sonLaboratory,
            value:item.sonLaboratory,
            label: item.sonLaboratory,
            value: item.sonLaboratory,
          })
        }
      })
@@ -1453,11 +1449,11 @@
          } else {
            this.methods = res.data.standardMethodList
          }
        } catch (e) {}
        } catch (e) { }
      })
    },
    // 赋值第一条默认数据
    addListInfo (codeLevel, data) {
    addListInfo(codeLevel, data) {
      this.sampleList = []
      this.productList = []
      this.sample.model = this.addObj.model
@@ -1466,18 +1462,18 @@
      this.sample.joinNum = 1
      this.sample.sample = this.addObj.sample
      this.sample.unit = this.addObj.unit
      this.sample.standardMethodListId = null
      this.sample.standardMethodListId = []
      this.sample.insProduct = []
      this.sample.id = this.count
      this.sample.childSampleList = []
      this.sample.insulating = null
      this.sample.sheath = null
      this.sample.quantity = 1
      if (codeLevel === '[5]') {
      if (codeLevel === '[7]') {
        this.sample.model = this.addObj.sample
      } else if (codeLevel === '[4]') {
      } else if (codeLevel === '[6]') {
        this.models = data.children2
      } else if (codeLevel === '[3]') {
      } else if (codeLevel === '[5]') {
        this.models = data.children1
      }
      this.sampleList.push(this.HaveJson(this.sample))
@@ -1501,12 +1497,12 @@
    // 选中表格行的回调
    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
      }
      // 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 = []
@@ -1550,14 +1546,14 @@
      }
      this.bsm2Val3 = this.HaveJson(this.permute(nums))
    },
    tableRowClassName({row, rowIndex}) {
    tableRowClassName({ row, rowIndex }) {
      if (row.state === 0) {
        return '';
      }
      return 'warning-row';
    },
    // 修改样品名称
    changeValue (val, string) {
    changeValue(val, string) {
      if (this.sampleList.length > 1) {
        // 有两条样品时,第二条样品信息和第一条保持一致
        this.sampleList.forEach(item => {
@@ -1576,29 +1572,28 @@
        })
      }
      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
      }
      // 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.addObj.model && (selectTreeList[selectTreeList.length - 1] = this.addObj.model)
      selectStandardProductList({
        model: this.addObj.model?this.addObj.model:row.model,
        model: this.addObj.model ? this.addObj.model : row.model,
        modelNum: row.modelNum,
        standardMethodListId: val,
        standardMethodListIds: val,
        factory: selectTreeList.join(" - "),
        partNo: this.addObj.partNo,
        ifsInventoryId: this.customsInspection.id
      }).then(res => {
        this.getProductLoad = false
        res.data.forEach(a => {
          a.state = 0
        })
        this.productList = this.HaveJson(res.data)
        this.productList0 = JSON.parse(JSON.stringify(this.productList))
        // 直接将查询结果赋值给 productList
        this.fullProductList = res.data
        this.productList = res.data
        this.productList0 = res.data
        this.$refs.sampleTable.setCurrentRow(row)
        setTimeout(() => {
          this.productList.forEach(a => {
@@ -1606,26 +1601,7 @@
          })
        }, 200)
      }).catch(err => {
        console.log('err-',err)
      })
    },
    // 选择样品型号的回调
    changeModel() {
      this.sampleList.forEach(a => {
        let obj = this.sampleIds.find(b => b == a.id)
        if (obj) {
          a.model = this.model
        }
      })
    },
    // 选择检验标准的回调
    changeStandardMethodListId() {
      this.sampleList.forEach(a => {
        let obj = this.sampleIds.find(b => b == a.id)
        if (obj) {
          a.standardMethodListId = this.standardMethodListId
          this.methodChange(this.standardMethodListId, a)
        }
        console.log('err-', err)
      })
    },
    // 拼接样品树的字符串
@@ -1667,7 +1643,7 @@
      }
    },
    // 全选特殊值处理框选择要求值的回调
    upBsmAll (item) {
    upBsmAll(item) {
      const i = this.bsm1DiaList.findIndex(obj => obj.id === item.id)
      if (i > -1) {
        // 找到相应的检验项赋值
@@ -1698,7 +1674,7 @@
    selectOne(selection, row) {
      this.bsm1DiaList = []
      row.state = row.state == 1 ? 0 : 1
      if(row.section === null) {
      if (row.section === null) {
        row.section = ""
      }
      if (row.sectionCopy === undefined && row.section) {
@@ -1712,18 +1688,18 @@
      if (row.tell.includes('[')) {
        this.$set(row, 'tellCopy', row.tell)
      }
      let arr = this.productList.filter(m=>m.state==1&&row.sectionCopy&&row.sectionCopy.includes(m.sectionCopy)&&m.ask&&m.sectionCopy.indexOf('[')==-1)
      if (row.bsm === '1' && row.sectionCopy !== '' && row.sectionCopy !== null && row.sectionCopy !== undefined && row.state === 1&&arr.length==0) {
      let arr = this.productList.filter(m => m.state == 1 && row.sectionCopy && row.sectionCopy.includes(m.sectionCopy) && m.ask && m.sectionCopy.indexOf('[') == -1)
      if (row.bsm === '1' && row.sectionCopy !== '' && row.sectionCopy !== null && row.sectionCopy !== undefined && row.state === 1 && arr.length == 0) {
        if (row.sectionCopy.indexOf('[') > -1) {
          row.bsmRow = this.HaveJson(row)
        }
        row.bsm1 = true
        this.bsm1DiaList.push(row)
        this.bsm1DiaAll = true
      } else if (row.bsm === '1' && row.sectionCopy !== '' && row.sectionCopy !== null && row.state === 0&&arr.length==0) {
      } else if (row.bsm === '1' && row.sectionCopy !== '' && row.sectionCopy !== null && row.state === 0 && arr.length == 0) {
        row.bsm1 = false
      }else if(arr.length>0){
        try{
      } else if (arr.length > 0) {
        try {
          row.bsmRow = this.HaveJson(row)
          let section = arr[0].section
          let arr0 = JSON.parse(row.section)
@@ -1733,7 +1709,7 @@
          row.section = section
          row.ask = arr1[index]
          row.tell = arr4[index]
        } catch(e) {}
        } catch (e) { }
      }
      this.sampleList.map(item => {
        if (this.sampleIds.indexOf(item.id) > -1) {
@@ -1753,7 +1729,7 @@
    handleAll(e) {
      if (e.length > 0) {
        this.productList.map(m => {
          if(e.find(a=>a.id == m.id)){
          if (e.find(a => a.id == m.id)) {
            m.state = 1
          }
          return m
@@ -1817,10 +1793,10 @@
        this.$refs.productTable.doLayout()
      })
    },
    changeProductList0(){
      this.productList0.forEach(a=>{
    changeProductList0() {
      this.productList0.forEach(a => {
        let obj = this.productList.find(m => m.id == a.id)
        if(obj){
        if (obj) {
          a.state = obj.state
          a.section = obj.section
          a.ask = obj.ask
@@ -1828,7 +1804,7 @@
          // a.price = obj.price
          a.tell = obj.tell
        }
        if(a.state == 0&&a.bsmRow){
        if (a.state == 0 && a.bsmRow) {
          a = this.HaveJson(a.bsmRow)
        }
      })
@@ -1837,7 +1813,7 @@
      const property = column['property'];
      return row[property] === value;
    },
    goBack () {
    goBack() {
      if (this.active == 1) {
        this.$router.go(-1)
      } else {
@@ -1858,6 +1834,7 @@
  justify-content: space-between;
  margin-bottom: 10px;
}
.tab {
  list-style-type: none;
  display: flex;
@@ -1887,4 +1864,7 @@
}
:deep(.warning-row) {
  color: #1890FF;
}
</style>