市北互联平台前端仓库
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.
 
 
 
 

614 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 = 1000*60*20;
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"] =
localStorage.getItem("language") || "zh-CN";
config.headers["token"] = localStorage.getItem("token") || "";
config.headers["Authorization"] = localStorage.getItem("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) => {
const code = [10007, 401, 10001, 10005];
if (code.includes(response.data.code)) {
// debugger;
clearLoginInfo();
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;
}