From 1156fbe1fa77e4a6b7d890604d25e98edf8a7059 Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期三, 28 一月 2026 17:40:09 +0800
Subject: [PATCH] Merge branch 'dev_New' of http://114.132.189.42:9002/r/product-inventory-management into dev_New

---
 src/views/procurementManagement/procurementInvoiceLedger/Modal/EditModal.vue |   65 ++++++++++++++++++++++++++------
 1 files changed, 52 insertions(+), 13 deletions(-)

diff --git a/src/views/procurementManagement/procurementInvoiceLedger/Modal/EditModal.vue b/src/views/procurementManagement/procurementInvoiceLedger/Modal/EditModal.vue
index 9794bb4..4e461dc 100644
--- a/src/views/procurementManagement/procurementInvoiceLedger/Modal/EditModal.vue
+++ b/src/views/procurementManagement/procurementInvoiceLedger/Modal/EditModal.vue
@@ -34,10 +34,14 @@
           <el-form-item label="鏉ョエ鏁帮細">
             <el-input-number :step="0.1"
                              :min="0"
+                             :max="maxTicketsNum"
                              style="width: 100%"
                              v-model="form.ticketsNum"
                              @change="inputTicketsNum"
                              :precision="2" />
+            <div style="font-size: 12px; color: #909399; margin-top: 4px;">
+              鍙~鍐欐暟閲忥細{{ maxTicketsNum }}
+            </div>
           </el-form-item>
         </el-col>
         <el-col :span="12">
@@ -73,7 +77,7 @@
 import useFormData from "@/hooks/useFormData";
 import { updateRegistration, getProductRecordById } from "@/api/procurementManagement/procurementInvoiceLedger";
 import { ElMessage } from "element-plus";
-import { getCurrentInstance, ref, nextTick } from "vue";
+import { getCurrentInstance, ref, nextTick, computed } from "vue";
 
 defineOptions({
   name: "鏉ョエ鍙拌处缂栬緫",
@@ -82,7 +86,13 @@
 
 const saleLedgerProjectId = ref("");
 const temFutureTickets = ref(0);
+const originalTicketsNum = ref(0); // 鍘熷宸叉潵绁ㄦ暟
 const { proxy } = getCurrentInstance();
+
+// 璁$畻鏈�澶у彲濉啓鏁伴噺 = 鍘熷宸叉潵绁ㄦ暟 + 鏈潵绁ㄦ暟
+const maxTicketsNum = computed(() => {
+  return Number(originalTicketsNum.value) + Number(temFutureTickets.value);
+});
 
 const {
   id,
@@ -123,6 +133,8 @@
     form.taxInclusiveUnitPrice = data.taxInclusiveUnitPrice;
     form.futureTickets = data.futureTickets;
     temFutureTickets.value = data.futureTickets;
+    // 淇濆瓨鍘熷宸叉潵绁ㄦ暟
+    originalTicketsNum.value = data.ticketsNum || 0;
   }
 };
 
@@ -132,16 +144,30 @@
     proxy.$modal.msgWarning("鍚◣鍗曚环涓嶈兘涓洪浂鎴栨湭瀹氫箟");
     return;
   }
