From a1a73e25593d2914ea58cd84ec2540bc56bd6934 Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期一, 26 一月 2026 17:43:25 +0800
Subject: [PATCH] 来票台账接口更改

---
 src/api/procurementManagement/procurementInvoiceLedger.js           |   13 +
 src/pages/procurementManagement/procurementInvoiceLedger/detail.vue |  461 +++++++++++++++++++++++++++++++-------------------------
 2 files changed, 264 insertions(+), 210 deletions(-)

diff --git a/src/api/procurementManagement/procurementInvoiceLedger.js b/src/api/procurementManagement/procurementInvoiceLedger.js
index 620249c..0e944a0 100644
--- a/src/api/procurementManagement/procurementInvoiceLedger.js
+++ b/src/api/procurementManagement/procurementInvoiceLedger.js
@@ -83,11 +83,18 @@
   });
 }
 
-export function getProductRecordById(params) {
+// export function getProductRecordById(params) {
+//   return request({
+//     url: "/purchase/registration/getProductRecordById",
+//     method: "get",
+//     params: params,
+//   });
+// }
+export function getProductRecordById(data) {
   return request({
     url: "/purchase/registration/getProductRecordById",
-    method: "get",
-    params: params,
+     method: "post",
+    data: data,
   });
 }
 
diff --git a/src/pages/procurementManagement/procurementInvoiceLedger/detail.vue b/src/pages/procurementManagement/procurementInvoiceLedger/detail.vue
index ea9a233..a5c74f6 100644
--- a/src/pages/procurementManagement/procurementInvoiceLedger/detail.vue
+++ b/src/pages/procurementManagement/procurementInvoiceLedger/detail.vue
@@ -1,224 +1,271 @@
 <template>
-	<view class="account-detail">
-		<!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 -->
-		<PageHeader title="缂栬緫鏉ョエ鍙拌处" @back="goBack" />
-
-		<up-form @submit="submitForm" ref="formRef" label-width="120" :model="form">
-			<up-form-item label="閲囪喘鍚堝悓鍙�" prop="purchaseContractNumber">
-				<up-input v-model="form.purchaseContractNumber" placeholder="鑷姩鐢熸垚" disabled />
-			</up-form-item>
-			<up-form-item label="閿�鍞悎鍚屽彿" prop="salesContractNo">
-				<up-input v-model="form.salesContractNo" placeholder="鑷姩鐢熸垚" disabled />
-			</up-form-item>
-			<up-form-item label="鍚◣鍗曚环(鍏�)" prop="taxInclusiveUnitPrice">
-				<up-input v-model="form.taxInclusiveUnitPrice" placeholder="鑷姩鐢熸垚" disabled />
-			</up-form-item>
-			<up-form-item label="鍒涘缓鏃堕棿" prop="createdAt">
-				<up-input v-model="form.createdAt" placeholder="鑷姩鐢熸垚" disabled />
-			</up-form-item>
-			<up-form-item label="鍙戠エ鍙�" prop="invoiceNumber">
-				<up-input v-model="form.invoiceNumber" placeholder="璇疯緭鍏�" disabled />
-			</up-form-item>
-			<up-form-item label="鏉ョエ鏁�" prop="ticketsNum" required :rules="rules.ticketsNum">
-				<up-input
-					v-model="form.ticketsNum"
-					type="number"
-					placeholder="璇疯緭鍏�"
-					@blur="inputTicketsNum"
-				/>
-			</up-form-item>
-			<up-form-item label="鏈鏉ョエ閲戦(鍏�)" prop="ticketsAmount" required :rules="rules.ticketsAmount">
-				<up-input
-					v-model="form.ticketsAmount"
-					type="number"
-					placeholder="璇疯緭鍏�"
-					@blur="inputTicketsAmount"
-				/>
-			</up-form-item>
-			<view class="tip-text">鏈潵绁ㄦ暟锛歿{ formatAmount(form.futureTickets) }} 鍏�</view>
-
-			<!-- 浣跨敤鍏叡搴曢儴鎸夐挳缁勪欢 -->
-			<FooterButtons
-				show
-				cancelText="鍙栨秷"
-				confirmText="淇濆瓨"
-				@cancel="goBack"
-				@confirm="onSubmit"
-			/>
-		</up-form>
-	</view>
+  <view class="account-detail">
+    <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 -->
+    <PageHeader title="缂栬緫鏉ョエ鍙拌处"
+                @back="goBack" />
+    <up-form @submit="submitForm"
+             ref="formRef"
+             label-width="120"
+             :model="form">
+      <up-form-item label="閲囪喘鍚堝悓鍙�"
+                    prop="purchaseContractNumber">
+        <up-input v-model="form.purchaseContractNumber"
+                  placeholder="鑷姩鐢熸垚"
+                  disabled />
+      </up-form-item>
+      <up-form-item label="閿�鍞悎鍚屽彿"
+                    prop="salesContractNo">
+        <up-input v-model="form.salesContractNo"
+                  placeholder="鑷姩鐢熸垚"
+                  disabled />
+      </up-form-item>
+      <up-form-item label="鍚◣鍗曚环(鍏�)"
+                    prop="taxInclusiveUnitPrice">
+        <up-input v-model="form.taxInclusiveUnitPrice"
+                  placeholder="鑷姩鐢熸垚"
+                  disabled />
+      </up-form-item>
+      <up-form-item label="鍒涘缓鏃堕棿"
+                    prop="createdAt">
+        <up-input v-model="form.createdAt"
+                  placeholder="鑷姩鐢熸垚"
+                  disabled />
+      </up-form-item>
+      <up-form-item label="鍙戠エ鍙�"
+                    prop="invoiceNumber">
+        <up-input v-model="form.invoiceNumber"
+                  placeholder="璇疯緭鍏�"
+                  disabled />
+      </up-form-item>
+      <up-form-item label="鏉ョエ鏁�"
+                    prop="ticketsNum"
+                    required
+                    :rules="rules.ticketsNum">
+        <up-input v-model="form.ticketsNum"
+                  type="number"
+                  placeholder="璇疯緭鍏�"
+                  @blur="inputTicketsNum" />
+      </up-form-item>
+      <up-form-item label="鏈鏉ョエ閲戦(鍏�)"
+                    prop="ticketsAmount"
+                    required
+                    :rules="rules.ticketsAmount">
+        <up-input v-model="form.ticketsAmount"
+                  type="number"
+                  placeholder="璇疯緭鍏�"
+                  @blur="inputTicketsAmount" />
+      </up-form-item>
+      <view class="tip-text">鏈潵绁ㄦ暟锛歿{ formatAmount(form.futureTickets) }} 鍏�</view>
+      <!-- 浣跨敤鍏叡搴曢儴鎸夐挳缁勪欢 -->
+      <FooterButtons show
+                     cancelText="鍙栨秷"
+                     confirmText="淇濆瓨"
+                     @cancel="goBack"
+                     @confirm="onSubmit" />
+    </up-form>
+  </view>
 </template>
 
 <script setup>
