value
2024-04-25 5fee829c9e40bfae625db91450817c6e29dcc18c
src/components/do/b1-ins-order/add.vue
@@ -84,6 +84,7 @@
  .el-select .is-disabled{
    background: transparent !important;
  }
  .el-select .is-disabled .el-input__inner{
    background: transparent !important;
  }
@@ -108,7 +109,8 @@
               </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" :disabled="saveLoad">不通过</el-button>
          <el-button size="medium" @click="upInsOrderOfState(2)" :loading="saveLoad" v-show="active==3"
            :disabled="saveLoad">不通过</el-button>
               <el-button size="medium" type="primary" @click="upInsOrderOfState(1)" :loading="saveLoad"
                  v-show="active==3">通过</el-button>
               <el-button size="medium" @click="$parent.playOrder(0)">
@@ -126,18 +128,32 @@
               </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 size="small" style="width: 100%;" clearable v-model="addObj.orderType" :disabled="active>1">
              <el-option v-for="(a, ai) in orderType" :key="ai" :value="a.value" :label="a.label"></el-option>
            </el-select>
          </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 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>
              <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_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 size="small" placeholder="选择委托客户" clearable disabled v-model="addObj.company"></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.phone"></el-input>
               </div>
            </el-col>
            <el-col class="search_thing" :span="6">
@@ -152,15 +168,9 @@
               <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" :disabled="active>1"></el-button></template>
              <template slot="append"><el-button slot="append" icon="el-icon-search" @click="selectStandardTree = 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" clearable disabled v-model="addObj.laboratory"></el-input>
               </div>
            </el-col>
            <el-col class="search_thing" :span="6">
@@ -173,30 +183,63 @@
               <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" :readonly="active>1"></el-input-number>
              style="width: 65%;" @change="addStandardTree" :disabled="active>1"></el-input-number>
               </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-select v-model="addObj.unit" clearable size="small" style="width: 100%;" :disabled="active>1">
                     <el-option v-for="(a, i) in units" :key="i" :label="a.label" :value="a.value"></el-option>
                  </el-select>
               </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" clearable v-model="addObj.formType" :readonly="active>1"></el-input>
          </div>
            </el-col>
            <el-col class="search_thing" :span="6">
               <div class="search_label">OTC订单号:</div>
          <div class="search_label">报告发送方式:</div>
               <div class="search_input">
                  <el-input size="small" placeholder="请输入" clearable v-model="addObj.otcCode" :readonly="active>1"></el-input>
            <el-radio-group v-model="addObj.send">
              <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">
          <div class="search_label">样品处理方式:</div>
          <div class="search_input">
            <el-radio-group v-model="addObj.processing">
              <el-radio :label="0">委托单位取回</el-radio>
              <el-radio :label="1">实验室处理</el-radio>
            </el-radio-group>
          </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.isLeave">
              <el-radio :label="0">不留样</el-radio>
              <el-radio :label="1">留样</el-radio>
            </el-radio-group>
               </div>
            </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()" :disabled="active>1">
            <el-radio-group v-model="addObj.mating" @change="$refs.sampleTable.doLayout()">
                     <el-radio :label="1">是</el-radio>
                     <el-radio :label="0">否</el-radio>
                  </el-radio-group>
          </div>
        </el-col>
        <el-col class="search_thing" :span="6">
          <div class="search_label">OTC订单号:</div>
          <div class="search_input">
            <el-input size="small" placeholder="请输入" clearable v-model="addObj.otcCode" :readonly="active>1"></el-input>
               </div>
            </el-col>
            <el-col class="search_thing" :span="6" style="align-items: flex-start;margin: 8px 0;">
@@ -209,12 +252,6 @@
         </el-row>
      </div>
      <div>
         <!-- <div style="text-align: right;line-height: 45px;" v-if="active<2">
            <el-button type="primary" size="small" @click="addSampleDia = true">添加样品</el-button>
            <el-button size="small" @click="delSample">
               <span style="color: #3A7BFA;">删除样品</span>
            </el-button>
         </div> -->
         <el-table class="el-table sampleTable" ref="sampleTable" :data="sampleList" height="250px" tooltip-effect="dark"
            border @selection-change="selectSample" highlight-current-row @row-click="rowClick" style="margin-top: 10px;" >
            <el-table-column type="selection" width="60" :selectable="selectable" v-if="active==1"></el-table-column>
@@ -226,15 +263,10 @@
            </el-table-column>
            <el-table-column prop="sampleCode" label="样品编号" min-width="140" align="center">
               <template slot-scope="scope">
                  <el-input size="small" v-model="scope.row.sampleCode" clearable placeholder="不填写则系统自动生成" :readonly="active>1"></el-input>
            <el-input size="small" v-model="scope.row.sampleCode" clearable placeholder="不填写则系统自动生成"
              :readonly="active>1"></el-input>
               </template>
            </el-table-column>
            <!-- <el-table-column prop="factory" label="工厂" align="center" min-width="100">
            </el-table-column>
            <el-table-column prop="laboratory" label="实验室" align="center" min-width="100">
            </el-table-column>
            <el-table-column prop="sampleType" label="样品类型" align="center" min-width="100">
            </el-table-column> -->
            <el-table-column prop="model" label="样品型号" align="center" min-width="100">
               <template slot-scope="scope">
                  <el-select v-model="scope.row.model" filterable allow-create default-first-option placeholder="样品型号"
@@ -246,8 +278,9 @@
            </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">
            <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">
                     <el-option v-for="item in methods" :key="item.id" :label="item.code" :value="item.id">
                     </el-option>
                  </el-select>
