zhou zhou
3 天以前 0a1d91e42e6c5af96e1108e9ebcc37e99eb3b22c
rsf-design/src/views/system/common/usePrintExportPage.js
@@ -1,12 +1,15 @@
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([])
@@ -23,9 +26,15 @@
  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()
@@ -37,9 +46,9 @@
      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'))
    }
  }
@@ -52,8 +61,14 @@
    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
      }
@@ -65,7 +80,7 @@
      if (activePrintToken.value !== token) {
        return
      }
      ElMessage.error(error?.message || '打印失败')
      ElMessage.error(error?.message || $t('crud.messages.printFailed'))
    }
  }