gaoluyang
2024-07-24 cc6914dff1a91dd00e3a86d5daae2c3dba2d6ba8
src/components/do/b1-ins-order/add.vue
@@ -458,6 +458,8 @@
            </div>
          </template>
        </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>
        <el-table-column prop="sonLaboratory" label="子实验室" min-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>
@@ -563,8 +565,17 @@
          <el-col class="search_thing" :span="22">
            <div class="search_label"><span class="required-span" v-if="addObj.type == 2">* </span>指派人员:</div>
            <div class="search_input">
              <el-select v-model="distributeData.userId" placeholder="请选择" size="small" filterable style="width: 100%;">
              <el-select v-model="distributeData.userId" placeholder="请选择" size="small" filterable style="width: 100%;" @change="changeUser">
                <el-option v-for="item in personList" :key="item.value" :label="item.label" :value="item.value">
                </el-option>
              </el-select>
            </div>
          </el-col>
          <el-col class="search_thing" :span="22" v-if="distributeData.userId">
            <div class="search_label"><span class="required-span">* </span>试验室:</div>
            <div class="search_input">
              <el-select v-model="distributeData.sonLaboratory" placeholder="请选择" size="small" filterable style="width: 100%;">
                <el-option v-for="item in sonLaboratoryList" :key="item.value" :label="item.label" :value="item.value">
                </el-option>
              </el-select>
            </div>
@@ -802,7 +813,7 @@
        </div>
        <div class="temperatureList">
          <div class="temperatureListTitle">
            <span>温度点集合(请按照顺序填写,20℃必须为首位)</span>
            <span>温度点集合</span>
            <span>
              <el-button type="primary" size="mini" @click="addTemperatureData">新增</el-button>
              <el-button size="mini" @click="deleteTemperatureData">删除</el-button>
@@ -834,7 +845,25 @@
        </div>
      </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" width="260px" :before-close="temperatureShowClose" :show-close="false">
      <div>
        <div v-if="isShowInput" style="margin-bottom: 6px">
          <span>循环次数:</span>
          <!-- <el-input size="small" type="number" v-model="temperatureTestNum" style="width: 120px"></el-input> -->
          <el-input-number v-model="temperatureTestNum" :min="2" :max="1000000" size="small" label=""></el-input-number>
        </div>
        <el-checkbox-group v-model="temperatureTest" @change="handleTemperatureTestChange" style="display: flex;flex-direction: column;">
          <el-checkbox v-for="item in temperatureList" :label="item" :key="item" style="margin-bottom: 6px">{{item}}</el-checkbox>
        </el-checkbox-group>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="cleanTemperatureTest">取消</el-button>
        <el-button type="primary" @click="spliceTemperatureTest">保存</el-button>
      </span>
    </el-dialog>
  </div>
@@ -965,7 +994,8 @@
        issuedDialogVisible: false,
        distributeData: {
          appointed: '',
          userId: ''
          userId: '',
          sonLaboratory:''
        },
        personList: [],
        upLoad: false,
@@ -1024,7 +1054,16 @@
          {label: '=', value: '='},
          {label: '≥', value: '≥'},
          {label: '>', value: '>'},
        ]
        ],
        temperatureShow: false, // 温升试验检验项弹框
        temperatureTest: [],
        temperatureList: [],
        temperatureEngList: [],
        temperatureTitle: '',
        temperatureTestNum: '',
        isShowInput: false,
        temId: '',
        sonLaboratoryList:[]
      }
    },
    watch: {
@@ -1112,6 +1151,9 @@
              throw this.$message.error('请填写完整数据')
            }
          })
          if (!o.temperatureData.some(item => item.temperaturePoint == '20')) {
            throw this.$message.error(`${o.value + '波长没有配置20℃温度点'}`)
          }
        })
        let entrustTime = this.circulateForm.entrustTime
        let entrustNum = this.circulateForm.entrustNum