-import { ref, onMounted } from 'vue'
-import dayjs from 'dayjs'
-import useUserStore from '@/store/modules/user'
-import { getToken } from '@/utils/auth'
-import { invoiceLedgerSaveOrUpdate } from '@/api/salesManagement/invoiceLedger.js'
-import config from '@/config.js'
-import {getProductRecordById, updateRegistration} from "@/api/procurementManagement/procurementInvoiceLedger";
-import PageHeader from '@/components/PageHeader.vue';
-import FooterButtons from '@/components/FooterButtons.vue';
+  import { ref, onMounted } from "vue";
+  import dayjs from "dayjs";
+  import useUserStore from "@/store/modules/user";
+  import { getToken } from "@/utils/auth";
+  import { invoiceLedgerSaveOrUpdate } from "@/api/salesManagement/invoiceLedger.js";
+  import config from "@/config.js";
+  import {
+    getProductRecordById,
+    updateRegistration,
+  } from "@/api/procurementManagement/procurementInvoiceLedger";
+  import PageHeader from "@/components/PageHeader.vue";
+  import FooterButtons from "@/components/FooterButtons.vue";
 
-const userStore = useUserStore()
+  const userStore = useUserStore();
 
-const formRef = ref()
-let form = ref({
-	salesLedgerId: '',
-	customerId: '',
-	invoiceNo: '',
-	invoiceTotal: '',
-	taxRate: '',
-	invoicePerson: '',
-	invoiceDate: '',
-	customerName: '',
-	fileList: [],
-	createTime: '',
-	taxInclusiveTotalPrice: '',
-	taxInclusiveUnitPrice: ''
-})
-const fileList = ref([])
-const currentId = ref('')
-const temFutureTickets = ref(0)
+  const formRef = ref();
+  let form = ref({
+    salesLedgerId: "",
+    customerId: "",
+    invoiceNo: "",
+    invoiceTotal: "",
+    taxRate: "",
+    invoicePerson: "",
+    invoiceDate: "",
+    customerName: "",
+    fileList: [],
+    createTime: "",
+    taxInclusiveTotalPrice: "",
+    taxInclusiveUnitPrice: "",
+  });
+  const fileList = ref([]);
+  const currentId = ref("");
+  const temFutureTickets = ref(0);
 
