licp
2024-12-20 d975fc4756806f5b51f006c19c33571b9b8c0b3b
src/components/do/b1-ins-order/add.vue
@@ -134,9 +134,9 @@
  <div class="ins_order_add" style=" display: block; ">
    <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-col :span="8" style="padding-left: 20px;text-align: left;">委托单信息&nbsp;&nbsp;&nbsp;单位成本总价:<span
            style="color: #3A7BFA">¥{{total.toFixed(2)}}</span></el-col>
        <el-col :span="16" style="text-align: right;">
          <el-select v-model="template" size="medium" 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">
@@ -148,10 +148,7 @@
          <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"
@@ -185,18 +182,13 @@
            <div class="search_label"><span class="required-span">* </span>制单人:</div>
            <div class="search_input">
              <el-input size="small" clearable disabled v-model="addObj.custom"></el-input>
              <!-- <el-input readonly size="small" v-model="addObj.custom">
                <template slot="append"><el-button slot="append" icon="el-icon-search" @click="selectUserDia = true"
                    :disabled="active>1"></el-button></template>
              </el-input> -->
            </div>
          </el-col>
          <el-col class="search_thing" :span="6">
            <div class="search_label"><span class="required-span">* </span>委托单位:</div>
            <div class="search_input">
              <!-- <el-input size="small" placeholder="←选择委托客户" clearable disabled v-model="addObj.company"></el-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"
                <template slot="append"><el-button slot="append" icon="el-icon-search" @click="selectUserDia = true,createState=1"
                    :disabled="active>1"></el-button></template>
              </el-input>
            </div>
@@ -205,6 +197,14 @@
            <div class="search_label"><span class="required-span">* </span>联系方式:</div>
            <div class="search_input">
              <el-input size="small" placeholder="选择委托客户" clearable :readonly="active>1" v-model="addObj.phone"></el-input>
            </div>
          </el-col>
          <el-col class="search_thing" :span="6" v-if="addObj.orderType=='C'">
            <div class="search_label"><span class="required-span">* </span>下单至:</div>
            <div class="search_input">
              <el-select size="small" style="width: 100%;" clearable v-model="addObj.departmentLimsId" :disabled="active>1" placeholder="部门">
                <el-option v-for="(a, ai) in deaprtEnum" :key="ai" :value="a.id" :label="a.name"></el-option>
              </el-select>
            </div>
          </el-col>
          <el-col class="search_thing" :span="6">
@@ -216,7 +216,7 @@
            </div>
          </el-col>
          <el-col class="search_thing" :span="6">
            <div class="search_label"><span class="required-span">* </span>样品名称:</div>
            <div class="search_label"><span class="required-span">* </span>样品类型:</div>
            <div class="search_input">
              <el-input readonly size="small" v-model="addObj.sample">
                <template slot="append"><el-button slot="append" icon="el-icon-search" @click="selectStandardTree = true"
@@ -234,7 +234,7 @@
            <div class="search_label"><span class="required-span">* </span>样品数量:</div>
            <div class="search_input">
              <el-input-number size="small" v-model="addObj.sampleNum" :min="1" :max="100" :precision="0"
                style="width: 65%;" @change="addStandardTree" :disabled="active>1"></el-input-number>
                style="width: 100%;" @change="addStandardTree" :disabled="active>1"></el-input-number>
            </div>
          </el-col>
          <!-- <el-col class="search_thing" :span="6">
@@ -246,14 +246,29 @@
            </div>
          </el-col> -->
          <el-col class="search_thing" :span="6">
            <div class="search_label"><span class="required-span">* </span>来样方式:</div>
            <div class="search_label"><span class="required-span">* </span>订单类型:</div>
            <div class="search_input">
              <el-select v-model="addObj.formType" size="small" :disabled="active>1" style="width: 100%;">
                <el-option v-for="(a,ai) in formType" :key="ai" :label="a.label" :value="a.value"></el-option>
              </el-select>
            </div>
          </el-col>
          <el-col class="search_thing" :span="6">
          <el-col class="search_thing" :span="6" v-if="addObj.formType==='其他成品'">
            <div class="search_label">零件号:</div>
            <div class="search_input">
              <el-input size="small" :placeholder="active>1 ? '' : '请输入'" clearable v-model="addObj.partNo"
                        :readonly="active>1"></el-input>
            </div>
          </el-col>
          <el-col class="search_thing" :span="6" v-if="addObj.formType!='其他成品'&&addObj.formType">
            <div class="search_label"><span class="required-span">* </span>通知至样机员:</div>
            <div class="search_input">
              <el-select v-model="addObj.issueUser" size="small" :disabled="active>1" style="width: 100%;">
                <el-option v-for="(a,ai) in personList" :key="ai" :label="a.label" :value="a.value"></el-option>
              </el-select>
            </div>
          </el-col>
          <!-- <el-col class="search_thing" :span="6">
            <div class="search_label">报告发送方式:</div>
            <div class="search_input">
              <el-radio-group v-model="addObj.send">
@@ -261,8 +276,8 @@
                <el-radio :label="0">其他</el-radio>
              </el-radio-group>
            </div>
          </el-col>
          <el-col class="search_thing" :span="6">
          </el-col> -->
          <!-- <el-col class="search_thing" :span="6">
            <div class="search_label">样品处理方式:</div>
            <div class="search_input">
              <el-radio-group v-model="addObj.processing">
@@ -270,7 +285,7 @@
                <el-radio :label="1">实验室处理</el-radio>
              </el-radio-group>
            </div>
          </el-col>
          </el-col> -->
          <el-col class="search_thing" :span="6">
            <div class="search_label">工程名称:</div>
            <div class="search_input">
@@ -288,8 +303,12 @@
          <el-col class="search_thing" :span="6">
            <div class="search_label"><span class="required-span">* </span>生产单位:</div>
            <div class="search_input">
              <el-input size="small" placeholder="请输入" clearable v-model="addObj.production"
                :readonly="active>1"></el-input>
              <!-- <el-input size="small" placeholder="请输入" clearable v-model="addObj.production"
                :readonly="active>1"></el-input> -->
              <el-input size="small" v-model="addObj.production" placeholder="选择生产单位" :readonly="active>1">
                <template slot="append"><el-button slot="append" icon="el-icon-search" @click="selectUserDia = true,createState=2"
                    :disabled="active>1"></el-button></template>
              </el-input>
            </div>
          </el-col>
          <el-col class="search_thing" :span="6">
