王震
2024-01-03 5c236f4f29be3417537f9a42d3ed5fb2a05be421
src/views/warehouse/pallettransports/index.vue
@@ -3,13 +3,27 @@
    <basic-container>
      <el-row>
        <el-col :span="9">
          <ttable :table="table" @currentChange="palletTransportsChange" :uploadInfo="uploadInfo" :prelang="prelang"
            :options="options" :ajaxFun="ajaxFun" :fixedHeight="palletTransportsFixedHeight" ref="pallettransportsTable">
            <template #toolbar>
              <el-button v-if="permissions.warehouse_pallettransports_add" type="primary"
                @click="addOrUpdateHandle()">新增</el-button>
                <el-dropdown style="margin-left: 20px;" @command="handleCommand">
                    <el-button >
                      状态变更<i class="el-icon-arrow-down el-icon--right"></i>
                    </el-button>
                    <el-dropdown-menu slot="dropdown">
                      <el-dropdown-item :key="index"
                        :command="item.label"
                        v-for="(item,index) in taskTypeArr"
                        >{{ item.label }}</el-dropdown-item
                      >
                    </el-dropdown-menu>
                </el-dropdown>
            </template>
          </ttable>
          <div style="margin:0px 20px 0px;display:flex;height:36px;justify-content: space-between;align-items:center;">
            <div>
              <span style="font-weight:bold;">对应工单</span>
@@ -52,15 +66,16 @@
            </div>
          </div>
          <div>
            <el-table class="pallet-transports-material-table" @current-change="handleCurrentChange"  :data="palletTransportsMaterialData" style="width: 100%;"
            <el-table class="pallet-transports-material-table" @selection-change="handleCurrentChange"  :data="palletTransportsMaterialData" style="width: 100%;"
              height="350px" border  stripe
              ref="palletTransportsMaterialTable">
                          <!--单选框 @selection-change="palletTransportsMaterialSelectionChange"-->
                  <el-table-column align="center"  width="55" label="单选">
                  <!-- <el-table-column align="center"  width="55" label="多选">
                       <template slot-scope="scope">
                          <el-checkbox v-model="scope.row.commonChecked" @change="handleCurrentChange(scope.row)" ></el-checkbox>
                       </template>
                  </el-table-column>
                  </el-table-column> -->
              <el-table-column type="selection" width="55"> </el-table-column>
              <el-table-column prop="partNo" label="零件号" align="center" show-overflow-tooltip>
              </el-table-column>
              <el-table-column prop="partDesc" label="零件描述" align="center" show-overflow-tooltip>
@@ -81,7 +96,7 @@
              </el-table-column>
              <el-table-column prop="toIfsLocationNo" label="移至库位" align="center">
              </el-table-column>
              <el-table-column label="操作" align="center" width="100">
              <el-table-column label="操作" align="center" width="100" v-if="permissions.warehouse_pallettransports_demand_edit">
                <template slot-scope="scope">
                  <!-- <el-button v-show="!scope.row.canEdit" type="text" :disabled="scope.row.detailExistState"
                    @click="scope.row.canEdit = true">编辑</el-button> -->
@@ -96,13 +111,13 @@
          <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="color:red;">({{
                palletTransportsMaterialMultipleSelection.length > 0
                ? palletTransportsMaterialMultipleSelection[
                  palletTransportsMaterialMultipleSelection.length - 1
                ].partDesc
                : ''
              }})</span>
              }})</span> -->
            </div>
            <div>
              <el-button type="primary" v-if="permissions.warehouse_pallettransports_detail_add" round
@@ -110,7 +125,7 @@
              <!-- <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
                @click="executeMove">执 行</el-button>
                @click="updateStockFun">执 行</el-button>
            </div>
          </div>
          <div>
@@ -118,6 +133,7 @@
              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="part_no" label="零件号" align="center" show-overflow-tooltip>
              </el-table-column>
              <el-table-column prop="part_desc" label="零件描述" align="center" show-overflow-tooltip>
