
export default {
  methods: {
    /**
     * 处理导出功能
     * @param {Object} options - 导出配置项
     * @param {Function} options.exportApi - 导出接口函数
     * @param {Object} options.params - 导出参数
     * @param {string} [options.fileName='导出数据.xlsx'] - 导出文件名
     * @param {string} [options.fileType='application/vnd.ms-excel'] - 文件类型
     */
    async handleExport({ exportApi, params, fileName = '导出数据.xlsx', fileType = 'application/vnd.ms-excel' }) {
      if (!exportApi) {
        this.$message.error('导出接口未定义')
        return
      }

      try {
        await this.$confirm('是否确认导出所有数据项?', '警告', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(async () => {
          // 显示加载中
          const loading = this.$loading({
            lock: true,
            text: '正在导出数据，请稍候...',
            spinner: 'el-icon-loading',
            background: 'rgba(0, 0, 0, 0.7)'
          })

          try {
            const response = await exportApi(params)

            // 创建Blob对象
            const blob = new Blob([response], {
              type: fileType
            })

            // 创建下载链接
            const link = document.createElement('a')
            link.href = window.URL.createObjectURL(blob)
            link.download = fileName
            link.click()

            // 清理
            window.URL.revokeObjectURL(link.href)

            this.$message.success('导出成功')
          } catch (error) {
            console.error('导出失败:', error)
            this.$message.error('导出失败，请重试')
          } finally {
            loading.close()
          }
        }).catch(() => {})
      } catch (error) {
        console.error('导出操作失败:', error)
      }
    }

  }
}