From 1963e40fab4e4c8b3597a1853ce5a03264d7897f Mon Sep 17 00:00:00 2001
From: 647556386 <647556386@qq.com>
Date: 星期六, 13 十二月 2025 17:43:51 +0800
Subject: [PATCH] 1
---
项目代码/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue | 487 +++++++++++++++++++++--------------------------------
1 files changed, 195 insertions(+), 292 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 1a7d1a0..cc9b8be 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"
@@ -60,7 +60,7 @@
<div class="box-table" style="margin-top: 1%">
<el-table
ref="singleTable"
- :data="groupedTableData"
+ :data="tableData"
style="width: 100%; height: 100%"
highlight-current-row
@current-change="handleCurrentChange"
@@ -77,127 +77,38 @@
align="center"
></el-table-column>
<el-table-column
- prop="materielCode"
- label="鐗╂枡缂栧彿"
- width="120"
- align="center"
- ></el-table-column>
- <el-table-column
- prop="materielName"
- label="鐗╂枡鍚嶇О"
- width="150"
- align="center"
- ></el-table-column>
- <el-table-column
- prop="batchNo"
- label="鎵规鍙�"
- width="90"
- align="center"
- ></el-table-column>
- <el-table-column
- prop="supplyCode"
- label="渚涘簲鍟嗙紪鍙�"
- width="90"
- align="center"
- ></el-table-column>
- <el-table-column
- prop="orderQuantity"
- label="鍗曟嵁鏁伴噺"
- width="90"
- align="center"
- ></el-table-column>
- <el-table-column
- prop="lockQuantity"
- label="閿佸畾鏁伴噺"
- width="90"
- align="center"
- ></el-table-column>
- <el-table-column
- prop="overOutQuantity"
- label="宸插嚭鏁伴噺"
- width="90"
- align="center"
- ></el-table-column>
- <el-table-column
- prop="moveQty"
- label="鎸枡鏁伴噺"
- width="90"
- align="center"
- ></el-table-column>
- <el-table-column
- prop="unit"
- label="鍗曚綅"
- width="80"
- align="center"
- ></el-table-column>
- <el-table-column
- prop="orderDetailStatus"
- label="璁㈠崟鏄庣粏鐘舵��"
- width="90"
+ 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">
- <el-tag size="small">
- {{ getDictionaryForGroup(scoped.row) }}
- </el-tag>
- </template>
- </el-table-column>
- <el-table-column
- prop="assignStock"
- label="鎸囧畾搴撳瓨"
- width="90"
- align="center"
- :hidden="mainBusinessType !== '22'"
- >
- <template #default="scoped">
- <el-tooltip
- class="item"
- effect="dark"
- content="鎸囧畾搴撳瓨"
- placement="bottom"
- >
- <el-link
- type="primary"
- :disabled="getButtonEnable('assignStock', scoped.row)"
- @click="handleAssignStock(scoped.row)"
+ <div v-if="item.type == 'icon'">
+ <el-tooltip
+ class="item"
+ effect="dark"
+ :content="item.title"
+ placement="bottom"
>
- <i class="el-icon-s-grid" style="font-size: 22px"></i>
- </el-link>
- </el-tooltip>
- </template>
- </el-table-column>
- <el-table-column
- prop="viewDetail"
- label="鍑哄簱璇︾粏"
- width="90"
- align="center"
- >
- <template #default="scoped">
- <el-tooltip
- class="item"
- effect="dark"
- content="鏌ョ湅鍑哄簱璇︾粏"
- placement="bottom"
- >
- <el-link
- type="primary"
- @click="handleViewDetail(scoped.row)"
- >
- <i class="el-icon-s-operation" style="font-size: 22px"></i>
- </el-link>
- </el-tooltip>
- </template>
- </el-table-column>
- <el-table-column
- prop="detailCount"
- label="鏄庣粏鏁伴噺"
- width="80"
- align="center"
- >
- <template #default="scoped">
- <el-tag type="info" size="small">
- {{ scoped.row.detailCount }}
- </el-tag>
+ <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>
+ <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>
</el-table>
@@ -218,7 +129,6 @@
import StockSelect from "./StockSelect.vue";
import SelectedStock from "./SelectedStock.vue";
import NoStockOut from "./NoStockOut.vue";
-import { stationManager, STATION_STORAGE_KEY } from "@/../src/uitils/stationManager";
import { h, createVNode, render, reactive } from "vue";
import {
ElDialog,
@@ -241,9 +151,129 @@
flag: false,
currentRow: null,
selection: [],
- tableData: [], // 鍘熷鏁版嵁
- groupedTableData: [], // 鍒嗙粍鍚庣殑鏁版嵁
- mainBusinessType: null, // 瀛樺偍涓诲崟鎹殑businessType
+ tableData: [],
+ mainBusinessType: null, // 鏂板锛氬瓨鍌ㄤ富鍗曟嵁鐨刡usinessType
+ tableColumns: [
+ {
+ prop: "id",
+ title: "Id",
+ type: "int",
+ width: 90,
+ hidden: true,
+ },
+ {
+ prop: "orderId",
+ title: "鍑哄簱鍗曚富閿�",
+ type: "string",
+ width: 90,
+ hidden: true,
+ },
+ {
+ prop: "materielCode",
+ title: "鐗╂枡缂栧彿",
+ type: "string",
+ width: 120,
+ },
+ {
+ prop: "materielName",
+ title: "鐗╂枡鍚嶇О",
+ type: "string",
+ width: 150,
+ },
+ {
+ prop: "batchNo",
+ title: "鎵规鍙�",
+ type: "string",
+ width: 90,
+ },
+ {
+ prop: "supplyCode",
+ title: "渚涘簲鍟嗙紪鍙�",
+ type: "string",
+ width: 90,
+ },
+ {
+ prop: "orderQuantity",
+ title: "鍗曟嵁鏁伴噺",
+ type: "string",
+ width: 90,
+ },
+ {
+ prop: "lockQuantity",
+ title: "閿佸畾鏁伴噺",
+ type: "int",
+ width: 90,
+ },
+ {
+ prop: "overOutQuantity",
+ title: "宸插嚭鏁伴噺",
+ type: "string",
+ width: 90,
+ },
+ {
+ prop: "moveQty",
+ title: "鎸枡鏁伴噺",
+ type: "string",
+ width: 90,
+ },
+ {
+ prop: "unit",
+ title: "鍗曚綅",
+ type: "string",
+ width: 80,
+ },
+ {
+ prop: "orderDetailStatus",
+ title: "璁㈠崟鏄庣粏鐘舵��",
+ type: "tag",
+ width: 90,
+ bindKey: "orderDetailStatusEnum",
+ },
+ {
+ prop: "assignStock",
+ title: "鎸囧畾搴撳瓨",
+ type: "icon",
+ width: 90,
+ hidden: true, // 榛樿闅愯棌
+ icon: "el-icon-s-grid",
+ },
+ {
+ prop: "viewDetail",
+ title: "鍑哄簱璇︾粏",
+ type: "icon",
+ width: 90,
+ icon: "el-icon-s-operation",
+ },
+ {
+ prop: "creater",
+ title: "鍒涘缓浜�",
+ type: "string",
+ width: 90,
+ },
+ {
+ prop: "createDate",
+ title: "鍒涘缓鏃堕棿",
+ type: "datetime",
+ width: 160,
+ },
+ {
+ prop: "modifier",
+ title: "淇敼浜�",
+ type: "string",
+ width: 100,
+ },
+ {
+ prop: "modifyDate",
+ title: "淇敼鏃堕棿",
+ type: "datetime",
+ width: 160,
+ },
+ {
+ prop: "remark",
+ title: "澶囨敞",
+ type: "string",
+ },
+ ],
paginations: {
sort: "id",
order: "desc",
@@ -286,62 +316,16 @@
dictionaryList: null,
};
},
- onMounted() {
- // 浠庢湰鍦板瓨鍌ㄥ姞杞戒繚瀛樼殑绔欏彴鍊�
- const savedStation = stationManager.getStation();
- console.log(savedStation);
- if (savedStation) {
- outboundForm.selectedPlatform = savedStation;
- } else if (stationOptions.length > 0) {
- // 濡傛灉娌℃湁淇濆瓨鐨勫�硷紝浣跨敤绗竴涓�夐」
- //stationValue.value = stationOptions[0].value;
+ methods: {
+ toggleAssignStockColumn() {
+ const assignStockColumn = this.tableColumns.find(
+ (item) => item.prop === "assignStock"
+ );
+ if (assignStockColumn) {
+ // businessType涓�22鏃舵樉绀猴紝鍚﹀垯闅愯棌
+ assignStockColumn.hidden = this.mainBusinessType !=='22';
}
},
- methods: {
- // 鏍规嵁鐗╂枡缂栧彿銆佹壒娆°�佷緵搴斿晢鍒嗙粍鏁版嵁
- groupDataByMaterial() {
- const groups = {};
-
- this.tableData.forEach(item => {
- // 鏋勫缓鍒嗙粍閿紝鎵规鍜屼緵搴斿晢鍙互涓虹┖
- const groupKey = `${item.materielCode}_${item.batchNo || ''}_${item.supplyCode || ''}`;
-
- if (!groups[groupKey]) {
- // 鍒涘缓鏂板垎缁�
- groups[groupKey] = {
- materielCode: item.materielCode,
- materielName: item.materielName,
- batchNo: item.batchNo || '-',
- supplyCode: item.supplyCode || '-',
- orderQuantity: 0,
- lockQuantity: 0,
- overOutQuantity: 0,
- moveQty: 0,
- unit: item.unit,
- orderDetailStatus: item.orderDetailStatus,
- detailCount: 0,
- originalDetails: [] // 淇濆瓨鍘熷鏄庣粏鏁版嵁
- };
- }
-
- // 绱姞鏁伴噺
- groups[groupKey].orderQuantity += item.orderQuantity || 0;
- groups[groupKey].lockQuantity += item.lockQuantity || 0;
- groups[groupKey].overOutQuantity += item.overOutQuantity || 0;
- groups[groupKey].moveQty += item.moveQty || 0;
- groups[groupKey].detailCount += 1;
- groups[groupKey].originalDetails.push(item);
-
- // 濡傛灉鐘舵�佷笉鍚岋紝鍙互鐢ㄧ涓�涓姸鎬佹垨鐗规畩澶勭悊
- // 杩欓噷浣跨敤绗竴涓槑缁嗙殑鐘舵��
- });
-
- // 杞崲涓烘暟缁�
- this.groupedTableData = Object.values(groups);
-
- console.log('鍒嗙粍鍚庣殑鏁版嵁:', this.groupedTableData);
- },
-
open(row) {
this.row = row;
this.showDetialBox = true;
@@ -350,8 +334,8 @@
this.mainBusinessType = row.businessType;
this.getDictionaryData();
this.getData();
+ this.toggleAssignStockColumn();
},
-
getData() {
var wheres = [{ name: "orderId", value: this.row.id }];
var param = {
@@ -365,66 +349,25 @@
.post("api/OutboundOrderDetail/GetPageData", param, "鏌ヨ涓�")
.then((x) => {
this.tableData = x.rows;
- // 鍒嗙粍鏁版嵁
- this.groupDataByMaterial();
+ this.toggleAssignStockColumn(); // 鏁版嵁鍔犺浇鍚庨噸鏂扮‘璁ゅ垪鏄鹃殣
});
},
-
- // 閲嶇偣淇敼锛氬鐞嗘寚瀹氬簱瀛樼偣鍑讳簨浠� - 浼犻�掑畬鏁寸殑鍒嗙粍鏄庣粏淇℃伅
- handleAssignStock(row) {
- // 浼犻�掑畬鏁寸殑鍒嗙粍鏄庣粏鏁版嵁锛堝寘鍚墍鏈夊師濮嬫槑缁咺D鍜岀墿鏂欎俊鎭級
- if (row.originalDetails && row.originalDetails.length > 0) {
- this.$refs.child.open({
- // 鐗╂枡鍩烘湰淇℃伅锛堝彇绗竴涓槑缁嗙殑淇℃伅锛�
- materielCode: row.originalDetails[0].materielCode,
- materielName: row.originalDetails[0].materielName,
- // 鍒嗙粍鍚庣殑鎬婚渶姹傛暟閲�
- qty: row.orderQuantity,
- // 涓诲崟鎹紪鍙�
- upperOrderNo: this.row.upperOrderNo,
- // 鍏抽敭锛氬綋鍓嶅垎缁勭殑鎵�鏈夋槑缁咺D闆嗗悎
- detailIds: row.originalDetails.map(detail => detail.id),
- // 涓诲崟鎹甀D
- mainOrderId: this.row.id,
- // 瀹屾暣鍒嗙粍琛屼俊鎭紙澶囩敤锛�
- groupRow: row
- });
+ tableButtonClick(row, column) {
+ if (column.prop == "assignStock") {
+ this.$refs.child.open(row);
+ } else if (column.prop == "NoStockOut") {
+ this.$refs.NoStockOut.open(row);
} else {
- ElMessage.warning("璇ュ垎缁勬病鏈夋槑缁嗘暟鎹紝鏃犳硶鎸囧畾搴撳瓨");
+ this.$refs.selectedStock.open(row);
}
},
-
- handleViewDetail(row) {
- // 鏌ョ湅鍒嗙粍鏄庣粏鐨勮缁嗕俊鎭�
- if (row.originalDetails && row.originalDetails.length > 0) {
- // 杩欓噷鍙互鎵撳紑涓�涓柊鐨勫脊绐楁樉绀烘墍鏈夋槑缁嗭紝鎴栬�呬娇鐢ㄧ涓�涓槑缁�
- this.$refs.selectedStock.open(row.originalDetails[0]);
- }
- },
-
lockstocks() {
if (this.selection.length === 0) {
return this.$message.error("璇烽�夋嫨鍗曟嵁鏄庣粏");
}
-
- // 鑾峰彇鎵�鏈夐�変腑鍒嗙粍鐨勫師濮嬫槑缁咺D
- const detailIds = [];
- this.selection.forEach(group => {
- if (group.originalDetails && group.originalDetails.length > 0) {
- group.originalDetails.forEach(detail => {
- if (detail.id) {
- detailIds.push(detail.id);
- }
- });
- }
- });
-
- if (detailIds.length === 0) {
- return this.$message.error("娌℃湁鎵惧埌鍙攣瀹氱殑鏄庣粏");
- }
-
+ var keys = this.selection.map((item) => item.id);
this.http
- .post("api/OutboundOrderDetail/LockOutboundStocks", detailIds, "鏁版嵁澶勭悊涓�")
+ .post("api/OutboundOrderDetail/LockOutboundStocks", keys, "鏁版嵁澶勭悊涓�")
.then((x) => {
if (!x.status) return this.$message.error(x.message);
this.$message.success("鎿嶄綔鎴愬姛");
@@ -434,44 +377,22 @@
});
});
},
-
handleOpenPicking() {
this.$router.push({
path: "/outbound/picking",
query: { orderId: this.row.id, orderNo: this.row.orderNo },
});
},
-
handleOpenBatchPicking() {
this.$router.push({
path: "/outbound/batchpicking",
query: { orderId: this.row.id, orderNo: this.row.orderNo },
});
},
-
outbound() {
- const savedStation = stationManager.getStation();
- console.log(savedStation);
if (this.selection.length === 0) {
return this.$message.error("璇烽�夋嫨鍗曟嵁鏄庣粏");
}
-
- // 鑾峰彇鎵�鏈夐�変腑鍒嗙粍鐨勫師濮嬫槑缁咺D
- const detailIds = [];
- this.selection.forEach(group => {
- if (group.originalDetails && group.originalDetails.length > 0) {
- group.originalDetails.forEach(detail => {
- if (detail.id) {
- detailIds.push(detail.id);
- }
- });
- }
- });
-
- if (detailIds.length === 0) {
- return this.$message.error("娌℃湁鎵惧埌鍙嚭搴撶殑鏄庣粏");
- }
-
const platformOptions = [
{ label: "绔欏彴2", value: "2-1" },
{ label: "绔欏彴3", value: "3-1" },
@@ -483,9 +404,6 @@
selectedPlatform: platformOptions[0].value,
});
- if (savedStation) {
- formData.selectedPlatform = savedStation;
- }
const vnode = createVNode(
ElDialog,
{
@@ -530,7 +448,7 @@
},
}, [
h(ElSelect, {
- placeholder: "璇烽�夋嫨鍑哄簱绔欏彴",
+ placeholder: "璇烽�夋嫨鍑哄簱绔欏彴锛�3-12锛�",
modelValue: formData.selectedPlatform,
"onUpdate:modelValue": (val) => {
formData.selectedPlatform = val;
@@ -574,8 +492,9 @@
return;
}
+ const keys = this.selection.map((item) => item.id);
const requestParams = {
- taskIds: detailIds,
+ taskIds: keys,
outboundPlatform: formData.selectedPlatform,
};
@@ -612,26 +531,13 @@
vnode.appContext = this.$.appContext;
render(vnode, mountNode);
},
-
outboundbatch() {
- const savedStation = stationManager.getStation();
- console.log(savedStation);
if (this.selection.length === 0) {
return this.$message.error("璇烽�夋嫨鍗曟嵁鏄庣粏");
}
if (this.selection.length > 1) {
return this.$message.error("鍙兘閫夋嫨涓�鏉″崟鎹槑缁嗚繘琛屽垎鎵瑰嚭搴�");
}
-
- const selectedGroup = this.selection[0];
- if (!selectedGroup.originalDetails || selectedGroup.originalDetails.length === 0) {
- return this.$message.error("娌℃湁鎵惧埌鏄庣粏鏁版嵁");
- }
-
- // 鍒嗘壒鍑哄簱閫氬父閽堝鍗曚釜鏄庣粏
- // 杩欓噷浣跨敤绗竴涓槑缁�
- const selectedDetail = selectedGroup.originalDetails[0];
-
const platformOptions = [
{ label: "绔欏彴2", value: "2-1" },
{ label: "绔欏彴3", value: "3-1" },
@@ -643,9 +549,7 @@
selectedPlatform: platformOptions[0].value,
outboundDecimal: "",
});
- if (savedStation) {
- formData.selectedPlatform = savedStation;
- }
+
const vnode = createVNode(
ElDialog,
{
@@ -704,7 +608,7 @@
},
}, [
h(ElSelect, {
- placeholder: "璇烽�夋嫨鍑哄簱绔欏彴",
+ placeholder: "璇烽�夋嫨鍑哄簱绔欏彴锛�3-12锛�",
modelValue: formData.selectedPlatform,
"onUpdate:modelValue": (val) => {
formData.selectedPlatform = val;
@@ -742,7 +646,6 @@
step: "0.01",
precision: 2,
min: 0.01,
- max: selectedDetail.orderQuantity - selectedDetail.overOutQuantity - selectedDetail.lockQuantity - selectedDetail.moveQty,
}),
]),
h("div", {
@@ -774,8 +677,9 @@
return;
}
+ const keys = this.selection.map((item) => item.id);
const requestParams = {
- orderDetailId: selectedDetail.id,
+ orderDetailId: keys[0],
outboundPlatform: formData.selectedPlatform,
batchQuantity: formData.outboundDecimal,
};
@@ -810,52 +714,52 @@
}
);
- vnode.appContext = this.$appContext;
+ vnode.appContext = this.$.appContext;
render(vnode, mountNode);
},
-
setCurrent(row) {
this.$refs.singleTable.setCurrentRow(row);
},
-
handleCurrentChange(val) {
this.currentRow = val;
},
-
getButtonEnable(propName, row) {
if (propName == "assignStock") {
if (
row.orderDetailStatus !== 0 &&
- row.orderDetailStatus !== 70
+ row.orderDetailStatus !== 60 &&
+ row.orderDetailStatus !== 70 &&
+ row.orderDetailStatus !== 80
) {
- return false;
- } else {
return true;
+ } else {
+ return false;
}
}
return false;
},
-
parentCall(fun) {
if (typeof fun != "function") {
return console.log("鎵╁睍缁勪欢闇�瑕佷紶鍏ヤ竴涓洖璋冩柟娉曟墠鑳借幏鍙栫埗绾ue瀵硅薄");
}
fun(this);
},
-
handleRowClick(row) {
this.$refs.singleTable.toggleRowSelection(row);
},
-
handleSelectionChange(val) {
this.selection = val;
},
-
getDictionaryData() {
if (this.dictionaryList) {
return;
}
- var param = ["orderDetailStatusEnum"];
+ var param = [];
+ this.tableColumns.forEach((x) => {
+ if (x.type == "tag" && x.bindKey != "") {
+ param.push(x.bindKey);
+ }
+ });
this.http
.post("api/Sys_Dictionary/GetVueDictionary", param, "鏌ヨ涓�")
.then((x) => {
@@ -864,22 +768,21 @@
}
});
},
-
- getDictionaryForGroup(row) {
+ getDictionary(row, column) {
if (this.dictionaryList) {
- var item = this.dictionaryList.find((x) => x.dicNo == "orderDetailStatusEnum");
+ var item = this.dictionaryList.find((x) => x.dicNo == column.bindKey);
if (item) {
- var dicItem = item.data.find((x) => x.key == row.orderDetailStatus);
+ var dicItem = item.data.find((x) => x.key == row[column.prop]);
if (dicItem) {
return dicItem.value;
} else {
- return row.orderDetailStatus;
+ return row[column.prop];
}
} else {
- return row.orderDetailStatus;
+ return row[column.prop];
}
}
- return row.orderDetailStatus;
+ return row[column.prop];
},
},
};
--
Gitblit v1.9.3