-// 琛ㄥ崟鏍¢獙瑙勫垯
-const rules = {
-	ticketsNum: [
-		{ required: true, message: '璇疯緭鍏ユ潵绁ㄦ暟', trigger: 'blur' }
-	],
-	ticketsAmount: [
-		{ required: true, message: '璇疯緭鍏ユ湰娆℃潵绁ㄩ噾棰�', trigger: 'blur' }
-	]
-};
+  // 琛ㄥ崟鏍¢獙瑙勫垯
+  const rules = {
+    ticketsNum: [{ required: true, message: "璇疯緭鍏ユ潵绁ㄦ暟", trigger: "blur" }],
+    ticketsAmount: [
+      { required: true, message: "璇疯緭鍏ユ湰娆℃潵绁ㄩ噾棰�", trigger: "blur" },
+    ],
+  };
 
-const goBack = () => {
-	uni.removeStorageSync('invoiceLedgerEditRow');
-	uni.navigateBack()
-}
-const inputTicketsNum = () => {
-	// 纭繚鍚◣鍗曚环瀛樺湪涓斾笉涓洪浂
-	if (!form.value.taxInclusiveUnitPrice || Number(form.value.taxInclusiveUnitPrice) === 0) {
-		uni.showToast({
-			title: "鍚◣鍗曚环涓嶈兘涓洪浂鎴栨湭瀹氫箟",
-			icon: 'none'
-		});
-		return;
-	}
-	if (Number(form.value.ticketsNum) > Number(temFutureTickets.value)) {
-		uni.showToast({
-			title: "鏉ョエ鏁颁笉寰楀ぇ浜庢湭鏉ョエ鏁�",
-			icon: 'none'
-		});
-		form.value.ticketsNum = temFutureTickets.value
-	}
-	
-	// 纭繚鎵�鏈夋暟鍊奸兘杞崲涓烘暟瀛楃被鍨嬭繘琛岃绠�
-	const ticketsAmount = Number(form.value.ticketsNum) * Number(form.value.taxInclusiveUnitPrice);
-	const futureTickets = Number(temFutureTickets.value) - Number(form.value.ticketsNum);
-	form.value.futureTickets = Number(futureTickets.toFixed(2));
-	form.value.ticketsAmount = Number(ticketsAmount.toFixed(2));
-};
-const inputTicketsAmount = () => {
-	// 纭繚鍚◣鍗曚环瀛樺湪涓斾笉涓洪浂
-	if (!form.value.taxInclusiveUnitPrice || Number(form.value.taxInclusiveUnitPrice) === 0) {
-		uni.showToast({
-			title: "鍚◣鍗曚环涓嶈兘涓洪浂鎴栨湭瀹氫箟",
-			icon: 'none'
-		});
-		return;
-	}
-	
-	if (Number(form.value.ticketsAmount) > Number(form.value.futureTickets*form.value.taxInclusiveUnitPrice)) {
-		uni.showToast({
-			title: "鏈鏉ョエ閲戦涓嶅緱澶т簬鎬婚噾棰�",
-			icon: 'none'
-		});
-		form.value.ticketsAmount = (form.value.futureTickets*form.value.taxInclusiveUnitPrice).toFixed(2)
-		const ticketsNum = Number(form.value.ticketsAmount) / Number(form.value.taxInclusiveUnitPrice);
-		form.value.ticketsNum = Number(ticketsNum.toFixed(2))
-		return;
-	}
-	
-	// 纭繚鎵�鏈夋暟鍊奸兘杞崲涓烘暟瀛楃被鍨嬭繘琛岃绠�
-	const ticketsNum = Number(form.value.ticketsAmount) / Number(form.value.taxInclusiveUnitPrice);
-	form.value.ticketsNum = Number(ticketsNum.toFixed(2));
-};
-const formatAmount = (val) => {
-	if (val === undefined || val === null || val === '') return '0.00'
-	const num = Number(val)
-	if (Number.isNaN(num)) return '0.00'
-	return num.toFixed(2)
-}
+  const goBack = () => {
+    uni.removeStorageSync("invoiceLedgerEditRow");
+    uni.navigateBack();
+  };
+  const inputTicketsNum = () => {
+    // 纭繚鍚◣鍗曚环瀛樺湪涓斾笉涓洪浂
+    if (
+      !form.value.taxInclusiveUnitPrice ||
+      Number(form.value.taxInclusiveUnitPrice) === 0
+    ) {
+      uni.showToast({
+        title: "鍚◣鍗曚环涓嶈兘涓洪浂鎴栨湭瀹氫箟",
+        icon: "none",
+      });
+      return;
+    }
+    if (Number(form.value.ticketsNum) > Number(temFutureTickets.value)) {
+      uni.showToast({
+        title: "鏉ョエ鏁颁笉寰楀ぇ浜庢湭鏉ョエ鏁�",
+        icon: "none",
+      });
+      form.value.ticketsNum = temFutureTickets.value;
+    }
 
-const loadDetail = async (id) => {
-	try {
-		uni.showLoading({
-			title: '鍔犺浇涓�...'
-		});
-		const res = await getProductRecordById({ id })
-		const data = res?.data || res
-		form.value = { ...data }
-		temFutureTickets.value = data.futureTickets;
-		fileList.value = data?.fileList || []
-		if (!form.value.invoicePerson) {
-			form.value.invoicePerson = userStore.nickName
-		}
-		if (!form.value.invoiceDate) {
-			form.value.invoiceDate = dayjs().format('YYYY-MM-DD')
-		}
-		uni.hideLoading();
-	} catch (e) {
-		uni.hideLoading();
-		uni.showToast({
-			title: '鍔犺浇澶辫触',
-			icon: 'none'
-		});
-	}
-}
+    // 纭繚鎵�鏈夋暟鍊奸兘杞崲涓烘暟瀛楃被鍨嬭繘琛岃绠�
+    const ticketsAmount =
+      Number(form.value.ticketsNum) * Number(form.value.taxInclusiveUnitPrice);
+    const futureTickets =
+      Number(temFutureTickets.value) - Number(form.value.ticketsNum);
+    form.value.futureTickets = Number(futureTickets.toFixed(2));
+    form.value.ticketsAmount = Number(ticketsAmount.toFixed(2));
+  };
+  const inputTicketsAmount = () => {
+    // 纭繚鍚◣鍗曚环瀛樺湪涓斾笉涓洪浂
+    if (
+      !form.value.taxInclusiveUnitPrice ||
+      Number(form.value.taxInclusiveUnitPrice) === 0
+    ) {
+      uni.showToast({
+        title: "鍚◣鍗曚环涓嶈兘涓洪浂鎴栨湭瀹氫箟",
+        icon: "none",
+      });
+      return;
+    }
 
-const submitForm = async () => {
-	try {
-		// 鎻愪氦琛ㄥ崟鐨勫叿浣撻�昏緫
-		await updateRegistration(form.value)
-		uni.showToast({
-			title: '鎻愪氦鎴愬姛',
-			icon: 'success'
-		});
-		setTimeout(() => { goBack() }, 800)
-	} catch (e) {
-		uni.showToast({
-			title: '鎻愪氦澶辫触锛岃閲嶈瘯',
-			icon: 'none'
-		});
-	}
-}
+    if (
+      Number(form.value.ticketsAmount) >
+      Number(form.value.futureTickets * form.value.taxInclusiveUnitPrice)
+    ) {
+      uni.showToast({
+        title: "鏈鏉ョエ閲戦涓嶅緱澶т簬鎬婚噾棰�",
+        icon: "none",
+      });
+      form.value.ticketsAmount = (
+        form.value.futureTickets * form.value.taxInclusiveUnitPrice
+      ).toFixed(2);
+      const ticketsNum =
+        Number(form.value.ticketsAmount) /
+        Number(form.value.taxInclusiveUnitPrice);
+      form.value.ticketsNum = Number(ticketsNum.toFixed(2));
+      return;
+    }
 
-// 琛ㄥ崟鎻愪氦
-const onSubmit = () => {
-	formRef.value.validate().then(() => {
-		// 琛ㄥ崟楠岃瘉閫氳繃锛屾彁浜よ〃鍗�
-		submitForm();
-	}).catch(error => {
-		// 琛ㄥ崟楠岃瘉澶辫触
-		console.log('琛ㄥ崟楠岃瘉澶辫触', error);
-	});
-};
+    // 纭繚鎵�鏈夋暟鍊奸兘杞崲涓烘暟瀛楃被鍨嬭繘琛岃绠�
+    const ticketsNum =
+      Number(form.value.ticketsAmount) / Number(form.value.taxInclusiveUnitPrice);
+    form.value.ticketsNum = Number(ticketsNum.toFixed(2));
+  };
+  const formatAmount = val => {
+    if (val === undefined || val === null || val === "") return "0.00";
+    const num = Number(val);
+    if (Number.isNaN(num)) return "0.00";
+    return num.toFixed(2);
+  };
 
