| | |
| | | <template> |
| | | <div> |
| | | <vol-box v-model="showDetialBox" :lazy="true" width="75%" :padding="15" title="åæ®æç»ä¿¡æ¯"> |
| | | <vol-box |
| | | v-model="showDetialBox" |
| | | :lazy="true" |
| | | width="75%" |
| | | :padding="15" |
| | | title="åæ®æç»ä¿¡æ¯" |
| | | > |
| | | <div class="box-head"> |
| | | <el-alert :closable="false" style="width: 100%"> |
| | | <el-row> |
| | |
| | | <span>å·²éä¸ {{ selection.length }} 项</span> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-link type="primary" size="small" v-if="isBatch === 0" style="float: right; height: 20px" |
| | | @click="handleOpenPicking">æ£é</el-link> |
| | | <el-link type="primary" size="small" style="float: right; height: 20px; margin-right: 10px" |
| | | v-if="isBatch === 1" @click="handleOpenBatchPicking">åæ¹æ£é</el-link> |
| | | <el-link type="primary" size="small" v-if="isBatch === 0" |
| | | style="float: right; height: 20px; margin-right: 10px" @click="outbound">ç´æ¥åºåº</el-link> |
| | | <el-link type="primary" size="small" v-if="isBatch === 1" |
| | | style="float: right; height: 20px; margin-right: 10px" @click="outboundbatch">åæ¹åºåº</el-link> |
| | | <el-link type="primary" size="small" style="float: right; height: 20px; margin-right: 10px" |
| | | @click="getData">å·æ°</el-link> |
| | | <el-link |
| | | type="primary" |
| | | size="small" |
| | | v-if="isBatch === 0 && mainBusinessType != '30'" |
| | | style="float: right; height: 20px" |
| | | @click="handleOpenPicking" |
| | | >æ£é</el-link |
| | | > |
| | | <el-link |
| | | type="primary" |
| | | size="small" |
| | | v-if="mainBusinessType === '30'" |
| | | style="float: right; height: 20px" |
| | | @click="handleOpenRecheckPicking" |
| | | >鿣æ£é</el-link |
| | | > |
| | | <el-link |
| | | type="primary" |
| | | size="small" |
| | | style="float: right; height: 20px; margin-right: 10px" |
| | | v-if="isBatch === 1" |
| | | @click="handleOpenBatchPicking" |
| | | >åæ¹æ£é</el-link |
| | | > |
| | | <el-link |
| | | type="primary" |
| | | size="small" |
| | | v-if="isBatch === 0 && mainBusinessType != '30'" |
| | | style="float: right; height: 20px; margin-right: 10px" |
| | | @click="outbound" |
| | | >ç´æ¥åºåº</el-link |
| | | > |
| | | <el-link |
| | | type="primary" |
| | | size="small" |
| | | v-if="isBatch === 1" |
| | | style="float: right; height: 20px; margin-right: 10px" |
| | | @click="outboundbatch" |
| | | >åæ¹åºåº</el-link |
| | | > |
| | | <el-link |
| | | type="primary" |
| | | size="small" |
| | | style="float: right; height: 20px; margin-right: 10px" |
| | | @click="getData" |
| | | >å·æ°</el-link |
| | | > |
| | | </el-col> |
| | | </el-row> |
| | | </el-alert> |
| | | </div> |
| | | <div class="box-table" style="margin-top: 1%"> |
| | | <el-table ref="singleTable" :data="tableData" style="width: 100%; height: 100%" highlight-current-row |
| | | @current-change="handleCurrentChange" height="500px" @row-click="handleRowClick" |
| | | @selection-change="handleSelectionChange"> |
| | | <el-table |
| | | ref="singleTable" |
| | | :data="tableData" |
| | | style="width: 100%; height: 100%" |
| | | highlight-current-row |
| | | @current-change="handleCurrentChange" |
| | | height="500px" |
| | | @row-click="handleRowClick" |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column type="selection" width="55"> </el-table-column> |
| | | <el-table-column label="åºå·" type="index" fixed="left" width="55" align="center"></el-table-column> |
| | | <el-table-column v-for="(item, index) in tableColumns.filter((x) => !x.hidden)" :key="index" :prop="item.prop" |
| | | :label="item.title" :width="item.width" align="center"> |
| | | <el-table-column |
| | | label="åºå·" |
| | | type="index" |
| | | fixed="left" |
| | | width="55" |
| | | align="center" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | v-for="(item, index) in tableColumns.filter((x) => !x.hidden)" |
| | | :key="index" |
| | | :prop="item.prop" |
| | | :label="item.title" |
| | | :width="item.width" |
| | | align="center" |
| | | > |
| | | <template #default="scoped"> |
| | | <div v-if="item.type == 'icon'"> |
| | | <el-tooltip class="item" effect="dark" :content="item.title" placement="bottom"> |
| | | <el-link type="primary" :disabled="getButtonEnable(item.prop, scoped.row)" |
| | | @click="tableButtonClick(scoped.row, item)"> |
| | | <el-tooltip |
| | | class="item" |
| | | effect="dark" |
| | | :content="item.title" |
| | | placement="bottom" |
| | | > |
| | | <el-link |
| | | type="primary" |
| | | :disabled="getButtonEnable(item.prop, scoped.row)" |
| | | @click="tableButtonClick(scoped.row, item)" |
| | | > |
| | | <i :class="item.icon" style="font-size: 22px"></i> |
| | | </el-link> |
| | | </el-tooltip> |
| | |
| | | </div> |
| | | </vol-box> |
| | | <stock-select ref="child" @parentCall="parentCall"></stock-select> |
| | | <selected-stock ref="selectedStock" @parentCall="parentCall"></selected-stock> |
| | | <selected-stock |
| | | ref="selectedStock" |
| | | @parentCall="parentCall" |
| | | ></selected-stock> |
| | | <NoStockOut ref="NoStockOut" @parentCall="parentCall"></NoStockOut> |
| | | <DirectOutbound ref="DirectOutbound" @parentCall="parentCall"></DirectOutbound> |
| | | <DirectOutbound |
| | | ref="DirectOutbound" |
| | | @parentCall="parentCall" |
| | | ></DirectOutbound> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | } from "element-plus"; |
| | | |
| | | export default { |
| | | components: { VolBox, VolForm, StockSelect, SelectedStock, NoStockOut, DirectOutbound }, |
| | | components: { |
| | | VolBox, |
| | | VolForm, |
| | | StockSelect, |
| | | SelectedStock, |
| | | NoStockOut, |
| | | DirectOutbound, |
| | | }, |
| | | data() { |
| | | return { |
| | | row: null, |
| | |
| | | width: 90, |
| | | }, |
| | | { |
| | | prop: "warehouseCode", |
| | | title: "ä»åºç¼å·", |
| | | type: "string", |
| | | width: 90, |
| | | }, |
| | | { |
| | | prop: "unit", |
| | | title: "åä½", |
| | | type: "string", |
| | |
| | | width: 90, |
| | | bindKey: "orderDetailStatusEnum", |
| | | }, |
| | | // { |
| | | // prop: "assignStock", |
| | | // title: "æå®åºå", |
| | | // type: "icon", |
| | | // width: 90, |
| | | // hidden: true, // é»è®¤éè |
| | | // icon: "el-icon-s-grid", |
| | | // }, |
| | | { |
| | | prop: "assignStock", |
| | | title: "æå®åºå", |
| | | type: "icon", |
| | | width: 90, |
| | | //hidden: true, // é»è®¤éè |
| | | icon: "el-icon-s-grid", |
| | | }, |
| | | { |
| | | prop: "viewDetail", |
| | | title: "åºåºè¯¦ç»", |
| | |
| | | const assignStockColumn = this.tableColumns.find( |
| | | (item) => item.prop === "assignStock" |
| | | ); |
| | | if (assignStockColumn) { |
| | | // businessType为22æ¶æ¾ç¤ºï¼å¦åéè |
| | | assignStockColumn.hidden = this.mainBusinessType !== '22'; |
| | | } |
| | | // if (assignStockColumn) { |
| | | // // businessType为22æ¶æ¾ç¤ºï¼å¦åéè |
| | | // assignStockColumn.hidden = this.mainBusinessType !== '22'; |
| | | // } |
| | | }, |
| | | open(row) { |
| | | this.row = row; |
| | |
| | | }); |
| | | }, |
| | | tableButtonClick(row, column) { |
| | | if (column.prop == "assignStock") { |
| | | this.$refs.child.open(row); |
| | | } else if (column.prop == "NoStockOut") { |
| | | this.$refs.NoStockOut.open(row); |
| | | } else { |
| | | this.$refs.selectedStock.open(row); |
| | | } |
| | | }, |
| | | if (column.prop == "assignStock") { |
| | | this.$refs.child.open(row,this.row.orderNo); |
| | | } else if (column.prop == "NoStockOut") { |
| | | this.$refs.NoStockOut.open(row); |
| | | } else { |
| | | this.$refs.selectedStock.open(row); |
| | | |
| | | } |
| | | }, |
| | | |
| | | lockstocks() { |
| | | if (this.selection.length === 0) { |
| | | return this.$message.error("è¯·éæ©åæ®æç»"); |
| | |
| | | query: { orderId: this.row.id, orderNo: this.row.orderNo }, |
| | | }); |
| | | }, |
| | | handleOpenRecheckPicking() { |
| | | this.$router.push({ |
| | | path: "/outbound/recheckOutPicking", |
| | | query: { orderId: this.row.id, orderNo: this.row.orderNo }, |
| | | }); |
| | | }, |
| | | outbound() { |
| | | if (this.selection.length === 0) { |
| | | return this.$message.error("è¯·éæ©åæ®æç»"); |
| | | } |
| | | if (this.selection.length === 0) { |
| | | return this.$message.error("è¯·éæ©åæ®æç»"); |
| | | } |
| | | |
| | | const keys = this.selection.map((item) => item.id); |
| | | const requestParams = { |
| | | detailIds: keys, |
| | | outboundQuantity: 1, |
| | | operator: "", |
| | | orderNo: this.row.orderNo, |
| | | isBatch: this.isBatch |
| | | }; |
| | | console.log(requestParams); |
| | | this.$refs.DirectOutbound.open(requestParams); |
| | | }, |
| | | outboundbatch() { |
| | | if (this.selection.length === 0) { |
| | | return this.$message.error("è¯·éæ©åæ®æç»"); |
| | | } |
| | | |
| | | const keys = this.selection.map((item) => item.id); |
| | | const requestParams = { |
| | | detailIds: keys, |
| | | outboundQuantity: this.selection.length>1?1: this.selection[0].orderQuantity, |
| | | operator: "", |
| | | orderNo: this.row.orderNo, |
| | | isBatch: this.isBatch |
| | | }; |
| | | console.log(requestParams); |
| | | this.$refs.DirectOutbound.open(requestParams); |
| | | const keys = this.selection.map((item) => item.id); |
| | | const requestParams = { |
| | | detailIds: keys, |
| | | outboundQuantity: 1, |
| | | operator: "", |
| | | orderNo: this.row.orderNo, |
| | | isBatch: this.isBatch, |
| | | }; |
| | | console.log(requestParams); |
| | | this.$refs.DirectOutbound.open(requestParams); |
| | | }, |
| | | |
| | | outboundbatch() { |
| | | if (this.selection.length === 0) { |
| | | return this.$message.error("è¯·éæ©åæ®æç»"); |
| | | } |
| | | |
| | | }, |
| | | const keys = this.selection.map((item) => item.id); |
| | | |
| | | // è®¡ç®ææé䏿ç»çå¯åºåºæ°éæ»å |
| | | let totalOutboundQuantity = 0; |
| | | this.selection.forEach(item => { |
| | | // ç±»å转æ¢+容éï¼é¿å
éæ°åå¼å¯¼è´è®¡ç®é误 |
| | | const orderQty = Number(item.orderQuantity) || 0; |
| | | const lockQty = Number(item.lockQuantity) || 0; |
| | | totalOutboundQuantity += (orderQty - lockQty); |
| | | }); |
| | | |
| | | const requestParams = { |
| | | detailIds: keys, |
| | | outboundQuantity: totalOutboundQuantity, |
| | | operator: "", |
| | | orderNo: this.row.orderNo, |
| | | isBatch: this.isBatch, |
| | | }; |
| | | console.log("åæ¹åºåºåæ°ï¼", requestParams); |
| | | this.$refs.DirectOutbound.open(requestParams); |
| | | }, |
| | | setCurrent(row) { |
| | | this.$refs.singleTable.setCurrentRow(row); |
| | | }, |
| | |
| | | background: oldlace; |
| | | } |
| | | |
| | | .box-table .el-table tbody tr:hover>td { |
| | | .box-table .el-table tbody tr:hover > td { |
| | | background-color: #d8e0d4 !important; |
| | | } |
| | | |
| | | .box-table .el-table tbody tr.current-row>td { |
| | | .box-table .el-table tbody tr.current-row > td { |
| | | background-color: #f0f9eb !important; |
| | | } |
| | | |