ilead-ibpmp-design-new
Version:
基于 `vue` 和 `bpmn.io@7.0` ,实现 flowable 的 modeler 模型设计器
135 lines (125 loc) • 4.91 kB
JavaScript
/*
* @Author: your name
* @Date: 2020-12-21 10:03:21
* @LastEditTime: 2021-01-04 17:28:32
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: \cud-workflow-ui\src\common\http\api-request.js
*/
import HttpRequest from './axios'
// import config from '@/config'
let axios = new HttpRequest()
export function setBaseUrl(url) {
if (url && url !== '') {
axios = new HttpRequest(url)
return axios
} else {
console.warn('前端配置文件未找到当前环境配置的路径!')
return ''
}
}
/**
* http post请求
* @param url请求的url地址
* @param params 基于post请求参数,格式必须是json,例如{id: '1111'}
* @param config 其他配置,一般是用于配置其他属性
*/
export function post(url, data, config) {
const options = { url: url, data: data, method: 'post' }
const opt = config ? Object.assign(config, options) : options
return axios.request(opt)
}
/**
* http get请求
* @param url请求的url地址
* @param params 基于get请求参数,格式必须是json,例如{id: '1111'}
* @param config 其他配置,一般是用于配置其他属性
*/
export function get(url, params, config) {
const options = { url: url, method: 'get', params: params }
const opt = Object.assign(options, config)
return axios.request(opt)
}
/**
* http 文件上传
* @param url请求的url地址
* @param data 是formdata对象
* @param config 其他配置,一般是用于配置其他属性
*/
export function uploadPost(url, data, config) {
const options = { url: url, method: 'post', headers: { 'Content-Type': 'multipart/form-data' }, data: data }
const opt = Object.assign(config, options)
return axios.request(opt)
}
/**
* http 文件上传
* @param url 请求的url地址
* @param file 文件对象
* @param data 文件上传的对象json格式
* @param config 其他配置,一般是用于配置其他属性
*/
export function uploadPostByFile(url, data, files, config) {
const form = new FormData()
for (let i = 0; i < files.length; i++) {
form.append('files', files[i])
}
for (const item in data) {
form.append(item, data[item])
}
const options = { url: url, method: 'post', headers: { 'Content-Type': 'multipart/form-data' }, data: form }
const opt = Object.assign(config, options)
return axios.request(opt)
}
export function download(url, data, config) {
const options = { url: url, headers: { 'Content-Type': 'application/json;charset=UTF-8', 'exportFlag': '1' }, responseType: 'blob', 'data': data }
const opt = config ? Object.assign(config, options) : options
return axios.request(opt)
}
export function downloadByStream(url, data, config, fileName, ifDecode) {
const options = { url: url, method: 'post', headers: { 'Content-Type': 'application/json;charset=UTF-8' }, responseType: 'blob', 'data': data }
const opt = config ? Object.assign(config, options) : options
axios.request(opt).then(response => {
// todo 增加错误提示
const fileName = window.decodeURI(response.res.headers['content-disposition'].split('=')[1])
const link = document.createElement('a')
link.href = window.URL.createObjectURL(new Blob([response.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8' }))
link.target = '_blank'
link.download = fileName
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
})
}
export function commonDownload(url, data, config) {
// 公共的下载方法
return new Promise((resolve, reject) => {
const options = { url: url, headers: { 'Content-Type': 'application/json;charset=UTF-8' }, responseType: 'arraybuffer', 'data': data }
const opt = config ? Object.assign(config, options) : options
axios.request(opt).then(response => {
var filename = response.headers// 下载后文件名
filename = filename['content-disposition']
filename = decodeURI(filename.split(';')[1].split('filename=')[1])
var blob = new Blob([response.data], { type: response.headers['content-type'] })
var downloadElement = document.createElement('a')
var href = URL.createObjectURL(blob) // 创建下载的链接
downloadElement.href = href
downloadElement.download = filename
document.body.appendChild(downloadElement)
downloadElement.click() // 点击下载
document.body.removeChild(downloadElement) // 下载完成移除元素
URL.revokeObjectURL(href) // 释放掉blob对象
resolve()
}).catch(err => {
reject(err)
})
})
}
export default {
axios,
setBaseUrl: setBaseUrl,
get: get,
post: post,
uploadPost: uploadPost,
download: download,
downloadByStream: downloadByStream
}