From b0bd7dd3557b57a121551697a889a725da24c385 Mon Sep 17 00:00:00 2001
From: yaowanxin <3588231647@qq.com>
Date: 星期三, 14 一月 2026 15:26:59 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_天津军泰伟业' into dev_天津军泰伟业

---
 src/views/procurementManagement/procurementInvoiceLedger/Form/EditForm.vue |  142 +++++++++++++++++++++++++++++++++-------------
 1 files changed, 101 insertions(+), 41 deletions(-)

diff --git a/src/views/procurementManagement/procurementInvoiceLedger/Form/EditForm.vue b/src/views/procurementManagement/procurementInvoiceLedger/Form/EditForm.vue
index c00251a..85f83ff 100644
--- a/src/views/procurementManagement/procurementInvoiceLedger/Form/EditForm.vue
+++ b/src/views/procurementManagement/procurementInvoiceLedger/Form/EditForm.vue
@@ -12,8 +12,8 @@
         </el-form-item>
       </el-col>
       <el-col :span="12">
-        <el-form-item label="鏉ョエ閲戦锛�">
-          <el-text type="primary">{{ form.taxInclusiveTotalPrice }}</el-text>
+        <el-form-item label="鍚◣鍗曚环(鍏�)锛�">
+          <el-text type="primary">{{ form.taxInclusiveUnitPrice }}</el-text>
         </el-form-item>
       </el-col>
       <el-col :span="12">
@@ -28,12 +28,27 @@
       </el-col>
       <el-col :span="12">
         <el-form-item label="鏉ョエ鏁帮細">
-          <el-input v-model="form.ticketsNum" @input="inputTicketsNum" />
+          <el-input-number :step="0.1"
+                           :min="0"
+                           style="width: 100%"
+                           v-model="form.ticketsNum"
+                           @change="inputTicketsNum"
+                           :precision="2" />
         </el-form-item>
       </el-col>
       <el-col :span="12">
-        <el-form-item label="鏉ョエ閲戦锛�">
-          <el-text type="success">{{ form.ticketsAmount }}</el-text>
+        <el-form-item label="鏈鏉ョエ閲戦(鍏�)锛�">
+          <el-input-number :step="0.1"
+                           :min="0"
+                           style="width: 100%"
+                           v-model="form.ticketsAmount"
+                           @change="inputTicketsAmount"
+                           :precision="2" />
+        </el-form-item>
+      </el-col>
+      <el-col :span="12">
+        <el-form-item label="鏈潵绁ㄦ暟锛�">
+          <el-text type="success">{{ form.futureTickets }}</el-text>
         </el-form-item>
       </el-col>
     </el-row>
@@ -41,47 +56,92 @@
 </template>
 
 <script setup>
-import useFormData from "@/hooks/useFormData";
-import { getProductRecordById } from "@/api/procurementManagement/procurementInvoiceLedger";
+  import useFormData from "@/hooks/useFormData";
+  import { getProductRecordById } from "@/api/procurementManagement/procurementInvoiceLedger";
+  const { proxy } = getCurrentInstance();
 
-defineOptions({
-  name: "鏉ョエ鍙拌处琛ㄥ崟",
-});
+  defineOptions({
+    name: "鏉ョエ鍙拌处琛ㄥ崟",
+  });
+  const temFutureTickets = ref(0);
+  const { form, resetForm } = useFormData({
+    id: undefined,
+    purchaseContractNumber: undefined, // 閲囪喘鍚堝悓鍙�
+    salesContractNo: undefined, // 閿�鍞悎鍚屽彿
+    createdAt: undefined, // 鍒涘缓鏃堕棿
+    invoiceNumber: undefined, // 鍙戠エ鍙�
+    ticketsNum: undefined, // 鏉ョエ鏁�
+    ticketsAmount: undefined, // 鏉ョエ閲戦
+    taxInclusiveUnitPrice: undefined, // 鍚◣鍗曚环
+    ticketRegistrationId: undefined, // 鍚◣鍗曚环
+  });
 
