105 lines
2.7 KiB
JavaScript
105 lines
2.7 KiB
JavaScript
|
|
|
|||
|
|
|
|||
|
|
// 此处第二个参数vm,就是我们在页面使用的this,你可以通过vm获取vuex等操作
|
|||
|
|
const install = (Vue, vm) => {
|
|||
|
|
// 通用请求头设定
|
|||
|
|
const ajaxHeader = "x-ajax";
|
|||
|
|
const sessionIdHeader = "Authorization";
|
|||
|
|
const rememberMeHeader = "x-remember";
|
|||
|
|
const lang = 'lang';
|
|||
|
|
|
|||
|
|
// 请求参数默认配置
|
|||
|
|
Vue.prototype.$u.http.setConfig({
|
|||
|
|
baseUrl: vm.vuex_config.baseUrl,
|
|||
|
|
originalData: true,
|
|||
|
|
// 默认头部,http2约定header名称统一小写
|
|||
|
|
header: {
|
|||
|
|
"content-type": "application/json",
|
|||
|
|
"x-requested-with": "XMLHttpRequest",
|
|||
|
|
},
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
// 请求拦截,配置Token等参数
|
|||
|
|
Vue.prototype.$u.http.interceptor.request = (req) => {
|
|||
|
|
if (!req.header) {
|
|||
|
|
req.header = [];
|
|||
|
|
}
|
|||
|
|
req.header["source"] = "app";
|
|||
|
|
|
|||
|
|
// 默认指定返回 JSON 数据
|
|||
|
|
if (!req.header[ajaxHeader]) {
|
|||
|
|
req.header[ajaxHeader] = "json";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 设定传递 Token 认证参数
|
|||
|
|
if (!req.header[sessionIdHeader] && vm.vuex_token) {
|
|||
|
|
req.header[sessionIdHeader] = vm.vuex_token;
|
|||
|
|
req.header[lang] = vm.vuex_language;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 为节省流量,记住我数据不是每次都发送的,当会话失效后,尝试重试登录
|
|||
|
|
if (!req.header[rememberMeHeader] && vm.vuex_remember && req.remember) {
|
|||
|
|
req.header[rememberMeHeader] = vm.vuex_remember;
|
|||
|
|
req.remember = false;
|
|||
|
|
}
|
|||
|
|
return req;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// 响应拦截,判断状态码是否通过
|
|||
|
|
Vue.prototype.$u.http.interceptor.response = async (res, req) => {
|
|||
|
|
let data = res.data;
|
|||
|
|
if (!data) {
|
|||
|
|
// vm.$u.toast("未连接到服务器");
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
if (res.data.code !== 200) {
|
|||
|
|
if (res.data.code === 401002 || res.data.code === 401001 || res.data.code === 50014) {
|
|||
|
|
uni.showToast({
|
|||
|
|
title: data.msg ? data.msg : '请重新登陆!',
|
|||
|
|
duration: 3000,
|
|||
|
|
icon:'none'
|
|||
|
|
})
|
|||
|
|
setTimeout(() => {
|
|||
|
|
uni.reLaunch({
|
|||
|
|
url: "/pages/login/index"
|
|||
|
|
});
|
|||
|
|
}, 3000)
|
|||
|
|
}else{
|
|||
|
|
uni.showToast({
|
|||
|
|
title: data.msg ? data.msg : '接口报错,请联系管理员!',
|
|||
|
|
duration:3000,
|
|||
|
|
icon:'none'
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
return res.data
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// 封装 get text 请求
|
|||
|
|
vm.$u.getText = (url, data = {}, header = {}) => {
|
|||
|
|
return vm.$u.http.request({
|
|||
|
|
dataType: "text",
|
|||
|
|
method: "GET",
|
|||
|
|
url,
|
|||
|
|
header,
|
|||
|
|
data,
|
|||
|
|
});
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// 封装 post json 请求
|
|||
|
|
vm.$u.postJson = (url, data = {}, header = {}) => {
|
|||
|
|
header["content-type"] = "application/json";
|
|||
|
|
return vm.$u.http.request({
|
|||
|
|
url,
|
|||
|
|
method: "POST",
|
|||
|
|
header,
|
|||
|
|
data,
|
|||
|
|
});
|
|||
|
|
};
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
export default {
|
|||
|
|
install,
|
|||
|
|
};
|