@@ -299,7 +318,7 @@
                :readonly="active>1"></el-input>
            </div>
          </el-col>
          <el-col class="search_thing" :span="6">
          <!-- <el-col class="search_thing" :span="6">
            <div class="search_label">是否留样:</div>
            <div class="search_input">
              <el-radio-group v-model="addObj.isLeave">
@@ -307,26 +326,69 @@
                <el-radio :label="1">留样</el-radio>
              </el-radio-group>
            </div>
          </el-col>
          </el-col> -->
          <el-col class="search_thing" :span="6">
            <div class="search_label" style="width: 175px;">是否涉及配套样品:</div>
            <div class="search_input" style="width: calc(100% - 175px);">
              <el-radio-group v-model="addObj.mating" @change="$refs.sampleTable.doLayout()">
              <el-radio-group v-model="addObj.mating" @change="$refs.sampleTable.doLayout()" :disabled="active>1">
                <el-radio :label="1">是</el-radio>
                <el-radio :label="0">否</el-radio>
              </el-radio-group>
            </div>
          </el-col>
          <el-col class="search_thing" :span="6">
          <!-- <el-col class="search_thing" :span="6">
            <div class="search_label">OTC订单号:</div>
            <div class="search_input">
              <el-input size="small" :placeholder="active>1 ? '' : '请输入'" clearable v-model="addObj.otcCode" :readonly="active>1"></el-input>
            </div>
          </el-col>
          </el-col> -->
          <el-col class="search_thing" :span="6">
            <div class="search_label">委托人:</div>
            <div class="search_input">
              <el-input size="small" :placeholder="active>1 ? '' : '请输入'" clearable v-model="addObj.prepareUser" :readonly="active>1"></el-input>
            </div>
          </el-col>
          <el-col class="search_thing" :span="6">
            <div class="search_label"><span class="required-span">* </span>约定时间:</div>
            <div class="search_input">
              <el-date-picker
                v-model="addObj.appointed"
                :disabled="active>1"
                type="date"
                placeholder="选择日期"
                size="small" format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 100%;">
              </el-date-picker>
            </div>
          </el-col>
          <el-col class="search_thing" :span="6" v-if="addObj.formType!='其他成品'&&addObj.formType">
            <div class="search_label"><span class="required-span">* </span>样机完成时间:</div>
            <div class="search_input">
              <el-date-picker
                v-model="addObj.issueTime"
                :disabled="active>1"
                type="date"
                placeholder="选择日期"
                size="small" format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 100%;">
              </el-date-picker>
            </div>
          </el-col>
          <el-col class="search_thing upload" :span="4" style="align-items: flex-start;height: auto" v-if="active==1">
            <el-upload
            style="margin: 8px 0 0px 50px;"
              action="#"
              :auto-upload="false"
              accept='.jpg,.jpeg,.png,.gif,.docx,.xls,.xlsx,.pdf,.zip,.rar,.csv' :on-change="handleChangeUpload">
              <el-button size="small" type="primary">上传附件</el-button>
            </el-upload>
          </el-col>
          <el-col class="search_thing" :span="8">
            <div class="search_input" style="width: 100%;margin-left: 40px;">
              <el-radio-group v-model="ruleInfo.rule" @change="$refs.sampleTable.doLayout()" :disabled="active>1">
                <el-radio :label="1">不考虑不确定度</el-radio>
                <el-radio :label="2">考虑不确定度<el-input placeholder="" v-model="ruleInfo.num" style="width: 100px;margin-left: 10px;" size="mini" :disabled="active>1">
                <template slot="append">%</template>
              </el-input></el-radio>
              </el-radio-group>
            </div>
          </el-col>
          <el-col class="search_thing" :span="6" style="align-items: flex-start;margin: 8px 0;">
@@ -347,11 +409,33 @@
      <div style="height: auto;">
        <div class="search" v-if="active==1" style="display: flex;background: transparent;">
          <div class="search_thing">
            <div class="search_label">样品型号:</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-input size="small" v-model="allInfo.sample" @change="changeModel('sample')"></el-input>
            </div>
          </div>
          <div class="search_thing">
            <div class="search_label">样品类别:</div>
            <div class="search_input">
              <el-select v-model="allInfo.model" :placeholder="active>1 ? '' : '请输入'" filterable allow-create default-first-option size="small"
                @change="changeModel('model')">
                <el-option v-for="item in models" :key="item.value" :label="item.label" :value="item.value">
                </el-option>
              </el-select>
            </div>
          </div>
          <div class="search_thing">
            <div class="search_label">产品型号:</div>
            <div class="search_input">
              <el-input size="small" v-model="allInfo.modelNum" @change="changeModel('modelNum')"></el-input>
            </div>
          </div>
          <div class="search_thing">
            <div class="search_label">试验标准:</div>
            <div class="search_input">
              <el-select v-model="allInfo.testRequirements" :placeholder="active>1 ? '' : '请输入'" filterable allow-create default-first-option size="small"
                @change="changeModel('testRequirements')">
                <el-option v-for="item in standard" :key="item.value" :label="item.label" :value="item.value">
                </el-option>
              </el-select>
            </div>
@@ -359,50 +443,63 @@
          <div class="search_thing">
            <div class="search_label">检验标准:</div>
            <div class="search_input">
              <el-select v-model="standardMethodListId" :placeholder="active>1 ? '' : '请输入'" size="small" @focus="methodFocus"
                :loading="methodLoad" @change="changeStandardMethodListId">
              <el-select v-model="standardMethodListId" :placeholder="active>1 ? '' : '请输选择'" size="small" @focus="methodFocus"
                :loading="methodLoad" multiple @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-radio-group v-model="currentPage" v-if="active>1" size="small" style="margin-top: 20px;">
          <el-radio-button :label="0">样品</el-radio-button>
          <el-radio-button :label="1">附件</el-radio-button>
        </el-radio-group>
        <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;">
          border @selection-change="selectSample" highlight-current-row @row-click="rowClick" style="margin-top: 10px;" v-show="currentPage==0">
          <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>
              <el-input size="small" v-model="scope.row.sample" clearable :readonly="active>1" placeholder="必填"></el-input>
            </template>
          </el-table-column>
          <el-table-column prop="sampleCode" label="样品编号" min-width="140" align="center">
          <el-table-column prop="sampleCode" label="样品编号" min-width="100" 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">
          <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="样品型号"
              <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)">
          <el-table-column prop="modelNum" label="产品型号" min-width="100" align="center" v-if="!(active>1)">
            <template slot-scope="scope">
              <el-input size="small" v-model="scope.row.modelNum" clearable placeholder="非必填"
              <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="testRequirements" label="试验标准" align="center" min-width="100">
            <template slot-scope="scope">
              <el-select v-model="scope.row.testRequirements" :disabled="scope.row.model==null||active>1"
                placeholder="试验标准" size="small" :readonly="active>1" style="width: 100%;" clearable @change="changeModel0(scope.row)">
                <el-option v-for="item in standard" :key="item.id" :label="item.label" :value="item.value">
                </el-option>
              </el-select>
            </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="检验标准" size="small" :loading="methodLoad" @change="(value)=>methodChange(value, scope.row)"
                @focus="methodFocus" :readonly="active>1" style="width: 100%;" clearable @clear="productList = []">
                @focus="methodFocus" :readonly="active>1" style="width: 100%;" clearable @clear="productList = []" multiple>
                <el-option v-for="item in methods" :key="item.id" :label="item.code" :value="item.id">
                </el-option>
              </el-select>
