| | |
| | | import { ref } from 'vue' |
| | | import { ElMessage } from 'element-plus' |
| | | import { guardRequestWithMessage } from '@/utils/sys/requestGuard' |
| | | import { $t } from '@/locales' |
| | | |
| | | export function usePrintExportPage({ |
| | | downloadFileName, |
| | | requestExport, |
| | | resolvePrintRecords, |
| | | buildPreviewRows, |
| | | buildPreviewMeta |
| | | buildPreviewMeta, |
| | | timeoutMs |
| | | }) { |
| | | const previewVisible = ref(false) |
| | | const previewRows = ref([]) |
| | |
| | | |
| | | const handleExport = async (payload) => { |
| | | try { |
| | | const response = await requestExport(payload) |
| | | const response = await guardRequestWithMessage(requestExport(payload), null, { |
| | | timeoutMs, |
| | | timeoutMessage: $t('message.exportTimeoutStopped') |
| | | }) |
| | | if (!response) { |
| | | return |
| | | } |
| | | if (!response.ok) { |
| | | throw new Error(`导出失败 (${response.status})`) |
| | | throw new Error($t('crud.messages.exportFailedWithStatus', { status: response.status })) |
| | | } |
| | | |
| | | const blob = await response.blob() |
| | |
| | | link.click() |
| | | link.remove() |
| | | window.URL.revokeObjectURL(downloadUrl) |
| | | ElMessage.success('导出成功') |
| | | ElMessage.success($t('crud.messages.exportSuccess')) |
| | | } catch (error) { |
| | | ElMessage.error(error?.message || '导出失败') |
| | | ElMessage.error(error?.message || $t('crud.messages.exportFailed')) |
| | | } |
| | | } |
| | | |
| | |
| | | previewMeta.value = {} |
| | | |
| | | try { |
| | | const records = await resolvePrintRecords(payload) |
| | | const records = await guardRequestWithMessage(resolvePrintRecords(payload), null, { |
| | | timeoutMs, |
| | | timeoutMessage: $t('message.printTimeoutStopped') |
| | | }) |
| | | if (activePrintToken.value !== token) { |
| | | return |
| | | } |
| | | if (!records) { |
| | | return |
| | | } |
| | | |
| | |
| | | if (activePrintToken.value !== token) { |
| | | return |
| | | } |
| | | ElMessage.error(error?.message || '打印失败') |
| | | ElMessage.error(error?.message || $t('crud.messages.printFailed')) |
| | | } |
| | | } |
| | | |