From 4963aa4888fc1bcfa6de0c392ee26a134a460cfe Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期三, 05 六月 2024 14:55:43 +0800
Subject: [PATCH] 货盘运输移库数量预填写

---
 src/views/warehouse/pallettransports/index.vue |  351 ++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 244 insertions(+), 107 deletions(-)

diff --git a/src/views/warehouse/pallettransports/index.vue b/src/views/warehouse/pallettransports/index.vue
index 88d665f..711c212 100644
--- a/src/views/warehouse/pallettransports/index.vue
+++ b/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>
@@ -17,7 +31,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="鍗曢��">
@@ -47,13 +62,19 @@
             <div>
               <el-button type="text" v-if="permissions.warehouse_pallettransports_demand_add"
                 @click="openPartDialog">鏂板</el-button><el-button type="text"
-                v-if="permissions.warehouse_pallettransports_ifs" @click="openLocationDialog">IFS鑷冲簱浣�</el-button>
+                v-if="permissions.warehouse_pallettransports_ifs" @click="openLocationDialog">绉昏嚦搴撲綅</el-button>
             </div>
           </div>
           <div>
-            <el-table class="pallet-transports-material-table" :data="palletTransportsMaterialData" style="width: 100%;"
-              height="350px" border @selection-change="palletTransportsMaterialSelectionChange" stripe
+            <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="澶氶��">
+					        <template slot-scope="scope">
+						        <el-checkbox v-model="scope.row.commonChecked" @change="handleCurrentChange(scope.row)" ></el-checkbox>
+					        </template>
+				      </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>
@@ -73,14 +94,14 @@
               </el-table-column>
               <el-table-column prop="unit" label="璁¢噺鍗曚綅" align="center">
               </el-table-column>
-              <el-table-column prop="toIfsLocationNo" label="IFS鑷冲簱浣�" align="center">
+              <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>
-                  <el-button v-show="scope.row.canEdit" type="text" :disabled="scope.row.detailExistState"
-                    @click="updateMaterial(scope.row)">淇濆瓨</el-button>
+                  <!-- <el-button v-show="!scope.row.canEdit" type="text" :disabled="scope.row.detailExistState"
+                    @click="scope.row.canEdit = true">缂栬緫</el-button> -->
+                  <!-- <el-button v-show="scope.row.canEdit" type="text" :disabled="scope.row.detailExistState"
+                    @click="updateMaterial(scope.row)">淇濆瓨</el-button> -->
                   <el-button type="text" :disabled="scope.row.detailExistState"
                     @click="delMaterial(scope.row)">鍒犻櫎</el-button>
                 </template>
@@ -89,21 +110,22 @@
           </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
                 ].partDesc
                 : ''
-              }})</span>
+              }})</span> -->
             </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
-                @click="executeMove">鎵� 琛�</el-button>
+                @click="updateStockFun">鎵� 琛�</el-button>
             </div>
           </div>
           <div>
@@ -111,27 +133,35 @@
               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 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="transferQuantity" 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="IFS鑷冲簱浣�" align="center">
-                <template slot-scope="scope">
+              <!-- <el-table-column prop="fromIfsLocationNo" label="IFS浠庡簱浣�" align="center">
+              </el-table-column> -->
+              <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">
@@ -144,10 +174,10 @@
                   }}</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>
+                  <!-- <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>
@@ -173,6 +203,7 @@
       <!-- 寮圭獥, 鏄庣粏鐨処FS搴撲綅鍒楄〃 -->
       <detailIfsLocationDialog :currshowlist.sync="showDetailLocation" :detailList="detailList"
         @refreshDataList="selectDetailLocationCallback" />
+        
     </basic-container>
   </div>
 </template>
@@ -186,7 +217,10 @@
   delPalletTransportsMaterialObj,
   palletTransportsDetailFetchList,
   delPalletTransportsDetailObj,
-  executeMoveLocation
+  executeMoveLocation,
+  selectAll,
+  updateStock,
+  updataStatus,
 } from '@/api/warehouse/pallettransports'
 import { getByPalletTransId } from '@/api/plan/operationtask'
 import ttable from '@/views/common/ztt-table.vue'
@@ -198,10 +232,18 @@
 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 {
+      taskTypeArr: [
+        {label:"鑽夌"},
+        {label:"杩涜涓�"},
+        {label:"宸插畬鎴�"},
+    ],
+    command:"",
+      forbidden:false,
+      partDesc: null,
       ajaxFun: palletTransportsFetchList,
       currPalletTransportsRow: null,
       palletTransportsMaterialMultipleSelection: [],
@@ -211,6 +253,8 @@
         isShow: false,
         url: ''
       },
+      WorkOrder:{},
+      datalistAPI:'',
       prelang: 'pallettransports',
       options: {
         height: 300, // 榛樿楂樺害-涓轰簡琛ㄥご鍥哄畾
@@ -292,14 +336,7 @@
           }
         ],
         toolbar: [],