@@ -1123,7 +1165,7 @@
          o.temperatureData.unshift({temperaturePoint: 20})
          o.temperatureData.forEach(t => {
            if (!t.askSymbol) {
                  const askObj = t.temperaturePoint + '℃' + ',' + o.value + ',' + null
                  const askObj = t.temperaturePoint + '℃(常温)' + ',' + o.value + ',' + null
                  askArr.push(askObj)
                } else {
                  const askObj = t.temperaturePoint + '℃' + ',' + o.value + ',' + t.askSymbol + t.askNum
@@ -1149,7 +1191,7 @@
        })
        temperaturePointList = Array.from(new Set(temperaturePointList))
        temperaturePointList2 = Array.from(new Set(temperaturePointList2))
        temperaturePointList2.unshift(20 + '℃')
        temperaturePointList2.unshift(20 + '℃(常温)')
        let additionArr = []
        askNum.forEach(a => {
          additionArr.push(temperaturePointList.join(',') + a)
@@ -1163,21 +1205,93 @@
            item.tell = tell
          }
        })
        console.log('ask---', ask)
        console.log('tell---', tell)
        this.circulateShow = false
      },
      spliceTemperatureTest () {
        if (this.temperatureTest.length === 0) {
          this.$message.error('请选择')
          return
        }
        let askStr = ''
        let askArr1 = []
        let askArr2 = ''
        let ask = ''
        let index = ''
        this.temperatureTest.map(val => {
          index = this.temperatureEngList.findIndex(item => item.label === val)
          if (index > -1) {
            askStr = val + ',' + this.temperatureEngList[index].value
          }
          askArr1.push(askStr)
        })
        if (this.temperatureTitle === '温升试验要求填写') {
          askArr2 = askArr1.join(';')
          ask = askArr2 + ';1'
        } else {
          if (!this.temperatureTestNum) {
            this.$message.error('请填写循环次数')
            return
          }
          askArr2 = askArr1.join(';')
          ask = askArr2 + ';' + this.temperatureTestNum
        }
        this.productList.forEach(item => {
          if (item.id === this.temId) {
            item.ask = ask
            item.tell = ask
          }
        })
        // console.log('ask---', ask)
        this.temperatureShow = false
      },
      temperatureShowClose () {
        if (this.temperatureTitle === '热循环要求填写' && !this.temperatureTestNum) {
          this.$message.error('请填写循环次数')
          return
        }
        if (this.temperatureTest.length === 0) {
          this.$message.error('请选择')
          return
        }
        this.spliceTemperatureTest()
      },
      cleanTemperatureTest () {
        this.temperatureTest = []
        this.temperatureTestNum = ''
        this.temperatureShow = false
      },
      cleanSpliceData () {
        this.circulateForm.entrustNum = null
        this.circulateForm.entrustTime = null
        this.circulateForm.entrustPoint = null
        this.opticalProjectList = []
        this.$refs.multipleTable.clearSelection()
        this.temperatureData = []
        this.circulateShow = false
      },
      beforeCirculateShowClose () {
        if (!this.circulateForm.entrustNum || !this.circulateForm.entrustTime || !this.circulateForm.entrustPoint || this.opticalProjectList.length === 0 || this.temperatureData.length === 0) {
          this.$message.error('请填写完整数据')
          return
        }
        let temperaturePoint1 = JSON.parse(JSON.stringify(this.temperatureData))
        temperaturePoint1.forEach(t => {
          if (!t.temperaturePoint || !t.askSymbol || !t.askNum) {
            throw this.$message.error('请填写完整数据')
          if (!this.circulateForm.entrustNum || !this.circulateForm.entrustTime || !this.circulateForm.entrustPoint || this.opticalProjectList.length === 0 || this.temperatureData.length === 0) {
            this.$message.error('请填写完整数据')
            return
          }
        })
          // 拼接要求值ask
          const opticalProjectList = JSON.parse(JSON.stringify(this.opticalProjectList))
          opticalProjectList.forEach(o => {
            o.temperatureData.forEach(t => {
              if (!t.temperaturePoint || !t.askSymbol || !t.askNum) {
                throw this.$message.error('请填写完整数据')
              }
            })
            if (!o.temperatureData.some(item => item.temperaturePoint == '20')) {
              throw this.$message.error(`${o.value + '波长没有配置20℃温度点'}`)
            }
          })
          this.spliceData()
      },
      handleTemperatureTestChange (value) {
        // console.log('value---', value)
      },
      handleSelectionChange(val) {
        this.opticalProjectList = val;
@@ -1374,9 +1488,14 @@
              isHaveBushing = false
            }
          })
          console.log('isHaveBushing===', isHaveBushing)
          // 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
          }
          let sampleList = this.HaveJson(this.sampleList)