-onMounted(() => {
-	const rowStr = uni.getStorageSync('invoiceLedgerEditRow')
-	if (rowStr) {
-		try {
-			const row = JSON.parse(rowStr)
-			currentId.value = row.id
-			loadDetail(currentId.value)
-		} catch (e) {
-			// ignore
-		}
-	}
-});
+  const loadDetail = async (id, purchaseLedgerId, productModelId) => {
+    try {
+      uni.showLoading({
+        title: "鍔犺浇涓�...",
+      });
+      const res = await getProductRecordById({
+        id: id,
+        purchaseLedgerId: purchaseLedgerId,
+        productModelId: productModelId,
+      });
+      const data = res?.data || res;
+      form.value = { ...data };
+      temFutureTickets.value = data.futureTickets;
+      fileList.value = data?.fileList || [];
+      if (!form.value.invoicePerson) {
+        form.value.invoicePerson = userStore.nickName;
+      }
+      if (!form.value.invoiceDate) {
+        form.value.invoiceDate = dayjs().format("YYYY-MM-DD");
+      }
+      uni.hideLoading();
+    } catch (e) {
+      uni.hideLoading();
+      uni.showToast({
+        title: "鍔犺浇澶辫触",
+        icon: "none",
+      });
+    }
+  };
+
+  const submitForm = async () => {
+    try {
+      // 鎻愪氦琛ㄥ崟鐨勫叿浣撻�昏緫
+      await updateRegistration(form.value);
+      uni.showToast({
+        title: "鎻愪氦鎴愬姛",
+        icon: "success",
+      });
+      setTimeout(() => {
+        goBack();
+      }, 800);
+    } catch (e) {
+      uni.showToast({
+        title: "鎻愪氦澶辫触锛岃閲嶈瘯",
+        icon: "none",
+      });
+    }
+  };
+
+  // 琛ㄥ崟鎻愪氦
+  const onSubmit = () => {
+    formRef.value
+      .validate()
+      .then(() => {
+        // 琛ㄥ崟楠岃瘉閫氳繃锛屾彁浜よ〃鍗�
+        submitForm();
+      })
+      .catch(error => {
+        // 琛ㄥ崟楠岃瘉澶辫触
+        console.log("琛ㄥ崟楠岃瘉澶辫触", error);
+      });
+  };
+  const purchaseLedgerId = ref("");
+  const productModelId = ref({});
+
+  onMounted(() => {
+    const rowStr = uni.getStorageSync("invoiceLedgerEditRow");
+    if (rowStr) {
+      try {
+        const row = JSON.parse(rowStr);
+        currentId.value = row.id;
+        purchaseLedgerId.value = row.purchaseLedgerId;
+        productModelId.value = row.productModelId;
+        loadDetail(currentId.value, purchaseLedgerId.value, productModelId.value);
+      } catch (e) {
+        // ignore
+      }
+    }
+  });
 </script>
 
 <style scoped lang="scss">
-@import '@/static/scss/form-common.scss';
+  @import "@/static/scss/form-common.scss";
 </style>
 

--
Gitblit v1.9.3