@@ -128,8 +144,15 @@
              </el-table-column> -->
              <el-table-column prop="operation_task_no" label="工单" align="center" show-overflow-tooltip>
              </el-table-column>
              <el-table-column prop="transfer_quantity" label="移库数量" align="center">
                <template slot-scope="scope">
                  <el-input v-model="scope.row.transfer_quantity" @change="moveLocation(scope.row)" :disabled = "scope.row.state == '02submitted' "  border="none"></el-input>
                </template>
              </el-table-column>
              <el-table-column prop="unit" label="单位" align="center">
              </el-table-column>
              <!-- <el-table-column prop="fromIfsLocationNo" label="IFS从库位" align="center">
@@ -151,7 +174,7 @@
                  }}</span>
                </template>
              </el-table-column>
              <el-table-column label="操作" align="center" width="85">
              <el-table-column label="操作" align="center" width="85" v-if="permissions.warehouse_pallettransports_detail_edit">
                <template slot-scope="scope">
                  <!-- <el-button type="text" @click="openEditStockDialog(scope.row)"
                    :disabled="scope.row.state === '01initial' ? false : true">编辑</el-button> -->
@@ -180,6 +203,7 @@
      <!-- 弹窗, 明细的IFS库位列表 -->
      <detailIfsLocationDialog :currshowlist.sync="showDetailLocation" :detailList="detailList"
        @refreshDataList="selectDetailLocationCallback" />
    </basic-container>
  </div>
</template>
@@ -195,6 +219,8 @@
  delPalletTransportsDetailObj,
  executeMoveLocation,
  selectAll,
  updateStock,
  updataStatus,
} from '@/api/warehouse/pallettransports'
import { getByPalletTransId } from '@/api/plan/operationtask'
import ttable from '@/views/common/ztt-table.vue'
@@ -210,6 +236,13 @@
export default {
  data() {
    return {
      taskTypeArr: [
        {label:"草稿"},
        {label:"进行中"},
        {label:"已完成"},
    ],
    command:"",
      forbidden:false,
      partDesc: null,
      ajaxFun: palletTransportsFetchList,
      currPalletTransportsRow: null,
@@ -303,14 +336,7 @@
          }
        ],
        toolbar: [],
        operator: [
          {
            text: '删除',
            type: 'text',
            size: 'small',
            fun: this.deleteHandle
          }
        ],
        operator: null,
        operatorConfig: {
          fixed: 'right',
          label: '操作',
@@ -332,6 +358,7 @@
      detailList: [],
      palletTransportsOptaskData: [],
      currOptask: null,
      cid:null,
      stateOptions: [
        { value: 'draft', label: '草稿' },
        { value: 'processing', label: '进行中' },
@@ -355,27 +382,99 @@
    ...mapGetters(['permissions'])
  },
  watch:{
    palletTransportsMaterialMultipleSelection(newVal){
      if(newVal.length>0){
        this.palletTransportsMaterialSelectionChange(newVal)
      }else{
        this.palletTransportsDetailData = []
      }
    }
  },
  created() { },
  created() {
     if(this.permissions.warehouse_pallettransports_edit){
        this.table.operator = [
          {
            text: '删除',
            type: 'text',
            size: 'small',
            fun: this.deleteHandle
          }
        ]
     }
   },
  methods: {
    palletTransportsChange(val) {
      this.cid = val.id
      this.currPalletTransportsRow = val
      if (this.currPalletTransportsRow) {
        this.getPalletTransportsMaterialData()
        this.getOptasks()
        this.palletTransportsMaterialSelectionChange(val)
      }
    },
    palletTransportsMaterialSelectionChange() {
      if(this.cid){
        selectAll({transportsId:this.cid}).then((res)=>{
              this.palletTransportsDetailData = res.data.data.map(el =>{
                return{
                  part_no:el.partNo,
                  part_desc:el.partDesc,
                  operation_task_no:el.operationTaskNo,
                  transfer_quantity:el.transferQuantity,
                  unit:el.unit,
                  to_ifs_location_no:el.toIfsLocationName,
                  state:el.state,
                  id:el.id,
                }
              })
        })}
      // this.palletTransportsMaterialMultipleSelection = val
      // if(val && val.length>0){
      //   let ids =[]
      //   this.palletTransportsMaterialMultipleSelection.forEach(el =>{ids.push(el.id)})
      //   let pId = ids[ids.length - 1];
      //   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 = []
      //      }
      // }
    },
    //状态
    handleCommand(event){
      let str = ""
      console.log(event);
      if (event == "草稿") {
        str = "draft"
      }else if (event == "进行中") {
        str = "processing"
      }else{
        str = "finished"
      }
     if (this.cid) {
      updataStatus({id:this.cid,state:str}).then((res) =>{
        this.$refs.pallettransportsTable.getDataList()
      })
     }else{
        this.$message.error('请选择' + str + '的对象')
     }
    },
             // 单行选中
         handleCurrentChange(row) {
               this.palletTransportsMaterialData.forEach((item) => {
                  // 排他,每次选择时把其他选项都清除
                  if (item.id !== row.id) {
                     item.commonChecked = false
                  }else{
              item.commonChecked = true
            }
               })
          this.palletTransportsMaterialSelectionChange([row])
        this.palletTransportsMaterialMultipleSelection = row
               // this.palletTransportsMaterialData.forEach((item) => {
               //    // 排他,每次选择时把其他选项都清除
               //    if (item.id !== row.id) {
               //       item.commonChecked = false
               //    }else{
          //     item.commonChecked = true
          //   }
               // })
          // this.palletTransportsMaterialSelectionChange([row])
          // this.palletTransportsDetailData = data
         },
    // 工艺类型中文格式化
    formatStateType(row, column, cellValue) {
@@ -580,7 +679,7 @@
        return{
          partNo:el.partNo,
          partDesc: el.partDesc,
          transferQuantity: el.surplusQuantity,
          transferQuantity: 0,
          toIfsLocationNo:el.toIfsLocationNo,
          toIfsLocationName: el.toIfsLocationName,
          transportsId: el.transportsId,
@@ -605,11 +704,12 @@
                      ele.surplusQuantity = 0
                  }
                })
                this.getPalletTransportsMaterialData()
              } else {
                this.$message.error('添加移库明细失败')
              }
              // this.getPalletTransportsMaterialData()
              this.palletTransportsMaterialSelectionChange(selectionList)
              this.palletTransportsMaterialSelectionChange()
            })
            // .catch(() => {
            // })
