From 989d2e51cb7295ab79b285f4682d41ae2164a933 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期六, 28 三月 2026 11:08:09 +0800
Subject: [PATCH] feat: 编辑/新增销售台账产品信息数据展示新增

---
 src/views/salesManagement/salesLedger/index.vue |  151 ++++++++++++++++++++++++++++++++-----------------
 1 files changed, 98 insertions(+), 53 deletions(-)

diff --git a/src/views/salesManagement/salesLedger/index.vue b/src/views/salesManagement/salesLedger/index.vue
index 9ec8ef2..6a4f061 100644
--- a/src/views/salesManagement/salesLedger/index.vue
+++ b/src/views/salesManagement/salesLedger/index.vue
@@ -35,30 +35,30 @@
           :bound-route-name="processFlowSelectBoundRouteName"
           @confirm="handleProcessFlowSelectConfirm"
         />
-        <div>
-          <el-button type="primary" @click="openForm('add')">
-            鏂板鍙拌处
-          </el-button>
-		  <el-button type="primary"  @click="handleBulkDelivery">
-            鍙戣揣
-          </el-button>
-          <el-button type="primary" plain @click="handleImport">瀵煎叆</el-button>
-          <el-button @click="handleOut">瀵煎嚭</el-button>
-          <el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>
-          <el-dropdown @command="handlePrintCommand">
-            <el-button type="primary" plain>
-              鎵撳嵃鍗曟嵁<el-icon class="el-icon--right"><ArrowDown /></el-icon>
-            </el-button>
-            <template #dropdown>
-              <el-dropdown-menu>
-                <el-dropdown-item command="finishedProcessCard">鐢熶骇娴佺▼鍗★紙鎴愬搧锛�</el-dropdown-item>
-                <el-dropdown-item command="salesOrder">閿�鍞鍗�</el-dropdown-item>
-                <el-dropdown-item command="salesDeliveryNote">閿�鍞彂璐у崟</el-dropdown-item>
-              </el-dropdown-menu>
-            </template>
-          </el-dropdown>
-          <el-button type="primary" plain @click="handlePrintLabel">鎵撳嵃鏍囩</el-button>
-        </div>
+			<el-space wrap>
+					<el-button type="primary" @click="openForm('add')">鏂板鍙拌处</el-button>
+					<el-button type="primary" @click="handleBulkDelivery">鍙戣揣</el-button>
+					<el-button type="primary" plain @click="handleImport">瀵煎叆</el-button>
+					<el-button @click="handleOut">瀵煎嚭</el-button>
+
+					<el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>
+
+					<el-dropdown @command="handlePrintCommand">
+						<el-button type="primary" plain>
+							鎵撳嵃鍗曟嵁<el-icon class="el-icon--right">
+								<ArrowDown />
+							</el-icon>
+						</el-button>
+						<template #dropdown>
+							<el-dropdown-menu>
+								<el-dropdown-item command="finishedProcessCard">鐢熶骇娴佺▼鍗★紙鎴愬搧锛�</el-dropdown-item>
+								<el-dropdown-item command="salesOrder">閿�鍞鍗�</el-dropdown-item>
+								<el-dropdown-item command="salesDeliveryNote">閿�鍞彂璐у崟</el-dropdown-item>
+							</el-dropdown-menu>
+						</template>
+					</el-dropdown>
+					<el-button type="primary" plain @click="handlePrintLabel">鎵撳嵃鏍囩</el-button>
+				</el-space>
       </div>
       <el-table :data="tableData" border v-loading="tableLoading" @selection-change="handleSelectionChange"
         :expand-row-keys="expandedRowKeys" :row-key="(row) => row.id" :row-class-name="tableRowClassName" show-summary style="width: 100%"
@@ -68,13 +68,42 @@
           <template #default="props">
             <el-table :data="props.row.children" border show-summary :summary-method="summarizeChildrenTable">
               <el-table-column align="center" label="搴忓彿" type="index"/>
+			<el-table-column label="妤煎眰缂栧彿" prop="floorCode" min-width="100" show-overflow-tooltip />
               <el-table-column label="浜у搧澶х被" prop="productCategory" />
               <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" />
               <el-table-column label="鍘氬害" prop="thickness" min-width="90">
                 <template #default="scope">
                   {{ scope.row.thickness ?? "" }}
                 </template>
