♻️ 收票管理仅保留推送金蝶收票单并统一命名为批量同步

This commit is contained in:
刘泉佳
2026-09-23 11:05:19 +08:00
parent 884de893db
commit 4657fc29bd
4 changed files with 18 additions and 40 deletions
+5 -6
View File
@@ -25,8 +25,6 @@ export const submit = data => request({ url: `${baseUrl}/submit`, method: 'post'
export const approve = data => request({ url: `${baseUrl}/approve`, method: 'post', data }); export const approve = data => request({ url: `${baseUrl}/approve`, method: 'post', data });
export const returnBill = data => request({ url: `${baseUrl}/return`, method: 'post', data }); export const returnBill = data => request({ url: `${baseUrl}/return`, method: 'post', data });
export const voidBill = data => request({ url: `${baseUrl}/void`, method: 'post', data }); export const voidBill = data => request({ url: `${baseUrl}/void`, method: 'post', data });
export const syncKingdee = id =>
request({ url: `${baseUrl}/sync-kingdee`, method: 'post', params: { id } });
export const pushKingdee = ids => export const pushKingdee = ids =>
request({ url: `${baseUrl}/push-kingdee`, method: 'post', data: ids }); request({ url: `${baseUrl}/push-kingdee`, method: 'post', data: ids });
@@ -38,8 +36,9 @@ export const approvalStatusOptions = [
{ label: '已作废', value: 'voided' }, { label: '已作废', value: 'voided' },
]; ];
export const kingdeeStatusOptions = [ export const kingdeePushStatusOptions = [
{ label: '未同步', value: 'unsynced' }, { label: '未推送', value: 'unsynced' },
{ label: '已同步', value: 'synced' }, { label: '已保存收票单', value: 'pushed' },
{ label: '同步失败', value: 'failed' }, { label: '已指定应付', value: 'assigned' },
{ label: '推送失败', value: 'failed' },
]; ];
+3 -2
View File
@@ -11,6 +11,7 @@ export const invoiceReceiptTableColumns = [
{ prop: 'currentProcessor', label: '当前处理人', minWidth: 130 }, { prop: 'currentProcessor', label: '当前处理人', minWidth: 130 },
{ prop: 'createUserName', label: '创建人', minWidth: 110 }, { prop: 'createUserName', label: '创建人', minWidth: 110 },
{ prop: 'createTime', label: '创建时间', minWidth: 170 }, { prop: 'createTime', label: '创建时间', minWidth: 170 },
{ prop: 'kingdeeBillNo', label: '金蝶单据号', minWidth: 150 }, { prop: 'kingdeeReceivedInvoiceNo', label: '金蝶单据号', minWidth: 150 },
{ prop: 'kingdeeStatusName', label: '金蝶单据状态', minWidth: 140 }, { prop: 'kingdeePushStatusName', label: '金蝶状态', minWidth: 130 },
{ prop: 'kingdeePushMsg', label: '失败原因', minWidth: 160 },
]; ];
@@ -226,8 +226,6 @@ const emptyForm = () => ({
bankName: '', bankName: '',
bankAccount: '', bankAccount: '',
issuingBank: '', issuingBank: '',
kingdeeBillNo: '',
kingdeeStatus: 'unsynced',
phone: '', phone: '',
customerEmails: [], customerEmails: [],
departmentEmails: [], departmentEmails: [],
@@ -395,8 +393,6 @@ export default {
bankName: selected.bankName, bankName: selected.bankName,
bankAccount: selected.bankAccount, bankAccount: selected.bankAccount,
issuingBank: selected.issuingBank, issuingBank: selected.issuingBank,
kingdeeBillNo: selected.kingdeeBillNo || '',
kingdeeStatus: selected.kingdeeStatus || 'unsynced',
phone: preserveUserInput ? this.form.phone : selected.phone || '', phone: preserveUserInput ? this.form.phone : selected.phone || '',
customerEmails: preserveUserInput customerEmails: preserveUserInput
? this.form.customerEmails ? this.form.customerEmails
@@ -518,8 +514,6 @@ export default {
bankName: this.form.bankName, bankName: this.form.bankName,
bankAccount: this.form.bankAccount, bankAccount: this.form.bankAccount,
issuingBank: this.form.issuingBank, issuingBank: this.form.issuingBank,
kingdeeBillNo: this.form.kingdeeBillNo,
kingdeeStatus: this.form.kingdeeStatus,
phone: this.form.phone, phone: this.form.phone,
customerEmails: this.form.customerEmails.join(';'), customerEmails: this.form.customerEmails.join(';'),
departmentEmails: this.form.departmentEmails.join(';'), departmentEmails: this.form.departmentEmails.join(';'),
+10 -26
View File
@@ -40,10 +40,10 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-if="searchExpanded" label="金蝶单据状态"> <el-form-item v-if="searchExpanded" label="金蝶状态">
<el-select v-model="query.kingdeeStatus" clearable placeholder="请选择"> <el-select v-model="query.kingdeePushStatus" clearable placeholder="请选择">
<el-option <el-option
v-for="item in kingdeeStatusOptions" v-for="item in kingdeePushStatusOptions"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value" :value="item.value"
@@ -66,19 +66,12 @@
<section class="receipt-page__table-panel"> <section class="receipt-page__table-panel">
<div class="receipt-page__toolbar"> <div class="receipt-page__toolbar">
<div class="receipt-page__toolbar-left"> <div class="receipt-page__toolbar-left">
<el-button
v-if="hasPermission('invoice_receipt_sync')"
type="primary"
plain
@click="handleBatchSync"
>批量同步</el-button
>
<el-button <el-button
v-if="hasPermission('invoice_receipt_sync')" v-if="hasPermission('invoice_receipt_sync')"
type="primary" type="primary"
plain plain
@click="handlePushKingdee" @click="handlePushKingdee"
>推送金蝶收票单</el-button >批量同步</el-button
> >
<el-button v-if="hasPermission('invoice_receipt_add')" type="primary" @click="openCreate" <el-button v-if="hasPermission('invoice_receipt_add')" type="primary" @click="openCreate"
>新增</el-button >新增</el-button
@@ -251,7 +244,7 @@ const emptyQuery = () => ({
deptName: '', deptName: '',
deptPath: [], deptPath: [],
approvalStatus: '', approvalStatus: '',
kingdeeStatus: '', kingdeePushStatus: '',
}); });
export default { export default {
@@ -265,7 +258,7 @@ export default {
query: emptyQuery(), query: emptyQuery(),
searchExpanded: false, searchExpanded: false,
approvalStatusOptions: api.approvalStatusOptions, approvalStatusOptions: api.approvalStatusOptions,
kingdeeStatusOptions: api.kingdeeStatusOptions, kingdeePushStatusOptions: api.kingdeePushStatusOptions,
columns: invoiceReceiptTableColumns, columns: invoiceReceiptTableColumns,
rows: [], rows: [],
selection: [], selection: [],
@@ -370,23 +363,13 @@ export default {
this.$message.success('作废成功'); this.$message.success('作废成功');
this.loadTable(); this.loadTable();
}, },
async handleBatchSync() {
const rows = this.selection.filter(row => row.approvalStatus === 'approved');
if (!rows.length) {
this.$message.warning('请选择至少一条审批通过的收票登记');
return;
}
await Promise.all(rows.map(row => api.syncKingdee(row.id)));
this.$message.success(`已同步${rows.length}条收票登记`);
this.loadTable();
},
async handlePushKingdee() { async handlePushKingdee() {
const rows = this.selection.filter(row => row.approvalStatus === 'approved'); const rows = this.selection.filter(row => row.approvalStatus === 'approved');
if (!rows.length) { if (!rows.length) {
this.$message.warning('请选择至少一条审批通过的收票登记'); this.$message.warning('请选择至少一条审批通过的收票登记');
return; return;
} }
await this.$confirm(`确认将选中的 ${rows.length} 条收票登记推送金蝶收票单`, '提示', { await this.$confirm(`确认将选中的 ${rows.length} 条收票登记同步至金蝶`, '提示', {
type: 'warning', type: 'warning',
}); });
const summary = this.unwrapData(await api.pushKingdee(rows.map(row => row.id))); const summary = this.unwrapData(await api.pushKingdee(rows.map(row => row.id)));
@@ -408,8 +391,9 @@ export default {
当前处理人: item.currentProcessor, 当前处理人: item.currentProcessor,
创建人: item.createUserName, 创建人: item.createUserName,
创建时间: item.createTime, 创建时间: item.createTime,
金蝶单据号: item.kingdeeBillNo, 金蝶单据号: item.kingdeeReceivedInvoiceNo,
金蝶单据状态: item.kingdeeStatusName, 金蝶状态: item.kingdeePushStatusName,
失败原因: item.kingdeePushMsg,
})); }));
const workbook = XLSX.utils.book_new(); const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, XLSX.utils.json_to_sheet(exportRows), '收票登记'); XLSX.utils.book_append_sheet(workbook, XLSX.utils.json_to_sheet(exportRows), '收票登记');