@@ -430,7 +527,7 @@
        </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="getProductLoad" @select-all="handleAll">
          :row-class-name="tableRowClassName" v-loading="getProductLoad" @select-all="handleAll" v-show="currentPage==0">
          <el-table-column type="selection" width="65" :selectable="selectable" v-if="active==1"></el-table-column>
          <el-table-column prop="inspectionItemClass" v-if="PROJECT === '装备电缆'" label="检验项分类" min-width="140" show-overflow-tooltip></el-table-column>
          <el-table-column prop="inspectionItemClassEn" v-if="PROJECT === '装备电缆'" label="检验项分类(EN)" min-width="140" show-overflow-tooltip></el-table-column>
@@ -465,17 +562,17 @@
            <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>
                v-if="active==1" :disabled="!!scope.row.tell&&scope.row.tell.includes('[')&&scope.row.tell.includes(']')&&scope.row.tell.includes(',')"></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">
          <el-table-column prop="ask" label="要求值" min-width="220px" >
            <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>
                v-if="active==1&&scope.row.inspectionValueType!='5'" :disabled="!!scope.row.ask&&scope.row.ask.includes('[')&&scope.row.ask.includes(']')&&scope.row.ask.includes(',')"></el-input>
              <span v-else>
                <!-- <template v-if="(scope.row.ask.indexOf('D')>-1
                ||scope.row.ask.indexOf('W')>-1
@@ -512,6 +609,9 @@
          <el-table-column prop="sonLaboratory" label="子实验室" min-width="130" show-overflow-tooltip :filters="filters"
            :filter-method="filterHandler"></el-table-column>
        </el-table>
        <ValueTable class="value-table" ref="fileList" :url="$api.insOrderPlan.getFileList"
        :componentData="componentData0"
        :delUrl="$api.insOrderPlan.delfile" style="height: 100%;margin-top: 16px;" v-show="currentPage==1"/>
      </div>
    </div>
    <el-dialog title="选择单位" :visible.sync="selectUserDia" width="70%">
@@ -523,7 +623,7 @@
        <el-button type="primary" @click="selectUser">确 定</el-button>
      </span>
    </el-dialog>
    <el-dialog title="选择样品" :visible.sync="selectStandardTree" width="400px">
    <el-dialog title="选择样品" :visible.sync="selectStandardTree" width="500px">
      <div class="body" style="height: 60vh;overflow-y: auto;user-select: none;" v-if="selectStandardTree">
        <el-row>
          <el-col :span="24">
@@ -620,7 +720,8 @@
        </el-row>
      </span>
    </el-dialog>
    <fiberOpticConfig :currentId="currentId" @saveFiberopticConfig="getTotal()" v-if="configShow" :active="active" />
    <fiberOpticConfig :currentId="currentId" @saveFiberopticConfig="getTotal()" v-if="configShow && examine==0" :active="active" :inspectionItemST='inspectionItemST' />
    <fiberOpticConfigTwo :currentId="currentId"  v-if="configShow && examine==1" :active="active" />
    <equipConfig :currentId="currentId" v-if="equipConfigShow" :active="active" />
    <cableConfig v-if="cableConfigShow" :active="active" />
<!--    单选特殊值处理框-->
@@ -759,7 +860,7 @@
               width="800px" :show-close="false">
      <el-table
      :data="editTable"
      style="width: 100%">
      style="width: 100%" height="80vh">
      <!-- inspectionItemList -->
      <el-table-column
          prop="inspectionItemList"
@@ -881,6 +982,15 @@
        <el-button type="primary" @click="spliceData">保存</el-button>
      </span>
    </el-dialog>
    <el-dialog title="单根垂直燃烧检测次数填写" :visible.sync="singleVerticalCombustionShow" width="900px"
               :close-on-click-modal="false" :close-on-press-escape="false"
               :before-close="beforeCirculateShowClose" :show-close="false">
      <div>111</div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="cleanSpliceData">取消</el-button>
        <el-button type="primary" @click="spliceData">保存</el-button>
      </span>
    </el-dialog>
    <!-- 电力试验室---温升试验/热循环 -->
    <el-dialog :title="temperatureTitle" :visible.sync="temperatureShow"
               :close-on-click-modal="false" :close-on-press-escape="false"
@@ -900,25 +1010,83 @@
        <el-button type="primary" @click="spliceTemperatureTest">保存</el-button>
      </span>
    </el-dialog>
    <!-- 功率容量--填写端口 -->
    <el-dialog title="填写端口" :visible.sync="powerShow"
      :close-on-click-modal="false" :close-on-press-escape="false"
      width="50%">
      <el-table
        :data="powerTable"
        border
        style="width: 100%">
        <el-table-column
          fixed
          prop="sample"
          label="样品"
          min-width="150">
        </el-table-column>
        <el-table-column
          prop="model"
          label="型号"
          min-width="120">
        </el-table-column>
        <el-table-column
          prop="inspectionItem"
          label="检验项"
          min-width="120">
        </el-table-column>
        <el-table-column
          prop="ask"
          label="端口"
          min-width="120">
          <template slot-scope="scope">
            <el-input-number v-model="scope.row.ask" :min="1" :max="100" label="端口" size="small"></el-input-number>
          </template>
        </el-table-column>
      </el-table>
      <span slot="footer" class="dialog-footer">
        <el-button @click="powerShow=false">取消</el-button>
        <el-button type="primary" @click="savePowerTest">保存</el-button>
      </span>
    </el-dialog>
    <el-dialog
      title="文件预览"
      :visible.sync="lookFileVisible"
      width="60%" fullscreen>
      <filePreview v-if="lookFileVisible" :fileUrl="currentFile.url"
      :currentFile="currentFile" style="max-height: 87vh;overflow-y: auto;"/>
    </el-dialog>
    <p style="font-size: 12px;color: red;margin-top: 20px;margin-bottom: 20px;">双方承诺:<br/>
      1、委托方承诺提供的信息与样品的真实性;<br/>
      2、委托送样检验结果仅适用于收到的样品;<br/>
      3、试验过程导致的样品损坏、配件损坏、损耗,本测试场不承担赔偿责任;<br/>
      4、实验室承诺公正开展检测活动,并承诺保守在检测活动过程中所获知的保密信息。
      </p>
  </div>