-              </el-table-column>
+						</el-table-column>
+							<el-table-column label="瀹�(mm)" prop="width" min-width="80">
+								<template #default="scope">
+									{{ scope.row.width ?? "" }}
+								</template>
+							</el-table-column>
+							<el-table-column label="楂�(mm)" prop="height" min-width="80">
+								<template #default="scope">
+									{{ scope.row.height ?? "" }}
+								</template>
+							</el-table-column>
+							<el-table-column label="鍛ㄩ暱(cm)" prop="perimeter" min-width="90">
+								<template #default="scope">
+									{{ scope.row.perimeter ?? "" }}
+								</template>
+							</el-table-column>
+							<el-table-column label="鎬婚潰绉�(cm虏)" prop="actualTotalArea" min-width="100">
+								<template #default="scope">
+									{{ scope.row.actualTotalArea ?? "" }}
+								</template>
+							</el-table-column>
+							<el-table-column label="鍔犲伐瑕佹眰" prop="processRequirement" min-width="120"
+								show-overflow-tooltip />
+							<el-table-column label="澶囨敞" prop="remark" min-width="120" show-overflow-tooltip />
+							<el-table-column label="閲嶇" prop="heavyBox" min-width="80">
+								<template #default="scope">
+									{{ scope.row.heavyBox ?? "" }}
+								</template>
+							</el-table-column>
 							<el-table-column label="浜у搧鐘舵��"
 															 width="100px"
 															 align="center">
@@ -258,6 +287,21 @@
 					<el-table-column label="鍘氬害" prop="thickness" min-width="90">
 						<template #default="scope">
 							{{ scope.row.thickness ?? "" }}
+						</template>
+					</el-table-column>
+					<el-table-column label="瀹�(mm)" prop="width" min-width="80">
+						<template #default="scope">
+							{{ scope.row.width ?? "" }}
+						</template>
+					</el-table-column>
+					<el-table-column label="楂�(mm)" prop="height" min-width="80">
+						<template #default="scope">
+							{{ scope.row.height ?? "" }}
+						</template>
+					</el-table-column>
+					<el-table-column label="闈㈢Н(m虏)" prop="actualTotalArea" min-width="100">
+						<template #default="scope">
+							{{ scope.row.actualTotalArea ?? "" }}
 						</template>
 					</el-table-column>
 					<el-table-column label="鏁伴噺" prop="quantity" />
@@ -580,7 +624,7 @@
 								style="width: 100%"
 								placeholder="璇疯緭鍏�"
 								clearable
-								@change="recalcAreaTotals"
+								@change="() => { recalcAreaTotals(); calculateFromUnitPrice(true); }"
 							/>
 						</el-form-item>
 					</el-col>
