153 lines
4.1 KiB
JavaScript
153 lines
4.1 KiB
JavaScript
import store from "../store/index.js";
|
||
import { baseUrl } from "./api.js";
|
||
|
||
import {
|
||
doLogin
|
||
} from '@/common/api/login.js'
|
||
const HOST = location && location.origin
|
||
export default () => {
|
||
|
||
// 初始化请求配置
|
||
uni.$u.http.setConfig((config) => {
|
||
// #ifdef APP-PLUS
|
||
config.baseURL = baseUrl; // 测试地址
|
||
// #endif
|
||
|
||
// #ifdef H5
|
||
config.baseURL = location.origin; /* 根域名 */
|
||
// #endif
|
||
return config
|
||
});
|
||
|
||
// 请求拦截
|
||
uni.$u.http.interceptors.request.use((config) => { // 可使用async await 做异步操作
|
||
config.data = config.data || {};
|
||
config.baseURL = 'http://103.39.230.169:8085'; // 不使用请求代理 上线记得注释掉 ***********************************************************
|
||
|
||
let apiToken = store.getters['api/getApiToken']
|
||
|
||
let serverTime = (parseInt(Date.now() /1000) - store.getters['api/getServerTime'])
|
||
|
||
config.header.ApiToken = apiToken
|
||
config.header.timestamp = serverTime
|
||
config.header.validate = store.getters['api/getValidate'] || ''
|
||
config.header.safeverify = store.getters['api/getSafeCode'] || ''
|
||
|
||
let ob = (config.method == 'GET'?config.params:config.data)
|
||
|
||
// config.header.token = utils.makeSign(ob,serverTime)
|
||
store.commit('api/setToken', config.header.token);
|
||
uni.showLoading({
|
||
mask: true,
|
||
title:"加载中..."
|
||
})
|
||
return config
|
||
}, config => { // 可使用async await 做异步操作
|
||
return Promise.reject(config)
|
||
})
|
||
|
||
// 响应拦截
|
||
uni.$u.http.interceptors.response.use((response) => {
|
||
// 判断高防接口第一次被拉拦截
|
||
if (response.data.data == undefined) {
|
||
uni.showToast({
|
||
mask: true,
|
||
title: '太火爆了,请点击右上角刷新重试',
|
||
icon: 'none'
|
||
})
|
||
}
|
||
|
||
uni.hideLoading({});
|
||
|
||
if (response.config.responseType == "arrayBuffer") {
|
||
let base64 = "data:image/png;base64," + uni.arrayBufferToBase64(response.data)
|
||
return base64
|
||
}
|
||
|
||
/* 对响应成功做点什么 可使用async await 做异步操作*/
|
||
const data = response.data
|
||
const custom = response.config?.custom
|
||
if (data.code !== 200) {
|
||
// 机器验证
|
||
if (data.code === 8888) {
|
||
// 0 页内跳转 1 页外跳转
|
||
if (data.type == 0) {
|
||
uni.navigateTo({
|
||
url: `/pages/user/robot`
|
||
});
|
||
} else {
|
||
// #ifdef APP-PLUS
|
||
uni.navigateTo({
|
||
url: `/pages/user/pay_webview/pay_webview?title=跳转页&urlLink=${encodeURIComponent(data.path)}`
|
||
})
|
||
// #endif
|
||
|
||
// #ifdef H5
|
||
window.location.href = data.path;
|
||
// #endif
|
||
};
|
||
};
|
||
|
||
if (data.code === 401) {
|
||
let routes = getCurrentPages(); // 获取当前打开过的页面路由数组
|
||
let curRoute = routes[routes.length - 1].route //获取当前页面路由
|
||
// 在微信小程序或是app中,通过curPage.options
|
||
// 如果是H5,则需要curPage.$route.query(H5中的curPage.options为undefined)
|
||
let curParam = routes[routes.length - 1].options || routes[routes.length - 1].$route.query; //获取路由参数
|
||
// 拼接参数
|
||
let param = ''
|
||
let yqCode = ''
|
||
for (let key in curParam) {
|
||
param += '&' + key + '=' + curParam[key]
|
||
if (key == 'yq_code') {
|
||
yqCode = curParam[key]
|
||
}
|
||
}
|
||
let _thisUrl = ''
|
||
if (curRoute.indexOf('?') == -1) {
|
||
_thisUrl = curRoute + (param ? ('?' + param) : '')
|
||
} else {
|
||
_thisUrl = curRoute + (param ? ('&' + param) : '')
|
||
}
|
||
|
||
uni.showToast({
|
||
mask: true,
|
||
title:data.msg,
|
||
icon:'none'
|
||
})
|
||
setTimeout(e => {
|
||
utils.goPath('/pages/login/login');
|
||
},1000)
|
||
} else if (data.code === 400) {
|
||
uni.showToast({
|
||
mask: true,
|
||
title: data.msg,
|
||
icon: 'none'
|
||
})
|
||
} else if (data.code === 0) {
|
||
uni.showToast({
|
||
mask: true,
|
||
title: data.msg,
|
||
icon: 'none'
|
||
})
|
||
}
|
||
|
||
if (custom.toast !== false) {
|
||
uni.$u.toast(data.msg)
|
||
}
|
||
|
||
console.log(response.config.url)
|
||
return Promise.reject(data)
|
||
}
|
||
|
||
return data.data === undefined ? {} : data.data;
|
||
}, (response) => {
|
||
uni.showToast({
|
||
mask: true,
|
||
title: '服务器响应失败' + response.statusCode,
|
||
icon: 'none'
|
||
})
|
||
return Promise.reject(response)
|
||
})
|
||
}
|