From 4e62fd388119141405e33ecc28cad2638617603f Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期六, 25 四月 2026 17:22:14 +0800
Subject: [PATCH] 天津宝东 1.修改生产流程
---
src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue | 153 ++++++++++++++++++---------------------------------
1 files changed, 54 insertions(+), 99 deletions(-)
diff --git a/src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue b/src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue
index 9e1a852..7442a11 100644
--- a/src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue
+++ b/src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue
@@ -5,59 +5,61 @@
<el-button type="primary" @click="handleAddMaterialRow">鏂板</el-button>
</div>
<el-table v-loading="materialTableLoading" :data="materialTableData" border row-key="tempId">
- <el-table-column label="宸ュ簭鍚嶇О" min-width="180">
- <template #default="{ row }">
- <span v-if="row.bom === true">{{ row.processName || "-" }}</span>
- <el-select
- v-else
- v-model="row.processName"
- placeholder="璇烽�夋嫨宸ュ簭"
- clearable
- filterable
- style="width: 100%;"
- @change="val => handleProcessNameChange(row, val)"
- >
- <el-option v-for="item in processOptions" :key="item.id" :label="item.name" :value="item.name" />
- </el-select>
- </template>
- </el-table-column>
- <el-table-column label="鍘熸枡鍚嶇О" min-width="160">
- <template #default="{ row }">
- <span v-if="row.bom === true">{{ row.materialName || "-" }}</span>
- <el-button v-else type="primary" link @click="openMaterialProductSelect(row)">
- {{ row.materialName || "閫夋嫨鍘熸枡" }}
- </el-button>
- </template>
+ <el-table-column label="鍘熸枡鍚嶇О" min-width="160" prop="materialName">
</el-table-column>
<el-table-column label="鍘熸枡鍨嬪彿" min-width="180">
<template #default="{ row }">
{{ row.materialModel || "-" }}
</template>
</el-table-column>
- <el-table-column label="闇�姹傛暟閲�" min-width="120">
+ <el-table-column label="鍘熺焊闇�瑕侀噺" min-width="120">
<template #default="{ row }">
- <span v-if="row.bom === true">{{ row.requiredQty ?? "-" }}</span>
+ {{ row.basePaperQty ?? "-" }}
+ </template>
+ </el-table-column>
+ <el-table-column label="绾哥闇�瑕侀噺" min-width="120">
+ <template #default="{ row }">
+ {{ row.cartonQty ?? "-" }}
+ </template>
+ </el-table-column>
+ <el-table-column label="濉戞枡琚嬫暟閲�" min-width="120">
+ <template #default="{ row }">
+ {{ row.plasticBagQty ?? "-" }}
+ </template>
+ </el-table-column>
+<!-- <el-table-column label="璁¢噺鍗曚綅" width="120">-->
+<!-- <template #default="{ row }">-->
+<!-- {{ row.unit || "-" }}-->
+<!-- </template>-->
+<!-- </el-table-column>-->
+ <el-table-column label="鍘熺焊棰嗙敤鏁伴噺" min-width="120">
+ <template #default="{ row }">
<el-input-number
- v-else
- v-model="row.requiredQty"
+ v-model="row.basePaperPickQty"
:min="0"
:precision="3"
:step="1"
controls-position="right"
style="width: 100%;"
- @change="val => handleRequiredQtyChange(row, val)"
/>
</template>
</el-table-column>
- <el-table-column label="璁¢噺鍗曚綅" width="120">
- <template #default="{ row }">
- {{ row.unit || "-" }}
- </template>
- </el-table-column>
- <el-table-column label="棰嗙敤鏁伴噺" min-width="120">
+ <el-table-column label="绾哥棰嗙敤鏁伴噺" min-width="120">
<template #default="{ row }">
<el-input-number
- v-model="row.pickQty"
+ v-model="row.cartonPickQty"
+ :min="0"
+ :precision="3"
+ :step="1"
+ controls-position="right"
+ style="width: 100%;"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column label="濉戞枡琚嬮鐢ㄦ暟閲�" min-width="120">
+ <template #default="{ row }">
+ <el-input-number
+ v-model="row.plasticBagPickQty"
:min="0"
:precision="3"
:step="1"
@@ -84,7 +86,6 @@
v-model="materialProductDialogVisible"
@confirm="handleMaterialProductConfirm"
single
- request-url="/stockInventory/rawMaterials"
/>
</div>
</template>
@@ -93,7 +94,6 @@
import { computed, ref, watch } from "vue";
import { ElMessage } from "element-plus";
import ProductSelectDialog from "@/views/basicData/product/ProductSelectDialog.vue";
-import { findProductProcessRouteItemList } from "@/api/productionManagement/productProcessRoute.js";
import {
listMaterialPickingDetail,
listMaterialPickingLedger,
@@ -115,7 +115,6 @@
const materialTableLoading = ref(false);
const materialSaving = ref(false);
const materialTableData = ref([]);
-const processOptions = ref([]);
const currentMaterialSelectRowIndex = ref(-1);
let materialTempId = 0;
@@ -129,38 +128,21 @@
materialModelId: row.materialModelId,
materialName: row.materialName || "",
materialModel: row.materialModel || "",
- requiredQty: Number(row.requiredQty ?? 0),
+ basePaperQty: Number(row.basePaperQty ?? row.requiredQty ?? 0),
+ cartonQty: Number(row.cartonQty ?? 0),
+ plasticBagQty: Number(row.plasticBagQty ?? 0),
+ basePaperPickQty: Number(row.basePaperPickQty ?? row.pickQty ?? 0),
+ cartonPickQty: Number(row.cartonPickQty ?? 0),
+ plasticBagPickQty: Number(row.plasticBagPickQty ?? 0),
unit: row.unit || "",
- pickQty: Number(row.pickQty ?? row.requiredQty ?? 0),
});
-
-const getProcessOptions = async () => {
- if (!props.orderRow?.id) return;
- const res = await findProductProcessRouteItemList({ orderId: props.orderRow.id });
- const routeList = Array.isArray(res?.data) ? res.data : res?.data?.records || [];
- const processMap = new Map();
- routeList.forEach(item => {
- const processId = item.processId;
- const processName = item.processName;
- if (!processId || !processName) return;
- const key = `${processId}_${processName}`;
- if (!processMap.has(key)) {
- processMap.set(key, {
- id: processId,
- name: processName,
- });
- }
- });
- processOptions.value = Array.from(processMap.values());
-};
const loadMaterialData = async () => {
if (!props.orderRow?.id) return;
materialTableLoading.value = true;
materialTableData.value = [];
- await getProcessOptions();
try {
- const detailRes = await listMaterialPickingDetail({ orderId: props.orderRow.id });
+ const detailRes = await listMaterialPickingDetail({ productOrderId: props.orderRow.id });
const detailList = Array.isArray(detailRes?.data)
? detailRes.data
: detailRes?.data?.records || [];
@@ -200,19 +182,6 @@
materialTableData.value.splice(index, 1);
};
-const handleProcessNameChange = (row, processName) => {
- const process = processOptions.value.find(item => item.name === processName);
- row.productProcessId = process?.id;
-};
-
-const handleRequiredQtyChange = (row, val) => {
- const required = Number(val ?? 0);
- row.requiredQty = required;
- if (!row.pickQty || Number(row.pickQty) === 0) {
- row.pickQty = required;
- }
-};
-
const openMaterialProductSelect = row => {
currentMaterialSelectRowIndex.value = materialTableData.value.findIndex(item => item.tempId === row.tempId);
materialProductDialogVisible.value = true;
@@ -237,22 +206,23 @@
return { valid: false, message: "璇峰厛鏂板棰嗘枡鏁版嵁" };
}
const invalidNewRow = materialTableData.value.find(
- item => item.bom !== true && (!item.processName || !item.materialName)
+ item => item.bom !== true && !item.materialName
);
if (invalidNewRow) {
- return { valid: false, message: "鏂板琛岀殑宸ュ簭鍚嶇О鍜屽師鏂欏悕绉颁负蹇呭~椤�" };
+ return { valid: false, message: "鏂板琛岀殑鍘熸枡鍚嶇О涓哄繀濉」" };
}
const invalidRow = materialTableData.value.find(
item =>
- !item.processName ||
!item.materialName ||
- item.requiredQty === null ||
- item.requiredQty === undefined ||
- item.pickQty === null ||
- item.pickQty === undefined
+ item.basePaperPickQty === null ||
+ item.basePaperPickQty === undefined ||
+ item.cartonPickQty === null ||
+ item.cartonPickQty === undefined ||
+ item.plasticBagPickQty === null ||
+ item.plasticBagPickQty === undefined
);
if (invalidRow) {
- return { valid: false, message: "璇峰畬鍠勫伐搴忋�佸師鏂欏拰鏁伴噺鍚庡啀淇濆瓨" };
+ return { valid: false, message: "璇峰畬鍠勯鐢ㄦ暟閲忓悗鍐嶄繚瀛�" };
}
return { valid: true, message: "" };
};
@@ -266,22 +236,7 @@
}
materialSaving.value = true;
try {
- await saveMaterialPickingLedger({
- orderId: props.orderRow.id,
- items: materialTableData.value.map(item => ({
- id: item.id,
- processId: item.processName,
- productProcessId: item.productProcessId,
- processName: item.processName,
- bom: item.bom === true,
- materialModelId: item.materialModelId,
- materialName: item.materialName,
- materialModel: item.materialModel,
- requiredQty: item.requiredQty,
- unit: item.unit,
- pickQty: item.pickQty,
- })),
- });
+ await saveMaterialPickingLedger(materialTableData.value[0]);
emit("saved");
dialogVisible.value = false;
} finally {
--
Gitblit v1.9.3