From 1378fc4cd7abc24ed3a982e09437c2c8a74e9f2f Mon Sep 17 00:00:00 2001
From: 647556386 <647556386@qq.com>
Date: 星期二, 27 一月 2026 19:06:32 +0800
Subject: [PATCH] 代码优化
---
项目代码/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue | 232 ++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 178 insertions(+), 54 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue"
index decb2fd..59d95f2 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue"
@@ -14,23 +14,34 @@
<span>宸查�変腑 {{ selection.length }} 椤�</span>
</el-col>
<el-col :span="8">
- <!-- <el-link
- type="primary"
- size="small"
- style="float: right; height: 20px"
- @click="lockstocks"
- >閿佸畾搴撳瓨</el-link> -->
-
<el-link
type="primary"
size="small"
+ v-if="isBatch === 0 && mainBusinessType != '30'"
style="float: right; height: 20px"
@click="handleOpenPicking"
- >鎷i��</el-link>
-
+ >鎷i��</el-link
+ >
<el-link
type="primary"
size="small"
+ v-if="mainBusinessType === '30'"
+ style="float: right; height: 20px"
+ @click="handleOpenRecheckPicking"
+ >閲嶆鎷i��</el-link
+ >
+ <el-link
+ type="primary"
+ size="small"
+ style="float: right; height: 20px; margin-right: 10px"
+ v-if="isBatch === 1"
+ @click="handleOpenBatchPicking"
+ >鍒嗘壒鎷i��</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
@@ -38,11 +49,19 @@
<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-col>
</el-row>
</el-alert>
</div>
@@ -80,18 +99,23 @@
effect="dark"
:content="item.title"
placement="bottom"
- ><el-link
+ >
+ <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>
+ >
+ <i :class="item.icon" style="font-size: 22px"></i>
+ </el-link>
+ </el-tooltip>
</div>
-
<div v-else-if="item.type == 'tag'">
<el-tag size="small">
{{ getDictionary(scoped.row, item) }}
</el-tag>
+ </div>
+ <div v-else>
+ {{ scoped.row[item.prop] }}
</div>
</template>
</el-table-column>
@@ -103,23 +127,52 @@
ref="selectedStock"
@parentCall="parentCall"
></selected-stock>
+ <NoStockOut ref="NoStockOut" @parentCall="parentCall"></NoStockOut>
+ <DirectOutbound
+ ref="DirectOutbound"
+ @parentCall="parentCall"
+ ></DirectOutbound>
</div>
</template>
+
<script>
import VolBox from "@/components/basic/VolBox.vue";
import VolForm from "@/components/basic/VolForm.vue";
import StockSelect from "./StockSelect.vue";
import SelectedStock from "./SelectedStock.vue";
+import NoStockOut from "./NoStockOut.vue";
+import DirectOutbound from "./DirectOutbound.vue";
+import { h, createVNode, render, reactive } from "vue";
+import {
+ ElDialog,
+ ElForm,
+ ElFormItem,
+ ElSelect,
+ ElOption,
+ ElButton,
+ ElInput,
+ ElMessage,
+} from "element-plus";
+
export default {
- components: { VolBox, VolForm, StockSelect, SelectedStock },
+ components: {
+ VolBox,
+ VolForm,
+ StockSelect,
+ SelectedStock,
+ NoStockOut,
+ DirectOutbound,
+ },
data() {
return {
row: null,
+ isBatch: 0,
showDetialBox: false,
flag: false,
currentRow: null,
selection: [],
tableData: [],
+ mainBusinessType: null, // 鏂板锛氬瓨鍌ㄤ富鍗曟嵁鐨刡usinessType
tableColumns: [
{
prop: "id",
@@ -139,7 +192,7 @@
prop: "materielCode",
title: "鐗╂枡缂栧彿",
type: "string",
- width: 150,
+ width: 120,
},
{
prop: "materielName",
@@ -150,6 +203,12 @@
{
prop: "batchNo",
title: "鎵规鍙�",
+ type: "string",
+ width: 90,
+ },
+ {
+ prop: "supplyCode",
+ title: "渚涘簲鍟嗙紪鍙�",
type: "string",
width: 90,
},
@@ -172,16 +231,28 @@
width: 90,
},
{
+ prop: "moveQty",
+ title: "鎸枡鏁伴噺",
+ type: "string",
+ width: 90,
+ },
+ {
+ prop: "warehouseCode",
+ title: "浠撳簱缂栧彿",
+ type: "string",
+ width: 90,
+ },
+ {
prop: "unit",
title: "鍗曚綅",
type: "string",
- width: 90,
+ width: 80,
},
{
prop: "orderDetailStatus",
title: "璁㈠崟鏄庣粏鐘舵��",
type: "tag",
- width: 180,
+ width: 90,
bindKey: "orderDetailStatusEnum",
},
{
@@ -189,6 +260,7 @@
title: "鎸囧畾搴撳瓨",
type: "icon",
width: 90,
+ //hidden: true, // 榛樿闅愯棌
icon: "el-icon-s-grid",
},
{
@@ -233,9 +305,8 @@
order: "desc",
Foots: "",
total: 0,
- // 2020.08.29澧炲姞鑷畾涔夊垎椤垫潯澶у皬
sizes: [30, 60, 100, 120],
- size: 30, // 榛樿鍒嗛〉澶у皬
+ size: 30,
Wheres: [],
page: 1,
rows: 30,
@@ -272,11 +343,24 @@
};
},
methods: {
+ toggleAssignStockColumn() {
+ const assignStockColumn = this.tableColumns.find(
+ (item) => item.prop === "assignStock"
+ );
+ // if (assignStockColumn) {
+ // // businessType涓�22鏃舵樉绀猴紝鍚﹀垯闅愯棌
+ // assignStockColumn.hidden = this.mainBusinessType !== '22';
+ // }
+ },
open(row) {
this.row = row;
this.showDetialBox = true;
+ console.log("涓诲崟鎹暟鎹細", this.row);
+ this.isBatch = row.isBatch;
+ this.mainBusinessType = row.businessType;
this.getDictionaryData();
this.getData();
+ this.toggleAssignStockColumn();
},
getData() {
var wheres = [{ name: "orderId", value: this.row.id }];
@@ -285,27 +369,31 @@
rows: this.paginations.rows,
sort: this.paginations.sort,
order: this.paginations.order,
- wheres: JSON.stringify(wheres), // 鏌ヨ鏉′欢锛屾牸寮忎负[{ name: "瀛楁", value: "xx" }]
+ wheres: JSON.stringify(wheres),
};
this.http
.post("api/OutboundOrderDetail/GetPageData", param, "鏌ヨ涓�")
.then((x) => {
this.tableData = x.rows;
+ this.toggleAssignStockColumn(); // 鏁版嵁鍔犺浇鍚庨噸鏂扮‘璁ゅ垪鏄鹃殣
});
},
tableButtonClick(row, column) {
- if (column.prop == "assignStock") {
- this.$refs.child.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("璇烽�夋嫨鍗曟嵁鏄庣粏");
}
- var keys = this.selection.map((item) => item.id); // 鑾峰彇閫変腑琛岀殑id
+ var keys = this.selection.map((item) => item.id);
this.http
.post("api/OutboundOrderDetail/LockOutboundStocks", keys, "鏁版嵁澶勭悊涓�")
.then((x) => {
@@ -317,30 +405,67 @@
});
});
},
- // 鎵撳紑鎷i�夐〉闈�
- handleOpenPicking() {
+ handleOpenPicking() {
this.$router.push({
- path: '/outbound/picking',
- query: { orderId: this.row.id }
- })
+ path: "/outbound/outPicking",
+ query: { orderId: this.row.id, orderNo: this.row.orderNo },
+ });
+ },
+ handleOpenBatchPicking() {
+ this.$router.push({
+ path: "/outbound/outPicking",
+ 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("璇烽�夋嫨鍗曟嵁鏄庣粏");
- }
- var keys = this.selection.map((item) => item.id); // 鑾峰彇閫変腑琛岀殑id
+ if (this.selection.length === 0) {
+ return this.$message.error("璇烽�夋嫨鍗曟嵁鏄庣粏");
+ }
- this.http
- .post("api/Task/GenerateOutboundTasks", keys, "鏁版嵁澶勭悊涓�")
- .then((x) => {
- if (!x.status) return this.$message.error(x.message);
- this.$message.success("鎿嶄綔鎴愬姛");
- this.showDetialBox = false;
- this.$emit("parentCall", ($vue) => {
- $vue.getData();
- });
- });
- },
+ 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);
},
@@ -397,7 +522,6 @@
var item = this.dictionaryList.find((x) => x.dicNo == column.bindKey);
if (item) {
var dicItem = item.data.find((x) => x.key == row[column.prop]);
- console.log(dicItem);
if (dicItem) {
return dicItem.value;
} else {
@@ -407,10 +531,12 @@
return row[column.prop];
}
}
+ return row[column.prop];
},
},
};
</script>
+
<style scoped>
.text-button {
border: 0px;
@@ -428,12 +554,10 @@
.box-table .el-table tbody tr:hover > td {
background-color: #d8e0d4 !important;
- /* color: #ffffff; */
}
.box-table .el-table tbody tr.current-row > td {
background-color: #f0f9eb !important;
- /* color: #ffffff; */
}
.el-table .success-row {
@@ -443,4 +567,4 @@
.box-table .el-table {
border: 1px solid #ebeef5;
}
-</style>
+</style>
\ No newline at end of file
--
Gitblit v1.9.3