@@ -675,6 +775,28 @@
        }
      })
    },
    //改变
    moveLocation(val){
      let num = Number(val.transfer_quantity)
      this.palletTransportsDetailMultipleSelection.forEach(el =>{
          el.transfer_quantity = num
      })
    },
    updateStockFun(){
      let data = []
      data = this.palletTransportsDetailMultipleSelection.map(el =>{
          return {
              id:el.id,
              transferQuantity:el.transfer_quantity
          }
      })
      updateStock(data).then((res) =>{
        if(res.data.code===0){
          this.getPalletTransportsMaterialData()
          this.executeMove()
        }
      })
    },
    // 执行移库
    executeMove() {
      if (
@@ -712,6 +834,7 @@
      } else {
        this.$message.error('请选择移库明细')
      }
    },
    selectDetailLocationCallback() {
      this.getPalletTransportsDetailData()
@@ -720,34 +843,6 @@
    openEditStockDialog(row) {
      this.currDetailRow = row
      this.showDetailStock = true
    },
    palletTransportsChange(val) {
      this.currPalletTransportsRow = val
      if (this.currPalletTransportsRow) {
        this.getPalletTransportsMaterialData()
        this.getOptasks()
      }
    },
    palletTransportsMaterialSelectionChange(val) {
      this.palletTransportsMaterialMultipleSelection = val
      if(val && val.length>0){
        let ids =[]
        this.palletTransportsMaterialMultipleSelection.forEach(el =>{ids.push(el.id)})
        let pId = ids[ids.length - 1];
        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 = []
           }
      }
    },
    palletTransportsDetailSelectionChange(val) {
      this.palletTransportsDetailMultipleSelection = val