From fb600a68d1bf4892e1f9817c4fea18563756b2e2 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期四, 23 四月 2026 13:51:21 +0800
Subject: [PATCH] 发货记录增加数量+“库存预警”字段移至库存管理+点击销售合同号自动跳转到销售台账
---
src/views/inventoryManagement/receiptManagement/index.vue | 146 ++++++++++++++++++++++++++++++++++++------------
1 files changed, 108 insertions(+), 38 deletions(-)
diff --git a/src/views/inventoryManagement/receiptManagement/index.vue b/src/views/inventoryManagement/receiptManagement/index.vue
index be59711..cf948a0 100644
--- a/src/views/inventoryManagement/receiptManagement/index.vue
+++ b/src/views/inventoryManagement/receiptManagement/index.vue
@@ -78,6 +78,10 @@
prop="inboundNum"
width="90"
show-overflow-tooltip />
+ <el-table-column label="搴撳瓨棰勮"
+ prop="warnNum"
+ width="90"
+ show-overflow-tooltip />
<el-table-column label="缂鸿揣鏁伴噺"
prop="outStockQuantity"
width="100"
@@ -208,6 +212,11 @@
clearable />
</template>
</el-table-column>
+ <el-table-column label="搴撳瓨棰勮" prop="warnNum" width="150">
+ <template #default="scope">
+ <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="scope.row.warnNum" />
+ </template>
+ </el-table-column>
<el-table-column label="绋庣巼(%)"
prop="taxRate"
width="120" />
@@ -246,28 +255,33 @@
<el-form :model="directQuery"
class="mb-2">
<el-form-item label="浜у搧澶х被">
- <el-select v-model="directQuery.productCategory"
- placeholder="璇烽�夋嫨浜у搧澶х被"
- clearable
- filterable
- @change="handleProductCategoryChange">
- <el-option v-for="item in productList"
- :key="item.id"
- :label="item.productName"
- :value="item.productName" />
- </el-select>
+ <el-tree-select v-model="directQuery.productId"
+ placeholder="璇烽�夋嫨浜у搧澶х被"
+ clearable
+ check-strictly
+ @change="handleProductCategoryChange"
+ :data="productList"
+ :disabled="typeValue === 'edit'"
+ :render-after-expand="false"
+ style="width: 100%" />
</el-form-item>
- <el-form-item label="瑙勬牸鍨嬪彿">
+ <el-form-item v-if="typeValue !== 'edit'" label="瑙勬牸鍨嬪彿">
<el-select v-model="directQuery.productModelId"
placeholder="璇峰厛閫夋嫨浜у搧澶х被"
clearable
filterable
- :disabled="!directQuery.productCategory">
+ :disabled="!directQuery.productId || typeValue === 'edit'">
<el-option v-for="item in productModelList"
:key="item.id"
:label="item.model"
:value="item.id" />
</el-select>
+ </el-form-item>
+ <el-form-item v-if="typeValue === 'edit'" label="瑙勬牸鍨嬪彿">
+ <el-input v-model="directQuery.specificationModel"
+ placeholder="杈撳叆瑙勬牸鍨嬪彿"
+ clearable
+ disabled />
</el-form-item>
<el-form-item label="鍏ュ簱鏁伴噺">
<el-input v-model="directQuery.inboundQuantity"
@@ -547,6 +561,7 @@
productList.value = productRes.data.map(item => ({
...item,
quantityStock: 0,
+ warnNum: 0,
originalQuantityStock: Number(
item.quantityStock ?? item.inboundQuantity ?? 0
),
@@ -663,14 +678,16 @@
openDirectForm(type, row);
}
};
-
+ const typeValue = ref("add");
// 鎵撳紑鐩存帴鏂板鍏ュ簱寮规
- const openDirectForm = (type, row) => {
+ const openDirectForm = async (type, row) => {
+ typeValue.value = type;
directDialogVisible.value = true;
directSelectedRows.value = [];
directQuery.value = {
productId: null,
productModelId: null,
+ productCategory: "",
inboundQuantity: 0,
warnNum: 0,
outStockQuantity: 0,
@@ -688,36 +705,86 @@
entryDate: getCurrentDate(),
remark: "",
};
+
+ // 纭繚浜у搧澶х被鏁版嵁宸插姞杞�
+ // if (productList.value.length === 0) {
+ // await loadProductList();
+ // }
if (type === "edit" && row) {
// 缂栬緫妯″紡锛屽洖鏄炬暟鎹�
+ console.log(row, "==============");
directForm.value = { ...row };
- // 鍥炴樉浜у搧澶х被
- const selectedProduct = productList.value.find(
- item => item.productName === row.productCategory
- );
- if (selectedProduct) {
- directQuery.value.productId = selectedProduct.id;
- // 鏍规嵁浜у搧澶х被鍔犺浇瑙勬牸鍨嬪彿鍒楄〃骞跺洖鏄�
- loadProductModelList(selectedProduct.id).then(() => {
- // 鍥炴樉瑙勬牸鍨嬪彿
- directQuery.value.productCategory = row.productCategory || "";
+ // 鍥炴樉鍏朵粬瀛楁
+ directQuery.value.inboundQuantity = row.inboundNum || row.inboundQuantity;
+ directQuery.value.warnNum = row.warnNum || 0;
+ directQuery.value.outStockQuantity = row.outStockQuantity || 0;
+ directQuery.value.shortageDescription = row.shortageDescription || "";
+ // 鍥炴樉浜у搧澶х被鍜岃鏍煎瀷鍙�
+ if (row.productModelId) {
+ // 杩欓噷闇�瑕佹牴鎹疄闄呮儏鍐佃幏鍙栦骇鍝佸ぇ绫籌D锛屾殏鏃跺亣璁緍ow涓湁productId瀛楁
+ if (row.productId) {
+ directQuery.value.productId = row.productId;
+ // 鏇存柊浜у搧绫诲埆鍚嶇О
+ const productCategory = findNodeById(productList.value, row.productId);
+ if (productCategory) {
+ directQuery.value.productCategory = productCategory;
+ }
+ // 鏍规嵁浜у搧澶х被鍔犺浇瑙勬牸鍨嬪彿鍒楄〃骞跺洖鏄�
+ await loadProductModelList(row.productId);
directQuery.value.productModelId = row.productModelId;
- // 鍥炴樉鍏朵粬瀛楁
- directQuery.value.inboundQuantity =
- row.inboundNum || row.inboundQuantity;
- directQuery.value.warnNum = row.warnNum || 0;
- directQuery.value.outStockQuantity = row.outStockQuantity || 0;
- directQuery.value.shortageDescription = row.shortageDescription || "";
- });
+ } else {
+ // 濡傛灉娌℃湁productId瀛楁锛屽皾璇曟牴鎹畃roductCategory鏌ユ壘
+ // 杩欓噷闇�瑕佹牴鎹疄闄呮儏鍐佃皟鏁存煡鎵鹃�昏緫
+ directQuery.value.productId = row.productCategory || "";
+ directQuery.value.productModelId = row.productModelId;
+ directQuery.value.specificationModel = row.specificationModel;
+ }
}
}
+ };
+
+ // 杞崲浜у搧鏍戞暟鎹牸寮忎负 el-tree-select 鎵�闇�鏍煎紡
+ function convertIdToValue(data) {
+ return data.map(item => {
+ const { id, children, ...rest } = item;
+ const newItem = {
+ ...rest,
+ value: id,
+ label: item.productName,
+ };
+ if (children && children.length > 0) {
+ newItem.children = convertIdToValue(children);
+ }
+ return newItem;
+ });
+ }
+
+ // 鏍规嵁 ID 鏌ユ壘鑺傜偣鍚嶇О
+ const findNodeById = (nodes, productId) => {
+ for (let i = 0; i < nodes.length; i++) {
+ if (nodes[i].value === productId) {
+ return nodes[i].label;
+ }
+ if (nodes[i].children && nodes[i].children.length > 0) {
+ const foundNode = findNodeById(nodes[i].children, productId);
+ if (foundNode) {
+ return foundNode;
+ }
+ }
+ }
+ return null;
};
// 鍔犺浇浜у搧澶х被鍒楄〃
const loadProductList = async () => {
try {
const res = await productTreeList();
- productList.value = res;
+ // 纭繚鏁版嵁鏍煎紡绗﹀悎 el-tree-select 瑕佹眰
+ if (Array.isArray(res)) {
+ productList.value = convertIdToValue(res);
+ } else {
+ productList.value = [];
+ }
} catch (error) {
console.error("鍔犺浇浜у搧澶х被澶辫触:", error);
proxy.$modal.msgError("鍔犺浇浜у搧澶х被澶辫触");
@@ -726,16 +793,18 @@
// 澶勭悊浜у搧澶х被鍙樺寲
const handleProductCategoryChange = value => {
- directQuery.value.specificationModel = "";
+ directQuery.value.productModelId = "";
productModelList.value = [];
if (value) {
// 鏍规嵁浜у搧澶х被鍔犺浇瑙勬牸鍨嬪彿鍒楄〃
- const selectedProduct = productList.value.find(
- item => item.productName === value
- );
- if (selectedProduct) {
- loadProductModelList(selectedProduct.id);
+ loadProductModelList(value);
+ // 鏇存柊浜у搧绫诲埆鍚嶇О
+ const productCategory = findNodeById(productList.value, value);
+ if (productCategory) {
+ directQuery.value.productCategory = productCategory;
}
+ } else {
+ directQuery.value.productCategory = "";
}
};
@@ -882,6 +951,7 @@
nickName: userStore.nickName,
details: selectedRows.value.map(product => ({
id: product.id,
+ warnNum: product.warnNum,
// id: product.salesLedgerProductId,
inboundQuantity: Number(product.quantityStock),
productModelId: product.productModelId,
--
Gitblit v1.9.3