From e22962bcf244a44dc5d097e09c520f5a40abc0a8 Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期三, 04 二月 2026 16:22:09 +0800
Subject: [PATCH] 回款登记字段和接口逻辑修改
---
src/pages/sales/receiptPayment/index.vue | 18 -
src/pages/sales/receiptPayment/add.vue | 477 +++++++++++++++++++++++++++-------------------------
src/api/salesManagement/receiptPayment.js | 2
3 files changed, 253 insertions(+), 244 deletions(-)
diff --git a/src/api/salesManagement/receiptPayment.js b/src/api/salesManagement/receiptPayment.js
index b5d0cf5..0f0529d 100644
--- a/src/api/salesManagement/receiptPayment.js
+++ b/src/api/salesManagement/receiptPayment.js
@@ -40,7 +40,7 @@
// 鏌ヨ宸茬粡缁戝畾鍙戠エ鐨勫紑绁ㄥ彴璐�
export function bindInvoiceNoRegPage(query) {
return request({
- url: '/receiptPayment/bindInvoiceNoRegPage',
+ url: '/sales/product/listPageSalesLedger',
method: 'get',
params: query
})
diff --git a/src/pages/sales/receiptPayment/add.vue b/src/pages/sales/receiptPayment/add.vue
index 3c88333..594ac23 100644
--- a/src/pages/sales/receiptPayment/add.vue
+++ b/src/pages/sales/receiptPayment/add.vue
@@ -1,27 +1,29 @@
<template>
<view class="account-detail">
<!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 -->
- <PageHeader title="鏂板鍥炴" @back="onClickLeft" />
-
+ <PageHeader title="鏂板鍥炴"
+ @back="onClickLeft" />
<!-- 琛ㄥ崟鍐呭 -->
- <u-form @submit="onSubmit" ref="formRef" label-width="110" input-align="right" error-message-align="right">
+ <u-form @submit="onSubmit"
+ ref="formRef"
+ label-width="110"
+ input-align="right"
+ error-message-align="right">
<!-- 鍩烘湰淇℃伅 -->
<u-cell-group title="鍩烘湰淇℃伅">
- <u-form-item label="閿�鍞悎鍚屽彿" border-bottom>
- <u-input
- v-model="form.salesContractNo"
- placeholder="鑷姩濉厖"
- readonly
- />
+ <u-form-item label="閿�鍞悎鍚屽彿"
+ border-bottom>
+ <u-input v-model="form.salesContractNo"
+ placeholder="鑷姩濉厖"
+ readonly />
</u-form-item>
- <u-form-item label="瀹㈡埛鍚嶇О" border-bottom>
- <u-input
- v-model="form.customerName"
- placeholder="鑷姩濉厖"
- readonly
- />
+ <u-form-item label="瀹㈡埛鍚嶇О"
+ border-bottom>
+ <u-input v-model="form.customerName"
+ placeholder="鑷姩濉厖"
+ readonly />
</u-form-item>
- <u-form-item label="鍙戠エ鍙�" border-bottom>
+ <!-- <u-form-item label="鍙戠エ鍙�" border-bottom>
<u-input
v-model="form.invoiceNo"
placeholder="鑷姩濉厖"
@@ -34,255 +36,270 @@
placeholder="鑷姩濉厖"
readonly
/>
+ </u-form-item> -->
+ <u-form-item label="绋庣巼"
+ border-bottom>
+ <u-input v-model="form.taxRate"
+ placeholder="鑷姩濉厖"
+ readonly />
</u-form-item>
- <u-form-item label="绋庣巼" border-bottom>
- <u-input
- v-model="form.taxRate"
- placeholder="鑷姩濉厖"
- readonly
- />
+ <view class="tip-text">寰呭洖娆鹃噾棰濓細{{ form.pendingInvoiceTotal }} 鍏�</view>
+ <u-form-item label="鏈鍥炴閲戦"
+ prop="receiptPaymentAmount"
+ required
+ border-bottom>
+ <u-input v-model="form.receiptPaymentAmount"
+ type="number"
+ placeholder="璇疯緭鍏�"
+ @blur="changeNum"
+ clearable />
</u-form-item>
- <view class="tip-text">寰呭洖娆鹃噾棰濓細{{ currentNoReceiptAmount }} 鍏�</view>
- <u-form-item label="鏈鍥炴閲戦" prop="receiptPaymentAmount" required border-bottom>
- <u-input
- v-model="form.receiptPaymentAmount"
- type="number"
- placeholder="璇疯緭鍏�"
- @blur="changeNum"
- clearable
- />
- </u-form-item>
- <u-form-item label="鍥炴褰㈠紡" prop="receiptPaymentTypeName" required border-bottom>
- <u-input
- v-model="form.receiptPaymentTypeName"
- placeholder="璇烽�夋嫨"
- readonly
- @click="showPaymentTypePicker"
- />
+ <u-form-item label="鍥炴褰㈠紡"
+ prop="receiptPaymentTypeName"
+ required
+ border-bottom>
+ <u-input v-model="form.receiptPaymentTypeName"
+ placeholder="璇烽�夋嫨"
+ readonly
+ @click="showPaymentTypePicker" />
<template #right>
- <up-icon
- name="arrow-right"
- @click="showPaymentTypePicker"
- ></up-icon>
- </template>
+ <up-icon name="arrow-right"
+ @click="showPaymentTypePicker"></up-icon>
+ </template>
</u-form-item>
- <u-form-item label="鏉ユ鏃ユ湡" prop="receiptPaymentDate" required border-bottom>
- <u-input
- v-model="form.receiptPaymentDate"
- placeholder="璇烽�夋嫨"
- readonly
- @click="showDatePicker"
- />
+ <u-form-item label="鏉ユ鏃ユ湡"
+ prop="receiptPaymentDate"
+ required
+ border-bottom>
+ <u-input v-model="form.receiptPaymentDate"
+ placeholder="璇烽�夋嫨"
+ readonly
+ @click="showDatePicker" />
<template #right>
- <up-icon
- name="arrow-right"
- @click="showDatePicker"
- ></up-icon>
- </template>
+ <up-icon name="arrow-right"
+ @click="showDatePicker"></up-icon>
+ </template>
</u-form-item>
- <u-form-item label="鐧昏浜�" border-bottom>
- <u-input
- v-model="form.registrant"
- placeholder="鑷姩濉厖"
- readonly
- />
+ <u-form-item label="鐧昏浜�"
+ border-bottom>
+ <u-input v-model="form.registrant"
+ placeholder="鑷姩濉厖"
+ readonly />
</u-form-item>
</u-cell-group>
-
<!-- 鎻愪氦鎸夐挳 -->
- <FooterButtons
- cancelText="鍙栨秷"
- confirmText="淇濆瓨"
- :loading="loading"
- @cancel="onClickLeft"
- @confirm="onSubmit"
- />
+ <FooterButtons cancelText="鍙栨秷"
+ confirmText="淇濆瓨"
+ :loading="loading"
+ @cancel="onClickLeft"
+ @confirm="onSubmit" />
</u-form>
-
<!-- 鍥炴鏂瑰紡閫夋嫨鍣� -->
- <up-action-sheet
- :show="showPaymentType"
- :actions="receiptPaymentType"
- title="閫夋嫨鍥炴褰㈠紡"
- @select="onPaymentTypeConfirm"
- @close="showPaymentType = false"
- />
-
+ <up-action-sheet :show="showPaymentType"
+ :actions="receiptPaymentType"
+ title="閫夋嫨鍥炴褰㈠紡"
+ @select="onPaymentTypeConfirm"
+ @close="showPaymentType = false" />
<!-- 鏃ユ湡閫夋嫨鍣� -->
- <up-popup :show="showDate" mode="bottom" @close="showDate = false">
- <up-datetime-picker
- :show="true"
- v-model="currentDate"
- @confirm="onDateConfirm"
- @cancel="showDate = false"
- mode="date"
- />
+ <up-popup :show="showDate"
+ mode="bottom"
+ @close="showDate = false">
+ <up-datetime-picker :show="true"
+ v-model="currentDate"
+ @confirm="onDateConfirm"
+ @cancel="showDate = false"
+ mode="date" />
</up-popup>
</view>
</template>
<script setup>
-import { ref, onMounted, computed } from 'vue'
-import FooterButtons from '@/components/FooterButtons.vue'
-import { receiptPaymentSaveOrUpdate, invoiceInfo } from '@/api/salesManagement/receiptPayment'
-import useUserStore from '@/store/modules/user'
-import { useDict } from '@/utils/dict'
-import { formatDateToYMD } from '@/utils/ruoyi'
+ import { ref, onMounted, computed } from "vue";
+ import FooterButtons from "@/components/FooterButtons.vue";
+ import {
+ receiptPaymentSaveOrUpdate,
+ invoiceInfo,
+ } from "@/api/salesManagement/receiptPayment";
+ import useUserStore from "@/store/modules/user";
+ import { useDict } from "@/utils/dict";
+ import { formatDateToYMD } from "@/utils/ruoyi";
-// 鏄剧ず鎻愮ず淇℃伅
-const showToast = (message) => {
- uni.showToast({
- title: message,
- icon: 'none'
- })
-}
+ // 鏄剧ず鎻愮ず淇℃伅
+ const showToast = message => {
+ uni.showToast({
+ title: message,
+ icon: "none",
+ });
+ };
-// 鏄剧ず鍔犺浇鎻愮ず
-const showLoadingToast = (message) => {
- uni.showLoading({
- title: message,
- mask: true
+ // 鏄剧ず鍔犺浇鎻愮ず
+ const showLoadingToast = message => {
+ uni.showLoading({
+ title: message,
+ mask: true,
+ });
+ };
+
+ // 鍏抽棴鍔犺浇鎻愮ず
+ const closeToast = () => {
+ uni.hideLoading();
+ };
+
+ const userStore = useUserStore();
+
+ // 琛ㄥ崟寮曠敤
+ const formRef = ref();
+
+ // 鍝嶅簲寮忔暟鎹�
+ const loading = ref(false);
+ const showPaymentType = ref(false);
+ const pickerValue = ref([]);
+ const showDate = ref(false);
+ const currentDate = ref([
+ new Date().getFullYear(),
+ new Date().getMonth() + 1,
+ new Date().getDate(),
+ ]);
+
+ // 琛ㄥ崟鏁版嵁
+ const form = ref({
+ salesContractNo: "",
+ customerName: "",
+ invoiceNo: "",
+ invoiceTotal: "",
+ taxRate: "",
+ receiptPaymentAmount: "",
+ receiptPaymentType: "",
+ receiptPaymentTypeName: "",
+ registrant: "",
+ receiptPaymentDate: "",
+ invoiceLedgerId: "",
+ salesLedgerProductId: "",
});
-};
+ const currentNoReceiptAmount = ref(0);
-// 鍏抽棴鍔犺浇鎻愮ず
-const closeToast = () => {
- uni.hideLoading();
-};
+ // 鑾峰彇瀛楀吀鏁版嵁
+ const { receipt_payment_type: dictReceiptPaymentType } = useDict(
+ "receipt_payment_type"
+ );
-const userStore = useUserStore()
+ // 杞崲瀛楀吀鏁版嵁鏍煎紡涓洪�夋嫨鍣ㄩ渶瑕佺殑鏍煎紡
+ const receiptPaymentType = computed(() => {
+ return dictReceiptPaymentType.value.map(item => ({
+ name: item.label,
+ value: item.value,
+ }));
+ });
-// 琛ㄥ崟寮曠敤
-const formRef = ref()
+ // 杩斿洖涓婁竴椤�
+ const onClickLeft = () => {
+ uni.removeStorageSync("invoiceLedgerEditRow");
+ uni.navigateBack();
+ };
-// 鍝嶅簲寮忔暟鎹�
-const loading = ref(false)
-const showPaymentType = ref(false)
-const pickerValue = ref([])
-const showDate = ref(false)
-const currentDate = ref([new Date().getFullYear(), new Date().getMonth() + 1, new Date().getDate()])
+ // 鏄剧ず鍥炴鏂瑰紡閫夋嫨鍣�
+ const showPaymentTypePicker = () => {
+ showPaymentType.value = true;
+ };
+ const changeNum = () => {
+ if (form.value.receiptPaymentAmount > form.value.pendingInvoiceTotal) {
+ form.value.receiptPaymentAmount = form.value.pendingInvoiceTotal;
+ showToast("涓嶅彲澶т簬寰呭洖娆鹃噾棰�");
+ }
+ };
-// 琛ㄥ崟鏁版嵁
-const form = ref({
- salesContractNo: '',
- customerName: '',
- invoiceNo: '',
- invoiceTotal: '',
- taxRate: '',
- receiptPaymentAmount: '',
- receiptPaymentType: '',
- receiptPaymentTypeName: '',
- registrant: '',
- receiptPaymentDate: '',
- invoiceLedgerId: ''
-})
-const currentNoReceiptAmount = ref(0)
+ // 纭鍥炴鏂瑰紡閫夋嫨
+ const onPaymentTypeConfirm = action => {
+ form.value.receiptPaymentType = action.value;
+ form.value.receiptPaymentTypeName = action.name;
+ showPaymentType.value = false;
+ };
-// 鑾峰彇瀛楀吀鏁版嵁
-const { receipt_payment_type: dictReceiptPaymentType } = useDict('receipt_payment_type')
+ // 鏄剧ず鏃ユ湡閫夋嫨鍣�
+ const showDatePicker = () => {
+ showDate.value = true;
+ };
-// 杞崲瀛楀吀鏁版嵁鏍煎紡涓洪�夋嫨鍣ㄩ渶瑕佺殑鏍煎紡
-const receiptPaymentType = computed(() => {
- return dictReceiptPaymentType.value.map(item => ({
- name: item.label,
- value: item.value
- }))
-})
+ // 纭鏃ユ湡閫夋嫨
+ const onDateConfirm = e => {
+ form.value.receiptPaymentDate = formatDateToYMD(e.value);
+ currentDate.value = formatDateToYMD(e.value);
+ showDate.value = false;
+ };
-// 杩斿洖涓婁竴椤�
-const onClickLeft = () => {
- uni.removeStorageSync('invoiceLedgerEditRow');
- uni.navigateBack()
-}
+ // 鎻愪氦琛ㄥ崟
+ const onSubmit = () => {
+ // 琛ㄥ崟楠岃瘉
+ if (!form.value.receiptPaymentAmount) {
+ showToast("璇疯緭鍏ュ洖娆鹃噾棰�");
+ return;
+ }
-// 鏄剧ず鍥炴鏂瑰紡閫夋嫨鍣�
-const showPaymentTypePicker = () => {
- showPaymentType.value = true
-}
-const changeNum = () => {
- if (form.value.receiptPaymentAmount > currentNoReceiptAmount.value) {
- form.value.receiptPaymentAmount = currentNoReceiptAmount.value
- showToast('涓嶅彲澶т簬寰呭洖娆鹃噾棰�')
- }
-}
+ if (!form.value.receiptPaymentType) {
+ showToast("璇烽�夋嫨鍥炴褰㈠紡");
+ return;
+ }
-// 纭鍥炴鏂瑰紡閫夋嫨
-const onPaymentTypeConfirm = (action) => {
- form.value.receiptPaymentType = action.value
- form.value.receiptPaymentTypeName = action.name
- showPaymentType.value = false
-}
+ if (!form.value.receiptPaymentDate) {
+ showToast("璇烽�夋嫨鏉ユ鏃ユ湡");
+ return;
+ }
-// 鏄剧ず鏃ユ湡閫夋嫨鍣�
-const showDatePicker = () => {
- showDate.value = true
-}
+ loading.value = true;
+ form.value.receiptPaymentAmount = Number(form.value.receiptPaymentAmount);
+ receiptPaymentSaveOrUpdate([form.value])
+ .then(() => {
+ showToast("鎻愪氦鎴愬姛");
+ // 閫氱煡涓婁竴椤靛埛鏂版暟鎹�
+ const pages = getCurrentPages();
+ const prevPage = pages[pages.length - 2];
+ if (prevPage && prevPage.$vm && prevPage.$vm.getList) {
+ prevPage.$vm.getList();
+ }
+ uni.removeStorageSync("invoiceLedgerEditRow");
+ uni.navigateBack();
+ })
+ .catch(error => {
+ loading.value = false;
+ });
+ };
-// 纭鏃ユ湡閫夋嫨
-const onDateConfirm = (e) => {
- form.value.receiptPaymentDate = formatDateToYMD(e.value)
- currentDate.value = formatDateToYMD(e.value)
- showDate.value = false;
-}
+ // 鍒濆鍖栨暟鎹�
+ const initData = () => {
+ const rowStr = uni.getStorageSync("invoiceLedgerEditRow");
+ const row = JSON.parse(rowStr);
+ form.value = { ...row };
+ form.value.invoiceLedgerId = form.value.id;
+ form.value.salesLedgerProductId = form.value.id;
+ form.value.id = "";
+ currentNoReceiptAmount.value = row.noReceiptAmount;
+ form.value.registrant = userStore.nickName;
-// 鎻愪氦琛ㄥ崟
-const onSubmit = () => {
- // 琛ㄥ崟楠岃瘉
- if (!form.value.receiptPaymentAmount) {
- showToast('璇疯緭鍏ュ洖娆鹃噾棰�')
- return
- }
-
- if (!form.value.receiptPaymentType) {
- showToast('璇烽�夋嫨鍥炴褰㈠紡')
- return
- }
-
- if (!form.value.receiptPaymentDate) {
- showToast('璇烽�夋嫨鏉ユ鏃ユ湡')
- return
- }
+ // invoiceInfo({ id: row.id })
+ // .then(res => {
+ // const data = res.data;
+ // form.value = { ...data };
+ // form.value.invoiceLedgerId = form.value.id;
+ // form.value.id = "";
+ // currentNoReceiptAmount.value = row.noReceiptAmount;
+ // form.value.registrant = userStore.nickName;
+ // })
+ // .catch(() => {
+ // showToast("鑾峰彇鏁版嵁澶辫触");
+ // });
+ };
- loading.value = true
-
- receiptPaymentSaveOrUpdate(form.value)
- .then(() => {
- showToast('鎻愪氦鎴愬姛')
- // 閫氱煡涓婁竴椤靛埛鏂版暟鎹�
- const pages = getCurrentPages();
- const prevPage = pages[pages.length - 2];
- if (prevPage && prevPage.$vm && prevPage.$vm.getList) {
- prevPage.$vm.getList();
- }
- uni.removeStorageSync('invoiceLedgerEditRow');
- uni.navigateBack()
- })
- .catch((error) => {
- loading.value = false
- })
-}
-
-// 鍒濆鍖栨暟鎹�
-const initData = () => {
- const rowStr = uni.getStorageSync('invoiceLedgerEditRow')
- const row = JSON.parse(rowStr)
- invoiceInfo({ id: row.id }).then((res) => {
- const data = res.data
- form.value = { ...data}
- form.value.invoiceLedgerId = form.value.id;
- form.value.id = "";
- currentNoReceiptAmount.value = row.noReceiptAmount
- form.value.registrant = userStore.nickName
- }).catch(() => {
- showToast('鑾峰彇鏁版嵁澶辫触')
- })
-}
-
-onMounted(() => {
- initData()
-})
+ onMounted(() => {
+ initData();
+ });
</script>
<style scoped lang="scss">
-@import '@/static/scss/form-common.scss';
+ @import "@/static/scss/form-common.scss";
+ .tip-text {
+ font-size: 14px;
+ color: #999;
+ margin-top: 20rpx;
+ margin-bottom: 20rpx;
+ }
</style>
diff --git a/src/pages/sales/receiptPayment/index.vue b/src/pages/sales/receiptPayment/index.vue
index 984d175..1f222f6 100644
--- a/src/pages/sales/receiptPayment/index.vue
+++ b/src/pages/sales/receiptPayment/index.vue
@@ -54,8 +54,8 @@
<text class="detail-value">{{ item.customerName }}</text>
</view>
<view class="detail-row">
- <text class="detail-label">瀹㈡埛鍚堝悓鍙�</text>
- <text class="detail-value">{{ item.customerContractNo }}</text>
+ <text class="detail-label">閿�鍞悎鍚屽彿</text>
+ <text class="detail-value">{{ item.salesContractNo }}</text>
</view>
<view class="detail-row">
<text class="detail-label">椤圭洰鍚嶇О</text>
@@ -66,24 +66,16 @@
<text class="detail-value">{{ item.productCategory }}</text>
</view>
<view class="detail-row">
- <text class="detail-label">鍙戠エ鍙�</text>
- <text class="detail-value">{{ item.invoiceNo || '-' }}</text>
- </view>
- <view class="detail-row">
- <text class="detail-label">鍙戠エ閲戦(鍏�)</text>
- <text class="detail-value highlight">{{ formatNumber(item.invoiceTotal) }}</text>
- </view>
- <view class="detail-row">
<text class="detail-label">绋庣巼(%)</text>
<text class="detail-value">{{ item.taxRate }}</text>
</view>
<view class="detail-row">
<text class="detail-label">鍥炴閲戦(鍏�)</text>
- <text class="detail-value highlight">{{ formatNumber(item.receiptPaymentAmountTotal) }}</text>
+ <text class="detail-value highlight">{{ formatNumber(item.invoiceTotal) }}</text>
</view>
<view class="detail-row">
<text class="detail-label">寰呭洖娆鹃噾棰�(鍏�)</text>
- <text class="detail-value danger">{{ formatNumber(item.noReceiptAmount) }}</text>
+ <text class="detail-value danger">{{ formatNumber(item.pendingInvoiceTotal) }}</text>
</view>
</view>
<!-- 鎿嶄綔鎸夐挳 -->
@@ -157,7 +149,7 @@
if (!type) {
return "info";
}
- if (type == "鏈畬鎴愬洖娆�") {
+ if (type == "鏈畬鎴愪粯娆�") {
return "warning";
} else {
return "success";
--
Gitblit v1.9.3