1、不显示导出弹窗

import SmartBIExt from 'smartbi-ext'
let {
	DashModule: {
		DashEventEmum: {
			PAGE_ON_BEFORE_EXPORT_DIALOG
		},
		BaseDashExtender
	}
} = SmartBIExt
class DashInterfaceExtension extends BaseDashExtender {
	install () {
		this.on(PAGE_ON_BEFORE_EXPORT_DIALOG, (iPage, { portletId, props }) => {
			// 省略默认值设置步骤
			props.openDialog = false; // 不打开导出弹窗
		})
	}
}
export default DashInterfaceExtension


import SmartBIExt from  'smartbi-ext'
let {
  DashModule: {
   DashEventEmum: {
     PAGE_ON_PORTLET_BEFORE_EXPORT
   },
   BaseDashExtender
  }
} = SmartBIExt
class DashInterfaceExtension extends BaseDashExtender {
  install () {
    this.on(PAGE_ON_PORTLET_BEFORE_EXPORT, (iPage, { portletId, exportType }) => {
      // 提供exportSetting, 则下面的接口不会显示弹窗
      // 目前exportSetting是空对象, 表示所有设置项都使用默认值
      let exportSetting = {}
      iPage.execExport({ exportType, portletId, exportSetting })
      // 下面是第二种方式
      // let setting = iPage.execGenerateExportSetting({ exportType })
      // iPage.execExportWithSetting({ exportType, portletId, setting })
    })
  }
}
export default DashInterfaceExtension


2、修改导出弹窗

import SmartBIExt from  'smartbi-ext'
let {
  DashModule: {
   DashEventEmum: {
     PAGE_ON_BEFORE_EXPORT_DIALOG
   },
   BaseDashExtender
  }
} = SmartBIExt
class DashInterfaceExtension extends BaseDashExtender {
  install () {
    this.on(PAGE_ON_BEFORE_EXPORT_DIALOG, (iPage, { portletId, props }) => {
      props.defaultValue.fileName = '固定报表'; // 设置文件名
      props.disables.fileName = true;
      props.visibles.exportMode = false; // 隐藏导出渠道
    })
  }
}
export default DashInterfaceExtension

3、定制导出弹窗

// MyExportSettingDialogHandler.js
import SmartbiBIExt from 'smartbi-ext'
// MyExportSettingDialog.vue的代码自由发挥, 不再详细展示
import MyExportSettingDialog from './MyExportSettingDialog.vue'
const layer = SmartbiBIExt.InterfaceObject.IGlobal.getLayer()

export default {
	open (parent, exportSetting, callback) {
		this.layerId = layer.iframe('导出弹窗', {
			content: {
				content: MyExportSettingDialog,
				parent,
				data: { // 传递给MyExportSettingDialog的数据
                    setting: exportSetting,
					apply: (exportSetting) => {
						callback(exportSetting)
						this.close()
					},
					cancel: () => {
						this.close()
					}
				}
			}
		})
	},
	close () {
		layer.close(this.layerId)
	}
}


import SmartBIExt from  'smartbi-ext'
// 在当前目录定义一个自己的导出弹窗
import MyExportSettingDialogHandler from './MyExportSettingDialogHandler.js'
let {
	DashModule: {
		DashEventEmum: {
			PAGE_ON_PORTLET_BEFORE_EXPORT
  	 	},
   		BaseDashExtender
  	}
} = SmartBIExt
class DashInterfaceExtension extends BaseDashExtender {
  	install () {
    	this.on(PAGE_ON_PORTLET_BEFORE_EXPORT, (iPage, { portletId, exportType }) => {
      		// 获取默认的导出设置
      		let setting = iPage.execGenerateExportSetting({ portletId, exportType })
	  		MyExportSettingDialogHandler.open(this, setting, (setting) => {
				iPage.execExportWithSetting({ exportType, portletId, setting })
			})
    	})
  	}
}
export default DashInterfaceExtension


import SmartBIExt from  'smartbi-ext'
// 在当前目录定义一个自己的导出弹窗
import MyExportSettingDialogHandler from './MyExportSettingDialogHandler.js'
let {
	DashModule: {
		DashEventEmum: {
			PAGE_ON_BEFORE_EXPORT
  	 	},
   		BaseDashExtender
  	}
} = SmartBIExt
class DashInterfaceExtension extends BaseDashExtender {
  	install () {
    	this.on(PAGE_ON_BEFORE_EXPORT, (iPage, { exportType }) => {
      		// 获取默认的导出设置
      		let setting = iPage.execGenerateExportSetting({ exportType })
	  		MyExportSettingDialogHandler.open(this, setting, (setting) => {
				iPage.execExportWithSetting({ exportType, setting })
			})
    	})
  	}
}
export default DashInterfaceExtension

4、定制导出流程

import SmartBIExt from  'smartbi-ext'
let {
  DashModule: {
   DashEventEmum: {
     PAGE_ON_BEFORE_EXPORT
   },
   BaseDashExtender
  }
} = SmartBIExt
class DashInterfaceExtension extends BaseDashExtender {
  install () {
    this.on(PAGE_ON_BEFORE_EXPORT, (iPage, { exportType }) => {
      // 自定义导出流程

      // 这里做审核之类的事情
      let pass = true;  // 审核是否通过

      if (pass) {
        // 使用系统的导出弹窗
        iPage.execOpenExportSettingDialog({ exportType }, (setting) => {
          // 获取导出接口入参
          iPage.execGetExportSetting({ exportType, setting }, (ret) => {
            if (ret === false) {
              // 创建临时页面失败
              return
            }
            let { exportData, doAfterExport } = ret
            // 使用exportData调用自定义导出接口
            
            // 导出完毕, 调用导出完成回调
            doAfterExport()
          })
        })
      }
    })
  }
}
export default DashInterfaceExtension