2020-10-24 15:40:02 +08:00
|
|
|
|
import axios from 'axios'
|
|
|
|
|
|
import qs from 'qs'
|
|
|
|
|
|
import router from '../../router'
|
|
|
|
|
|
import { Message } from 'element-ui'
|
|
|
|
|
|
import saveAs from './../lib/filesaver'
|
|
|
|
|
|
import NProgress from 'nprogress'
|
|
|
|
|
|
import './../../../static/css/nprogress.css'
|
2020-10-04 10:30:08 +08:00
|
|
|
|
|
2020-10-24 15:40:02 +08:00
|
|
|
|
var http = require('./httpurl')
|
|
|
|
|
|
function getUserToken () {
|
|
|
|
|
|
var data = window.localStorage.getItem('etorcurrentuser')
|
|
|
|
|
|
if (data) { return JSON.parse(data).Token }
|
|
|
|
|
|
return ''
|
2020-10-04 10:30:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var bmsAxios = axios.create({
|
2020-10-24 15:40:02 +08:00
|
|
|
|
// timeout: 120000,
|
|
|
|
|
|
// withCredentials: true,
|
|
|
|
|
|
baseURL: http.baseURL,
|
|
|
|
|
|
headers: {
|
|
|
|
|
|
post: {
|
|
|
|
|
|
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
|
2020-10-04 10:30:08 +08:00
|
|
|
|
}
|
2020-10-24 15:40:02 +08:00
|
|
|
|
}
|
|
|
|
|
|
})
|
2020-10-04 10:30:08 +08:00
|
|
|
|
|
|
|
|
|
|
bmsAxios.interceptors.request.use(
|
2020-10-24 15:40:02 +08:00
|
|
|
|
config => {
|
|
|
|
|
|
var data = ''
|
|
|
|
|
|
if (window.localStorage.getItem('etorcurrentuser')) {
|
|
|
|
|
|
data = window.localStorage.getItem('etorcurrentuser')
|
|
|
|
|
|
}
|
2020-10-04 10:30:08 +08:00
|
|
|
|
|
2020-10-24 15:40:02 +08:00
|
|
|
|
if (data == '') {
|
|
|
|
|
|
config.headers.token = ''
|
|
|
|
|
|
// eslint-disable-next-line no-use-before-define
|
|
|
|
|
|
config.headers.sid = sid || 0
|
|
|
|
|
|
} else {
|
|
|
|
|
|
config.headers.token = JSON.parse(data).Token
|
|
|
|
|
|
// var TenantId = JSON.parse(data).Manager.TenantId;
|
|
|
|
|
|
// var OperaterID = JSON.parse(data).Manager.ID;
|
|
|
|
|
|
}
|
|
|
|
|
|
var sid = window.localStorage.getItem('sid')
|
|
|
|
|
|
config.headers.sid = sid || 0
|
|
|
|
|
|
removeNullAndUndefinedProperty(config.data)// 没用的参数不要传
|
|
|
|
|
|
removeNullAndUndefinedProperty(config.params)// 没用的参数不要传
|
|
|
|
|
|
if (config.url != 'Permission/AgainGetToken') {
|
|
|
|
|
|
window.localStorage.setItem(
|
|
|
|
|
|
'lastrequesttime',
|
|
|
|
|
|
JSON.stringify(Date.now())
|
|
|
|
|
|
) // 记录用户最后请求时间
|
2020-10-04 10:30:08 +08:00
|
|
|
|
}
|
2020-10-24 15:40:02 +08:00
|
|
|
|
// debugger
|
|
|
|
|
|
return config
|
|
|
|
|
|
},
|
|
|
|
|
|
error => {
|
|
|
|
|
|
return Promise.reject(error)
|
|
|
|
|
|
}
|
|
|
|
|
|
)
|
2020-10-04 10:30:08 +08:00
|
|
|
|
// 返回状态
|
2020-10-24 15:40:02 +08:00
|
|
|
|
let onceMessage = false
|
2020-10-04 10:30:08 +08:00
|
|
|
|
bmsAxios.interceptors.response.use(
|
2020-10-24 15:40:02 +08:00
|
|
|
|
res => {
|
|
|
|
|
|
return res
|
|
|
|
|
|
},
|
|
|
|
|
|
error => {
|
|
|
|
|
|
// 有异常
|
|
|
|
|
|
if (error.response) {
|
|
|
|
|
|
switch (error.response.status) {
|
|
|
|
|
|
case 401:
|
|
|
|
|
|
if (onceMessage) return
|
|
|
|
|
|
onceMessage = true
|
|
|
|
|
|
// Message.error("信息过期,请重新登陆");
|
|
|
|
|
|
router.replace({
|
|
|
|
|
|
path: '/login',
|
|
|
|
|
|
query: {
|
|
|
|
|
|
redirect: router.currentRoute.fullPath
|
2020-10-04 10:30:08 +08:00
|
|
|
|
}
|
2020-10-24 15:40:02 +08:00
|
|
|
|
})
|
|
|
|
|
|
break
|
|
|
|
|
|
case 204:
|
|
|
|
|
|
Message.error('暂无数据')
|
|
|
|
|
|
break
|
|
|
|
|
|
}
|
2020-10-04 10:30:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2020-10-24 15:40:02 +08:00
|
|
|
|
return Promise.reject(error)
|
|
|
|
|
|
}
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
export function get (url, config) {
|
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
|
bmsAxios.get(url, {
|
|
|
|
|
|
params: config,
|
|
|
|
|
|
paramsSerializer: function (params) {
|
|
|
|
|
|
return qs.stringify(params, { arrayFormat: 'repeat' })
|
|
|
|
|
|
}
|
|
|
|
|
|
}).then(
|
|
|
|
|
|
response => {
|
|
|
|
|
|
if (response.data.Code == 10000) {
|
|
|
|
|
|
return resolve(response.data)
|
|
|
|
|
|
} else {
|
|
|
|
|
|
Message.error(response.data.Message || '数据异常')
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
err => {
|
|
|
|
|
|
reject(err)
|
|
|
|
|
|
}
|
|
|
|
|
|
)
|
|
|
|
|
|
.catch(error => {
|
|
|
|
|
|
reject(error)
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|
2020-10-04 10:30:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2020-10-16 14:31:19 +08:00
|
|
|
|
export function post (url, params) {
|
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
|
bmsAxios.post(url, params).then(
|
|
|
|
|
|
response => {
|
|
|
|
|
|
if (response.data.Code === 20000) {
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
|
|
|
|
|
if (response.data.Code === 30000) {
|
|
|
|
|
|
return resolve(response.data)
|
|
|
|
|
|
}
|
|
|
|
|
|
if (response.data.Code === 10000) {
|
|
|
|
|
|
Message.success('操作成功')
|
|
|
|
|
|
return resolve(response.data)
|
|
|
|
|
|
} else {
|
|
|
|
|
|
Message.error(response.data.Message)
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
err => {
|
|
|
|
|
|
Message.error('操作失败')
|
|
|
|
|
|
reject(err)
|
|
|
|
|
|
}
|
|
|
|
|
|
)
|
|
|
|
|
|
.catch(error => {
|
|
|
|
|
|
Message.error('操作异常')
|
|
|
|
|
|
reject(error)
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|
2020-10-04 10:30:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2020-10-24 15:40:02 +08:00
|
|
|
|
export function put (url, params) {
|
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
|
bmsAxios.put(url, params).then(
|
|
|
|
|
|
response => {
|
|
|
|
|
|
resolve(response.data)
|
|
|
|
|
|
},
|
|
|
|
|
|
err => {
|
|
|
|
|
|
reject(err)
|
|
|
|
|
|
}
|
|
|
|
|
|
)
|
|
|
|
|
|
.catch(error => {
|
|
|
|
|
|
reject(error)
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|
2020-10-04 10:30:08 +08:00
|
|
|
|
}
|
2020-10-24 15:40:02 +08:00
|
|
|
|
export function del (url, config) {
|
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
|
bmsAxios.delete(url, { params: config }).then(
|
|
|
|
|
|
response => {
|
|
|
|
|
|
resolve(response.data)
|
|
|
|
|
|
},
|
|
|
|
|
|
err => {
|
|
|
|
|
|
reject(err)
|
|
|
|
|
|
}
|
|
|
|
|
|
)
|
|
|
|
|
|
.catch(error => {
|
|
|
|
|
|
reject(error)
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|
2020-10-04 10:30:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
/** 使用 get HTTP Method 下载文件 */
|
2020-10-24 15:40:02 +08:00
|
|
|
|
export function getDownloadFile (url, params, name) {
|
|
|
|
|
|
NProgress.start()
|
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
|
bmsAxios
|
|
|
|
|
|
.get(url, {
|
|
|
|
|
|
params: {
|
|
|
|
|
|
...params,
|
|
|
|
|
|
params: params
|
|
|
|
|
|
},
|
|
|
|
|
|
responseType: 'blob'
|
|
|
|
|
|
})
|
|
|
|
|
|
.then(response => {
|
|
|
|
|
|
// 确定最终文件名
|
|
|
|
|
|
const fileNameHeader = 'x-suggested-filename'
|
|
|
|
|
|
let suggestedFileName = response.headers[fileNameHeader] || name
|
|
|
|
|
|
if (suggestedFileName) { suggestedFileName = decodeURIComponent(suggestedFileName) }
|
|
|
|
|
|
const effectiveFileName =
|
|
|
|
|
|
suggestedFileName === undefined ? 'untitled' : suggestedFileName
|
2020-10-04 10:30:08 +08:00
|
|
|
|
|
2020-10-24 15:40:02 +08:00
|
|
|
|
// 长度为零给出提示,扔出错误
|
|
|
|
|
|
// eslint-disable-next-line eqeqeq
|
|
|
|
|
|
if (response.data.size == 0) throw new Error('文件长度为0')
|
2020-10-04 10:30:08 +08:00
|
|
|
|
|
2020-10-24 15:40:02 +08:00
|
|
|
|
// 返回json,进行解析,获取Message,扔出错误
|
|
|
|
|
|
// eslint-disable-next-line eqeqeq
|
|
|
|
|
|
if (response.data.type == 'application/json') {
|
|
|
|
|
|
let reader = new FileReader()
|
|
|
|
|
|
reader.onload = function (event) {
|
|
|
|
|
|
var message = JSON.parse(event.target.result)
|
|
|
|
|
|
reject(new Error(message.Message)) // 拒绝
|
|
|
|
|
|
}
|
|
|
|
|
|
reader.readAsText(response.data)
|
|
|
|
|
|
} else {
|
|
|
|
|
|
saveAs(response.data, effectiveFileName)
|
|
|
|
|
|
resolve() // 解决
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
.catch(e => reject(e)).finally(function () {
|
|
|
|
|
|
NProgress.done()
|
|
|
|
|
|
}) // 拒绝
|
|
|
|
|
|
})
|
2020-10-04 10:30:08 +08:00
|
|
|
|
}
|
2020-10-24 15:40:02 +08:00
|
|
|
|
export function all (urlArr) { // 并发请求
|
|
|
|
|
|
if (urlArr.length > 6) {
|
|
|
|
|
|
// eslint-disable-next-line no-throw-literal
|
|
|
|
|
|
throw '当前不支持数量大于6个的并发请求'
|
|
|
|
|
|
}
|
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
|
axios.all(urlArr).then(
|
|
|
|
|
|
axios.spread((v0, v1, v2, v3, v4, v5) => {
|
|
|
|
|
|
let ret = {}
|
|
|
|
|
|
arguments.forEach((item, idx) => {
|
|
|
|
|
|
if (item) { ret[`ret${idx}`] = item }
|
|
|
|
|
|
})
|
|
|
|
|
|
// eslint-disable-next-line no-undef
|
|
|
|
|
|
resolve(item)
|
|
|
|
|
|
}),
|
|
|
|
|
|
err => {
|
|
|
|
|
|
reject(err)
|
|
|
|
|
|
}
|
|
|
|
|
|
)
|
|
|
|
|
|
.catch(error => {
|
|
|
|
|
|
reject(error)
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|
2020-10-04 10:30:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2020-10-24 15:40:02 +08:00
|
|
|
|
export function axiosHttp (url, params, type = 'get') {
|
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
|
axios[type](url, { params: params }).then(
|
|
|
|
|
|
response => {
|
|
|
|
|
|
resolve(response.data)
|
|
|
|
|
|
},
|
|
|
|
|
|
err => {
|
|
|
|
|
|
reject(err)
|
|
|
|
|
|
}
|
|
|
|
|
|
).catch(error => {
|
|
|
|
|
|
reject(error)
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|
2020-10-04 10:30:08 +08:00
|
|
|
|
}
|
2020-10-24 15:40:02 +08:00
|
|
|
|
function removeNullAndUndefinedProperty (model) { // 移除对象中值为null、undefined的属性
|
|
|
|
|
|
if (model) {
|
|
|
|
|
|
for (let key in model) {
|
|
|
|
|
|
if (model[key] === null || typeof (model[key]) === 'undefined') {
|
|
|
|
|
|
delete model[key]
|
|
|
|
|
|
}
|
2020-10-04 10:30:08 +08:00
|
|
|
|
}
|
2020-10-24 15:40:02 +08:00
|
|
|
|
}
|
2020-10-04 10:30:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2020-10-24 15:40:02 +08:00
|
|
|
|
function createFileInput (accept, onSelect) {
|
|
|
|
|
|
var lastFileInput = document.getElementById('f1_id')
|
|
|
|
|
|
if (lastFileInput != null) {
|
|
|
|
|
|
document.body.removeChild(lastFileInput)
|
|
|
|
|
|
}
|
|
|
|
|
|
lastFileInput = document.createElement('input')
|
|
|
|
|
|
lastFileInput.type = 'file'
|
|
|
|
|
|
lastFileInput.name = 'f1'
|
|
|
|
|
|
lastFileInput.id = 'f1_id'
|
|
|
|
|
|
accept && (lastFileInput.accept = accept)
|
|
|
|
|
|
lastFileInput.setAttribute('style', 'display:none;')
|
|
|
|
|
|
document.body.appendChild(lastFileInput)
|
|
|
|
|
|
lastFileInput.onchange = function (e) {
|
|
|
|
|
|
var f = lastFileInput.files[0]
|
|
|
|
|
|
onSelect && onSelect(f)
|
|
|
|
|
|
}
|
|
|
|
|
|
return lastFileInput
|
2020-10-04 10:30:08 +08:00
|
|
|
|
}
|
2020-10-24 15:40:02 +08:00
|
|
|
|
export function getUuid (length) {
|
|
|
|
|
|
return Number(Math.random().toString().substr(3, length) + Date.now()).toString(36)
|
2020-10-04 10:30:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2020-10-24 15:40:02 +08:00
|
|
|
|
// 通过axios上传文件
|
|
|
|
|
|
export function upload (url, uconfig) {
|
|
|
|
|
|
// eslint-disable-next-line no-redeclare
|
|
|
|
|
|
var uconfig = uconfig || {}
|
|
|
|
|
|
var params = uconfig.params || {}
|
|
|
|
|
|
var accept = uconfig.accept || 'image/gif, image/jpeg,image/jpg,image/png,image/*'
|
|
|
|
|
|
var onProgress = uconfig.onProgress || function () { }
|
|
|
|
|
|
var onStart = uconfig.onStart || function () { }
|
|
|
|
|
|
var uuid = uconfig.uuid || getUuid(10)
|
|
|
|
|
|
let config = {
|
|
|
|
|
|
headers: {
|
|
|
|
|
|
'Content-Type': 'multipart/form-data',
|
|
|
|
|
|
'token': getUserToken(),
|
|
|
|
|
|
'sid': 0
|
|
|
|
|
|
},
|
|
|
|
|
|
transformRequest: [function (data) {
|
|
|
|
|
|
return data
|
|
|
|
|
|
}],
|
|
|
|
|
|
onUploadProgress: e => {
|
|
|
|
|
|
var completeProgress = ((e.loaded / e.total * 100) | 0)
|
|
|
|
|
|
onProgress && onProgress(uuid, completeProgress)
|
|
|
|
|
|
console.log('onUploadProgress:' + completeProgress)
|
2020-10-04 10:30:08 +08:00
|
|
|
|
}
|
2020-10-24 15:40:02 +08:00
|
|
|
|
}
|
|
|
|
|
|
let formData = new FormData()
|
|
|
|
|
|
for (let key of Object.keys(params)) {
|
|
|
|
|
|
formData.append(key, params[key] !== null ? params[key] : '')
|
|
|
|
|
|
}
|
2024-03-20 10:55:02 +08:00
|
|
|
|
|
2020-10-24 15:40:02 +08:00
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
|
var uploadAxios = axios.create({
|
|
|
|
|
|
// withCredentials: true,
|
|
|
|
|
|
baseURL: http.baseURL
|
|
|
|
|
|
})
|
|
|
|
|
|
uploadAxios.post(url, formData, config).then(
|
|
|
|
|
|
response => { resolve(response.data) },
|
|
|
|
|
|
err => { reject(err) }
|
|
|
|
|
|
).catch(error => { reject(error) })
|
|
|
|
|
|
})
|
2020-10-04 10:30:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
export default {
|
2020-10-24 15:40:02 +08:00
|
|
|
|
baseURL: http.baseURL,
|
|
|
|
|
|
phpURL: http.phpURL,
|
|
|
|
|
|
get,
|
|
|
|
|
|
post,
|
|
|
|
|
|
del,
|
|
|
|
|
|
put,
|
|
|
|
|
|
upload, // :httpfile.upload,
|
|
|
|
|
|
getDownloadFile,
|
|
|
|
|
|
all (urlArr) { // 并发请求
|
|
|
|
|
|
return all(urlArr)
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|