</template>
<script>
import ValueTable from '../../tool/value-table.vue'
import fiberOpticConfig from './fiberoptic-config.vue'
import fiberOpticConfigTwo from './fiberoptic-config-two.vue'
import equipConfig from './equip-config.vue'
import cableConfig from './cable-config.vue'
import Vue from 'vue'
import {iuCharts} from "../../../util/echarts";
import filePreview from '../../tool/file-preview.vue'
export default {
    components: {
      ValueTable,
      fiberOpticConfig,
      fiberOpticConfigTwo,
      equipConfig,
      cableConfig
      cableConfig,
      filePreview
    },
    props: {
      examine: {
        type: Number,
        default: () => 0
      },
      active: {
        type: Number,
        default: () => 0
@@ -930,6 +1098,9 @@
    },
    data() {
      return {
        currentFile:{},
        lookFileVisible:false,
        inspectionItemST: null,
        sampleSelectionList: [],//样品表格选中数据
        editTable:[],
        template: null,
@@ -942,6 +1113,7 @@
          type: '0',
          code: null,
          appointed: null,
          issueTime:null,
          remark: null,
          otcCode: null,
          mating: 0,
@@ -964,7 +1136,10 @@
          production: null,
          productionEn: null,
          companyId: null,
          prepareUser:null
          prepareUser:null,
          departmentLimsId:null,
          departmentLims:null,
          partNo: null, // 零件号
        },
        sample: {
          sampleCode: null,
@@ -1067,7 +1242,7 @@
        RTS: '',
        totalArr: [],
        model: null,
        standardMethodListId: null,
        standardMethodListId: [],
        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,
@@ -1079,6 +1254,7 @@
          entrustNum: '',
          entrustPoint: ''
        },
        singleVerticalCombustionShow: false,
        isBsm2Val2:false,
        opticalProject: [], // 温度循环弹框光纤项目列表
        opticalProjectList: [], // 温度循环弹框光纤项目选中的数组
@@ -1100,6 +1276,67 @@
        temId: '',
        sonLaboratoryList:[],
        selectiveEcho: [], // 检验下单的时候勾选检验项目,如果使用筛选提交显示检验项目为空 回显列表
        deaprtEnum:[],
        standard:[],
        createState:1,//1:选择委托单位,2:选择生产单位
        fileList:[],
        currentPage:0,//0:样品信息,1:附件
        componentData0: {
          entity: {
            insOrderId:''
          },
          isIndex: true,
          showSelect: false,
          select: false,
          sort: false,
          init:false,
          do: [
          {
                  id: 'handleDown',
                  font: '下载',
                  type: 'text',
                  method: 'handleDown'
               },
          {
                  id: '1',
                  font: '预览',
                  type: 'text',
                  method: 'lookFile',
               }
          ],
          isPage: false,
          linkEvent: {},
          tagField: {
            type:{
              select:[
                {
                  value: 1,
                  label: '图片'
                },
                {
                  value: 2,
                  label: '文件'
                }
              ]
            }
          },
          currentId: '',
          selectField: {},
          requiredAdd: [],
          requiredUp: []
        },
        ruleInfo:{
          rule:1,
          num:null,
        },
        powerShow:false,
        powerTable:[],
        allInfo:{
          model:null,
          sample:null,
          modelNum:null,
          testRequirements:null,
        }
      }
    },
    watch: {
@@ -1124,6 +1361,25 @@
          }
        }
      },
      productListSelected: {
        deep: true,
        handler(val) {
          if(val.length>0){
            for(let i =0 ; i< val.length; i++){
              if(val[i].inspectionItem.includes('松套管')){
                this.inspectionItemST = 1
                break;
              }else{
                this.inspectionItemST = 0
              }
            }
          }else{
            this.inspectionItemST = 0
          }
          console.log('0000',this.inspectionItemST);
        }
      },
      sampleList: {
        deep: true,
        handler(val) {
@@ -1131,12 +1387,21 @@
        }
      },
      'addObj.sample'(val) {
        this.model = null
        this.standardMethodListId = null
        this.allInfo.model = null
        this.allInfo.sample = null
        this.allInfo.modelNum = null
        this.allInfo.testRequirements = null
        this.standardMethodListId = []
      },
      'addObj.sampleNum'(val) {
        this.model = null
        this.standardMethodListId = null
        this.allInfo.model = null
        this.allInfo.sample = null
        this.allInfo.modelNum = null
        this.allInfo.testRequirements = null
        this.standardMethodListId = []
      },
      active(val){
        this.saveLoad = false
      }
    },
    mounted() {
@@ -1146,8 +1411,10 @@
      // this.selectInsOrderTemplate()
      this.getAuthorizedPerson();
      this.selectEnumByCategoryForUnit()
      this.selectEnumByCategoryForStandard()
      this.selectStandardMethods()
      this.selectEnumByCategoryForOrderType()
      this.selectDepartmentEnum()
      // this.selectEnumByCategoryForSonLaboratory()
      this.selectEnumByCategoryForSampleForm()
      if (this.active != 1) {
@@ -1159,8 +1426,19 @@
          this.addObj = {
            ...res.data.insOrder
          };
          if(this.addObj.rule){
            if(this.addObj.rule=='不考虑不确定度'){
              this.ruleInfo.rule = 1
            }else{
              this.ruleInfo.rule = 2
              this.ruleInfo.num = this.addObj.rule.split('-')[1]
            }
          }
          this.addObj.type = String(this.addObj.type)
          this.sampleList = this.HaveJson(res.data.sampleProduct);
          this.sampleList = this.HaveJson(res.data.sampleProduct)
          this.sampleList.forEach(m=>{
            m.standardMethodListId = JSON.parse(m.standardMethodListId)
          });
          this.getProNum()
          this.addObj.sampleNum = this.sampleList.length
          this.$nextTick(() => {
@@ -1171,19 +1449,54 @@
            }
          })
        })
        // 文件信息
        this.componentData0.entity.insOrderId = this.currentId;
        this.$refs.fileList.selectList()
      }
    },
    methods: {
      lookFile(row){
        this.currentFile = row;
        if(row.type==1){
          this.currentFile.url = this.javaApi+'/img/'+row.fileUrl
        }else{
          this.currentFile.url = this.javaApi+'/word/'+row.fileUrl
        }
        this.lookFileVisible = true
      },
      handleDown(row){
        this.$axios.post(this.$api.insOrderPlan.downFile, {
          id: row.id,
        }).then(res => {
          if (res.code === 200) {
            let url = '';
            if(res.data.type==1){
              url = this.javaApi+'/img/'+res.data.fileUrl
              file.downloadIamge(url,row.fileName)
            }else{
              url = this.javaApi+'/word/'+res.data.fileUrl
              const link = document.createElement('a');
              link.href = url;
              link.download = row.fileName;
              link.click();
            }
          }
        }).catch(error => {
        })
      },
      handleChangeUpload(file, fileLists){
        this.fileList = fileLists
      },
      //特殊值填写处理
      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){
            if(element.model==row.model&&row.symbolItem==element.symbolItem){
              this.editTable[i].value = row.value
            }else{
              break;
            }
          }
        }
