From 6a415a072a98d64d2f95d16eef73b6d7270b8d56 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期六, 30 五月 2026 15:14:25 +0800
Subject: [PATCH] 新疆马铃薯 1.首页问题:挪新系统ui,需要确认一下页面数据完整。 2.协同办公:挪新系统 3.营销管理:客户往来取消回款金额字段,改为点击左侧客户时显示与该客户的所有订单信息,以及发货情况。销售可以选好对应的采购订单方便质量追溯。 4.采购管理:供应商往来同上逻辑,显示是否收货,也加上采购退货和采购报表功能。 5.采购加上设备备件选项,设备备件入库到备件库存。设备,仓储不足时做采购提醒。 6.仓储物流:得区分成品库和原料库(不存在半成品,成品只有一个产品,很好确认),原材料需要有批号,采集原料库需要做好仓库字段,让他们可以区分哪个仓库,然后把数采设备信息做一个实时的显示。总库存显示好当前存在的批次信息。 7.质量:只有不通过才需要填写对应的数据信息。在外侧做好选择通过不通过。过程,出厂检验无法对应到生产订单,那就对应到销售订单。 8.决策分析:基础数据分析和进销存分析,质量数据分析需要重新设计
---
src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue | 75 +++++++++++++++++++++++++++++--------
1 files changed, 59 insertions(+), 16 deletions(-)
diff --git a/src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue b/src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue
index a83ff6a..370815e 100644
--- a/src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue
+++ b/src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue
@@ -35,20 +35,35 @@
<el-button type="primary"
link
@click="handleViewSupplementRecord(row)">
- {{ row.supplementQty ?? 0 }}
+ {{ row.feedingQty ?? 0 }}
</el-button>
</template>
</el-table-column>
<el-table-column label="閫�鏂欐暟閲�"
- prop="returnQty"
- min-width="110" />
+ min-width="110">
+ <template #default="{ row }">
+ {{ row.returnQty ?? 0 }}
+ </template>
+ </el-table-column>
<el-table-column label="瀹為檯鏁伴噺"
- prop="actualQty"
- min-width="110" />
+ min-width="140">
+ <template #default="{ row }">
+ <el-input-number v-model="row.actualQty"
+ :min="0"
+ :precision="3"
+ :step="1"
+ controls-position="right"
+ placeholder="杈撳叆瀹為檯鏁伴噺"
+ style="width: 100%;"
+ :disabled="row.returned || orderRow?.end"
+ @change="val => handleActualQtyChange(row, val)" />
+ </template>
+ </el-table-column>
</el-table>
<template #footer>
<span class="dialog-footer">
- <el-button type="warning"
+ <el-button v-if="!orderRow?.end"
+ type="warning"
:loading="materialReturnConfirming"
:disabled="!canOpenReturnSummary"
@click="openReturnSummaryDialog">
@@ -66,7 +81,7 @@
border
row-key="id">
<el-table-column label="琛ユ枡鏁伴噺"
- prop="supplementQty"
+ prop="pickQuantity"
min-width="120" />
<el-table-column label="琛ユ枡浜�"
prop="supplementUserName"
@@ -75,7 +90,7 @@
prop="supplementTime"
min-width="160" />
<el-table-column label="琛ユ枡鍘熷洜"
- prop="supplementReason"
+ prop="feedingReason"
min-width="200" />
</el-table>
<template #footer>
@@ -121,7 +136,7 @@
import {
listMaterialPickingDetail,
listMaterialSupplementRecord,
- confirmMaterialReturn,
+ updateMaterialPickingLedger,
} from "@/api/productionManagement/productionOrder.js";
const props = defineProps({
@@ -145,10 +160,12 @@
const returnSummaryList = ref([]);
const calcReturnQty = item =>
Number(item.pickQuantity || 0) +
- Number(item.supplementQty || 0) -
+ Number(item.feedingQty || 0) -
Number(item.actualQty || 0);
const canOpenReturnSummary = computed(() =>
- materialDetailTableData.value.some(item => calcReturnQty(item) > 0)
+ materialDetailTableData.value.some(
+ item => item.returned !== true && calcReturnQty(item) > 0
+ )
);
const loadDetailList = async () => {
@@ -157,7 +174,13 @@
materialDetailTableData.value = [];
try {
const res = await listMaterialPickingDetail(props.orderRow.id);
- materialDetailTableData.value = res.data || [];
+ materialDetailTableData.value = (res.data || []).map(item => ({
+ ...item,
+ actualQty:
+ item.actualQty ??
+ Number(item.pickQuantity || 0) + Number(item.feedingQty || 0),
+ returnQty: item.returnQty ?? 0,
+ }));
} finally {
materialDetailLoading.value = false;
}
@@ -176,6 +199,10 @@
materialDetailTableData.value = [];
};
+ const handleActualQtyChange = (row, val) => {
+ row.returnQty = calcReturnQty(row);
+ };
+
const handleViewSupplementRecord = async row => {
if (!row?.id) return;
supplementRecordDialogVisible.value = true;
@@ -183,7 +210,8 @@
supplementRecordTableData.value = [];
try {
const res = await listMaterialSupplementRecord({
- materialDetailId: row.id,
+ pickId: row.id,
+ productionOrderId: props.orderRow.id,
});
supplementRecordTableData.value = res.data || [];
} finally {
@@ -225,9 +253,24 @@
if (!props.orderRow?.id) return;
materialReturnConfirming.value = true;
try {
- await confirmMaterialReturn({
- orderId: props.orderRow.id,
- returnSummaryList: returnSummaryList.value,
+ await updateMaterialPickingLedger({
+ productionOrderId: props.orderRow.id,
+ productionOrderPickDto: materialDetailTableData.value.map(item => ({
+ id: item.id,
+ technologyOperationId: item.technologyOperationId,
+ operationName: item.operationName,
+ bom: item.bom === true,
+ productModelId: item.productModelId,
+ demandedQuantity: item.demandedQuantity,
+ unit: item.unit,
+ pickQuantity: item.pickQuantity,
+ batchNo: item.batchNo,
+ feedingQty: item.feedingQty,
+ returnQty: item.returnQty,
+ actualQty: item.actualQty,
+ feedingReason: item.feedingReason,
+ returned: true,
+ })),
});
returnSummaryDialogVisible.value = false;
dialogVisible.value = false;
--
Gitblit v1.9.3