gaoluyang
2025-03-13 28972c351ea79b4721750f6970e88263b64c64aa
src/views/business/materialOrder/copperOrder.vue
@@ -99,7 +99,7 @@
            </el-col>
            <el-col :span="6">
              <el-form-item class="addObj-form-item" label="备注:">
                <el-input v-model="addObj.remark" :autosize="{ minRows: 2, maxRows: 2}" :placeholder="active>1 ? '' : '请输入'" :readonly="active>1" clearable
                <el-input v-model="addObj.remark" :autosize="{ minRows: 2, maxRows: 2}" :placeholder="active>1 ? '' : '请输入'" :disabled="active>1" clearable
                          size="small" type="textarea"></el-input>
              </el-form-item>
            </el-col>
@@ -134,6 +134,7 @@
      </div>
      <div style="height: auto;">
        <el-table ref="sampleTable" :data="sampleList" class="el-table sampleTable" highlight-current-row
                  :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border
                  max-height="400px" tooltip-effect="dark" @selection-change="selectSample" @row-click="rowClick">
          <el-table-column v-if="active==1" :selectable="selectable" type="selection" width="60"></el-table-column>
          <el-table-column align="center" label="序号" type="index" width="65"></el-table-column>
@@ -195,6 +196,7 @@
          <el-table-column align="center" label="待检项数量" prop="proNum" width="105"></el-table-column>
        </el-table>
        <el-table ref="productTable" v-loading="getProductLoad" :data="productList" :row-class-name="tableRowClassName" class="el-table"
                  :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border
                  max-height="400px" style="margin-bottom: 10px;" tooltip-effect="dark"
                  @select="selectOne" @selection-change="selectProduct" @select-all="handleAll">
          <el-table-column v-if="active==1" :selectable="selectable" type="selection" width="65"></el-table-column>