@@ -1622,9 +1741,22 @@
          str: JSON.stringify({
            insOrder: this.addObj,
            list: JSON.stringify(sampleList.map(a => {
              a.model = a.model + ((a.modelNum == null || a.modelNum == '' || a.modelNum == 'null') ?
                '' : (
                  '-' + a.modelNum))
              if (this.PROJECT === '装备电缆') {
                if (a.modelNum) {
                  const index = a.modelNum.indexOf('×')
                  if (index === 0) {
                    a.model = a.model + a.modelNum
                  } else if (index === -1) {
                    a.model = a.model + '-' + a.modelNum
                  } else {
                    a.model = a.modelNum + a.model
                  }
                } else {
                  a.model = a.model + ((a.modelNum == null || a.modelNum == '' || a.modelNum == 'null') ? '' : ('-' + a.modelNum))
                }
              } else {
                a.model = a.model + ((a.modelNum == null || a.modelNum == '' || a.modelNum == 'null') ? '' : ('-' + a.modelNum))
              }
              a.insProduct = a.insProduct.filter(b=>b.state === 1)
              return a
            })),
@@ -1695,11 +1827,16 @@
          this.$message.error('指派人员未填写')
          return
        }
        if (this.distributeData.userId&&(this.distributeData.sonLaboratory== null ||this.distributeData.sonLaboratory== '')) {
          this.$message.error('试验室未填写')
          return
        }
        this.upLoad = true;
        this.$axios.post(this.$api.insOrder.upInsOrder, {
          orderId: this.distributeData.orderId,
          appointed: this.distributeData.appointed,
          userId: this.distributeData.userId
          userId: this.distributeData.userId,
          sonLaboratory:this.distributeData.sonLaboratory
        }).then(res => {
          if (res.code === 201) {
            this.upLoad = false
@@ -1962,6 +2099,16 @@
        } 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.getProNum()
      },
      searchProject () {
@@ -2133,6 +2280,20 @@
          }, 200)
        })
        this.searchProject()
        this.searchTemList()
      },
      searchTemList () {
        this.temperatureList = []
        this.$axios.post(this.$api.enums.selectEnumByCategory, {
          category: "电力温度循环检验"
        }).then(res => {
          if (res.data.length > 0) {
            this.temperatureEngList = res.data
            res.data.forEach(item => {
              this.temperatureList.push(item.label)
            })
          }
        })
      },
      changeModel() {
        this.sampleList.forEach(a => {
@@ -2192,9 +2353,12 @@
        }
      },
      handleAll(e) {
        // console.log('e---', e)
        if (e.length > 0) {
          this.productList.map(m => {
            m.state = 1
            if(e.find(a=>a.id == m.id)){
              m.state = 1
            }
            return m
          })
        } else {
@@ -2230,6 +2394,23 @@
            this.$message.error('样品数量不足够进行配对操作')
            this.$refs.productTable.clearSelection()
            return
          }
          const select = this.selectTree.split(' - ')
          if (p.inspectionItem === '温度循环' && select[2] === '光缆' && p.state === 1) {
            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 = ''
@@ -2505,6 +2686,7 @@
      getTotal() {
        this.totalArr = []
        this.total = 0;
        // console.log(this.sampleList)
        this.sampleList.forEach(item => {
          if (item.insProduct && item.insProduct.length > 0) {
            item.insProduct.forEach(a => {
@@ -2563,6 +2745,20 @@
        arr0.forEach(item => {
          this.total += Number(item.price)
        })
        let arr1 = this.totalArr.filter(item => item.state == 1)
        let mySet0 = new Set();
        this.sonLaboratoryList = []
        arr1.forEach(item => {
          let num1 = mySet0.size
          mySet0.add(item.sonLaboratory)
          let num2 = mySet0.size
          if(num2>num1){
            this.sonLaboratoryList.push({
              label:item.sonLaboratory,
              value:item.sonLaboratory,
            })
          }
        })
      },
      bsm2Up(val) {
        let list = []
@@ -2578,6 +2774,11 @@
        for (let a of set) {
          this.bsm2Val2.push(this.HaveJson(this.bsm2Val3[a - 1]))
        }
      },
      changeUser(){
        if(this.sonLaboratoryList.length>0){
          this.distributeData.sonLaboratory = this.sonLaboratoryList[0].value
        }
      }
    }
  }