11 changed files with 983 additions and 297 deletions
@ -1,2 +1,3 @@ |
|||
NODE_ENV=development |
|||
VUE_APP_API_SERVER = http://192.168.1.130:8080/api |
|||
VUE_APP_NODE_ENV=dev |
@ -1 +1,3 @@ |
|||
/src/icons/iconfont.js |
|||
/*.js |
|||
/*.vue |
Binary file not shown.
@ -0,0 +1,585 @@ |
|||
/* 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) { |
|||
clearLoginInfo() |
|||
router.replace({ name: 'login' }) |
|||
return Promise.reject(response.data.msg) |
|||
} |
|||
return response |
|||
}, |
|||
(error) => { |
|||
console.error(error) |
|||
return Promise.reject(error) |
|||
} |
|||
) |
|||
|
|||
/* |
|||
* 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.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) |
|||
} |
|||
}) |
|||
}, |
|||
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) { |
|||
//var data = qs.stringify(paramas);
|
|||
axios |
|||
.post(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) |
|||
} |
|||
}) |
|||
}, |
|||
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) { |
|||
//业务成功
|
|||
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) { |
|||
return url |
|||
} |
|||
return process.env.VUE_APP_API_SERVER + url |
|||
} |
Loading…
Reference in new issue