zhuo
2025-03-31 2902cd8d2b36f66ea5162ae91d9a5a51912758fa
src/views/business/materialOrder/copperOrder.vue
@@ -99,17 +99,17 @@
            </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>
          </el-row>
        </el-form>
      </div>
      <div style="display: flex;justify-content: space-between;">
      <div style="display: flex;justify-content: space-between;background-color: #F5F7FB;margin-bottom: 6px">
        <div v-if="active==1">
          <el-form :inline="true" :model="addObj1" label-width="90px">
            <el-form-item label="样品型号:" style="margin-bottom: 6px">
            <el-form-item label="样品型号:" style="margin-bottom: 6px;margin-top: 6px">
              <el-select v-model="model" :placeholder="active>1 ? '' : '请输入'"
                         allow-create clearable default-first-option filterable
                         size="small"
@@ -118,7 +118,7 @@
                </el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="检验标准:">
            <el-form-item label="检验标准:" style="margin-bottom: 6px;margin-top: 6px">
              <el-select v-model="standardMethodListId" :loading="methodLoad"
                         :placeholder="active>1 ? '' : '请输入'" clearable size="small"
                         @change="changeStandardMethodListId" @focus="methodFocus">
@@ -128,12 +128,13 @@
            </el-form-item>
          </el-form>
        </div>
        <div style="margin-top: 3px">
          <el-button v-show="active==1" :disabled="sampleList.length === 2" size="small" type="primary" @click="handleSplitCountNum">拆分</el-button>
        <div style="margin-bottom: 6px;margin-top: 6px">
          <el-button v-show="active==1" :disabled="sampleList.length === 3" size="small" type="primary" @click="handleSplitCountNum">拆分</el-button>
        </div>
      </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>
@@ -192,9 +193,10 @@
                               size="small" style="width: 80%;"></el-input-number>
            </template>
          </el-table-column>
          <el-table-column align="center" label="待检项数量" prop="proNum" width="105"></el-table-column>
          <el-table-column align="center" label="待检项数量" prop="quantity" 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
@@ -442,15 +439,16 @@
        custom: null,
        company: null,
        userId: null,
        companyId: '',
        type: '0', // 紧急程度
        code: null,
        remark: null, // 备注
        mating: 0,
        sample: null, // 样品名称
        appointed: '', // 约定时间
        buyUnitMeas: '', // 单位
        updateBatchNo: '', // 批次号
        partDetail: '', // 规格型号
        buyUnitMeas: null, // 单位
        updateBatchNo: null, // 批次号
        partDetail: null, // 规格型号
        declareDate: '', // 到货时间
        factory: null,
        laboratory: null,
@@ -463,8 +461,8 @@
        processing: 1,
        isLeave: 0,
        orderType: '进厂检验', // 检验类型
        supplierName: '', // 材料厂家
        qtyArrived: '', // 到货数量
        supplierName: null, // 材料厂家
        qtyArrived: null, // 到货数量
      },
      sample: {
        sampleCode: null,
@@ -558,7 +556,7 @@
          { required: true, message: '请填写规格型号', trigger: 'blur' }
        ],
        declareDate: [
          { required: true, message: '请填写到货时间', trigger: 'blur' }
          { required: true, message: '请填写到货时间', trigger: 'change' }
        ]
      },
      noNeedCheckDia: false,
@@ -586,23 +584,6 @@
        }
      }
    },
    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
        }
      }
    },
    sampleList: {
      deep: true,
      handler(val) {
@@ -620,12 +601,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
@@ -683,7 +673,6 @@
      if (projectNum!=0){
        this.$message.error('免检不可选择检验项')
      } else {
        const pairing = []
        let trees = this.selectTree.split(" - ")
        if (trees.length < 3) {
          this.$message.error('未选择对象')
@@ -700,33 +689,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
        })
@@ -741,10 +731,11 @@
          this.addObj = {
            ...res.data.insOrder
          }
          this.addObj.qtyArrived = res.data.insOrderTemplate.qtyArrived
          this.addObj.buyUnitMeas = res.data.insOrderTemplate.buyUnitMeas
          this.addObj.updateBatchNo = res.data.insOrderTemplate.updateBatchNo
          this.addObj.supplierName = res.data.insOrderTemplate.supplierName
          this.$set(this.addObj, 'qtyArrived', res.data.insOrderTemplate.qtyArrived)
          this.$set(this.addObj, 'buyUnitMeas', res.data.insOrderTemplate.buyUnitMeas)
          this.$set(this.addObj, 'updateBatchNo', res.data.insOrderTemplate.updateBatchNo)
          this.$set(this.addObj, 'supplierName', res.data.insOrderTemplate.supplierName)
          this.$set(this.addObj, 'declareDate', res.data.insOrderTemplate.declareDate)
          this.addObj.type = String(this.addObj.type)
          this.sampleList = this.HaveJson(res.data.sampleProduct);
          this.getProNum()
@@ -1165,10 +1156,9 @@
        })
      }).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
      })
@@ -1183,15 +1173,12 @@
        this.addObj.code = selects.code
        this.addObj.phone = selects.phone
        this.addObj.companyId = selects.departId
        if(this.active==1){
          this.selectInsOrderTemplateInfo()
        }
        // if(this.active==1){
        //   this.selectInsOrderTemplateInfo()
        // }
      })
    },
    getProNum() {
      this.sampleSelectionList.forEach((m, i) => {
        Vue.set(this.sampleSelectionList[i], 'proNum', m.insProduct.filter(a => a.state == 1).length)
      })
      this.$refs.sampleTable.doLayout()
    },
    searchFilter() {
@@ -1463,11 +1450,11 @@
      }
      return 'warning-row';
    },
    selectInsOrderTemplateInfo() {
      selectInsOrderTemplate({company: this.addObj.company}).then(res => {
        this.templates = res.data
      })
    },
    // selectInsOrderTemplateInfo() {
    //   selectInsOrderTemplate({company: this.addObj.company}).then(res => {
    //     this.templates = res.data
    //   })
    // },
    methodChange(val, row) {
      if (val === null || val === '') return
      if (this.sampleList.length > 1) {
@@ -1784,9 +1771,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>
@@ -1796,4 +1790,11 @@
  justify-content: space-between;
  margin-bottom: 10px;
}
>>>.warning-row {
  color: #1890FF;
}
.node_i {
  color: orange;
  font-size: 18px;
}
</style>