您的位置:首页 > 新闻 > 热点要闻 > 建设通建筑企业查询_广州市网站建设制作设计平台_网站查询ip地址_福州百度关键词排名

建设通建筑企业查询_广州市网站建设制作设计平台_网站查询ip地址_福州百度关键词排名

2025/1/9 10:01:03 来源:https://blog.csdn.net/weixin_44104341/article/details/144983889  浏览:    关键词:建设通建筑企业查询_广州市网站建设制作设计平台_网站查询ip地址_福州百度关键词排名
建设通建筑企业查询_广州市网站建设制作设计平台_网站查询ip地址_福州百度关键词排名

1. 导出功能vue文件代码

// 导出
const exportData = () => {const param = {warehouseId: warehouseId.value,dispatchType: dispatchType.value,beginTime: rangeTime.value?.length ? rangeTime.value[0] : undefined,endTime: rangeTime.value?.length ? rangeTime.value[1] : undefined}otherAPI.exportActionStatistics(param, 'blob').then((res: any) => {let fileName = '任务统计'let url = window.URL.createObjectURL(new Blob([res.data]))let link = document.createElement('a')link.style.display = 'none'link.href = urllink.id = 'Adownload'link.setAttribute('download', `${fileName}.xlsx`) //命名可能会出现问题,格式一定和后端下载的格式一样document.body.appendChild(link)link.click()})
}

2. 接口方法代码

	// 任务导出exportActionStatistics(params: any, responseType: any) {const obj = {}if (params) {AiObject.cloneTo(params, obj)}return REST.request(HTTPMethod.GET, this.server + 'Statistics/ExportActionStatistics' + AiObject.toQueryString(obj), undefined, undefined, responseType)}

3. axios封装代码(REST.ts) 包含导出接口报错时返回blob的数据处理

const service = axios.create({headers: {// 'Access-Control-Allow-Origin': '*',// 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept',// 'content-Type': 'application/json; charset=utf-8'}
})// 请求拦截
service.interceptors.request.use((config: AxiosRequestConfig | any) => {// 增加一种情况授权,授权之后再登录if (window.sessionStorage.getItem('unlicensed') === '1') {// 系统未授权的判断要跑到未登录判断的前面。} else {const token = sessionStorage.getItem('token')if (token && config.headers) {config.headers.Authorization = token} else {Auth.singleton.logout()}}return config},(error: any) => {Promise.reject(error)}
)// 响应拦截
service.interceptors.response.use((response) => Promise.resolve(response),(error: any) => {// 授权失败if (error?.response?.status === HTTPStatus.Unlicensed) {window.sessionStorage.setItem('unlicensed', '1')Global.router.push({ path: '/lockdown' })} else if (error?.response?.status === HTTPStatus.Unauthorized) {Auth.singleton.logout()} else if (error && error.response) {if (error.response.data instanceof Blob) {// 针对 Blob 类型错误处理const res = error.responseconst fileReader: any = new FileReader()fileReader.readAsText(new Blob([res.data], { type: 'application/octet-stream' }), 'utf-8')fileReader.onload = () => {const { message } = JSON.parse(fileReader.result)ElMessage({showClose: true,message: message,type: 'error'})}} else {ElMessage({showClose: true,message: error.response.data.message,type: 'error'// duration: 0})}} else {ElMessage.error('连接到服务器失败,请联系管理员')}return Promise.reject(error)}
)

ResponseType传入判断 

	static request(method: HTTPMethod, url: string, params?: string | number | { [key: string]: any }, className?: string, responseType?: ResponseType): AxiosPromise {// 如果有className 就得额外增加进去。if (typeof className === 'string') url += className// 确保参数符合 AxiosRequestConfig 接口。const config: AxiosRequestConfig = {method}if (responseType) {config.responseType = responseType as any}switch (typeof params) {case 'number':case 'string':config.url = `${url}${params}`breakcase 'object':config.url = urlconfig.data = paramsbreakdefault:config.url = urlbreak}if (responseType) {config.responseType = responseType}return service(config)}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com