diff --git a/oms_web/oms_vue/src/views/finance/payable/components/MergePaymentDialog.vue b/oms_web/oms_vue/src/views/finance/payable/components/MergePaymentDialog.vue
index c1b83c8d..d98b0cdf 100644
--- a/oms_web/oms_vue/src/views/finance/payable/components/MergePaymentDialog.vue
+++ b/oms_web/oms_vue/src/views/finance/payable/components/MergePaymentDialog.vue
@@ -59,7 +59,7 @@
- {{ calculateOrderCurrentPaymentRate(scope.row.id).toFixed(2) }}%
+ {{ calculateOrderCurrentPaymentRate(scope.row.id) }}%
@@ -90,13 +90,15 @@
@@ -205,6 +207,43 @@ export default {
this.dialogVisible = false;
this.resetForm();
},
+ handleChooseConfirm() {
+ if (!this.$refs.planSelector || !this.$refs.planSelector.selectedPlan) {
+ this.$modal.msgError('无法获取计划选择器组件或其选择的计划');
+ return;
+ }
+ const selectedPlans = this.$refs.planSelector.selectedPlan;
+
+ const orderIndex = this.payableOrdersWithPlans.findIndex(o => o.id === this.choosePayable.id);
+ if (orderIndex === -1) {
+ this.$modal.msgError('找不到要更新的应付单');
+ return;
+ }
+
+ const currentOrder = this.payableOrdersWithPlans[orderIndex];
+
+ // Ensure the paymentPlans array exists
+ if (!currentOrder.paymentPlans) {
+ this.$set(currentOrder, 'paymentPlans', []);
+ }
+
+ // Add new plans, checking for duplicates by plan ID
+ let addedCount = 0;
+ selectedPlans.forEach(newPlan => {
+ const existingPlan = currentOrder.paymentPlans.find(p => p.id === newPlan.id);
+ if (!existingPlan) {
+ currentOrder.paymentPlans.push(newPlan);
+ addedCount++;
+ }
+ });
+
+ this.isPaymentPlanSelectorOpen = false;
+ if (addedCount > 0) {
+ this.$modal.msgSuccess(`成功补充 ${addedCount} 条付款计划`);
+ } else {
+ this.$modal.msgWarning('没有新的付款计划被添加');
+ }
+ },
handleConfirm() {
// Validate main form fields
if (!this.form.paymentBillType) {
@@ -223,11 +262,6 @@ export default {
return;
}
- const totalPlannedAmountForOrder = order.paymentPlans.reduce((sum, plan) => sum + (plan.planAmount || 0), 0);
- if (Math.abs(totalPlannedAmountForOrder - order.unpaidAmount) > 0.01) { // Compare against unpaidAmount
- this.$modal.msgError(`应付单 ${order.payableBillCode} 的计划付款总金额 (${totalPlannedAmountForOrder.toFixed(2)}) 与其未付款金额 (${order.unpaidAmount.toFixed(2)}) 不符,请检查。`);
- return;
- }
for (const plan of order.paymentPlans) {
if (!plan.planPaymentDate) {
@@ -305,9 +339,9 @@ export default {
},
calculateOrderCurrentPaymentRate(orderId) {
const order = this.payableOrdersWithPlans.find(o => o.id === orderId);
- if (order && order.paymentPlans && order.unpaidAmount > 0) {
+ if (order && order.paymentPlans && order.unpaidAmount >= 0) {
const currentAmount = this.calculateOrderCurrentPaymentAmount(orderId);
- return (currentAmount / order.unpaidAmount * 100);
+ return this.$calc.mul(this.$calc.div(currentAmount ,order.totalPriceWithTax,4 ),100);
}
return 0;
},
diff --git a/oms_web/oms_vue/src/views/finance/payable/components/PaymentPlan.vue b/oms_web/oms_vue/src/views/finance/payable/components/PaymentPlan.vue
index ad10131b..91099e15 100644
--- a/oms_web/oms_vue/src/views/finance/payable/components/PaymentPlan.vue
+++ b/oms_web/oms_vue/src/views/finance/payable/components/PaymentPlan.vue
@@ -10,7 +10,7 @@
style="margin-bottom: 10px;">
编辑
-
+
@@ -97,6 +97,10 @@ export default {
isInitEdit: {
type: Boolean,
default: false
+ },
+ selectedPlans: {
+ type: Array,
+ default: () => []
}
},
data() {
@@ -153,6 +157,15 @@ export default {
}));
if (this.paymentPlans.length === 0) {
this.initDefaultPaymentPlan();
+ } else {
+ this.$nextTick(() => {
+ this.paymentPlans.forEach(plan => {
+ const isSelected = this.selectedPlans.some(selected => selected.id === plan.id);
+ if (isSelected) {
+ this.$refs.paymentPlanTable.toggleRowSelection(plan, true);
+ }
+ });
+ });
}
})
} else {