From fb2e9ce981161f823a3f9b5101ba15d296aace35 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 26 八月 2026 16:45:21 +0800
Subject: [PATCH] 新疆-新聚 1.主生产计划不再限制本次下发数量不能超过需求数量剩余量。已下发数量达到需求数量后,仍可以继续下发。 2.每一次发货需要可以填写每一次的送货地址
---
src/views/salesManagement/deliveryLedger/index.vue | 22 +++++++
src/views/productionPlan/productionPlan/index.vue | 40 +++++--------
src/views/salesManagement/salesLedger/index.vue | 93 ++++++------------------------
3 files changed, 56 insertions(+), 99 deletions(-)
diff --git a/src/views/productionPlan/productionPlan/index.vue b/src/views/productionPlan/productionPlan/index.vue
index 1acb28f..2c7cd47 100644
--- a/src/views/productionPlan/productionPlan/index.vue
+++ b/src/views/productionPlan/productionPlan/index.vue
@@ -135,7 +135,6 @@
<el-form-item label="鐢熶骇鏁伴噺">
<el-input-number v-model="mergeForm.totalAssignedQuantity"
:min="0"
- :max="sumAssignedQuantity"
@change="onBlur"
style="width: 100%" />
</el-form-item>
@@ -435,19 +434,23 @@
name: "涓嬪彂",
type: "text",
showHide: row => {
- return row.status != 2;
+ return true;
},
clickFun: row => {
mergeForm.productName = row.productName || "";
mergeForm.model = row.model || "";
- mergeForm.totalAssignedQuantity =
- Number(row.qtyRequired || 0) - Number(row.quantityIssued || 0);
+ mergeForm.totalAssignedQuantity = Math.max(
+ 0,
+ Number(row.qtyRequired || 0) - Number(row.quantityIssued || 0)
+ );
mergeForm.planCompleteTime = row.requiredDate || "";
mergeForm.productId = row.productId || "";
mergeForm.createTime = dayjs().format("YYYY-MM-DD HH:mm:ss");
mergeForm.ids = [row.id];
- sumAssignedQuantity.value =
- Number(row.qtyRequired || 0) - Number(row.quantityIssued || 0);
+ sumAssignedQuantity.value = Math.max(
+ 0,
+ Number(row.qtyRequired || 0) - Number(row.quantityIssued || 0)
+ );
isShowNewModal.value = true;
},
},
@@ -735,16 +738,6 @@
// 鍒ゆ柇琛屾槸鍚﹀彲閫夋嫨
const isSelectable = row => {
- // 濡傛灉鏄凡涓嬪彂鐘舵�侊紝绂佹鍕鹃��
- if (row.status == 2) {
- return false;
- }
- // 璁$畻鍓╀綑鏁伴噺
- const remainingQty = (row.qtyRequired || 0) - (row.quantityIssued || 0);
- // 濡傛灉鍓╀綑鏁伴噺灏忎簬绛変簬0锛岀姝㈤�夋嫨
- if (remainingQty <= 0) {
- return false;
- }
// 濡傛灉娌℃湁閫変腑鐨勮锛屾墍鏈夎閮藉彲閫夋嫨
if (!selectedProductModelId.value) {
return true;
@@ -766,9 +759,12 @@
const firstRow = selectedRows.value[0];
const productName = firstRow.productName || "";
- // 璁$畻鎬诲埗閫犳暟閲� (榛樿qtyRequired鐨勫拰)
+ // 璁$畻鎬诲埗閫犳暟閲� (榛樿qtyRequired鍓╀綑鏁伴噺鐨勫拰)
const totalAssignedQuantity = selectedRows.value.reduce((sum, row) => {
- return sum + Number(row.qtyRequired || 0) - Number(row.quantityIssued || 0);
+ return (
+ sum +
+ Math.max(0, Number(row.qtyRequired || 0) - Number(row.quantityIssued || 0))
+ );
}, 0);
sumAssignedQuantity.value = totalAssignedQuantity;
console.log(totalAssignedQuantity);
@@ -779,7 +775,7 @@
mergeForm.planCompleteTime = firstRow.requiredDate || "";
mergeForm.productId = firstRow.productId || "";
mergeForm.createTime = dayjs().format("YYYY-MM-DD HH:mm:ss");
- mergeForm.ids = selectedRows.value.map(row => row.id);
+ mergeForm.ids = [...new Set(selectedRows.value.map(row => row.id))];
// 鎵撳紑寮圭獥
isShowNewModal.value = true;
@@ -800,12 +796,6 @@
return;
}
console.log(sumAssignedQuantity.value, "sumAssignedQuantity");
-
- // 楠岃瘉totalAssignedQuantity涓嶈兘澶т簬鎬绘柟鏁�
- if (mergeForm.totalAssignedQuantity > sumAssignedQuantity.value) {
- ElMessage.error("鐢熶骇鏁伴噺涓嶈兘澶т簬褰撳墠璁$畻鐨勬�诲��");
- return;
- }
console.log(mergeForm, "mergeForm");
const payload = {
diff --git a/src/views/salesManagement/deliveryLedger/index.vue b/src/views/salesManagement/deliveryLedger/index.vue
index 33fa45f..b6e18fc 100644
--- a/src/views/salesManagement/deliveryLedger/index.vue
+++ b/src/views/salesManagement/deliveryLedger/index.vue
@@ -107,6 +107,11 @@
show-overflow-tooltip
/>
<el-table-column
+ label="鍙戣揣鍦板潃"
+ prop="shippingAddress"
+ show-overflow-tooltip
+ />
+ <el-table-column
label="瀹℃牳鐘舵��"
prop="status"
align="center"
@@ -202,6 +207,17 @@
</el-col>
</el-row>
<el-row :gutter="30">
+ <el-col :span="24">
+ <el-form-item label="鍙戣揣鍦板潃锛�" prop="shippingAddress">
+ <el-input
+ v-model="form.shippingAddress"
+ placeholder="璇疯緭鍏ュ彂璐у湴鍧�"
+ clearable
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="30">
<el-col :span="24" v-if="form.type === '璐ц溅'">
<el-form-item label="鍙戣揣杞︾墝鍙凤細" prop="shippingCarNumber">
<el-input
@@ -289,6 +305,9 @@
}}</el-descriptions-item>
<el-descriptions-item label="蹇�掑崟鍙�" :span="2">{{
detailRow.expressNumber || "--"
+ }}</el-descriptions-item>
+ <el-descriptions-item label="鍙戣揣鍦板潃" :span="2">{{
+ detailRow.shippingAddress || "--"
}}</el-descriptions-item>
<el-descriptions-item label="鍑哄簱鍗曞彿" :span="2">{{
detailRow.outboundBatches || "--"
@@ -388,6 +407,7 @@
shippingCarNumber: "",
expressCompany: "",
expressNumber: "", // 蹇�掑崟鍙�
+ shippingAddress: "",
},
rules: {
salesContractNo: [
@@ -479,6 +499,7 @@
shippingCarNumber: row.shippingCarNumber ?? "",
expressCompany: row.expressCompany ?? "",
expressNumber: row.expressNumber ?? "",
+ shippingAddress: row.shippingAddress ?? "",
};
deliveryFileList.value = row.storageBlobVOs || [];
}
@@ -590,6 +611,7 @@
form.value.type === "蹇��" ? form.value.expressCompany : "",
expressNumber:
form.value.type === "蹇��" ? form.value.expressNumber : "",
+ shippingAddress: form.value.shippingAddress,
storageBlobDTOs: deliveryFileList.value || [],
};
deductStock(payload).then((res) => {
diff --git a/src/views/salesManagement/salesLedger/index.vue b/src/views/salesManagement/salesLedger/index.vue
index d2e82b5..610c17c 100644
--- a/src/views/salesManagement/salesLedger/index.vue
+++ b/src/views/salesManagement/salesLedger/index.vue
@@ -1066,6 +1066,17 @@
</el-col>
</el-row>
<el-row :gutter="30">
+ <el-col :span="24">
+ <el-form-item label="鍙戣揣鍦板潃锛�" prop="shippingAddress">
+ <el-input
+ v-model="deliveryForm.shippingAddress"
+ placeholder="璇疯緭鍏ュ彂璐у湴鍧�"
+ clearable
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="30">
<el-col :span="24" v-if="deliveryForm.type === '璐ц溅'">
<el-form-item label="鍙戣揣杞︾墝鍙凤細" prop="shippingCarNumber">
<el-input
@@ -1337,47 +1348,17 @@
item?.stockQuantity;
return quantity ?? 0;
};
-const getCurrentDeliveryRowQuantity = () => {
- return Number(currentDeliveryRow.value?.noQuantity || 0);
-};
const getDeliveryBatchDeliveryMax = (row) => {
- const productQuantity = getCurrentDeliveryRowQuantity();
const batchQuantity = Number(getDeliveryBatchQuantity(row) || 0);
- const otherBatchTotal = (deliveryForm.value.batchNoList || []).reduce(
- (sum, item) => {
- if (item?.id === row?.id) return sum;
- return sum + Number(item?.deliveryQuantity || 0);
- },
- 0
- );
- const remainingProductQuantity = Math.max(
- 0,
- productQuantity - otherBatchTotal
- );
- return Math.max(0, Math.min(batchQuantity, remainingProductQuantity));
+ return Math.max(0, batchQuantity);
};
const handleDeliveryBatchQuantityChange = (row) => {
- const productQuantity = getCurrentDeliveryRowQuantity();
const batchQuantity = Number(getDeliveryBatchQuantity(row) || 0);
- const otherBatchTotal = (deliveryForm.value.batchNoList || []).reduce(
- (sum, item) => {
- if (item?.id === row?.id) return sum;
- return sum + Number(item?.deliveryQuantity || 0);
- },
- 0
- );
- const remainingProductQuantity = Math.max(
- 0,
- productQuantity - otherBatchTotal
- );
const currentValue = Number(row?.deliveryQuantity || 0);
if (currentValue > batchQuantity) {
row.deliveryQuantity = batchQuantity;
proxy.$modal.msgWarning("鍙戣揣鏁伴噺涓嶈兘澶т簬搴撳瓨鏁伴噺");
- } else if (currentValue > remainingProductQuantity) {
- row.deliveryQuantity = remainingProductQuantity;
- proxy.$modal.msgWarning("鎵�鏈夋壒娆″彂璐ф暟閲忎箣鍜屼笉鑳藉ぇ浜庡緟鍙戣揣鏁伴噺");
}
};
const getSelectedDeliveryBatchRows = () => {
@@ -1422,6 +1403,7 @@
shippingCarNumber: "",
expressCompany: "",
expressNumber: "",
+ shippingAddress: "",
type: "璐ц溅", // 璐ц溅, 蹇��
},
deliveryRules: {
@@ -2822,27 +2804,8 @@
* @param row 琛屾暟鎹�
*/
const canShip = (row) => {
- // 浜у搧鐘舵�佸繀椤绘槸鍏呰冻锛坅pproveStatus === 1锛�
- if (row.approveStatus !== 1) {
- return false;
- }
-
- // 鑾峰彇鍙戣揣鐘舵��
- const shippingStatus = row.shippingStatus;
-
- // 濡傛灉宸插彂璐э紝涓嶈兘鍐嶆鍙戣揣
- if (shippingStatus === "宸插彂璐�") {
- return false;
- }
-
- // 鍙戣揣鐘舵�佸繀椤绘槸"寰呭彂璐�"銆�"瀹℃壒涓�"銆�"瀹℃牳鎷掔粷"鎴�"閮ㄥ垎鍙戣揣"
- const statusStr = shippingStatus ? String(shippingStatus).trim() : "";
- return (
- statusStr === "寰呭彂璐�" ||
- statusStr === "瀹℃壒涓�" ||
- statusStr === "瀹℃牳鎷掔粷" ||
- statusStr === "閮ㄥ垎鍙戣揣"
- );
+ // 涓嶅啀鏍规嵁閿�鍞骇鍝佺姸鎬佹垨宸插彂璐х姸鎬侀檺鍒跺彂璐э紝鍙戣揣鍚堟硶鎬х敱搴撳瓨鎵规鍜屽悗绔牎楠屾帶鍒�
+ return true;
};
// 鎵撳紑闄勪欢寮圭獥
@@ -2857,14 +2820,6 @@
// 鎵撳紑鍙戣揣寮规
const openDeliveryForm = async (row) => {
- // 妫�鏌ユ槸鍚﹀彲浠ュ彂璐�
- if (!canShip(row)) {
- proxy.$modal.msgWarning(
- "鍙湁鍦ㄤ骇鍝佺姸鎬佹槸鍏呰冻锛屽彂璐х姸鎬佹槸寰呭彂璐с�佸鎵逛腑銆佸鏍告嫆缁濇垨閮ㄥ垎鍙戣揣鐨勬椂鍊欐墠鍙互鍙戣揣"
- );
- return;
- }
-
// 瀹℃壒涓椂鎻愮ず鐢ㄦ埛宸叉湁寰呭鎵圭殑鍙戣揣璁板綍
const statusStr = row.shippingStatus ? String(row.shippingStatus).trim() : "";
if (statusStr === "瀹℃壒涓�") {
@@ -2879,6 +2834,7 @@
shippingCarNumber: "",
expressCompany: "",
expressNumber: "",
+ shippingAddress: "",
type: "璐ц溅",
batchNo: [],
batchNoList,
@@ -2894,20 +2850,6 @@
const selectedBatchRows = getSelectedDeliveryBatchRows();
if (selectedBatchRows.length === 0) {
proxy.$modal.msgWarning("璇疯嚦灏戝~鍐欎竴涓壒鍙风殑鍙戣揣鏁伴噺");
- return;
- }
- const totalDeliveryQuantity = selectedBatchRows.reduce(
- (sum, item) => sum + Number(item.deliveryQuantity || 0),
- 0
- );
- const currentRowNoQuantity = Number(
- currentDeliveryRow.value?.noQuantity || 0
- );
- if (
- currentRowNoQuantity > 0 &&
- totalDeliveryQuantity > currentRowNoQuantity
- ) {
- proxy.$modal.msgWarning("鎵瑰彿鍙戣揣鎬绘暟涓嶈兘瓒呰繃寰呭彂璐ф暟閲�");
return;
}
// 淇濆瓨褰撳墠灞曞紑鐨勮ID锛屼互渚垮彂璐у悗閲嶆柊鍔犺浇瀛愯〃鏍兼暟鎹�
@@ -2933,6 +2875,7 @@
deliveryForm.value.type === "蹇��"
? deliveryForm.value.expressNumber
: "",
+ shippingAddress: deliveryForm.value.shippingAddress,
storageBlobDTOs: deliveryFileList.value || [],
batchNo: deliveryForm.value.batchNo,
batchNoDetailList: selectedBatchRows.map((item) => ({
@@ -2967,6 +2910,8 @@
});
}
});
+ }).catch(() => {
+ // 鍚庣搴撳瓨涓嶈冻绛夐敊璇凡鐢� request 鎷︽埅鍣ㄧ粺涓�鎻愮ず
});
}
});
--
Gitblit v1.9.3