-        operator: [
-          {
-            text: '鍒犻櫎',
-            type: 'text',
-            size: 'small',
-            fun: this.deleteHandle
-          }
-        ],
+        operator: null,
         operatorConfig: {
           fixed: 'right',
           label: '鎿嶄綔',
@@ -321,6 +358,7 @@
       detailList: [],
       palletTransportsOptaskData: [],
       currOptask: null,
+      cid:null,
       stateOptions: [
         { value: 'draft', label: '鑽夌' },
         { value: 'processing', label: '杩涜涓�' },
@@ -343,8 +381,101 @@
   computed: {
     ...mapGetters(['permissions'])
   },
-  created() { },
+  watch:{
+  },
+  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.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) {
       this.stateOptions.forEach((obj) => {
@@ -393,7 +524,8 @@
                 unit: item.unit,
                 transportsId: item.transportsId,
                 detailExistState: item.detailExistState,
-                canEdit: false
+                canEdit: false,
+                commonChecked: false
               }
               this.palletTransportsMaterialData.push(palletTransportsMaterial)
             })
@@ -414,31 +546,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) {
@@ -509,12 +616,10 @@
     openLocationDialog() {
       if (this.palletTransportsMaterialMultipleSelection.length > 0) {
         let flag = true
-        console.log(this.palletTransportsMaterialMultipleSelection)
         this.palletTransportsMaterialMultipleSelection.forEach((item) => {
           if (item.detailExistState) {
             flag = false
           }
-          console.log(item.detailExistState)
         })
         if (flag) {
           this.showLocation = true
@@ -567,22 +672,51 @@
         }
       })
     },
-    // 鎵撳紑ifs鐗╂枡搴撳瓨鍒楄〃
-    openStockDialog() {
-      if (this.palletTransportsMaterialMultipleSelection.length > 0) {
-        this.showStock = true
-      } else {
-        this.$message.error('璇峰厛閫夋嫨鐗╂枡闇�姹�')
-      }
+    // 鑾峰彇绉诲簱鏄庣粏鏁版嵁鍒楄〃
+    getPalletTransportsDetailData() {
+      let transportsDetails =[]
+      transportsDetails = this.palletTransportsMaterialMultipleSelection.map(el =>{
+        return{
+          partNo:el.partNo,
+          partDesc: el.partDesc,
+          transferQuantity: el.demandQuantity,
+          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]
+                this.palletTransportsMaterialData.forEach(ele=>{
+                  if(ele.id==materialRow.id){
+                      ele.transferQuantity = materialRow.surplusQuantity
+                      ele.surplusQuantity = 0
+                  }
+                })
+                this.getPalletTransportsMaterialData()
+              } else {
+                this.$message.error('娣诲姞绉诲簱鏄庣粏澶辫触')
+              }
+              // this.getPalletTransportsMaterialData()
+              this.palletTransportsMaterialSelectionChange()
+            })
+            // .catch(() => {
+            // })
+        }
     },
     // 娣诲姞ifs鐗╂枡搴撳瓨鍥炶皟
     addIfsStockCallback() {
-      // 鍒锋柊鐗╂枡闇�姹傘�佸埛鏂扮Щ搴撴槑缁�
-      // this.getPalletTransportsMaterialData()
-      // 鍒锋柊璐х洏杩愯緭浠诲姟鍒楄〃
-      // if (this.showStock) {
-      // this.getPallettransportsData()
-      // }
       const currRow = this.currPalletTransportsRow
       this.getPallettransportsData().then(() => {
         if (currRow) {
@@ -614,24 +748,22 @@
       if (row.state === '01initial') {
         this.detailList = []
         this.detailList.push(row)
-        this.showDetailLocation = true
+        // this.showDetailLocation = true
       } else {
         this.$message.error('绉诲簱鏄庣粏宸叉墽琛�')
       }
     },
     // 鍒犻櫎绉诲簱鏄庣粏
     delDetail(row) {
-      /* const delRow = this.palletTransportsDetailData.find((item) => {
+       const delRow = this.palletTransportsDetailData.find((item) => {
         return item.id === row.id
-      }) */
-
+      }) 
       delPalletTransportsDetailObj(row.id).then((response) => {
         const resData = response.data
         if (resData.code === 0) {
-          // const findRowIndex = this.palletTransportsDetailData.indexOf(delRow)
-          // this.palletTransportsDetailData.splice(findRowIndex, 1)
+          const findRowIndex = this.palletTransportsDetailData.indexOf(delRow)
+          this.palletTransportsDetailData.splice(findRowIndex, 1)
           this.$message.success('绉诲簱鏄庣粏鍒犻櫎鎴愬姛')
-          // this.getPalletTransportsMaterialData()
           const currRow = this.currPalletTransportsRow
           this.getPallettransportsData().then(() => {
             if (currRow) {
@@ -640,6 +772,28 @@
           })
         } else {
           this.$message.error('绉诲簱鏄庣粏鍒犻櫎澶辫触')
+        }
+      })
+    },
+    //鏀瑰彉
+    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()
         }
       })
     },
@@ -663,6 +817,7 @@
             if (resData.code === 0) {
               this.$message.success('鎵ц鎴愬姛')
               // this.getPalletTransportsMaterialData()
+              this.palletTransportsDetailData=[]
               const currRow = this.currPalletTransportsRow
               this.getPallettransportsData().then(() => {
                 if (currRow) {
@@ -679,6 +834,7 @@
       } else {
         this.$message.error('璇烽�夋嫨绉诲簱鏄庣粏')
       }
+     
     },
     selectDetailLocationCallback() {
       this.getPalletTransportsDetailData()
@@ -687,26 +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 (this.palletTransportsMaterialMultipleSelection.length > 0) {
-        const currPalletTransportsMaterial = this
-          .palletTransportsMaterialMultipleSelection[
-          this.palletTransportsMaterialMultipleSelection.length - 1
-        ]
-        this.materialRow = currPalletTransportsMaterial
-      } else {
-        this.materialRow = null
-      }
-      this.getPalletTransportsDetailData()
     },
     palletTransportsDetailSelectionChange(val) {
       this.palletTransportsDetailMultipleSelection = val
@@ -723,6 +859,7 @@
       })
     },
     optaskRowClick(row, column) {
+      this.WorkOrder = row
       this.palletTransportsOptaskData.forEach((item) => {
         if (row.id !== item.id) {
           item.commonChecked = false

--
Gitblit v1.9.3