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