✨ 金蝶附件同步(A902)前端:四页面附件同步列、重推补传提示与收票推送超时放宽
This commit is contained in:
@@ -26,7 +26,8 @@ export const approve = data => request({ url: `${baseUrl}/approve`, method: 'pos
|
||||
export const returnBill = data => request({ url: `${baseUrl}/return`, method: 'post', data });
|
||||
export const voidBill = data => request({ url: `${baseUrl}/void`, method: 'post', data });
|
||||
export const pushKingdee = ids =>
|
||||
request({ url: `${baseUrl}/push-kingdee`, method: 'post', data: ids });
|
||||
// 推送联带 A902 附件上传(登记附件 + 镜像发票文件下载回传),耗时较普通接口长,放宽到 120s
|
||||
request({ url: `${baseUrl}/push-kingdee`, method: 'post', data: ids, timeout: 120000 });
|
||||
|
||||
export const approvalStatusOptions = [
|
||||
{ label: '草稿', value: 'draft' },
|
||||
|
||||
@@ -13,6 +13,7 @@ export const invoiceApplicationTableColumns = [
|
||||
{ prop: 'currentProcessor', label: '当前处理人', minWidth: 130 },
|
||||
{ prop: 'kingdeeBillNo', label: '金蝶单据号', minWidth: 150 },
|
||||
{ prop: 'kingdeeStatusName', label: '金蝶单据状态', minWidth: 140 },
|
||||
{ prop: 'attachmentSyncStatusName', label: '附件同步', minWidth: 100 },
|
||||
];
|
||||
|
||||
export const invoiceApplicationDetailColumns = [
|
||||
|
||||
@@ -14,4 +14,5 @@ export const invoiceReceiptTableColumns = [
|
||||
{ prop: 'kingdeeReceivedInvoiceNo', label: '金蝶单据号', minWidth: 150 },
|
||||
{ prop: 'kingdeePushStatusName', label: '金蝶状态', minWidth: 130 },
|
||||
{ prop: 'kingdeePushMsg', label: '失败原因', minWidth: 160 },
|
||||
{ prop: 'attachmentSyncStatusName', label: '附件同步', minWidth: 100 },
|
||||
];
|
||||
|
||||
@@ -17,4 +17,5 @@ export const paymentApplicationTableColumns = [
|
||||
{ prop: 'currentProcessor', label: '当前处理人', minWidth: 120 },
|
||||
{ prop: 'kingdeeBillNo', label: '金蝶单据号', minWidth: 130 },
|
||||
{ prop: 'kingdeeStatusName', label: '金蝶单据状态', minWidth: 130 },
|
||||
{ prop: 'attachmentSyncStatusName', label: '附件同步', minWidth: 100 },
|
||||
];
|
||||
|
||||
@@ -21,6 +21,7 @@ export const formalSettlementTableColumns = [
|
||||
{ label: '当前处理人', prop: 'currentProcessor', minWidth: 130 },
|
||||
{ label: '金蝶单据号', prop: 'kingdeeBillNo', minWidth: 150 },
|
||||
{ label: '金蝶单据状态', prop: 'kingdeeSyncStatus', minWidth: 135 },
|
||||
{ label: '附件同步', prop: 'attachmentSyncStatusName', minWidth: 100 },
|
||||
{ label: '创建人', prop: 'createUserName', minWidth: 110 },
|
||||
{ label: '创建时间', prop: 'createTime', minWidth: 170 },
|
||||
];
|
||||
|
||||
@@ -406,7 +406,18 @@ export default {
|
||||
}
|
||||
await Promise.all(rows.map(row => api.syncKingdee(row.id)));
|
||||
this.$message.success(`已同步${rows.length}条开票申请`);
|
||||
this.loadTable();
|
||||
await this.loadTable();
|
||||
// 附件联带同步提示:同步成功但附件未全部上传时追加 warning,重推即自动补传
|
||||
const idSet = new Set(rows.map(row => String(row.id)));
|
||||
const pendingCount = (this.rows || []).filter(row => idSet.has(String(row.id))
|
||||
&& ['pending', 'partial'].includes(row.attachmentSyncStatus)).length;
|
||||
if (pendingCount) {
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
message: `其中${pendingCount}单附件未全部上传,可重推补传`,
|
||||
duration: 8000,
|
||||
});
|
||||
}
|
||||
},
|
||||
async handleExport() {
|
||||
const data = this.unwrapData(await api.getList(1, 100000, this.query));
|
||||
|
||||
@@ -373,8 +373,13 @@ export default {
|
||||
type: 'warning',
|
||||
});
|
||||
const summary = this.unwrapData(await api.pushKingdee(rows.map(row => row.id)));
|
||||
this.$alert(summary || '推送完成', '推送结果', { confirmButtonText: '知道了' });
|
||||
this.loadTable();
|
||||
await this.loadTable();
|
||||
// 附件联带同步提示:推送成功但附件未全部上传时在结果弹窗追加说明,重推即自动补传
|
||||
const idSet = new Set(rows.map(row => String(row.id)));
|
||||
const pendingCount = (this.rows || []).filter(row => idSet.has(String(row.id))
|
||||
&& ['pending', 'partial'].includes(row.attachmentSyncStatus)).length;
|
||||
const attachmentTip = pendingCount ? `\n其中${pendingCount}单附件未全部上传,可重推补传` : '';
|
||||
this.$alert((summary || '推送完成') + attachmentTip, '推送结果', { confirmButtonText: '知道了' });
|
||||
},
|
||||
async handleExport() {
|
||||
const data = this.unwrapData(await api.getList(1, 100000, this.query));
|
||||
|
||||
@@ -395,7 +395,8 @@ export default {
|
||||
async handleSyncRow(row) {
|
||||
const data = this.unwrapData(await api.syncKingdee(row.id));
|
||||
this.$message.success(`已生成金蝶付款单:${data}`);
|
||||
this.loadTable();
|
||||
await this.loadTable();
|
||||
this.warnAttachmentNotUploaded([row.id]);
|
||||
},
|
||||
async handleSync() {
|
||||
const rows = this.selection.filter(row => row.approvalStatus === 'approved');
|
||||
@@ -414,7 +415,21 @@ export default {
|
||||
} else {
|
||||
this.$message.success(`已同步${data.length}条付款申请`);
|
||||
}
|
||||
this.loadTable();
|
||||
await this.loadTable();
|
||||
this.warnAttachmentNotUploaded(rows.map(row => row.id));
|
||||
},
|
||||
// 附件联带同步提示:同步成功但附件未全部上传时追加 warning,重推即自动补传
|
||||
warnAttachmentNotUploaded(ids) {
|
||||
const idSet = new Set(ids.map(String));
|
||||
const pendingCount = (this.rows || []).filter(row => idSet.has(String(row.id))
|
||||
&& ['pending', 'partial'].includes(row.attachmentSyncStatus)).length;
|
||||
if (pendingCount) {
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
message: `其中${pendingCount}单附件未全部上传,可重推补传`,
|
||||
duration: 8000,
|
||||
});
|
||||
}
|
||||
},
|
||||
async handleSyncResult() {
|
||||
const data = this.unwrapData(await api.syncKingdeeResult());
|
||||
|
||||
@@ -379,7 +379,16 @@ export default {
|
||||
const response = await api.syncKingdee(row.id);
|
||||
const data = this.unwrapData(response);
|
||||
this.$message.success(`同步成功,金蝶单据号:${data}`);
|
||||
this.loadTable();
|
||||
await this.loadTable();
|
||||
// 附件联带同步提示:同步成功但附件未全部上传时追加 warning,重推即自动补传
|
||||
const freshRow = (this.rows || []).find(item => String(item.id) === String(row.id));
|
||||
if (freshRow && ['pending', 'partial'].includes(freshRow.attachmentSyncStatus)) {
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
message: '该单附件未全部上传,可重推补传',
|
||||
duration: 8000,
|
||||
});
|
||||
}
|
||||
},
|
||||
async openPaymentDialog() {
|
||||
if (!this.selection.length) return this.$message.warning('请至少选择一条正式结算单');
|
||||
|
||||
Reference in New Issue
Block a user