zhwl-miniapp/common/http/interface.js
2025-06-26 12:38:35 +08:00

93 lines
3.1 KiB
JavaScript

import _config from './config'; // 导入私有配置
export default function $http(options) {
options.url = _config.url + options.url;
if (options.type) _config.header['Content-Type'] = options.type;
if (uni.getStorageSync("ztc_token")) {
_config.header.token = uni.getStorageSync("ztc_token");
} else _config.header.token = '';
return new Promise((resolve, reject) => {
// 进行url字符串拼接
// 拦截请求
_config.complete = (response) => {
// request請求访问成功
if (response.statusCode === 200 || response.statusCode === 403) {
// 接口请求成功
if([401,403,404,405,500].includes(response.data.code)){
_page_error(response.data.code , response.data.msg);
}else{
if(response.data.code!=200){
if(response.data.msg.indexOf("用户不存在,请重新登录")!=-1 || response.data.msg.indexOf("请重新登录后进行操作")!=-1){
uni.removeStorageSync("ztc_token");
uni.removeStorageSync("user_nickname");
uni.removeStorageSync("user_avatar");
uni.navigateTo({
url:"/pages/login/login"
})
}else{
_page_error(response.data.code , response.data.msg);
}
resolve(response.data);
}else{
resolve(response.data);
}
}
} else {
// 处理catch 请求,不在本页面之外处理,统一在这里处理
if (options.handle) {
reject(response)
} else {
try {
Promise.reject(response).catch(err => {
// console.error(err);
_page_error(response.statusCode , response.errMsg);
});
} catch (e) {
console.log(e)
}
}
}
}
// 开始请求
uni.request(Object.assign({}, _config, options));
})
}
// request 錯誤
function _page_error(err, msg) {
switch (err) {
case 401:
// 错误码404的处理方式
uni.showToast({ title: '请登录后操作', icon: 'none', mask: true })
uni.removeStorageSync("ztc_token");
uni.removeStorageSync("user_nickname");
uni.removeStorageSync("user_avatar");
setTimeout(() => {
uni.navigateTo({
url: '/pages/login/login'
})
}, 1500)
break;
case 403:
uni.showToast({
title: "您没有权限,请联系管理员",
icon: "none",
mask: true
})
break;
case 404:
uni.showToast({ title: '请求页面不存在,请联系管理员', icon: 'none', mask: true })
// 错误码404的处理方式
setTimeout(() => {
uni.navigateBack()
}, 1500)
break;
case 405:
console.error("错误的请求")
break;
case 500:
uni.showToast({ title: msg, icon: 'none', mask: true })
break;
}
}