@@ -1258,7 +1571,13 @@
        })
        this.circulateShow = false
        this.changeProductList0()
        this.currentMethod.insProduct = this.productList0
        if(this.sampleSelectionList.length>0){
          this.sampleSelectionList.forEach(item=>{
            item.insProduct = this.productList0
          })
        }else{
          this.currentMethod.insProduct = this.productList0
        }
        this.getProNum()
      },
      spliceTemperatureTest () {
@@ -1309,6 +1628,24 @@
          return
        }
        this.spliceTemperatureTest()
      },
      savePowerTest(){
        if(!this.powerTable.every(m=>m.ask))
        {
          this.$message.error('请填写完整数据')
        }
        let num = 0;
        let sampleList = this.HaveJson(this.sampleList)
        sampleList.forEach(item=>{
          item.insProduct.forEach(m=>{
            if(m.inspectionItem.includes('功率试验')&&m.state==1){
              m.ask = '端口数:'+this.powerTable[num].ask
              num++
            }
          })
        })
        this.saveMethod(sampleList)
        this.powerShow = false;
      },
      cleanTemperatureTest () {
        this.temperatureTest = []
@@ -1480,14 +1817,23 @@
          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()
        if(this.createState==1){
          this.addObj.company = selects.company
          this.addObj.code = selects.code
          this.addObj.companyId = selects.id
          if(this.active==1){
            this.selectInsOrderTemplate()
          }
        }else if(this.createState==2){
          this.addObj.production = selects.company
          // 如果选择的单位是没有对应的英文名称就用'/'代替
          if (!selects.companyEn) {
            this.addObj.productionEn = '/'
          } else {
            this.addObj.productionEn = selects.companyEn
          }
        }
        this.selectUserDia = false
      },
      containsValue(str) {
        if(str){
@@ -1542,94 +1888,115 @@
        return str.replace(find, value);
      },
      save() {
        if(this.addObj.orderType=='C'&&this.addObj.departmentLimsId){
          this.addObj.departmentLims = this.deaprtEnum.find(m=>m.id==this.addObj.departmentLimsId).name
        }else if(this.addObj.orderType&&this.addObj.orderType!='C'&&!this.addObj.departmentLimsId){
          this.addObj.departmentLims = '检测中心'
          this.addObj.departmentLimsId = this.deaprtEnum.find(m=>m.name=='检测中心').id
        }
        // else{
        //   this.$message.error('请选择检验类别')
        //   return
        // }
        if (!this.addObj.companyId) {
          this.$message.error('未选择客户单位')
          return
        }
        let noLaboratory = this.totalArr.filter(a => a.state == 1&&!a.sonLaboratory)
        if(noLaboratory.length>0){
          let str = ''
          noLaboratory.forEach((m,j)=>{
            str += j==noLaboratory.length-1?m.inspectionItem+'-'+m.inspectionItemSubclass:m.inspectionItem+'-'+m.inspectionItemSubclass+','
          })
          this.$message.error(str+'没有关联实验室室,请联系管理员')
          return
        }
        if (!this.addObj.type) {
          this.$message.error('未选择紧急程度')
        } else if (!this.addObj.formType) {
          this.$message.error('请输入来样方式')
          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.addObj.departmentLimsId) {
          this.$message.error('选择下单到哪个部门')
        } 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)) {
        }else if (!this.addObj.appointed) {
          this.$message.error('请选择约定时间')
        }else if (!this.sampleList.every(m => m.standardMethodListId&&m.standardMethodListId.length>0)) {
          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
            }
          })
          //过滤检测项:去除特殊项
          let filterProductList = this.productListSelected.filter(ele=>ele.bsm==0&&/[0-9]/.test(ele.ask)).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
          })
        } else if(this.addObj.formType&&this.addObj.formType!='其他成品'&&!this.addObj.issueUser){
          this.$message.error('请选择通知至样机员')
        }else if(this.addObj.formType&&this.addObj.formType!='其他成品'&&!this.addObj.issueTime){
          this.$message.error('请选择样机完成时间')
        }else{
          //校验检验项的要求值和要求描述,仅委托要求
          if(this.active==1&&this.isAskOnlyRead){
            const isTrue = this.checkRequiredValueAndRemark(filterProductList)
            if(!isTrue){
              this.$message.error('检验项的要求值与要求描述不匹配, 请检查')
              return
          // if(this.active==1&&this.isAskOnlyRead){
          //   const isTrue = this.checkRequiredValueAndRemark(filterProductList)
          //   if(!isTrue){
          //     this.$message.error('检验项的要求值与要求描述不匹配, 请检查')
          //     return
          //   }
          // }
          let sampleList = this.HaveJson(this.sampleList)
          for (let i = 0; i < sampleList.length; i++) {
            if (sampleList[i].insProduct.length > 0) {
              let set = new Set()
              for (let j = 0; j < sampleList[i].insProduct.length; j++) {
                if(sampleList[i].insProduct[j].state == 1){
                  let num0 = set.size
                  set.add(sampleList[i].insProduct[j].inspectionItem+'-'+sampleList[i].insProduct[j].inspectionItemSubclass)
                  let num1 = set.size
                  if(num0==num1){
                    this.$message.error(sampleList[i].insProduct[j].inspectionItem+'-'+sampleList[i].insProduct[j].inspectionItemSubclass+'重复')
                    return
                  }
                }
              }
            }
          }
          console.log('isHaveBushing===', this.totalArr)
          // inspectionItem
          let spcialItem = null//this.totalArr.find(a => a.state == 1 && a.inspectionItem.includes('松套管'))
          // console.log('isHaveBushing===', isHaveBushing)
          if (productListSelected && select[2] === '光缆' && isHaveBushing === false) {
            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&& isHaveBushing === false){
            this.$message.error('松套管项目必须进行光纤配置')
            this.$refs.sampleTable.setCurrentRow(this.currentMethod, true)
            this.rowClick(this.currentMethod)
            this.sampleIds = [this.currentMethod.id]
            this.openConfig()
            return
          }
          let sampleList = this.HaveJson(this.sampleList)
          let index0 = sampleList.findIndex(m=>!m.sample)
          if(index0>-1) return this.$message.error('请填写样品名称')
          let index1 = sampleList.findIndex(m=>!m.modelNum)
          if(index1>-1) return this.$message.error('请填写产品型号')
          let projectNum = this.totalArr.filter(a => a.state == 1).length
          if(projectNum==0){
            this.$confirm('检验项目为空,是否确认提交?', "提示", {
              confirmButtonText: "确定",
              cancelButtonText: "取消",
              type: "warning"
            }).then(() => {
              this.saveMethod(sampleList)
            }).catch(() => {})
            // this.$confirm('检验项目为空,是否确认提交?', "提示", {
            //   confirmButtonText: "确定",
            //   cancelButtonText: "取消",
            //   type: "warning"
            // }).then(() => {
            //   this.saveMethod(sampleList)
            // }).catch(() => {})
            return this.$message.error('请添加检验项目')
          }else{
            let isRTS = this.totalArr.find(a => a.ask != null && this.symbolList.find(b=>a.ask.includes(b)) && a.state == 1)
            let isRTS = this.totalArr.find(a => a.ask != null && this.symbolList.find(b=>a.ask&&a.ask.includes(b)) && a.state == 1)
            if (isRTS&&this.PROJECT=='检测中心') {
              this.editTable = this.handleData(sampleList,this.containsValue, 0)
              this.editTable.forEach(item => {
                item.value = item.modelNum
              })
              this.bsm3Dia = true;
              return
            }
            let isPower = this.totalArr.find(a => a.inspectionItem.includes('功率试验')&&a.state==1)
            if (isPower) {
              this.powerTable = this.totalArr.filter(a => a.inspectionItem.includes('功率试验')&&a.state==1)
              this.powerTable.forEach(a => {
                a.ask = null
              })
              this.powerShow = true;
              return
            }
            this.saveMethod(sampleList)
@@ -1649,6 +2016,7 @@
            if(['≤','≥','>','<','='].includes(ele.ask[0])){
              const askVal = ele.ask.substring(1,ele.ask.length)
              if(isNaN(askVal) || ele.tell.indexOf(askVal)<0){
                console.log(1111);
                isTrue = false
              }
            }
@@ -1656,8 +2024,10 @@
            if(ele.ask.indexOf('-')>0 && ele.ask.length>1){
              //要求描述的~和要求值的-,等效
              let tell = ele.tell
              if(ele.tell.indexOf('~')>0){
                tell = ele.tell.replace('~','-')
              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('-')
              //满足格式要求,并且两个都是数字
@@ -1676,32 +2046,61 @@
                  isTrue = false
                 }
                //要求描述中不包含±以及区间的数字,则返回false
                if((tell.indexOf('±')<0&&tell.indexOf('-')<0)){
                if(tell.indexOf('±')<0&&tell.indexOf('-')<0){
                  console.log(3333,ele);
                  console.log(3333333,tell,tell.indexOf('±')<0,tell.indexOf('-')<0);
                  isTrue = false
                }else if(ele.tell.indexOf('-')==0){
                  console.log(4444);
                  isTrue = false
                }else if(tell.indexOf('-')>0){
                  const splitTells = tell.split('-')
                  if(splitTells[0].indexOf(min)<0 || splitTells[1].indexOf(max)<0){
                    isTrue = false
                  }
                }else if(tell.indexOf('±')>0&&tell!=ele.ask){
                  //校验要求描述为10±5这种写法的情况
                  let splitNums = ele.tell.split('±')
                  if(splitNums.length<2){
                    isTrue = false
                  if(tell.indexOf('±')>0){
                    ////校验要求描述为(10-15)±5这种写法的情况
                    const num = tell.split('±')[1]
                    const startIndex = tell.indexOf('(')
                    const endIndex = tell.indexOf(')')
                    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(555555);
                          isTrue = false
                        }
                      }
                    }else{
                      //校验要求描述为10±5这种写法的情况
                      let splitNums = ele.tell.split('±')
                      if(splitNums.length<2){
                        console.log(66666);
                        isTrue = false
                      }else{
                        let minTell = Number(splitNums[0])-Number(splitNums[1])
                        let maxTell = Number(splitNums[0])+Number(splitNums[1])
                        if(minTell!=min || maxTell!=max){
                          console.log(7777777);
                          isTrue = false
                        }
                      }
                    }
                  }else{
                    let minTell = Number(splitNums[0])-Number(splitNums[1])
                    let maxTell = Number(splitNums[0])+Number(splitNums[1])
                    if(minTell!=min || maxTell!=max){
                    const splitTells = tell.split('-')
                    if(splitTells[0].indexOf(min)<0 || splitTells[1].indexOf(max)<0){
                      console.log(88888888);
                      isTrue = false
                    }
                  }
                }
              }else{
                console.log(89999999);
                isTrue = false
              }
            }
            // else if(ele.ask.indexOf('&')>0 && ele.ask.length>1){
            //   //判断
            // }
          })
        }catch(error){
          console.log(error);
@@ -1740,7 +2139,7 @@
                  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)){
                      if(a.ask&&a.ask.includes(arr[i].symbolItem)){
                        let ask = calBack(a.ask, arr[i].symbolItem,arr[i].value)
                        if (ask) {
                          a.ask = ask
@@ -1751,7 +2150,7 @@
                        }
                      }
                    }else{
                      this.$message.error('要求值为空,需要去标准库维护!')
                      // this.$message.error('要求值为空,需要去标准库维护!')
                    }
                  }
                  // arr.forEach(f => {