@@ -260,14 +293,14 @@
                  </el-select>
               </template>
            </el-table-column>
            <el-table-column prop="isLeave" label="是否留样" align="center" min-width="100">
        <!-- <el-table-column prop="isLeave" label="是否留样" align="center" min-width="100">
               <template slot-scope="scope">
                  <el-select v-model="scope.row.isLeave" size="small" :disabled="active>1">
                     <el-option label="留样" :value="1"></el-option>
                     <el-option label="不留样" :value="0"></el-option>
                  </el-select>
               </template>
            </el-table-column>
        </el-table-column> -->
            <el-table-column prop="joinName" label="配套样品名称" width="140" align="center" v-if="addObj.mating==1">
               <template slot-scope="scope">
                  <el-input size="small" type="textarea" :autosize="{ minRows: 1, maxRows: 1}"
@@ -286,12 +319,6 @@
                     :controls="false" style="width: 80%;"></el-input-number>
               </template>
            </el-table-column>
            <!-- <el-table-column label="操作" width="65" align="center">
               <template slot-scope="scope">
                  {{scope.index}}
                  <el-button type="text" size="small" @click="delSampleAndProduct" :disabled="active!=1">删除</el-button>
               </template>
            </el-table-column> -->
         </el-table>
         <el-table class="el-table" ref="productTable" :data="productList" height="380px" tooltip-effect="dark" border
            @selection-change="selectProduct" style="margin-bottom: 10px;" @select="upProductSelect"
@@ -300,7 +327,8 @@
            <el-table-column prop="inspectionItem" label="检验项" min-width="140" show-overflow-tooltip></el-table-column>
            <el-table-column prop="inspectionItemSubclass" label="检验项子项" min-width="140"
               show-overflow-tooltip></el-table-column>
            <el-table-column prop="sonLaboratory" label="子实验室" width="130" show-overflow-tooltip></el-table-column>
        <el-table-column prop="sonLaboratory" label="子实验室" width="130" show-overflow-tooltip :filters="filters"
            :filter-method="filterHandler"></el-table-column>
            <el-table-column prop="methodS" label="试验方法" min-width="120" show-overflow-tooltip>
        </el-table-column>
            <el-table-column prop="unit" label="计量单位" width="100" show-overflow-tooltip></el-table-column>
@@ -312,7 +340,7 @@
            <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)"></el-input>
              :autosize="{ minRows: 1, maxRows: 3}" @change="e=>requestChange(e,scope.row)" :readonly="active>1"></el-input>
               </template>
            </el-table-column>
         </el-table>
@@ -519,7 +547,13 @@
               sampleNum: 1,
               unit: null,
               model: null,
               method: null
          method: null,
          phone: null,
          processing: 1,
          isLeave: 0,
          orderType: null,
          send: 1,
          formType: '送检'
            },
            sample: {
               sampleCode: null,
@@ -590,7 +624,9 @@
            methodLoad: false,
        noDialogVisible:false,
        tell:'',
        noLoading:false
        noLoading: false,
        orderType: [],
        filters: []
         }
      },
      watch: {
@@ -607,6 +643,8 @@
         this.getAuthorizedPerson();
         this.selectEnumByCategoryForUnit()
         this.selectStandardMethods()
      this.selectEnumByCategoryForOrderType()
      this.selectEnumByCategoryForSonLaboratory()
         if (this.active != 1) {
            // 查看/审核流程
            // 请求接口,回显数据
@@ -658,6 +696,7 @@
            this.addObj.company = selects.company
            this.addObj.custom = selects.name
            this.addObj.code = selects.code
        this.addObj.phone = selects.phone
            this.selectUserDia = false
         },
         save() {
@@ -667,6 +706,10 @@
            }
        if (!this.addObj.type) {
               this.$message.error('未选择紧急程度')
        } else if (!this.addObj.formType) {
          this.$message.error('请输入来样方式')
        } else if (!this.addObj.orderType) {
          this.$message.error('请选择检验类别')
            } else if (this.sampleList.length < 1) {
               this.$message.error('请添加一个样品')
            } else if (!this.sampleList.every(m => m.sample)) {
@@ -720,13 +763,15 @@
            // } else {
            //    this.$parent.playOrder(0)
            // }
            this.issuedDialogVisible = true;
            this.$axios.post(this.$api.insOrder.selectOrderManDay, {
              id: this.currentId
            }).then(ress => {
              this.distributeData.orderId = this.currentId
              this.distributeData.appointed = ress.data
            })
            setTimeout(()=>{
              this.issuedDialogVisible = true;
            },1000)
          })
        }else{
          // 不通过
@@ -770,6 +815,7 @@
               this.addObj.company = selects.company
               this.addObj.custom = selects.name
               this.addObj.code = selects.code
          this.addObj.phone = selects.phone
            })
         },
         searchFilter() {
@@ -1059,6 +1105,16 @@
               this.units = 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
          }
        })
      },
         methodChange(val, row) {
            this.getProductLoad = true
            this.$axios.post(this.$api.standardTree.selectStandardProductList, {
@@ -1070,7 +1126,7 @@
               }
            }).then(res => {
               res.data.forEach(a => {
                  a.state = 1
            a.state = 0
               })
               row.insProduct = this.HaveJson(res.data)
               this.getProductLoad = false
@@ -1181,6 +1237,23 @@
            this.issuedDialogVisible = false;
            this.$parent.playOrder(0)
          })
      },
      selectEnumByCategoryForSonLaboratory() {
        this.$axios.post(this.$api.enums.selectEnumByCategory, {
          category: "子实验室"
        }).then(res => {
          this.factory = []
          res.data.forEach(a=>{
            this.filters.push({
              text: a.label,
              value: a.value
            })
          })
        })
      },
      filterHandler(value, row, column) {
        const property = column['property'];
        return row[property] === value;
      }
      }
   }