✨ 支持应收账单导出通过 OSS 签名链接下载

This commit is contained in:
caojia
2026-11-12 09:27:10 +08:00
parent 27715b3e13
commit 146d3469b6
6 changed files with 94 additions and 11 deletions
+4
View File
@@ -91,6 +91,10 @@ export function downloadArBillExport(exportId) {
return request({ url: '/ar/bill/export/' + exportId + '/download', method: 'get', responseType: 'blob' })
}
export function getArBillExportDownloadInfo(exportId) {
return request({ url: '/ar/bill/export/' + exportId + '/download-url', method: 'get' })
}
export function listArBillLogs(query) {
return request({ url: '/ar/bill/log/list', method: 'get', params: query })
}
+16 -2
View File
@@ -69,7 +69,7 @@
<script setup name="ArBill">
import { saveAs } from 'file-saver'
import { listArBillCustomerOptions, listArBill, getArBill, confirmArBill, voidArBill, exportArBill, getArBillExport, downloadArBillExport, getArBillGenerateTask, listActiveArBillGenerateTasks, cancelArBillGenerateTask, retryArBillGenerateTask } from '@/api/ar/bill'
import { listArBillCustomerOptions, listArBill, getArBill, confirmArBill, voidArBill, exportArBill, getArBillExport, downloadArBillExport, getArBillExportDownloadInfo, getArBillGenerateTask, listActiveArBillGenerateTasks, cancelArBillGenerateTask, retryArBillGenerateTask } from '@/api/ar/bill'
import BillDetail from './components/BillDetail.vue'
import GenerateBillDialog from './components/GenerateBillDialog.vue'
import { AR_BILL_STATUS, AR_BILL_STATUS_OPTIONS, AR_BILL_STATUS_TYPES } from '@/constants/ar/bill'
@@ -382,7 +382,21 @@ function openExportTask(task) {
}
// 仅下载 SUCCESS 状态的导出任务,文件名优先使用后端保存的名称。
function downloadExport(row) { downloadArBillExport(row.exportId).then(blob => saveAs(blob, row.fileName || `账单_${row.exportId}.xlsx`)) }
function downloadExport(row) {
getArBillExportDownloadInfo(row.exportId).then(response => {
const info = response.data || {}
if (info.direct && info.downloadUrl) {
const link = document.createElement('a')
link.href = info.downloadUrl
link.style.display = 'none'
document.body.appendChild(link)
link.click()
link.remove()
return
}
return downloadArBillExport(row.exportId).then(blob => saveAs(blob, row.fileName || `账单_${row.exportId}.xlsx`))
})
}
function clearCustomerFilter() {
const query = { ...route.query }
delete query.customerId