@@ -1923,9 +2322,51 @@
        }
      },
      saveMethod(sampleList){
        let isHaveAsk = this.totalArr.filter(a => (a.ask === null||a.ask=='')&&a.state==1)
        let isHaveAsk0 = this.totalArr.filter(a => (a.ask=='/'||a.ask=='-'||a.ask=='——'||((/\d/.test(a.ask))&&(a.ask.includes('<')||a.ask.includes('>')||a.ask.includes('=')||a.ask.includes('>')||a.ask.includes('<')||a.ask.includes('≥')||a.ask.includes('≤'))))&&a.state==1)
        let stateArr = this.totalArr.filter(a=>a.state==1)
        if (isHaveAsk.length > 0) {
          this.$message({
            type: 'error',
            message: '请填写要求值后再提交'
          })
          return false;
        }
        if (isHaveAsk0.length <stateArr.length) {
          this.$message({
            type: 'error',
            message: '要求值输入格式不对,可输入/、-、——代表不判定,<、=、>、≥、≤加上数字代表范围,请重新输入',
            duration: 8 * 1000
          })
          return false;
        }
        let isHaveTell = this.totalArr.filter(a => (a.tell == null||a.tell=='')&&a.state==1)
        if (isHaveTell.length > 0) {
          this.$message({
            type: 'error',
            message: '请填写要求描述后再提交'
          })
          return false;
        }
        if(this.ruleInfo.rule==1){
          this.addObj.rule = '不考虑不确定度'
        }else if(this.ruleInfo.rule==2){
          if(this.ruleInfo.rule==2&&(!this.ruleInfo.num||this.ruleInfo.num<0||this.ruleInfo.num==0)){
            this.$message({
              type: 'error',
              message: '请输入不确定度'
            })
            return;
          }
          this.addObj.rule = '考虑不确定度'+'-'+this.ruleInfo.num
        }
        this.saveLoad = true
        this.$axios.post(this.$api.insOrder.addInsOrder, {
          str: JSON.stringify({
        let fd = new FormData();
        this.fileList.forEach((item,index)=>{
            //文件信息中raw才是真的文件
            fd.append("files",item.raw);
        })
        fd.append("str",JSON.stringify({
            insOrder: this.addObj,
            list: JSON.stringify(sampleList.map(a => {
              if (this.PROJECT === '装备电缆') {
@@ -1948,7 +2389,12 @@
              return a
            })),
            pairing: JSON.stringify(this.bsm2Val2)
          })
          }));
        this.$axios.post(this.$api.insOrder.addInsOrder, fd,{
          headers: {
            'Content-Type': 'multipart/form-data'
          },
          noQs:true
        }).then(res => {
          this.saveLoad = false
          if (res.code == 201) return
@@ -1997,7 +2443,10 @@
              this.distributeData.appointed = ress.data
            })
            setTimeout(() => {
              this.issuedDialogVisible = true;
              // this.issuedDialogVisible = true;
              // this.$message.success('提交成功')
              this.upLoad = false
              this.$parent.playOrder(0)
            }, 1000)
          })
        } else {
@@ -2057,9 +2506,15 @@
        })
      },
      getProNum() {
        this.sampleSelectionList.forEach((m, i) => {
          Vue.set(this.sampleSelectionList[i], 'proNum', m.insProduct.filter(a => a.state == 1).length)
        })
        if (this.active != 1) {
          this.sampleList.forEach((m, i) => {
            Vue.set(this.sampleList[i], 'proNum', m.insProduct.filter(a => a.state == 1).length)
          })
        }else{
          this.sampleSelectionList.forEach((m, i) => {
            Vue.set(this.sampleSelectionList[i], 'proNum', m.insProduct.filter(a => a.state == 1).length)
          })
        }
        this.$refs.sampleTable.doLayout()
      },
      searchFilter() {
@@ -2075,7 +2530,7 @@
        this.selectTree = ''
        this.models = val.children
        this.getNodeParent(node)
        this.selectTree = this.selectTree.replace(' - ', '')
        let data = this.selectTree.split(' - ')
        let data2 = ''
        for (let index = data.length - 1; index >= 0; index--) {
@@ -2106,30 +2561,27 @@
        return data.label.indexOf(value) !== -1;
      },
      activeStandardTree() {
        let trees = this.selectTree.split(" - ")
        if(this.selectTree == null || this.selectTree == '') return this.$message.error('未选择样品类型')
        let trees = this.selectTree.split(" - ").filter(m=>m)
        if (trees.length < 3) {
          this.$message.error('未选择对象')
          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] === '') {
          this.addObj.sample = trees[2]
        } else {
          this.addObj.sample = trees[3]
        }
        this.addObj.model = (trees[4] == undefined ? null : trees[4])
        this.addObj.factory = '中天科技检测中心'
        this.addObj.laboratory = '通信产品实验室'
        this.addObj.sampleType = trees[0]
        this.addObj.sample = trees[1]
        this.addObj.model = trees[2]
        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.sample = this.addObj.sample
          this.sample.model = this.addObj.model
          this.sample.unit = this.addObj.unit
          this.sample.standardMethodListId = null
          this.sample.standardMethodListId = []
          this.sample.insProduct = []
          this.sample.id = this.count
          this.sample.childSampleList = []
@@ -2144,23 +2596,10 @@
      selectsStandardMethodByFLSSM() {
        this.methodLoad = true
        this.$axios.post(this.$api.standardTree.selectsStandardMethodByFLSSM, {
          tree: this.selectTree
          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) {}
          this.methods = res.data.standardMethodList
        })
      },
      addStandardTree() {
@@ -2171,17 +2610,17 @@
          this.sample.joinName = null
          this.sample.joinModel = null
          this.sample.joinNum = 1
          this.sample.sample = this.addObj.sample
          // this.sample.sample = this.addObj.sample
          this.sample.model = this.addObj.model
          this.sample.unit = this.addObj.unit
          this.sample.standardMethodListId = null
          this.sample.standardMethodListId = []
          this.sample.insProduct = []
          this.sample.id = this.count
          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.count++
        }
        this.computationalPairing(this.sampleList.length)
        this.bsm2Val2 = this.HaveJson(this.bsm2Val3)