@@ -1649,8 +1693,9 @@
 	productData.value = products.map((p) => {
 		const quantity = Number(p.quantity ?? 0) || 0;
 		const unitPrice = Number(p.unitPrice ?? 0) || 0;
+		const settlePieceArea = Number(p.settlePieceArea ?? 0) || 1;
 		const taxRate = "13"; // 榛樿 13%锛屼究浜庣洿鎺ユ彁浜わ紙濡傞渶鍙湪浜у搧涓嚜琛屼慨鏀癸級
-		const taxInclusiveTotalPrice = (unitPrice * quantity).toFixed(2);
+		const taxInclusiveTotalPrice = (unitPrice * settlePieceArea * quantity).toFixed(2);
 		const taxExclusiveTotalPrice = proxy.calculateTaxExclusiveTotalPrice(taxInclusiveTotalPrice, taxRate);
 		return {
 			// 鍙拌处瀛楁
@@ -2153,10 +2198,11 @@
 	if (!productForm.value.quantity) {
 		return;
 	}
-	// 鍚◣鎬讳环璁$畻
+	const settlePieceArea = parseFloat(productForm.value.settlePieceArea) || 1;
+	// 鍚◣鎬讳环璁$畻 = 鍗曚环 * 缁撶畻闈㈢Н * 鏁伴噺
 	productForm.value.taxInclusiveTotalPrice =
 		proxy.calculateTaxIncludeTotalPrice(
-			productForm.value.taxInclusiveUnitPrice,
+			productForm.value.taxInclusiveUnitPrice * settlePieceArea,
 			productForm.value.quantity
 		);
 	if (productForm.value.taxRate) {
@@ -2219,15 +2265,12 @@
 	const computed = Number(computedPieceArea.toFixed(5));
 
 	productForm.value.actualPieceArea = computed;
-
-	// settlePieceArea锛氳嫢鐢ㄦ埛鏈~鍐�/涓�0锛屽垯榛樿浣跨敤瀹介珮璁$畻鍊�
-	const settlePieceRaw = Number(productForm.value.settlePieceArea ?? 0) || 0;
-	if (!settlePieceRaw) {
-		productForm.value.settlePieceArea = computed;
-	}
+	productForm.value.settlePieceArea = computed;
 
 	recalcPerimeterFromWidthHeight();
 	recalcAreaTotals();
+	// 闈㈢Н鏇存柊鍚庯紝閲嶆柊璁$畻鍚◣鎬讳环 = 鍗曚环 * 缁撶畻闈㈢Н * 鏁伴噺
+	calculateFromUnitPrice(true);
 };
 
 // 鏍规嵁鍚◣鎬讳环璁$畻鍚◣鍗曚环鍜屾暟閲�
@@ -2294,19 +2337,20 @@
 		return;
 	}
 	if (isCalculating.value) return;
-	
+
 	const quantity = parseFloat(productForm.value.quantity);
 	const unitPrice = parseFloat(productForm.value.taxInclusiveUnitPrice);
-	
+	const settlePieceArea = parseFloat(productForm.value.settlePieceArea) || 1;
+
 	if (!quantity || quantity <= 0 || !unitPrice) {
 		return;
 	}
-	
+
 	isCalculating.value = true;
-	
-	// 璁$畻鍚◣鎬讳环
-	productForm.value.taxInclusiveTotalPrice = (unitPrice * quantity).toFixed(2);
-	
+
+	// 璁$畻鍚◣鎬讳环 = 鍗曚环 * 缁撶畻闈㈢Н * 鏁伴噺
+	productForm.value.taxInclusiveTotalPrice = (unitPrice * settlePieceArea * quantity).toFixed(2);
+
 	// 濡傛灉鏈夌◣鐜囷紝璁$畻涓嶅惈绋庢�讳环
 	if (productForm.value.taxRate) {
 		productForm.value.taxExclusiveTotalPrice =
@@ -2315,30 +2359,31 @@
 				productForm.value.taxRate
 			);
 	}
-	
+
 	isCalculating.value = false;
 };
 
 // 鏍规嵁鍚◣鍗曚环鍙樺寲璁$畻鎬讳环
-const calculateFromUnitPrice = () => {
+const calculateFromUnitPrice = (silent = false) => {
 	if (!productForm.value.taxRate) {
-		proxy.$modal.msgWarning("璇峰厛閫夋嫨绋庣巼");
+		if (!silent) proxy.$modal.msgWarning("璇峰厛閫夋嫨绋庣巼");
 		return;
 	}
 	if (isCalculating.value) return;
-	
+
 	const quantity = parseFloat(productForm.value.quantity);
 	const unitPrice = parseFloat(productForm.value.taxInclusiveUnitPrice);
-	
+	const settlePieceArea = parseFloat(productForm.value.settlePieceArea) || 1;
+
 	if (!quantity || quantity <= 0 || !unitPrice) {
 		return;
 	}
-	
+
 	isCalculating.value = true;
-	
-	// 璁$畻鍚◣鎬讳环
-	productForm.value.taxInclusiveTotalPrice = (unitPrice * quantity).toFixed(2);
-	
+
+	// 璁$畻鍚◣鎬讳环 = 鍗曚环 * 缁撶畻闈㈢Н * 鏁伴噺
+	productForm.value.taxInclusiveTotalPrice = (unitPrice * settlePieceArea * quantity).toFixed(2);
+
 	// 濡傛灉鏈夌◣鐜囷紝璁$畻涓嶅惈绋庢�讳环
 	if (productForm.value.taxRate) {
 		productForm.value.taxExclusiveTotalPrice =
@@ -2347,7 +2392,7 @@
 				productForm.value.taxRate
 			);
 	}
-	
+
 	isCalculating.value = false;
 };
 

--
Gitblit v1.9.3