From 5e18ecc3723502b0071ae2c96d7fadee93405356 Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期三, 10 六月 2026 20:55:32 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_pro_河南鹤壁' into dev_pro_河南鹤壁
---
src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue | 75 ++++++++++++++++++++++++-------------
1 files changed, 48 insertions(+), 27 deletions(-)
diff --git a/src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue b/src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue
index 09e7421..6c175f9 100644
--- a/src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue
+++ b/src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue
@@ -2,7 +2,7 @@
<div>
<el-dialog v-model="dialogVisible"
title="棰嗘枡鍙拌处"
- width="1200px"
+ width="1350px"
@close="handleClose">
<div class="material-toolbar">
<el-button type="primary"
@@ -13,7 +13,7 @@
border
row-key="tempId">
<el-table-column label="宸ュ簭鍚嶇О"
- min-width="140">
+ min-width="80">
<template #default="{ row }">
<span v-if="row.bom === true">{{ row.operationName || "-" }}</span>
<el-select v-else
@@ -31,7 +31,7 @@
</template>
</el-table-column>
<el-table-column label="鍘熸枡鍚嶇О"
- min-width="140">
+ min-width="120">
<template #default="{ row }">
<span v-if="row.bom === true">{{ row.materialName || "-" }}</span>
<el-button v-else
@@ -43,7 +43,7 @@
</template>
</el-table-column>
<el-table-column label="鍘熸枡鍨嬪彿"
- min-width="140">
+ min-width="120">
<template #default="{ row }">
{{ row.materialModel || "-" }}
</template>
@@ -66,21 +66,22 @@
</template>
</el-table-column>
<el-table-column label="闇�姹傛暟閲�"
- min-width="120">
+ min-width="100">
<template #default="{ row }">
- <span v-if="row.bom === true">{{ row.demandedQuantity ?? "-" }}</span>
+ <span v-if="row.bom === true">{{ stripTrailingZeros(row.demandedQuantity) ?? "-" }}</span>
<el-input-number v-else
v-model="row.demandedQuantity"
:min="0"
- :precision="3"
:step="1"
controls-position="right"
+ :formatter="value => stripTrailingZeros(value)"
+ :parser="value => parseFloat(value) || 0"
style="width: 100%;"
@change="val => handleRequiredQtyChange(row, val)" />
</template>
</el-table-column>
<el-table-column label="璁¢噺鍗曚綅"
- width="100">
+ width="80">
<template #default="{ row }">
{{ row.unit || "-" }}
</template>
@@ -90,9 +91,10 @@
<template #default="{ row }">
<el-input-number v-model="row.pickQty"
:min="0"
- :precision="3"
:step="1"
controls-position="right"
+ :formatter="value => stripTrailingZeros(value)"
+ :parser="value => parseFloat(value) || 0"
style="width: 100%;" />
</template>
</el-table-column>
@@ -187,26 +189,36 @@
const currentMaterialSelectRowIndex = ref(-1);
let materialTempId = 0;
- const createMaterialRow = (row = {}) => ({
- tempId: row.id || `temp_${++materialTempId}`,
- id: row.id,
- processId: row.processId || row.technologyOperationId,
- technologyOperationId: row.technologyOperationId || row.processId,
- operationName: row.operationName || "",
- bom: row.bom === true,
- materialModelId: row.materialModelId || row.productModelId,
- materialName: row.materialName || row.productName || "",
- materialModel: row.materialModel || row.model || "",
- demandedQuantity: Number(row.requiredQty ?? row.demandedQuantity ?? 0),
- unit: row.unit || "",
- pickQty: Number(row.pickQty ?? row.pickQuantity ?? 0),
- batchNo: row.batchNo
+ const getDefaultBatchNo = batchNoList => {
+ if (!Array.isArray(batchNoList) || batchNoList.length === 0) return [];
+ return [batchNoList[0]];
+ };
+
+ const createMaterialRow = (row = {}) => {
+ const batchNoList = Array.isArray(row.batchNoList) ? row.batchNoList : [];
+ const batchNo = row.batchNo
? typeof row.batchNo === "string"
? row.batchNo.split(",")
: row.batchNo
- : [],
- batchNoList: row.batchNoList || [],
- });
+ : getDefaultBatchNo(batchNoList);
+
+ return {
+ tempId: row.id || `temp_${++materialTempId}`,
+ id: row.id,
+ processId: row.processId || row.technologyOperationId,
+ technologyOperationId: row.technologyOperationId || row.processId,
+ operationName: row.operationName || "",
+ bom: row.bom === true,
+ materialModelId: row.materialModelId || row.productModelId,
+ materialName: row.materialName || row.productName || "",
+ materialModel: row.materialModel || row.model || "",
+ demandedQuantity: Number(row.requiredQty ?? row.demandedQuantity ?? 0),
+ unit: row.unit || "",
+ pickQty: Number(row.pickQty ?? row.pickQuantity ?? row.requiredQty ?? row.demandedQuantity ?? 0),
+ batchNo,
+ batchNoList,
+ };
+ };
const getProcessOptions = async () => {
if (!props.orderRow?.id) return;
@@ -270,6 +282,14 @@
}
);
+ const stripTrailingZeros = val => {
+ const str = String(val);
+ if (str.includes(".")) {
+ return parseFloat(str).toString();
+ }
+ return str;
+ };
+
const handleClose = () => {
materialTableData.value = [];
currentMaterialSelectRowIndex.value = -1;
@@ -319,7 +339,8 @@
product.materialName || product.productName || product.name || "";
row.materialModel = product.materialModel || product.model || "";
row.unit = product.unit || product.measureUnit || "";
- row.batchNoList = product.batchNoList;
+ row.batchNoList = Array.isArray(product.batchNoList) ? product.batchNoList : [];
+ row.batchNo = getDefaultBatchNo(row.batchNoList);
currentMaterialSelectRowIndex.value = -1;
materialProductDialogVisible.value = false;
};
--
Gitblit v1.9.3