@@ -2214,12 +2653,6 @@
      },
      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 = []
@@ -2250,7 +2683,8 @@
        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)
        // console.log(row,this.productList)
        let arr = this.productList.filter(m=>m.state==1&&m.bsmRow&&m.bsmRow.section==row.section&&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)
@@ -2313,25 +2747,15 @@
          }
          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;
          return
        } else if ((row.inspectionItem === '温升试验' || row.inspectionItem === '热循环') && row.state === 0) {
          this.temperatureShow = false;
        }
        this.changeProductList0()
        this.currentMethod.insProduct = this.productList0
        if(this.sampleSelectionList.length>0){
          this.sampleSelectionList.forEach(item=>{
            item.insProduct = this.productList0
          })
        }else{
          this.currentMethod.insProduct = this.productList0
        }
        this.getProNum()
      },
      searchProject () {
@@ -2406,7 +2830,23 @@
      // 保存模板
      addTemplateDia() {
        if (this.templateName) {
          this.templateLoading = true;
          if(this.templates.find(m=>m.name==this.templateName)){
            this.$confirm('已存在同名模板,是否进行替换?', "提示", {
              confirmButtonText: "确定",
              cancelButtonText: "取消",
              type: "warning"
            }).then(() => {
              this.saveTemplateDia()
            }).catch(() => {})
          }else{
            this.saveTemplateDia()
          }
        } else {
          this.$message.error('请填写模板名称')
        }
      },
      saveTemplateDia(){
        this.templateLoading = true;
          this.$axios.post(this.$api.insOrder.addInsOrderTemplate, {
            name: this.templateName,
            thing: JSON.stringify({
@@ -2426,9 +2866,6 @@
            this.selectInsOrderTemplate()
            this.templateName = ''
          })
        } else {
          this.$message.error('请填写模板名称')
        }
      },
      // 查询模板
      selectInsOrderTemplateById(e) {
@@ -2456,19 +2893,26 @@
          this.units = res.data
        })
      },
      selectEnumByCategoryForStandard() {
        this.$axios.post(this.$api.enums.selectEnumByCategory, {
          category: "试验标准"
        }).then(res => {
          this.standard = res.data
        })
      },
      selectEnumByCategoryForOrderType() {
        this.$axios.post(this.$api.enums.selectEnumByCategory, {
          category: "检验类别"
        }).then(res => {
          this.orderType = res.data
          if (res.data.length > 0) {
            this.addObj.orderType = res.data[0].value
            this.addObj.orderType = 'C'
          }
        })
      },
      selectEnumByCategoryForSampleForm() {
        this.$axios.post(this.$api.enums.selectEnumByCategory, {
          category: "来样方式"
          category: "订单类型"
        }).then(res => {
          this.formType = res.data
          if (this.formType.length > 0) {
@@ -2477,31 +2921,25 @@
        })
      },
      methodChange(val, row) {
        if (val === null || val === '') return
        if (val === null || val === ''||val.length ==0) 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(" - "),
          model: (this.addObj.model?this.addObj.model:row.model) + '-' + row.modelNum+';'+row.testRequirements,
          standardMethodListId: val.join(','),
          factory: '中天科技检测中心'+' - '+'通信产品实验室'+' - '+selectTreeList.join(" - "),
        }, {
          headers: {
            'Content-Type': 'application/json'
          }
        }).then(res => {
          this.getProductLoad = false
          res.data.forEach(a => {
            a.state = 0
          })
          row.insProduct = this.HaveJson(res.data)
          this.getProductLoad = false
          this.productList = row.insProduct
          this.productList0 = JSON.parse(JSON.stringify(this.productList))
          this.$refs.sampleTable.setCurrentRow(row)
@@ -2510,6 +2948,8 @@
              if (a.state == 1) this.toggleSelection(a)
            })
          }, 200)
        }).catch(e => {
          this.getProductLoad = false
        })
        this.searchProject()
        this.searchTemList()
