From b497a0b35c09e6b53324c14b7697c1e9e0ed36a9 Mon Sep 17 00:00:00 2001
From: chenrui <1187576398@qq.com>
Date: 星期三, 04 六月 2025 09:39:13 +0800
Subject: [PATCH] 销售台账/采购台账计算重写

---
 src/views/salesManagement/salesLedger/index.vue |   75 +++++++++++++++++++------------------
 1 files changed, 38 insertions(+), 37 deletions(-)

diff --git a/src/views/salesManagement/salesLedger/index.vue b/src/views/salesManagement/salesLedger/index.vue
index d58321b..7fb3b61 100644
--- a/src/views/salesManagement/salesLedger/index.vue
+++ b/src/views/salesManagement/salesLedger/index.vue
@@ -53,7 +53,7 @@
         <el-table-column label="涓氬姟鍛�" prop="salesman" show-overflow-tooltip/>
         <el-table-column label="椤圭洰鍚嶇О" prop="projectName" show-overflow-tooltip/>
         <el-table-column label="鍚堝悓閲戦(鍏�)" prop="contractAmount" show-overflow-tooltip/>
-        <el-table-column label="褰曞叆浜�" prop="entryPerson" show-overflow-tooltip/>
+        <el-table-column label="褰曞叆浜�" prop="entryPersonName" show-overflow-tooltip/>
         <el-table-column label="褰曞叆鏃ユ湡" prop="entryDate" show-overflow-tooltip/>
         <el-table-column fixed="right" label="鎿嶄綔" min-width="60" align="center">
           <template #default="scope">
@@ -104,7 +104,7 @@
           </el-col>
           <el-col :span="12">
             <el-form-item label="褰曞叆浜猴細" prop="entryPerson">
-              <el-select v-model="form.entryPerson" placeholder="璇烽�夋嫨" clearable @change="changs">
+              <el-select v-model="form.entryPerson" placeholder="璇烽�夋嫨" clearable @change="changs" disabled>
                 <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId"/>
               </el-select>
             </el-form-item>
@@ -132,7 +132,7 @@
             <el-button plain type="danger" @click="deleteProduct">鍒犻櫎</el-button>
           </el-form-item>
         </el-row>
-        <el-table :data="productData" border @selection-change="productSelected">
+        <el-table :data="productData" border @selection-change="productSelected"   show-summary :summary-method="summarizeMainTable">
           <el-table-column align="center" type="selection" width="55" />
           <el-table-column align="center" label="搴忓彿" type="index" width="60" />
           <el-table-column label="浜у搧澶х被" prop="productCategory" />
@@ -190,7 +190,11 @@
       </template>
     </el-dialog>
     <el-dialog v-model="productFormVisible" :title="productOperationType === 'add' ? '鏂板浜у搧' : '缂栬緫浜у搧'" width="40%" @close="closeProductDia">
-      <el-form :model="productForm" label-width="140px" label-position="top" :rules="productRules" ref="productFormRef">
+      <el-form :model="productForm"
+               label-width="140px"
+               label-position="top"
+               :rules="productRules"
+               ref="productFormRef">
         <el-row :gutter="30">
           <el-col :span="24">
             <el-form-item label="浜у搧澶х被锛�" prop="productCategory">
@@ -227,19 +231,19 @@
           </el-col>
           <el-col :span="12">
             <el-form-item label="鏁伴噺锛�" prop="quantity">
-              <el-input v-model="productForm.quantity" placeholder="璇疯緭鍏�" clearable/>
+              <el-input v-model="productForm.quantity" placeholder="璇疯緭鍏�" clearable @change="mathNum" />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row :gutter="30">
           <el-col :span="12">
             <el-form-item label="鍚◣鍗曚环(鍏�)锛�" prop="taxInclusiveUnitPrice">
-              <el-input v-model="productForm.taxInclusiveUnitPrice" placeholder="璇疯緭鍏�" clearable/>
+              <el-input v-model="productForm.taxInclusiveUnitPrice" placeholder="璇疯緭鍏�" clearable @change="mathNum" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="绋庣巼(%)锛�" prop="taxRate">
-              <el-select v-model="productForm.taxRate" placeholder="璇烽�夋嫨" clearable>
+              <el-select v-model="productForm.taxRate" placeholder="璇烽�夋嫨" clearable  @change="mathNum">
                 <el-option label="1" value="1"/>
                 <el-option label="6" value="6"/>
                 <el-option label="13" value="13"/>
@@ -250,12 +254,12 @@
         <el-row :gutter="30">
           <el-col :span="12">
             <el-form-item label="鍚◣鎬讳环(鍏�)锛�" prop="taxInclusiveTotalPrice">
