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