-  if (Number(form.ticketsNum) > Number(temFutureTickets.value)) {
-    proxy.$modal.msgWarning("寮�绁ㄦ暟涓嶅緱澶т簬鏈紑绁ㄦ暟");
-    form.ticketsNum = temFutureTickets.value;
+  
+  // 妫�鏌ユ潵绁ㄦ暟涓嶈兘澶т簬锛堝師濮嬪凡鏉ョエ鏁� + 鏈潵绁ㄦ暟锛�
+  const maxNum = maxTicketsNum.value;
+  if (Number(form.ticketsNum) > maxNum) {
+    proxy.$modal.msgWarning(`鏉ョエ鏁颁笉鑳藉ぇ浜�${maxNum}锛堝凡鏉ョエ鏁�${originalTicketsNum.value} + 鏈潵绁ㄦ暟${temFutureTickets.value}锛塦);
+    form.ticketsNum = maxNum;
+    return;
+  }
+  
+  // 璁$畻鏈鏂板鐨勬潵绁ㄦ暟锛堝綋鍓嶆潵绁ㄦ暟 - 鍘熷宸叉潵绁ㄦ暟锛�
+  const newTicketsNum = Number(form.ticketsNum) - Number(originalTicketsNum.value);
+  
+  // 濡傛灉鏂板鐨勬潵绁ㄦ暟澶т簬鏈潵绁ㄦ暟锛屽垯闄愬埗
+  if (newTicketsNum > Number(temFutureTickets.value)) {
+    proxy.$modal.msgWarning("鏈鏂板鏉ョエ鏁颁笉寰楀ぇ浜庢湭鏉ョエ鏁�");
+    form.ticketsNum = Number(originalTicketsNum.value) + Number(temFutureTickets.value);
+    return;
   }
 
   // 纭繚鎵�鏈夋暟鍊奸兘杞崲涓烘暟瀛楃被鍨嬭繘琛岃绠�
   const ticketsAmount =
     Number(form.ticketsNum) * Number(form.taxInclusiveUnitPrice);
   const futureTickets =
-    Number(temFutureTickets.value) - Number(form.ticketsNum);
+    Number(temFutureTickets.value) - newTicketsNum;
   form.futureTickets = Number(futureTickets.toFixed(2));
   form.ticketsAmount = Number(ticketsAmount.toFixed(2));
 };
@@ -153,20 +179,33 @@
     return;
   }
 
-  if (Number(val) > Number(form.futureTickets * form.taxInclusiveUnitPrice)) {
-    proxy.$modal.msgWarning("鏈鏉ョエ閲戦涓嶅緱澶т簬鎬婚噾棰�");
-    form.ticketsAmount = (
-      form.futureTickets * form.taxInclusiveUnitPrice
-    ).toFixed(2);
-    const ticketsNum =
-      Number(form.ticketsAmount) / Number(form.taxInclusiveUnitPrice);
-    form.ticketsNum = Number(ticketsNum.toFixed(2));
+  // 璁$畻鏈�澶у彲濉啓閲戦 = 锛堝師濮嬪凡鏉ョエ鏁� + 鏈潵绁ㄦ暟锛�* 鍚◣鍗曚环
+  const maxAmount = maxTicketsNum.value * Number(form.taxInclusiveUnitPrice);
+  
+  if (Number(val) > maxAmount) {
+    proxy.$modal.msgWarning(`鏈鏉ョエ閲戦涓嶅緱澶т簬${maxAmount.toFixed(2)}鍏僠);
+    form.ticketsAmount = maxAmount.toFixed(2);
+    form.ticketsNum = maxTicketsNum.value;
     return;
   }
 
   // 纭繚鎵�鏈夋暟鍊奸兘杞崲涓烘暟瀛楃被鍨嬭繘琛岃绠�
   const ticketsNum = Number(val) / Number(form.taxInclusiveUnitPrice);
+  
+  // 妫�鏌ユ潵绁ㄦ暟涓嶈兘澶т簬鏈�澶у��
+  if (ticketsNum > maxTicketsNum.value) {
+    proxy.$modal.msgWarning(`鏉ョエ鏁颁笉鑳藉ぇ浜�${maxTicketsNum.value}`);
+    form.ticketsNum = maxTicketsNum.value;
+    form.ticketsAmount = maxAmount.toFixed(2);
+    return;
+  }
+  
   form.ticketsNum = Number(ticketsNum.toFixed(2));
+  
+  // 璁$畻鏈潵绁ㄦ暟
+  const newTicketsNum = form.ticketsNum - originalTicketsNum.value;
+  const futureTickets = Number(temFutureTickets.value) - newTicketsNum;
+  form.futureTickets = Number(futureTickets.toFixed(2));
 };
 
 const open = async row => {

--
Gitblit v1.9.3