@@ -396,7 +398,6 @@
</template>
<script>
// import ValueTable from '../../tool/value-table.vue'
import Vue from 'vue'
import {
  addRawCopperOrder,
@@ -421,17 +422,13 @@
}
export default {
  name: 'CopperOrder',
  components: {},
  dicts: ['check_type', 'urgency_level'],
  props: {
    currentId: {
      type: Number,
      default: () => 0
    }
  },
  data() {
    return {
      active: '',
      currentId: '',
      sampleSelectionList: [],//样品表格选中数据
      editTable:[],
      noNeedCheckLoad: false, // 免检按钮loading
@@ -515,8 +512,6 @@
      bsm2: false,
      bsm2Val: null,
      bsm2Dia: false,
      bsm2Val2: [],
      bsm2Val3: [],
      bsmRow3: null,
      bsm3Val: null,
      bsm3Dia: false,
@@ -622,12 +617,21 @@
  },
  mounted() {
    this.active = this.$route.query.active
    this.getUserNowInfo()
    this.selectStandardTreeList()
    this.selectStandardMethods()
    this.getInfo() // 获取数据
    this.currentId = this.$route.query.currentId
    this.getInfoRow();
  },
  activated() {
    this.active = this.$route.query.active
    this.currentId = this.$route.query.currentId
    this.getInfoRow();
  },
  methods: {
    getInfoRow() {
      this.getUserNowInfo()
      this.selectStandardTreeList()
      this.selectStandardMethods()
      this.getInfo() // 获取数据
    },
    // 拆分
    handleSplitCountNum () {
      this.sample.joinName = null
@@ -649,7 +653,6 @@
        item.quantity = 1
      })
      this.count++
      this.computationalPairing(this.sampleList.length)
    },
    noNeedCheck () {
      this.$refs['addObj'].validate((valid) => {
@@ -686,7 +689,6 @@
      if (projectNum!=0){
        this.$message.error('免检不可选择检验项')
      } else {
        const pairing = []
        let trees = this.selectTree.split(" - ")
        if (trees.length < 3) {
          this.$message.error('未选择对象')
@@ -703,33 +705,34 @@
        this.addObj.model = (trees[4] == undefined ? null : trees[4])
        this.noNeedCheckLoad = true
        addRawCopperOrderExemptionOrder({
          str: JSON.stringify({
            insOrder: this.addObj,
            list: JSON.stringify(sampleList.map(a => {
              if (a.modelNum) {
                // 根据x号判断型号参数与样品型号的拼接位置
                // 例如×4,就为500ML×4;4×,就为4×500ML
                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
                }
          copperInsOrder: this.addObj,
          sampleList: sampleList.map(a => {
            if (a.insProduct.length > 0) {
              a.insProduct.forEach(c => {
                delete c.id
              })
            }
            if (a.modelNum) {
              // 根据x号判断型号参数与样品型号的拼接位置
              // 例如×4,就为500ML×4;4×,就为4×500ML
              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.model + ((a.modelNum == null || a.modelNum == '' || a.modelNum == 'null') ? '' : ('-' + a.modelNum))
                a.model = a.modelNum + a.model
              }
              a.insProduct = a.insProduct.filter(b=>b.state === 1)
              return a
            })),
            pairing: JSON.stringify(pairing)
            } else {
              a.model = a.model + ((a.modelNum == null || a.modelNum == '' || a.modelNum == 'null') ? '' : ('-' + a.modelNum))
            }
            a.insProduct = a.insProduct.filter(b=>b.state === 1)
            return a
          })
        }).then(res => {
          this.noNeedCheckLoad = false
          if (res.code == 201) return
          this.$message.success('已提交')
          this.goBack()
          this.closeOpenPage()
        }).catch(e=>{
          this.noNeedCheckLoad = false
        })
@@ -902,10 +905,6 @@
            this.$message.error('请选择检验标准')
            return
          }
          // if (!this.sampleList.every(m => m.quantity)) {
          //   this.$message.error('请选择待检项数量')
          //   return
          // }
          const sampleList = this.HaveJson(this.sampleList)
          sampleList.forEach(item => {
            item.quantity = 1
@@ -1148,32 +1147,33 @@
    saveMethod(sampleList){
      this.saveLoad = true
      addRawCopperOrder({
        str: JSON.stringify({
          insOrder: this.addObj,
          list: JSON.stringify(sampleList.map(a => {
            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
              }
        copperInsOrder: this.addObj,
        sampleList: sampleList.map(a => {
          if (a.insProduct.length > 0) {
            a.insProduct.forEach(c => {
              delete c.id
            })
          }
          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.model + ((a.modelNum == null || a.modelNum == '' || a.modelNum == 'null') ? '' : ('-' + a.modelNum))
              a.model = a.modelNum + a.model
            }
            a.insProduct = a.insProduct.filter(b=>b.state === 1)
            return a
          })),
          pairing: JSON.stringify(this.bsm2Val2)
          } else {
            a.model = a.model + ((a.modelNum == null || a.modelNum == '' || a.modelNum == 'null') ? '' : ('-' + a.modelNum))
          }
          a.insProduct = a.insProduct.filter(b=>b.state === 1)
          return a
        })
      }).then(res => {
        this.saveLoad = false
        if (res.code == 201) return
        this.$message.success('已提交')
        this.bsm3Dia = false;
        this.goBack()
        this.closeOpenPage()
      }).catch(e=>{
        this.saveLoad = false
      })
@@ -1195,7 +1195,7 @@
    },
    getProNum() {
      this.sampleSelectionList.forEach((m, i) => {
        Vue.set(this.sampleSelectionList[i], 'proNum', m.insProduct.filter(a => a.state == 1).length)
        Vue.set(this.sampleSelectionList[i], 'proNum', 1)
      })
      this.$refs.sampleTable.doLayout()
    },
@@ -1333,8 +1333,6 @@
        this.sampleList.push(this.HaveJson(this.sample))
        // this.count++
      }
      this.computationalPairing(this.sampleList.length)
      this.bsm2Val2 = this.HaveJson(this.bsm2Val3)
    },
    selectSample(val) {
      this.sampleIds = []
@@ -1463,13 +1461,6 @@
      }
      backtrack([], nums);
      return result;
    },
    computationalPairing(n) {
      const nums = [];
      for (let i = 1; i <= n; i++) {
        nums.push(i);
      }
      this.bsm2Val3 = this.HaveJson(this.permute(nums))
    },
    tableRowClassName({row, rowIndex}) {
      if (row.state === 0) {
@@ -1798,9 +1789,16 @@
    },
    goBack () {
      const obj = { path: "/business/materialOrder" };
      this.$tab.closeOpenPage(obj);
    }
      if (this.active == 1) {
        this.$router.go(-1)
      } else {
        this.closeOpenPage()
      }
    },
    closeOpenPage() {
      this.$router.go(-1)
      this.$tab.closeOpenPage()
    },
  }
}
</script>