licp
2024-09-24 8c16c0fdac9d895f8b53a8032f47cddfe8490ff9
src/components/do/b1-ins-order/add.vue
@@ -185,18 +185,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>
@@ -254,14 +249,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">
@@ -269,8 +279,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">
@@ -278,7 +288,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">
@@ -296,8 +306,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">
@@ -307,7 +321,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">
@@ -315,7 +329,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" style="width: 175px;">是否涉及配套样品:</div>
            <div class="search_input" style="width: calc(100% - 175px);">
@@ -325,12 +339,12 @@
              </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">
@@ -367,8 +381,8 @@
          <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>
@@ -384,7 +398,7 @@
              <el-input size="small" v-model="scope.row.sample" clearable :readonly="active>1"></el-input>
            </template>
          </el-table-column>
          <el-table-column prop="sampleCode" label="样品编号" min-width="140" align="center">
          <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>
@@ -399,7 +413,7 @@
              </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="非必填"
                @keyup.enter.native="methodChange(scope.row.standardMethodListId, scope.row)"
@@ -410,8 +424,17 @@
            <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>
            </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>
                <el-option v-for="item in standard" :key="item.id" :label="item.label" :value="item.value">
                </el-option>
              </el-select>
            </template>
@@ -990,7 +1013,8 @@
          companyId: null,
          prepareUser:null,
          departmentLimsId:null,
          departmentLims:null
          departmentLims:null,
          partNo: null, // 零件号
        },
        sample: {
          sampleCode: null,
@@ -1093,7 +1117,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,
@@ -1127,7 +1151,9 @@
        temId: '',
        sonLaboratoryList:[],
        selectiveEcho: [], // 检验下单的时候勾选检验项目,如果使用筛选提交显示检验项目为空 回显列表
        deaprtEnum:[]
        deaprtEnum:[],
        standard:[],
        createState:1,//1:选择委托单位,2:选择生产单位
      }
    },
    watch: {
@@ -1179,11 +1205,11 @@
      },
      'addObj.sample'(val) {
        this.model = null
        this.standardMethodListId = null
        this.standardMethodListId = []
      },
      'addObj.sampleNum'(val) {
        this.model = null
        this.standardMethodListId = null
        this.standardMethodListId = []
      }
    },
    mounted() {
@@ -1193,6 +1219,7 @@
      // this.selectInsOrderTemplate()
      this.getAuthorizedPerson();
      this.selectEnumByCategoryForUnit()
      this.selectEnumByCategoryForStandard()
      this.selectStandardMethods()
      this.selectEnumByCategoryForOrderType()
      this.selectDepartmentEnum()
@@ -1208,7 +1235,10 @@
            ...res.data.insOrder
          };
          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(() => {
@@ -1222,6 +1252,7 @@
      }
    },
    methods: {
      //特殊值填写处理
      inputValueHandler(row,index){
        if(row){
@@ -1527,14 +1558,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){
@@ -1594,18 +1634,28 @@
        }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
        }
        // 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) {
@@ -1620,9 +1670,11 @@
          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.sampleList.every(m => m.standardMethodListId&&m.standardMethodListId.length>0)) {
          this.$message.error('请选择检验标准')
        } else {
        } else if(this.addObj.formType&&this.addObj.formType!='其他成品'&&!this.addObj.issueUser){
          this.$message.error('请选择下发对象')
        }else{
          //校验检验项的要求值和要求描述,仅委托要求
          // if(this.active==1&&this.isAskOnlyRead){
          //   const isTrue = this.checkRequiredValueAndRemark(filterProductList)
@@ -2065,7 +2117,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 {
@@ -2125,9 +2180,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() {
@@ -2213,7 +2274,7 @@
          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 = []
@@ -2258,7 +2319,7 @@
          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 = parseInt(i+1)
          this.sample.childSampleList = []
@@ -2298,12 +2359,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 = []
@@ -2547,6 +2602,13 @@
          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: "检验类别"
@@ -2559,7 +2621,7 @@
      },
      selectEnumByCategoryForSampleForm() {
        this.$axios.post(this.$api.enums.selectEnumByCategory, {
          category: "来样方式"
          category: "订单类型"
        }).then(res => {
          this.formType = res.data
          if (this.formType.length > 0) {
@@ -2568,33 +2630,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)
        console.log( this.selectTree);
        this.$axios.post(this.$api.standardTree.selectStandardProductList, {
          model: (this.addObj.model?this.addObj.model:row.model) + '-' + row.modelNum,
          standardMethodListId: val,
          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)
@@ -2603,6 +2657,8 @@
              if (a.state == 1) this.toggleSelection(a)
            })
          }, 200)
        }).catch(e => {
          this.getProductLoad = false
        })
        this.searchProject()
        this.searchTemList()
@@ -3193,7 +3249,7 @@
      },
      selectDepartmentEnum(){
        this.$axios.get(this.$api.department.selectDepartmentLimsEnum).then(res=>{
          this.deaprtEnum = res.data
          this.deaprtEnum = res.data.filter(item=>item.name === '质量部' || item.name === '检测中心')
        })
      }
    }