-              <el-input v-model="productForm.taxInclusiveTotalPrice" placeholder="璇疯緭鍏�" clearable/>
+              <el-input v-model="productForm.taxInclusiveTotalPrice" placeholder="璇疯緭鍏�" clearable disabled />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="涓嶅惈绋庢�讳环(鍏�)锛�" prop="taxExclusiveTotalPrice">
-              <el-input v-model="productForm.taxExclusiveTotalPrice" placeholder="璇疯緭鍏�" clearable/>
+              <el-input v-model="productForm.taxExclusiveTotalPrice" placeholder="璇疯緭鍏�" clearable disabled />
             </el-form-item>
           </el-col>
         </el-row>
@@ -284,7 +288,6 @@
 import { getToken } from "@/utils/auth"
 import pagination from '@/components/PIMTable/Pagination.vue'
 import { ref } from 'vue'
-import {Search} from "@element-plus/icons-vue";
 import {ElMessageBox } from "element-plus";
 import useUserStore from '@/store/modules/user'
 import {userListNoPage} from "@/api/system/user.js";
@@ -447,13 +450,16 @@
     if (children && children.length > 0) {
       newItem.children = convertIdToValue(children);
     }
-    
+
     return newItem;
   });
 }
 // 琛ㄦ牸閫夋嫨鏁版嵁
 const handleSelectionChange = (selection) => {
-  selectedRows.value = selection
+
+  // 杩囨护鎺夊瓙鏁版嵁
+  selectedRows.value = selection.filter(item => item.children !== undefined);
+  console.log('selection',selectedRows.value)
 }
 const productSelected = (selectedRows) => {
   productSelectedRows.value = selectedRows
@@ -467,7 +473,7 @@
       productList({salesLedgerId: row.id, type: 1}).then(res => {
       const index = tableData.value.findIndex(item => item.id === row.id);
       if (index > -1) {
-        tableData.value[index].children = res.rows;
+        tableData.value[index].children = res;
       }
       expandedRowKeys.value.push(row.id)
     })
@@ -480,26 +486,7 @@
 }
 // 涓昏〃鍚堣鏂规硶
 const summarizeMainTable = (param) => {
-  const { columns, data } = param;
-  const sums = [];
-  columns.forEach((column, index) => {
-    if (index === 0) {
-      sums[index] = '鍚堣';
-      return;
-    }
-    const prop = column.property;
-    if (['contractAmount'].includes(prop)) {
-      const values = data.map(item => Number(item[prop]));
-      if (!values.every(value => isNaN(value))) {
-        sums[index] = values.reduce((acc, val) => (!isNaN(val) ? acc + val : acc), 0);
-      } else {
-        sums[index] = '';
-      }
-    } else {
-      sums[index] = '';
-    }
-  })
-  return sums;
+  return proxy.summarizeTable(param, ['contractAmount','taxInclusiveTotalPrice','taxExclusiveTotalPrice']);
 };
 // 瀛愯〃鍚堣鏂规硶
 const summarizeChildrenTable = (param) => {
@@ -534,6 +521,7 @@
   customerList().then(res => {
     customerOption.value = res
   })
+  form.value.entryPerson = userStore.id
   if (type === 'edit') {
     currentId.value = row.id;
     getSalesLedgerWithProducts({id: row.id, type: 1}).then(res => {
@@ -689,7 +677,7 @@
     }).catch(() => {
       proxy.$modal.msg("宸插彇娑�")
     })
-    
+
   }
 }
 // 鍏抽棴浜у搧寮规
@@ -745,12 +733,25 @@
   const day = String(today.getDate()).padStart(2, '0');
   return `${year}-${month}-${day}`;
 }
-const mathNum = (val) => {
-  productForm.value.taxExclusiveTotalPrice = proxy.calculateTaxExclusiveTotalPrice(val, productForm.value.taxRate)
+
+const mathNum = () => {
+  console.log('productForm.value',productForm.value)
+  if(!productForm.value.taxInclusiveUnitPrice){
+    return
+  }
+  if(!productForm.value.quantity){
+    return
+  }
+  // 鍚◣鎬讳环璁$畻
+  productForm.value.taxInclusiveTotalPrice = proxy.calculateTaxIncludeTotalPrice(productForm.value.taxInclusiveUnitPrice, productForm.value.quantity)
+  if(productForm.value.taxRate){
+    // 涓嶅惈绋庢�讳环璁$畻
+    productForm.value.taxExclusiveTotalPrice = proxy.calculateTaxExclusiveTotalPrice(productForm.value.taxInclusiveTotalPrice, productForm.value.taxRate)
+  }
 }
 getList()
 </script>
 
 <style scoped lang="scss">
 
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.9.3