zouyu
2023-11-29 138bb761fd3db288abc233c2e21d98c82197d035
src/views/warehouse/pallettransports/index.vue
@@ -17,7 +17,8 @@
            <div></div>
          </div>
          <div style="padding:0px 20px 0px;">
            <el-table class="pallet-transports-optask-table" :data="palletTransportsOptaskData" style="width: 100%;"
            <el-table class="pallet-transports-optask-table" :data="palletTransportsOptaskData"
            style="width: 100%;"
              v-adaptive="{ bottomOffset: 20, fixedHeight: 0 }" height="100px" border highlight-current-row
              @row-click="optaskRowClick" stripe ref="palletTransportsOptaskTable">
              <el-table-column align="center" width="55" label="单选">
@@ -89,7 +90,8 @@
          </div>
          <div style="margin-top:10px;display:flex;height:36px;justify-content: space-between;align-items:center;">
            <div>
              <span style="font-weight:bold;">移库明细</span><span style="color:red;">({{
              <span style="font-weight:bold;">移库明细</span>
              <span style="color:red;">({{
                palletTransportsMaterialMultipleSelection.length > 0
                ? palletTransportsMaterialMultipleSelection[
                  palletTransportsMaterialMultipleSelection.length - 1
@@ -99,7 +101,7 @@
            </div>
            <div>
              <el-button type="primary" v-if="permissions.warehouse_pallettransports_detail_add" round
                @click="openStockDialog">添加明细</el-button>
                @click="getPalletTransportsDetailData">添加明细</el-button>
              <!-- <el-button type="warning" v-if="permissions.warehouse_pallettransports_detail_library" round
                @click="openDetailLocationDialog">一键至库位</el-button> -->
              <el-button type="success" v-if="permissions.warehouse_pallettransports_detail_execute" round
@@ -111,27 +113,27 @@
              v-adaptive="{ bottomOffset: 20, fixedHeight: 0 }" height="100px" border
              @selection-change="palletTransportsDetailSelectionChange" stripe ref="palletTransportsDetailTable">
              <el-table-column type="selection" width="55"> </el-table-column>
              <el-table-column prop="partNo" label="零件号" align="center" show-overflow-tooltip>
              <el-table-column prop="part_no" label="零件号" align="center" show-overflow-tooltip>
              </el-table-column>
              <el-table-column prop="partDesc" label="零件描述" align="center" show-overflow-tooltip>
              <el-table-column prop="part_desc" label="零件描述" align="center" show-overflow-tooltip>
              </el-table-column>
              <el-table-column prop="batchNo" label="批次号" align="center" show-overflow-tooltip>
              <!-- <el-table-column prop="batchNo" label="批次号" align="center" show-overflow-tooltip>
              </el-table-column>
              <el-table-column prop="wdr" label="WDR" align="center">
              </el-table-column> -->
              <el-table-column prop="operation_task_no" label="工单" align="center" show-overflow-tooltip>
              </el-table-column>
              <el-table-column prop="operationTaskNo" label="工单" align="center" show-overflow-tooltip>
              </el-table-column>
              <el-table-column prop="transferQuantity" label="移库数量" align="center">
              <el-table-column prop="transfer_quantity" label="移库数量" align="center">
              </el-table-column>
              <el-table-column prop="unit" label="单位" align="center">
              </el-table-column>
              <!-- <el-table-column prop="fromIfsLocationNo" label="IFS从库位" align="center">
              </el-table-column> -->
              <el-table-column prop="toIfsLocationNo" label="移至库位" align="center">
                <template slot-scope="scope">
              <el-table-column prop="to_ifs_location_no" label="移至库位" align="center">
                <!-- <template slot-scope="scope">
                  <el-link type="primary" @click="openSingleLocationDialog(scope.row)">{{ scope.row.toIfsLocationNo
                  }}</el-link>
                </template>
                </template> -->
              </el-table-column>
              <el-table-column prop="state" label="状态" align="center">
                <template slot-scope="scope">
@@ -146,8 +148,8 @@
              </el-table-column>
              <el-table-column label="操作" align="center" width="85">
                <template slot-scope="scope">
                  <el-button type="text" @click="openEditStockDialog(scope.row)"
                    :disabled="scope.row.state === '01initial' ? false : true">编辑</el-button>
                  <!-- <el-button type="text" @click="openEditStockDialog(scope.row)"
                    :disabled="scope.row.state === '01initial' ? false : true">编辑</el-button> -->
                  <el-button type="text" @click="delDetail(scope.row)"
                    :disabled="scope.row.state === '01initial' ? false : true">删除</el-button>
                </template>
@@ -186,7 +188,8 @@
  delPalletTransportsMaterialObj,
  palletTransportsDetailFetchList,
  delPalletTransportsDetailObj,
  executeMoveLocation
  executeMoveLocation,
  selectAll,
} from '@/api/warehouse/pallettransports'
import { getByPalletTransId } from '@/api/plan/operationtask'
import ttable from '@/views/common/ztt-table.vue'
@@ -198,10 +201,11 @@
import detailIfsLocationDialog from './detail-ifslocation-form'
import adaptive from '@/util/adaptive'
import { mapGetters } from 'vuex'
import { saveBatchPalletTransportsDetail } from '@/api/warehouse/pallettransports'
export default {
  data() {
    return {
      partDesc: null,
      ajaxFun: palletTransportsFetchList,
      currPalletTransportsRow: null,
      palletTransportsMaterialMultipleSelection: [],
@@ -211,6 +215,8 @@
        isShow: false,
        url: ''
      },
      WorkOrder:{},
      datalistAPI:'',
      prelang: 'pallettransports',
      options: {
        height: 300, // 默认高度-为了表头固定
@@ -343,6 +349,15 @@
  computed: {
    ...mapGetters(['permissions'])
  },
  watch:{
    palletTransportsMaterialMultipleSelection(newVal){
      if(newVal.length>0){
        this.palletTransportsMaterialSelectionChange(newVal)
      }else{
        this.palletTransportsDetailData = []
      }
    }
  },
  created() { },
  methods: {
    // 工艺类型中文格式化
@@ -414,31 +429,6 @@
          }
        }
      })
    },
    // 获取移库明细数据列表
    getPalletTransportsDetailData() {
      this.palletTransportsDetailData = []
      if (this.palletTransportsMaterialMultipleSelection.length > 0) {
        const currPalletTransportsMaterial = this
          .palletTransportsMaterialMultipleSelection[
          this.palletTransportsMaterialMultipleSelection.length - 1
        ]
        const queryParam = Object.assign(
          {
            current: 1,
            size: 200
          },
          {
            transportsMaterialId: currPalletTransportsMaterial.id
          }
        )
        palletTransportsDetailFetchList(queryParam).then((response) => {
          const resData = response.data
          if (resData.code === 0) {
            this.palletTransportsDetailData = resData.data.records
          }
        })
      }
    },
    // 新增 / 修改
    addOrUpdateHandle(row) {
@@ -567,22 +557,54 @@
        }
      })
    },
    // 打开ifs物料库存列表
    openStockDialog() {
      if (this.palletTransportsMaterialMultipleSelection.length > 0) {
        this.showStock = true
      } else {
        this.$message.error('请先选择物料需求')
      }
    // 获取移库明细数据列表
    getPalletTransportsDetailData() {
      // console.log("对应工单",this.WorkOrder);
      // console.log("选中物料需求",this.palletTransportsMaterialMultipleSelection);
      let transportsDetails =[]
      transportsDetails = this.palletTransportsMaterialMultipleSelection.map(el =>{
        return{
          partNo:el.partNo,
          partDesc: el.partDesc,
          transferQuantity: el.surplusQuantity,
          toIfsLocationNo:el.toIfsLocationNo,
          toIfsLocationName: el.toIfsLocationName,
          transportsId: el.transportsId,
          transportsMaterialId:el.id,
          operationTaskNo:this.WorkOrder.optaskNo,
          operationTaskId:this.WorkOrder.id,
          unit: el.unit,
        }})
      // this.palletTransportsDetailData = transportsDetails
      if (transportsDetails.length > 0) {
        let selectionList = this.palletTransportsMaterialMultipleSelection
          saveBatchPalletTransportsDetail(transportsDetails)
            .then((response) => {
              const resData = response.data
              if (resData.code === 0) {
                this.innerVisible = false
                this.$message.success('添加移库明细成功')
                let materialRow = selectionList[selectionList.length - 1]
                console.log("materialRow-----",materialRow);
                this.palletTransportsMaterialData.forEach(ele=>{
                  if(ele.id==materialRow.id){
                    console.log("ele-------",ele);
                      ele.transferQuantity = materialRow.surplusQuantity
                      ele.surplusQuantity = 0
                  }
                })
              } else {
                this.$message.error('添加移库明细失败')
              }
              // this.getPalletTransportsMaterialData()
              this.palletTransportsMaterialSelectionChange(selectionList)
            })
            // .catch(() => {
            // })
        }
    },
    // 添加ifs物料库存回调
    addIfsStockCallback() {
      // 刷新物料需求、刷新移库明细
      // this.getPalletTransportsMaterialData()
      // 刷新货盘运输任务列表
      // if (this.showStock) {
      // this.getPallettransportsData()
      // }
      const currRow = this.currPalletTransportsRow
      this.getPallettransportsData().then(() => {
        if (currRow) {
@@ -611,10 +633,11 @@
    },
    // 打开单个明细批量更新库位弹框
    openSingleLocationDialog(row) {
      console.log(row);
      if (row.state === '01initial') {
        this.detailList = []
        this.detailList.push(row)
        this.showDetailLocation = true
        // this.showDetailLocation = true
      } else {
        this.$message.error('移库明细已执行')
      }
@@ -697,16 +720,26 @@
    },
    palletTransportsMaterialSelectionChange(val) {
      this.palletTransportsMaterialMultipleSelection = val
      if (this.palletTransportsMaterialMultipleSelection.length > 0) {
        const currPalletTransportsMaterial = this
          .palletTransportsMaterialMultipleSelection[
          this.palletTransportsMaterialMultipleSelection.length - 1
        ]
        this.materialRow = currPalletTransportsMaterial
      } else {
        this.materialRow = null
      console.log(this.palletTransportsMaterialMultipleSelection);
      if(val && val.length>0){
        let ids =[]
        this.palletTransportsMaterialMultipleSelection.forEach(el =>{ids.push(el.id)})
        let pId = ids[ids.length - 1];
        console.log(pId);
        if(pId!=null){
          selectAll({
              transportsId:this.currPalletTransportsRow.id,
              transportsMaterialId: pId
            }).then((res) =>{
              this.palletTransportsDetailData = []
              if(res.data.data){
                this.palletTransportsDetailData.push(res.data.data)
              }
              })
           }else{
            this.palletTransportsDetailData = []
           }
      }
      this.getPalletTransportsDetailData()
    },
    palletTransportsDetailSelectionChange(val) {
      this.palletTransportsDetailMultipleSelection = val
@@ -723,6 +756,7 @@
      })
    },
    optaskRowClick(row, column) {
      this.WorkOrder = row
      this.palletTransportsOptaskData.forEach((item) => {
        if (row.id !== item.id) {
          item.commonChecked = false