ai-watch-app/config/request.js

153 lines
4.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.queryH5中的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)
})
}