From 7726b6cdab80596d2e2f7dd3fe1ec3dfbdeee155 Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期五, 12 六月 2026 09:42:40 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_pro_河南鹤壁' into dev_pro_河南鹤壁
---
src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue | 58 ++++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 48 insertions(+), 10 deletions(-)
diff --git a/src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue b/src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue
index d058896..5f653b3 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>
@@ -111,6 +113,7 @@
<span class="dialog-footer">
<el-button type="primary"
:loading="materialSaving"
+ :disabled="isSaveDisabled"
@click="handleMaterialSave">淇濆瓨</el-button>
<el-button @click="dialogVisible = false">鍙栨秷</el-button>
</span>
@@ -155,6 +158,33 @@
const materialTableLoading = ref(false);
const materialSaving = ref(false);
const materialTableData = ref([]);
+
+ const isSaveDisabled = computed(() => {
+ if (materialTableData.value.length === 0) return true;
+ return !materialTableData.value.some(row => {
+ // 妫�鏌ユ槸鍚︽湁浠讳綍鐢ㄦ埛杈撳叆鍐呭
+ const hasBatch = Array.isArray(row.batchNo) && row.batchNo.length > 0;
+ const hasPickQty =
+ row.pickQty !== null && row.pickQty !== undefined && row.pickQty !== 0;
+
+ if (row.bom) {
+ // 瀵逛簬鏉ヨ嚜BOM鐨勮锛岃緭鍏ユ鍙湁鈥滄壒鍙封�濆拰鈥滈鐢ㄦ暟閲忊��
+ return hasBatch || hasPickQty;
+ } else {
+ // 瀵逛簬鏂板琛岋紝杈撳叆妗嗗寘鎷�滃伐搴忊�濄�佲�滃師鏂欌�濄�佲�滈渶姹傛暟閲忊�濄�佲�滄壒鍙封�濆拰鈥滈鐢ㄦ暟閲忊��
+ const hasOperation = !!row.operationName;
+ const hasMaterial = !!row.materialName;
+ const hasDemanded =
+ row.demandedQuantity !== null &&
+ row.demandedQuantity !== undefined &&
+ row.demandedQuantity !== 0;
+ return (
+ hasBatch || hasPickQty || hasOperation || hasMaterial || hasDemanded
+ );
+ }
+ });
+ });
+
const processOptions = ref([]);
const currentMaterialSelectRowIndex = ref(-1);
let materialTempId = 0;
@@ -171,7 +201,7 @@
materialModel: row.materialModel || row.model || "",
demandedQuantity: Number(row.requiredQty ?? row.demandedQuantity ?? 0),
unit: row.unit || "",
- pickQty: Number(row.pickQty ?? row.pickQuantity ?? 0),
+ pickQty: Number(row.pickQty ?? row.pickQuantity ?? row.requiredQty ?? row.demandedQuantity ?? 0),
batchNo: row.batchNo
? typeof row.batchNo === "string"
? row.batchNo.split(",")
@@ -242,6 +272,14 @@
}
);
+ const stripTrailingZeros = val => {
+ const str = String(val);
+ if (str.includes(".")) {
+ return parseFloat(str).toString();
+ }
+ return str;
+ };
+
const handleClose = () => {
materialTableData.value = [];
currentMaterialSelectRowIndex.value = -1;
--
Gitblit v1.9.3