UNPKG

ilead-ibpmp-design-new

Version:

基于 `vue` 和 `bpmn.io@7.0` ,实现 flowable 的 modeler 模型设计器

135 lines (125 loc) 4.91 kB
/* * @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 }