@@ -2527,13 +2967,22 @@
          }
        })
      },
      changeModel() {
      changeModel(type) {
        this.sampleList.forEach(a => {
          let obj = this.sampleIds.find(b => b == a.id)
          if (obj) {
            a.model = this.model
            this.$set(a,type, this.allInfo[type])
            if(type=='testRequirements'&&a.standardMethodListId&&a.standardMethodListId.length>0){
              this.methodChange(a.standardMethodListId, a)
            }
            // a[type] = this.allInfo[type]
          }
        })
      },
      changeModel0(row){
        if(row.standardMethodListId&&row.standardMethodListId.length>0){
          this.methodChange(row.standardMethodListId, row)
        }
      },
      changeStandardMethodListId() {
        this.sampleList.forEach(a => {
@@ -2560,17 +3009,27 @@
      },
      // 要求值变化时
      requestChange(e, row,type) {
        this.sampleList.map(item => {
          if (this.sampleIds.indexOf(item.id) > -1) {
            item.insProduct.map(m => {
              if (m.id == row.id) {
                m[type] = e;
        //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
              }
              return m;
            })
          }
          return item
        })
        // 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 => {
@@ -2629,30 +3088,6 @@
            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.temperatureShow = true;
            return
          } else if ((p.inspectionItem === '温升试验' || p.inspectionItem === '热循环') && p.state === 0) {
            this.temperatureShow = false;
          }
          /* 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 => {
@@ -2676,7 +3111,13 @@
          })
        }
        this.changeProductList0()
        this.currentMethod.insProduct = this.productList0
        if(this.sampleSelectionList.length>0){
          this.sampleSelectionList.forEach(item=>{
            item.insProduct = this.productList0
          })
        }else{
          this.currentMethod.insProduct = this.productList0
        }
        this.getProNum()
        this.$nextTick(() => {
          this.$refs.productTable.doLayout()
@@ -2722,36 +3163,6 @@
        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.configShow = true
          })
        }
      },
      openEquipConfig() {
        if (this.active === 1) {
          if (this.sampleIds.length === 0) {
@@ -2759,35 +3170,6 @@
            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('未选中样品')
@@ -2856,7 +3238,13 @@
          }
        }
        this.changeProductList0()
        this.currentMethod.insProduct = this.productList0
        if(this.sampleSelectionList.length>0){
          this.sampleSelectionList.forEach(item=>{
            item.insProduct = this.productList0
          })
        }else{
          this.currentMethod.insProduct = this.productList0
        }
      },
      save1 () {
        if (this.bsm1DiaList.length > 0) {
@@ -2996,7 +3384,7 @@
        this.totalArr = []
        this.total = 0;
        this.sampleList.forEach(item => {
          if (item.insProduct  && item.insProduct.length > 0) {
          if (item.insProduct && item.insProduct.length > 0) {
            item.insProduct.forEach(a => {
              this.totalArr.push(a)
            })
@@ -3087,6 +3475,11 @@
        if(this.sonLaboratoryList.length>0){
          this.distributeData.sonLaboratory = this.sonLaboratoryList[0].value
        }
      },
      selectDepartmentEnum(){
        this.$axios.get(this.$api.department.selectDepartmentLimsEnum).then(res=>{
          this.deaprtEnum = res.data.filter(item=>item.name === '质量部' || item.name === '检测中心')
        })
      }
    }
  }