From 8d4a66c31aa0f6418403ade8a780f27c9fa9d921 Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期二, 10 二月 2026 17:43:30 +0800
Subject: [PATCH] 消息列表
---
src/pages/procurementManagement/procurementInvoiceLedger/detail.vue | 116 +++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 90 insertions(+), 26 deletions(-)
diff --git a/src/pages/procurementManagement/procurementInvoiceLedger/detail.vue b/src/pages/procurementManagement/procurementInvoiceLedger/detail.vue
index a5c74f6..3b0bea3 100644
--- a/src/pages/procurementManagement/procurementInvoiceLedger/detail.vue
+++ b/src/pages/procurementManagement/procurementInvoiceLedger/detail.vue
@@ -55,7 +55,7 @@
placeholder="璇疯緭鍏�"
@blur="inputTicketsAmount" />
</up-form-item>
- <view class="tip-text">鏈潵绁ㄦ暟锛歿{ formatAmount(form.futureTickets) }} 鍏�</view>
+ <view class="tip-text">鏈潵绁ㄦ暟锛歿{ formatAmount(form.futureTickets) }} </view>
<!-- 浣跨敤鍏叡搴曢儴鎸夐挳缁勪欢 -->
<FooterButtons show
cancelText="鍙栨秷"
@@ -100,8 +100,9 @@
const fileList = ref([]);
const currentId = ref("");
const temFutureTickets = ref(0);
+ const originalTicketsNum = ref(0); // 淇濆瓨鍘熷鏉ョエ鏁�
- // 琛ㄥ崟鏍¢獙瑙勫垯
+ // 琛ㄥ崟鏍¢獙瑙勫垯 - 浣跨敤绠�鍗曠殑 required 瑙勫垯
const rules = {
ticketsNum: [{ required: true, message: "璇疯緭鍏ユ潵绁ㄦ暟", trigger: "blur" }],
ticketsAmount: [
@@ -114,6 +115,12 @@
uni.navigateBack();
};
const inputTicketsNum = () => {
+ // 澶勭悊绌哄�兼儏鍐�
+ if (!form.value.ticketsNum || form.value.ticketsNum === "") {
+ form.value.ticketsNum = 0;
+ return;
+ }
+
// 纭繚鍚◣鍗曚环瀛樺湪涓斾笉涓洪浂
if (
!form.value.taxInclusiveUnitPrice ||
@@ -125,23 +132,39 @@
});
return;
}
- if (Number(form.value.ticketsNum) > Number(temFutureTickets.value)) {
+
+ const newTicketsNum = Number(form.value.ticketsNum) || 0;
+ // 璁$畻鎬诲彲鐢ㄧエ鏁帮細鍘熷鏈潵绁ㄦ暟 + 鍘熷鏉ョエ鏁�
+ const totalAvailableTickets = Number(temFutureTickets.value) + Number(originalTicketsNum.value);
+
+ // 楠岃瘉鏉ョエ鏁颁笉鑳藉ぇ浜庢�诲彲鐢ㄧエ鏁�
+ if (newTicketsNum > totalAvailableTickets) {
uni.showToast({
- title: "鏉ョエ鏁颁笉寰楀ぇ浜庢湭鏉ョエ鏁�",
+ title: "鏉ョエ鏁颁笉寰楀ぇ浜庢�诲彲鐢ㄧエ鏁�",
icon: "none",
});
- form.value.ticketsNum = temFutureTickets.value;
+ form.value.ticketsNum = totalAvailableTickets;
+ // 閲嶆柊璁$畻鏈潵绁ㄦ暟
+ const futureTickets = totalAvailableTickets - totalAvailableTickets;
+ form.value.futureTickets = Number(futureTickets.toFixed(2));
+ form.value.ticketsAmount = Number((totalAvailableTickets * Number(form.value.taxInclusiveUnitPrice)).toFixed(2));
+ return;
}
// 纭繚鎵�鏈夋暟鍊奸兘杞崲涓烘暟瀛楃被鍨嬭繘琛岃绠�
const ticketsAmount =
- Number(form.value.ticketsNum) * Number(form.value.taxInclusiveUnitPrice);
- const futureTickets =
- Number(temFutureTickets.value) - Number(form.value.ticketsNum);
+ newTicketsNum * Number(form.value.taxInclusiveUnitPrice);
+ // 璁$畻鏈潵绁ㄦ暟锛氭�诲彲鐢ㄧエ鏁� - 鏂版潵绁ㄦ暟
+ const futureTickets = totalAvailableTickets - newTicketsNum;
form.value.futureTickets = Number(futureTickets.toFixed(2));
form.value.ticketsAmount = Number(ticketsAmount.toFixed(2));
};
const inputTicketsAmount = () => {
+ // 澶勭悊绌哄�兼儏鍐�
+ if (!form.value.ticketsAmount || form.value.ticketsAmount === "") {
+ form.value.ticketsAmount = 0;
+ }
+
// 纭繚鍚◣鍗曚环瀛樺湪涓斾笉涓洪浂
if (
!form.value.taxInclusiveUnitPrice ||
@@ -154,28 +177,34 @@
return;
}
- if (
- Number(form.value.ticketsAmount) >
- Number(form.value.futureTickets * form.value.taxInclusiveUnitPrice)
- ) {
+ const newTicketsAmount = Number(form.value.ticketsAmount) || 0;
+ // 璁$畻鎬诲彲鐢ㄩ噾棰濓細鍘熷鏈潵绁ㄦ暟 + 鍘熷鏉ョエ鏁�
+ const totalAvailableTickets = Number(temFutureTickets.value) + Number(originalTicketsNum.value);
+ const totalAvailableAmount = totalAvailableTickets * Number(form.value.taxInclusiveUnitPrice);
+
+ if (newTicketsAmount > totalAvailableAmount) {
uni.showToast({
title: "鏈鏉ョエ閲戦涓嶅緱澶т簬鎬婚噾棰�",
icon: "none",
});
- form.value.ticketsAmount = (
- form.value.futureTickets * form.value.taxInclusiveUnitPrice
- ).toFixed(2);
+ form.value.ticketsAmount = totalAvailableAmount.toFixed(2);
const ticketsNum =
Number(form.value.ticketsAmount) /
Number(form.value.taxInclusiveUnitPrice);
form.value.ticketsNum = Number(ticketsNum.toFixed(2));
+ // 鏇存柊鏈潵绁ㄦ暟
+ const futureTickets = totalAvailableTickets - form.value.ticketsNum;
+ form.value.futureTickets = Number(futureTickets.toFixed(2));
return;
}
// 纭繚鎵�鏈夋暟鍊奸兘杞崲涓烘暟瀛楃被鍨嬭繘琛岃绠�
const ticketsNum =
- Number(form.value.ticketsAmount) / Number(form.value.taxInclusiveUnitPrice);
+ newTicketsAmount / Number(form.value.taxInclusiveUnitPrice);
form.value.ticketsNum = Number(ticketsNum.toFixed(2));
+ // 鏇存柊鏈潵绁ㄦ暟
+ const futureTickets = totalAvailableTickets - form.value.ticketsNum;
+ form.value.futureTickets = Number(futureTickets.toFixed(2));
};
const formatAmount = val => {
if (val === undefined || val === null || val === "") return "0.00";
@@ -197,6 +226,7 @@
const data = res?.data || res;
form.value = { ...data };
temFutureTickets.value = data.futureTickets;
+ originalTicketsNum.value = Number(data.ticketsNum) || 0; // 淇濆瓨鍘熷鏉ョエ鏁�
fileList.value = data?.fileList || [];
if (!form.value.invoicePerson) {
form.value.invoicePerson = userStore.nickName;
@@ -234,17 +264,51 @@
};
// 琛ㄥ崟鎻愪氦
- const onSubmit = () => {
- formRef.value
- .validate()
- .then(() => {
- // 琛ㄥ崟楠岃瘉閫氳繃锛屾彁浜よ〃鍗�
- submitForm();
- })
- .catch(error => {
- // 琛ㄥ崟楠岃瘉澶辫触
- console.log("琛ㄥ崟楠岃瘉澶辫触", error);
+ const onSubmit = async () => {
+ // 鍦ㄩ獙璇佸墠锛岀‘淇濆繀濉瓧娈垫湁鍊�
+ if (!form.value.ticketsNum || form.value.ticketsNum === "" || form.value.ticketsNum === null || form.value.ticketsNum === undefined) {
+ uni.showToast({
+ title: "璇疯緭鍏ユ潵绁ㄦ暟",
+ icon: "none",
});
+ return;
+ }
+
+ if (!form.value.ticketsAmount || form.value.ticketsAmount === "" || form.value.ticketsAmount === null || form.value.ticketsAmount === undefined) {
+ uni.showToast({
+ title: "璇疯緭鍏ユ湰娆℃潵绁ㄩ噾棰�",
+ icon: "none",
+ });
+ return;
+ }
+
+ // 纭繚瀛楁鏄暟瀛楃被鍨嬶紝骞惰浆鎹负瀛楃涓诧紙鍥犱负琛ㄥ崟鍙兘闇�瑕佸瓧绗︿覆绫诲瀷锛�
+ const ticketsNum = Number(form.value.ticketsNum);
+ const ticketsAmount = Number(form.value.ticketsAmount);
+
+ // 濡傛灉鏉ョエ鏁颁负0鎴栨潵绁ㄩ噾棰濅负0锛屾彁绀虹敤鎴�
+ if (isNaN(ticketsNum) || ticketsNum <= 0) {
+ uni.showToast({
+ title: "鏉ョエ鏁板繀椤诲ぇ浜�0",
+ icon: "none",
+ });
+ return;
+ }
+
+ if (isNaN(ticketsAmount) || ticketsAmount <= 0) {
+ uni.showToast({
+ title: "鏈鏉ョエ閲戦蹇呴』澶т簬0",
+ icon: "none",
+ });
+ return;
+ }
+
+ // 鏇存柊琛ㄥ崟鍊硷紝纭繚鏄湁鏁堢殑鏁板瓧瀛楃涓�
+ form.value.ticketsNum = ticketsNum.toString();
+ form.value.ticketsAmount = ticketsAmount.toString();
+
+ // 鎵嬪姩楠岃瘉閫氳繃鍚庯紝鐩存帴鎻愪氦锛岃烦杩囪〃鍗曢獙璇侊紙閬垮厤鐪熸満涓婄殑楠岃瘉闂锛�
+ submitForm();
};
const purchaseLedgerId = ref("");
const productModelId = ref({});
--
Gitblit v1.9.3