You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
626 lines
16 KiB
626 lines
16 KiB
/* eslint-disable */
|
|
import axios from 'axios'
|
|
import Cookies from 'js-cookie'
|
|
import router from '@/router'
|
|
import qs from 'qs'
|
|
import { clearLoginInfo } from '@/utils'
|
|
import isPlainObject from 'lodash/isPlainObject'
|
|
|
|
import Vue from 'vue'
|
|
|
|
import { Loading } from 'element-ui' //引入Loading服务
|
|
|
|
|
|
|
|
// 默认超时时间60s
|
|
axios.defaults.timeout = 60000
|
|
|
|
let timer
|
|
let loading
|
|
//请求时间超过300ms 提示加载
|
|
function startLoading () {
|
|
if (timer) return
|
|
|
|
timer = setTimeout(() => {
|
|
loading = Loading.service({
|
|
lock: true, //是否锁定
|
|
text: '正在加载……', //加载中需要显示的文字
|
|
background: 'rgba(0,0,0,.7)', //背景颜色
|
|
})
|
|
}, 300)
|
|
}
|
|
|
|
//结束加载动画
|
|
function endLoading () {
|
|
if (timer) {
|
|
clearTimeout(timer)
|
|
}
|
|
if (loading) {
|
|
loading.close()
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 请求拦截
|
|
*/
|
|
axios.interceptors.request.use(
|
|
(config) => {
|
|
config.headers['Accept-Language'] = Cookies.get('language') || 'zh-CN'
|
|
config.headers['token'] = Cookies.get('token') || ''
|
|
config.headers['Authorization'] = Cookies.get('token') || ''
|
|
// 默认参数
|
|
var defaults = {}
|
|
// 防止缓存,GET请求默认带_t参数
|
|
if (config.method === 'get') {
|
|
config.params = {
|
|
...config.params,
|
|
...{ _t: new Date().getTime() },
|
|
}
|
|
}
|
|
if (isPlainObject(config.params)) {
|
|
config.params = {
|
|
...defaults,
|
|
...config.params,
|
|
}
|
|
}
|
|
if (isPlainObject(config.data)) {
|
|
config.data = {
|
|
...defaults,
|
|
...config.data,
|
|
}
|
|
if (
|
|
/^application\/x-www-form-urlencoded/.test(
|
|
config.headers['content-type']
|
|
)
|
|
) {
|
|
config.data = qs.stringify(config.data)
|
|
}
|
|
}
|
|
return config
|
|
},
|
|
(error) => {
|
|
return Promise.reject(error)
|
|
}
|
|
)
|
|
|
|
/**
|
|
* 响应拦截
|
|
*/
|
|
axios.interceptors.response.use(
|
|
(response) => {
|
|
if (response.data.code === 401 || response.data.code === 10001 || response.data.code === 10005) {
|
|
// debugger;
|
|
clearLoginInfo()
|
|
localStorage.setItem('userType', 'work')
|
|
let userType = localStorage.getItem("userType");
|
|
// if (userType === 'work'){
|
|
// router.replace({ name: 'loginWork' })
|
|
// }else {
|
|
router.replace({ name: 'login' })
|
|
// }
|
|
|
|
return Promise.reject(response.data.msg)
|
|
}
|
|
return response
|
|
},
|
|
(error) => {
|
|
console.error(error)
|
|
return Promise.reject(error)
|
|
}
|
|
)
|
|
|
|
const post = (url, params, headers) => {
|
|
return new Promise((reslove, reject) => {
|
|
axios
|
|
.post(processUrl(url), params, headers)
|
|
.then((res) => {
|
|
resolve(res);
|
|
})
|
|
.catch((err) => {
|
|
reject(err)
|
|
})
|
|
})
|
|
}
|
|
|
|
export const requestPost = async (url = '', params = {}, headers = {}) => {
|
|
const ret = await post(url, params, headers)
|
|
console.log(url, ret)
|
|
// if (ret.status === 200) {
|
|
// var data = res.data
|
|
// if (data.code == 0) {
|
|
// //业务成功
|
|
// if (typeof cb_su === 'function') {
|
|
// cb_su(data.data, data.msg)
|
|
// }
|
|
// } else {
|
|
// //业务失败
|
|
// if (typeof cb_err === 'function') cb_err(data.msg, data.data)
|
|
// }
|
|
// } else {
|
|
// if (typeof cb_err === 'function') cb_err(res)
|
|
// }
|
|
}
|
|
|
|
/*
|
|
* 1、后台请求成功均返回(业务上的异常也属于请求成功) res.status=200的响应码
|
|
* 2、res.data:后台自定义的响应体,包括:
|
|
* 1)res.data.sysresultcode:请求结果,success业务成功,fail业务失败
|
|
* 2)res.data.rspMsg:返回消息,用于进行消息提示
|
|
* 3)res.data.data:返回数据,用于获取请求的数据
|
|
* 3、异步请求,以cb_su(data.data, data.rspMsg),返回业务层
|
|
*/
|
|
export default {
|
|
// 并发请求
|
|
all (gets, cb) {
|
|
if (gets && gets.length > 0) {
|
|
let functions = gets.map((get) => {
|
|
return axios.get(processUrl(get.url), {
|
|
params: get.params,
|
|
})
|
|
})
|
|
axios.all(functions).then(
|
|
axios.spread((..._results) => {
|
|
let results = _results.map((_result) => {
|
|
return _result.data.data
|
|
})
|
|
cb(results)
|
|
})
|
|
)
|
|
}
|
|
},
|
|
get (url, params, cb_su, cb_err, headers) {
|
|
var p = {
|
|
params: params,
|
|
}
|
|
if (headers && JSON.stringify(headers) != '{}') {
|
|
var h = {
|
|
headers: headers,
|
|
}
|
|
p = {
|
|
...p,
|
|
...h,
|
|
}
|
|
}
|
|
url = url + '?r=' + new Date().getTime() //时间戳作为随机码,防止IE从缓存获取数据
|
|
axios
|
|
.get(processUrl(url), p)
|
|
.then((res) => {
|
|
if (res) {
|
|
if (res.status === 200) {
|
|
|
|
var data = res.data
|
|
if (data.code == 0) {
|
|
//业务成功
|
|
if (typeof cb_su === 'function') {
|
|
cb_su(data.data, data.msg )
|
|
}
|
|
} else {
|
|
//业务失败
|
|
if (typeof cb_err === 'function') cb_err(data.msg , data.data)
|
|
}
|
|
} else {
|
|
if (typeof cb_err === 'function') cb_err(res)
|
|
}
|
|
} else {
|
|
if (typeof cb_err === 'function') cb_err(res)
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
if (typeof (cb_err === 'function')) {
|
|
cb_err(err)
|
|
}
|
|
})
|
|
},
|
|
put (url, data, cb_su, cb_err) {
|
|
axios
|
|
.put(processUrl(url), data)
|
|
.then((res) => {
|
|
if (res) {
|
|
if (res.status === 200) {
|
|
var data = res.data
|
|
if (data.sysresultcode === 'success') {
|
|
//业务成功
|
|
if (typeof cb_su === 'function') {
|
|
cb_su(data.data, data.rspMsg)
|
|
}
|
|
} else if (data.sysresultcode === 'fail') {
|
|
//业务失败
|
|
if (typeof cb_err === 'function') cb_err(data.rspMsg, data.data)
|
|
}
|
|
} else {
|
|
if (typeof cb_err === 'function') cb_err(res)
|
|
}
|
|
} else {
|
|
if (typeof cb_err === 'function') cb_err(res)
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
if (typeof cb_err === 'function') {
|
|
cb_err(err)
|
|
}
|
|
})
|
|
},
|
|
|
|
post (url, data, cb_su, cb_err, headers) {
|
|
var h = {}
|
|
if (headers && JSON.stringify(headers) != '{}') {
|
|
h = {
|
|
headers,
|
|
}
|
|
}
|
|
//var data = qs.stringify(paramas);
|
|
axios
|
|
.post(processUrl(url), data, h)
|
|
.then((res) => {
|
|
|
|
if (res) {
|
|
if (res.status === 200) {
|
|
|
|
var data = res.data
|
|
if (data.code == 0) {
|
|
//业务成功
|
|
if (typeof cb_su === 'function') {
|
|
cb_su(data.data, data.msg )
|
|
}
|
|
} else {
|
|
//业务失败
|
|
if (typeof cb_err === 'function') cb_err(data.msg , data.data)
|
|
}
|
|
} else {
|
|
if (typeof cb_err === 'function') cb_err(res)
|
|
}
|
|
} else {
|
|
if (typeof cb_err === 'function') cb_err(res)
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
if (typeof cb_err === 'function') {
|
|
cb_err(err)
|
|
}
|
|
})
|
|
},
|
|
post2 (url, data, cb_su, cb_err, headers) {
|
|
var h = {}
|
|
if (headers && JSON.stringify(headers) != '{}') {
|
|
h = {
|
|
headers,
|
|
}
|
|
}
|
|
//var data = qs.stringify(paramas);
|
|
axios
|
|
.post(processUrl(url), data)
|
|
.then((res) => {
|
|
if (res) {
|
|
if (res.status === 200) {
|
|
var data = res.data
|
|
cb_su(data, data.msg )
|
|
} else {
|
|
if (typeof cb_err === 'function') cb_err(data.msg , data)
|
|
}
|
|
} else {
|
|
if (typeof cb_err === 'function') cb_err(data.msg , data)
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
if (typeof cb_err === 'function') {
|
|
cb_err(err)
|
|
}
|
|
})
|
|
},
|
|
delete (url, params, cb_su, cb_err) {
|
|
axios
|
|
.delete(processUrl(url), {
|
|
params: params,
|
|
})
|
|
.then((res) => {
|
|
if (res) {
|
|
if (res.status === 200) {
|
|
var data = res.data
|
|
if (data.sysresultcode === 'success') {
|
|
//业务成功
|
|
if (typeof cb_su === 'function') {
|
|
cb_su(data.data, data.rspMsg)
|
|
}
|
|
} else if (data.sysresultcode === 'fail') {
|
|
//业务失败
|
|
if (typeof cb_err === 'function') cb_err(data.rspMsg, data.data)
|
|
}
|
|
} else {
|
|
if (typeof cb_err === 'function') cb_err(res)
|
|
}
|
|
} else {
|
|
if (typeof cb_err === 'function') cb_err(res)
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
if (typeof cb_err === 'function') {
|
|
cb_err(err)
|
|
}
|
|
})
|
|
},
|
|
|
|
//导出文件,包括excel,word等
|
|
exportFile (url, params, cb_su, cb_err, headers) {
|
|
var h = {}
|
|
if (headers && JSON.stringify(headers) != '{}') {
|
|
h = headers
|
|
}
|
|
var errorMsg = '操作失败'
|
|
url = url + '?r=' + new Date().getTime() //时间戳作为随机码,防止IE从缓存获取数据
|
|
axios({
|
|
method: 'get',
|
|
url: processUrl(url),
|
|
params: params,
|
|
headers: h, //{ tenantCode: "GDYXB" },
|
|
responseType: 'blob',
|
|
})
|
|
.then((res) => {
|
|
if (res) {
|
|
if (res.status === 200) {
|
|
var data = res.data //直接返回blob
|
|
|
|
if (data) {
|
|
//业务成功
|
|
if (typeof cb_su === 'function') {
|
|
cb_su(data, '操作成功')
|
|
}
|
|
} else {
|
|
//业务失败
|
|
if (typeof cb_err === 'function') cb_err(errorMsg)
|
|
}
|
|
} else {
|
|
if (typeof cb_err === 'function') cb_err(errorMsg)
|
|
}
|
|
} else {
|
|
if (typeof cb_err === 'function') cb_err(errorMsg)
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
if (typeof (cb_err === 'function')) {
|
|
cb_err(errorMsg)
|
|
}
|
|
})
|
|
},
|
|
|
|
//导出文件,包括excel,word等
|
|
exportFilePost (url, params, cb_su, cb_err) {
|
|
//var data = qs.stringify(paramas);
|
|
// axios
|
|
// .post(processUrl(url), data)
|
|
axios({
|
|
method: 'post',
|
|
url: processUrl(url),
|
|
data: params,
|
|
responseType: 'blob',
|
|
})
|
|
.then((res) => {
|
|
|
|
if (res) {
|
|
if (res.status === 200) {
|
|
var data = res.data //直接返回blob
|
|
|
|
// if (data.code == 0) {
|
|
//业务成功
|
|
if (typeof cb_su === 'function') {
|
|
cb_su(data)
|
|
}
|
|
else {
|
|
//业务失败
|
|
if (typeof cb_err === 'function') cb_err(errorMsg)
|
|
}
|
|
// } else {
|
|
// if (typeof cb_err === 'function') cb_err(errorMsg)
|
|
}
|
|
} else {
|
|
if (typeof cb_err === 'function') cb_err(errorMsg)
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
if (typeof cb_err === 'function') {
|
|
cb_err(err)
|
|
}
|
|
})
|
|
},
|
|
|
|
//上传文件
|
|
importFilePut (url, fileFormData, cb_su, cb_err) {
|
|
var errorMsg = '操作失败'
|
|
let requestConfig = {
|
|
headers: {
|
|
'Content-Type': 'multipart/form-data',
|
|
// Authorization: auth.loadTokenType() + ' ' + auth.loadAccessToken(),
|
|
},
|
|
}
|
|
Vue.http
|
|
.put(processUrl(url), fileFormData, requestConfig)
|
|
.then((res) => {
|
|
if (res && res.status === 200) {
|
|
var data = res.body //直接返回blob
|
|
|
|
if (data.sysresultcode === 'fail') {
|
|
//业务失败
|
|
if (typeof cb_err === 'function') cb_err(data.rspMsg)
|
|
} else if (data.sysresultcode === 'success') {
|
|
//业务成功
|
|
if (typeof cb_su === 'function') {
|
|
cb_su(data, '操作成功')
|
|
}
|
|
} else {
|
|
if (typeof cb_err === 'function') cb_err(errorMsg)
|
|
}
|
|
} else {
|
|
if (typeof cb_err === 'function') cb_err(errorMsg)
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
if (typeof (cb_err === 'function')) {
|
|
cb_err(errorMsg)
|
|
}
|
|
})
|
|
},
|
|
|
|
//上传文件
|
|
importFilePost (url, fileFormData, cb_su, cb_err) {
|
|
var errorMsg = '操作失败'
|
|
let requestConfig = {
|
|
headers: {
|
|
'Content-Type': 'multipart/form-data'
|
|
// Authorization: auth.loadTokenType() + ' ' + auth.loadAccessToken(),
|
|
}
|
|
}
|
|
|
|
Vue.http
|
|
.post(processUrl(url), fileFormData, requestConfig)
|
|
.then((res) => {
|
|
if (res && res.status === 200) {
|
|
var data = res.body //直接返回blob
|
|
|
|
if (data.sysresultcode === 'fail') {
|
|
//业务失败
|
|
if (typeof cb_err === 'function') cb_err(data.rspMsg)
|
|
} else if (data.sysresultcode === 'success') {
|
|
//业务成功
|
|
if (typeof cb_su === 'function') {
|
|
cb_su(data, '操作成功')
|
|
}
|
|
} else {
|
|
if (typeof cb_err === 'function') cb_err(errorMsg)
|
|
}
|
|
} else {
|
|
if (typeof cb_err === 'function') cb_err(errorMsg)
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
if (typeof (cb_err === 'function')) {
|
|
cb_err(errorMsg)
|
|
}
|
|
})
|
|
},
|
|
|
|
//登录获取token/刷新token
|
|
tokenPost (url, paramas, cb_su, cb_err) {
|
|
var data = qs.stringify(paramas)
|
|
axios
|
|
.post(processUrl(url), data)
|
|
.then((res) => {
|
|
if (res) {
|
|
if (res.status === 200) {
|
|
var data = res.data
|
|
if (data) {
|
|
if (typeof cb_su === 'function') {
|
|
cb_su(data)
|
|
}
|
|
} else {
|
|
if (typeof cb_err === 'function') cb_err('登录验证失败')
|
|
}
|
|
} else {
|
|
if (typeof cb_err === 'function') cb_err(res)
|
|
}
|
|
} else {
|
|
if (typeof cb_err === 'function') cb_err(res)
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
var rspMsg = '登录失败,请重试!'
|
|
if (
|
|
err &&
|
|
err.response &&
|
|
err.response.status === 401 &&
|
|
err.response.data &&
|
|
err.response.data.error === 'unauthorized'
|
|
) {
|
|
// 用户名不存在时: 状态码401
|
|
// Response Body:
|
|
// {
|
|
// "error": "unauthorized",
|
|
// "error_description": null
|
|
// }
|
|
rspMsg = err.response.data.error_description || '用户名不存在'
|
|
} else if (
|
|
err &&
|
|
err.response &&
|
|
err.response.status === 400 &&
|
|
err.response.data &&
|
|
err.response.data.error === 'invalid_grant'
|
|
) {
|
|
// 用户名存在,密码错误时:状态码400
|
|
// {
|
|
// "error": "invalid_grant",
|
|
// "error_description": "Bad credentials"
|
|
// }
|
|
rspMsg = '用户名或密码输入错误'
|
|
}
|
|
if (typeof cb_err === 'function') {
|
|
cb_err(rspMsg)
|
|
}
|
|
})
|
|
},
|
|
|
|
//通过接口传递的token进行验证登录 lyx 20191210
|
|
async interfacetokenPost (url, paramas, cb_su, cb_err) {
|
|
var data = qs.stringify(paramas)
|
|
await axios
|
|
.post(processUrl(url), data)
|
|
.then((res) => {
|
|
if (res) {
|
|
if (res.status === 200) {
|
|
var data = res.data
|
|
if (data) {
|
|
if (typeof cb_su === 'function') {
|
|
cb_su(data)
|
|
return true
|
|
}
|
|
} else {
|
|
if (typeof cb_err === 'function') {
|
|
cb_err('接口验证失败')
|
|
return false
|
|
}
|
|
}
|
|
} else {
|
|
if (typeof cb_err === 'function') {
|
|
cb_err(res)
|
|
return false
|
|
}
|
|
}
|
|
} else {
|
|
if (typeof cb_err === 'function') {
|
|
cb_err(res)
|
|
return false
|
|
}
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
var rspMsg = '接口验证失败,请重试!'
|
|
if (
|
|
err &&
|
|
err.response &&
|
|
err.response.status === 401 &&
|
|
err.response.data &&
|
|
err.response.data.error === 'unauthorized'
|
|
) {
|
|
rspMsg = '用户名不存在'
|
|
} else if (
|
|
err &&
|
|
err.response &&
|
|
err.response.status === 400 &&
|
|
err.response.data &&
|
|
err.response.data.error === 'invalid_grant'
|
|
) {
|
|
rspMsg = '用户名或密码输入错误'
|
|
}
|
|
if (typeof cb_err === 'function') {
|
|
cb_err(rspMsg)
|
|
return false
|
|
}
|
|
})
|
|
},
|
|
}
|
|
|
|
// 添加服务器端URL
|
|
function processUrl (url) {
|
|
|
|
if (url.indexOf('http://') > -1 || url.indexOf('https://') > -1) {
|
|
return url
|
|
}
|
|
return process.env.VUE_APP_API_SERVER + url
|
|
}
|
|
|