1、调整合同

2、调整项目
3、调整付款管理
This commit is contained in:
2026-08-26 02:31:12 +08:00
parent 3da2d428f3
commit dc5a2235eb
13 changed files with 1184 additions and 235 deletions
+40 -110
View File
@@ -53,8 +53,8 @@
v-if="hasPermission('pre_settlement_advance')"
type="primary"
plain
disabled
@click="openAdvanceDialog"
:disabled="!selection.length"
@click="handleAdvanceApplication"
>
预付申请
</el-button>
@@ -215,52 +215,6 @@
@success="loadTable"
/>
<el-dialog v-model="advanceDialog.visible" title="预付申请" width="520px" append-to-body>
<el-form
ref="advanceFormRef"
:model="advanceForm"
:rules="advanceRules"
label-position="right"
label-width="auto"
>
<el-form-item label="预结算单号">
<span>{{ advanceDialog.row.preSettlementNo || '-' }}</span>
</el-form-item>
<el-form-item label="结算金额">
<span>
{{ formatMoney(advanceDialog.row.settlementAmount, advanceDialog.row.currency) }}
</span>
</el-form-item>
<el-form-item label="已申请预付金额">
<span>
{{ formatMoney(advanceDialog.row.advanceAppliedAmount, advanceDialog.row.currency) }}
</span>
</el-form-item>
<el-form-item label="申请预付金额" prop="appliedAmount">
<el-input-number
v-model="advanceForm.appliedAmount"
:min="0"
:max="advanceAvailableAmount"
:precision="2"
:controls="false"
/>
</el-form-item>
<el-form-item label="金蝶预付单号">
<el-input
v-model="advanceForm.kingdeeAdvanceNo"
maxlength="100"
placeholder="外部系统回写时可填写"
/>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="advanceDialog.visible = false">取消</el-button>
<el-button type="primary" :loading="advanceDialog.submitting" @click="submitAdvance">
提交
</el-button>
</template>
</el-dialog>
<el-dialog
v-model="printDialog.visible"
title="打印"
@@ -316,7 +270,6 @@
import { ArrowDown, ArrowUp, Refresh } from '@element-plus/icons-vue';
import { mapGetters } from 'vuex';
import {
applyAdvance,
approve,
exportList,
getDetail,
@@ -370,34 +323,6 @@ export default {
id: '',
readonly: false,
},
advanceDialog: {
visible: false,
submitting: false,
row: {},
},
advanceForm: {
appliedAmount: null,
kingdeeAdvanceNo: '',
},
advanceRules: {
appliedAmount: [
{ required: true, message: '请输入申请预付金额', trigger: 'blur' },
{
validator: (_rule, value, callback) => {
if (!value || Number(value) <= 0) {
callback(new Error('申请预付金额必须大于0'));
return;
}
if (Number(value) > this.advanceAvailableAmount) {
callback(new Error('申请预付金额不能超过剩余可申请金额'));
return;
}
callback();
},
trigger: ['blur', 'change'],
},
],
},
printDialog: {
visible: false,
loading: false,
@@ -422,13 +347,6 @@ export default {
visibleSearchFields() {
return this.searchExpanded ? this.searchFields : this.searchFields.slice(0, 4);
},
advanceAvailableAmount() {
return Math.max(
Number(this.advanceDialog.row.settlementAmount || 0) -
Number(this.advanceDialog.row.advanceAppliedAmount || 0),
0
);
},
},
watch: {
'$route.query.detailNo'(detailNo) {
@@ -525,37 +443,49 @@ export default {
}
return this.selection[0];
},
openAdvanceDialog() {
const row = this.selectedOne('预付申请');
if (!row) return;
handleAdvanceApplication() {
if (!this.selection.length) {
this.$message.warning('请选择需要发起预付申请的预结算单');
return;
}
if (this.selection.some(row => !row.contractId)) {
this.$message.warning('所选预结算单缺少合同ID,无法发起预付申请');
return;
}
const contractIds = new Set(this.selection.map(row => String(row.contractId)));
if (contractIds.size > 1) {
this.$message.warning('预付申请只能选择同一合同下的预结算单');
return;
}
if (
row.approvalStatus !== 'approved' ||
row.settlementType !== 'payable' ||
row.formalSettlementNo
this.selection.some(
row =>
row.approvalStatus !== 'approved' ||
row.settlementType !== 'payable' ||
row.formalSettlementNo
)
) {
this.$message.warning('仅审批通过、未转正式结算的应付预结算单可发起预付');
return;
}
this.advanceDialog.row = row;
this.advanceDialog.visible = true;
this.advanceForm = { appliedAmount: null, kingdeeAdvanceNo: '' };
this.$nextTick(() => this.$refs.advanceFormRef?.clearValidate());
},
async submitAdvance() {
await this.$refs.advanceFormRef?.validate();
this.advanceDialog.submitting = true;
try {
await applyAdvance({
preSettlementId: this.advanceDialog.row.id,
appliedAmount: this.advanceForm.appliedAmount,
kingdeeAdvanceNo: this.advanceForm.kingdeeAdvanceNo,
});
this.$message.success('预付申请提交成功');
this.advanceDialog.visible = false;
this.loadTable();
} finally {
this.advanceDialog.submitting = false;
}
const sourcePreSettlements = this.selection.map(row => ({
...row,
preSettlementId: row.preSettlementId || row.id,
}));
const transferToken = createSettlementTransfer({
sourcePreSettlements,
});
this.$router.push({
path: '/payment/payment-application/form',
query: {
mode: 'add',
transferToken,
preSettlementIds: sourcePreSettlements
.map(row => row.preSettlementId)
.filter(Boolean)
.join(','),
},
});
},
handleFormalSettlement() {
if (!this.selection.length) {