🐛 修复收款流水继续认领预填与付款申请预结算引用提交
部分认领打开时预填历史关联结算单,可认领上限按公告未认领与收款金额取小;付款申请提交前清理误存正式结算单引用。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -3097,6 +3097,8 @@ export default {
|
||||
});
|
||||
},
|
||||
payload() {
|
||||
// 驳回重提前再清一次:避免历史误存的正式结算单 ID 盖过预结算引用
|
||||
this.clearFormalReferenceWhenPreOnly();
|
||||
const {
|
||||
id,
|
||||
paymentType,
|
||||
@@ -3133,13 +3135,25 @@ export default {
|
||||
paymentType === 'progress_advance' ||
|
||||
(this.referenceRows.length > 0 &&
|
||||
this.referenceRows.every(item => item.referenceType === 'pre'));
|
||||
// 进度预付 / 仅预结算引用:强制不传正式结算单 ID,并兜底恢复预结算单 ID
|
||||
const resolvedPreSettlementId =
|
||||
preSettlementId ||
|
||||
preSettlementIds?.[0] ||
|
||||
(usePreSettlementOnly ? settlementId : null) ||
|
||||
null;
|
||||
const resolvedPreSettlementIds =
|
||||
preSettlementIds?.length > 0
|
||||
? preSettlementIds
|
||||
: resolvedPreSettlementId
|
||||
? [resolvedPreSettlementId]
|
||||
: [];
|
||||
return {
|
||||
id,
|
||||
paymentType,
|
||||
settlementId: usePreSettlementOnly ? null : settlementId,
|
||||
settlementIds: usePreSettlementOnly ? [] : settlementIds,
|
||||
preSettlementId,
|
||||
preSettlementIds,
|
||||
preSettlementId: usePreSettlementOnly ? resolvedPreSettlementId : preSettlementId,
|
||||
preSettlementIds: usePreSettlementOnly ? resolvedPreSettlementIds : preSettlementIds,
|
||||
projectId,
|
||||
projectName,
|
||||
deptId,
|
||||
|
||||
@@ -302,7 +302,10 @@ export default {
|
||||
);
|
||||
},
|
||||
flowRemaining(flow) {
|
||||
return Math.max(Number(flow.unclaimedAmount || 0) - Number(flow.claimedAmount || 0), 0);
|
||||
const unclaimed = Number(flow.unclaimedAmount || 0);
|
||||
const receipt = Number(flow.receiptAmount || 0);
|
||||
const ceiling = unclaimed > 0 && receipt > 0 ? Math.min(unclaimed, receipt) : unclaimed || receipt;
|
||||
return Math.max(ceiling - Number(flow.claimedAmount || 0), 0);
|
||||
},
|
||||
maxAllocation(row) {
|
||||
const current = Number(row.settlement.allocations?.[row.flow.id] || 0);
|
||||
|
||||
@@ -252,10 +252,11 @@ export default {
|
||||
);
|
||||
},
|
||||
claimableAmount() {
|
||||
return Math.max(
|
||||
Number(this.form.unclaimedAmount || 0) - Number(this.form.claimedAmount || 0),
|
||||
0
|
||||
);
|
||||
const unclaimed = Number(this.form.unclaimedAmount || 0);
|
||||
const receipt = Number(this.form.receiptAmount || 0);
|
||||
const ceiling =
|
||||
unclaimed > 0 && receipt > 0 ? Math.min(unclaimed, receipt) : unclaimed || receipt;
|
||||
return Math.max(ceiling - Number(this.form.claimedAmount || 0), 0);
|
||||
},
|
||||
},
|
||||
created() {
|
||||
@@ -274,14 +275,21 @@ export default {
|
||||
}
|
||||
const data = this.unwrapData(await api.getDetail(this.flowId));
|
||||
const userInfo = this.$store.getters.userInfo || {};
|
||||
// 部分认领继续认领:预填本流水历史关联且仍有剩余可认领金额的结算单
|
||||
const relatedSettlements = (data?.relatedSettlements || []).map(item => ({
|
||||
...item,
|
||||
formalSettlementId: item.id,
|
||||
settlementId: item.id,
|
||||
allocatedReceiptAmount: 0,
|
||||
}));
|
||||
this.form = {
|
||||
...emptyForm(),
|
||||
...data,
|
||||
claimerName: userInfo.realName || userInfo.userName || data.claimerName || '',
|
||||
claimerDeptName: userInfo.deptName || userInfo.dept_name || data.claimerDeptName || '',
|
||||
claimDate: this.$dayjs().format('YYYY-MM-DD'),
|
||||
settlementIds: [],
|
||||
settlements: [],
|
||||
settlementIds: relatedSettlements.map(item => item.formalSettlementId),
|
||||
settlements: relatedSettlements,
|
||||
attachments: [],
|
||||
};
|
||||
},
|
||||
@@ -347,7 +355,7 @@ export default {
|
||||
return;
|
||||
}
|
||||
if (this.allocatedTotal > this.claimableAmount + 0.001) {
|
||||
this.$message.warning('累计认领金额不能超过公告未认领金额(剩余可认领金额)');
|
||||
this.$message.warning('累计认领金额不能超过剩余可认领金额');
|
||||
return;
|
||||
}
|
||||
for (const row of this.form.settlements)
|
||||
|
||||
Reference in New Issue
Block a user