-const { form, resetForm } = useFormData({
-  id: undefined,
-  purchaseContractNumber: undefined, // 閲囪喘鍚堝悓鍙�
-  salesContractNo: undefined, // 閿�鍞悎鍚屽彿
-  createdAt: undefined, // 鍒涘缓鏃堕棿
-  invoiceNumber: undefined, // 鍙戠エ鍙�
-  ticketsNum: undefined, // 鏉ョエ鏁�
-  ticketsAmount: undefined, // 鏉ョエ閲戦
-  taxInclusiveTotalPrice: undefined, // 鍚◣鎬讳环
-});
+  const load = async id => {
+    const { code, data } = await getProductRecordById({ id });
+    if (code === 200) {
+      form.id = data.id;
+      form.purchaseContractNumber = data.purchaseContractNumber;
+      form.salesContractNo = data.salesContractNo;
+      form.createdAt = data.createdAt;
+      form.invoiceNumber = data.invoiceNumber;
+      form.ticketsNum = data.ticketsNum;
+      form.ticketsAmount = data.ticketsAmount.toFixed(2);
+      form.taxInclusiveUnitPrice = data.taxInclusiveUnitPrice;
+      form.futureTickets = data.futureTickets;
+      // temFutureTickets.value = data.futureTickets;
+      temFutureTickets.value = data.quantity;
 
-const load = async (id) => {
-  const { code, data } = await getProductRecordById({ id });
-  if (code === 200) {
-    form.id = data.id;
-    form.purchaseContractNumber = data.purchaseContractNumber;
-    form.salesContractNo = data.salesContractNo;
-    form.createdAt = data.createdAt;
-    form.invoiceNumber = data.invoiceNumber;
-    form.ticketsNum = data.ticketsNum;
-    form.ticketsAmount = data.ticketsAmount.toFixed(2);
-    form.taxInclusiveTotalPrice = data.taxInclusiveTotalPrice;
-  }
-};
+      form.ticketRegistrationId = data.ticketRegistrationId;
+    }
+  };
 
-const inputTicketsNum = (val) => {
-  form.ticketsAmount = (val * form.taxInclusiveTotalPrice).toFixed(2);
-};
+  const inputTicketsNum = val => {
+    // 纭繚鍚◣鍗曚环瀛樺湪涓斾笉涓洪浂
+    if (!form.taxInclusiveUnitPrice || Number(form.taxInclusiveUnitPrice) === 0) {
+      proxy.$modal.msgWarning("鍚◣鍗曚环涓嶈兘涓洪浂鎴栨湭瀹氫箟");
+      return;
+    }
+    if (Number(form.ticketsNum) > Number(temFutureTickets.value)) {
+      proxy.$modal.msgWarning("寮�绁ㄦ暟涓嶅緱澶т簬鏈紑绁ㄦ暟");
+      form.ticketsNum = temFutureTickets.value;
+    }
 
-defineExpose({
-  load,
-  form,
-  resetForm,
-});
+    // 纭繚鎵�鏈夋暟鍊奸兘杞崲涓烘暟瀛楃被鍨嬭繘琛岃绠�
+    const ticketsAmount =
+      Number(form.ticketsNum) * Number(form.taxInclusiveUnitPrice);
+    const futureTickets =
+      Number(temFutureTickets.value) - Number(form.ticketsNum);
+    form.futureTickets = Number(futureTickets.toFixed(2));
+    form.ticketsAmount = Number(ticketsAmount.toFixed(2));
+  };
+  const inputTicketsAmount = val => {
+    // 纭繚鍚◣鍗曚环瀛樺湪涓斾笉涓洪浂
+    if (!form.taxInclusiveUnitPrice || Number(form.taxInclusiveUnitPrice) === 0) {
+      proxy.$modal.msgWarning("鍚◣鍗曚环涓嶈兘涓洪浂鎴栨湭瀹氫箟");
+      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));
+      return;
+    }
+
+    // 纭繚鎵�鏈夋暟鍊奸兘杞崲涓烘暟瀛楃被鍨嬭繘琛岃绠�
+    const ticketsNum = Number(val) / Number(form.taxInclusiveUnitPrice);
+    form.ticketsNum = Number(ticketsNum.toFixed(2));
+  };
+
+  defineExpose({
+    load,
+    form,
+    resetForm,
+  });
 </script>
 
 <style lang="scss" scoped></style>

--
Gitblit v1.9.3