import { useMemberStore } from '@/stores'; /** * 添加拦截器 * 拦截 request 请求 * baseURL 设置请求ip地址和端口 */ const ENV = process.env.NODE_ENV; // export const baseURL = ENV === 'development' ? '/api' : '/iws/proxyApi'; // 宏源服务 export const baseURL = ENV === 'development' ? '/api' : '/proxyApi'; // 测试服务 /** * httpInterceptor 分别拦截 request 和 uploadFile 请求 */ const origin = window.location.href; // 添加请求拦截 const httpInterceptor = { invoke(options) { // 1. 先判断请求 url 是否为完整的 http 请求路径 如果不是则拼接 baseURL if (!options.url.startsWith('http')) { options.url = baseURL + options.url; } // 2. 设置请求超时时间,默认为60s,设置为 10s options.timeout = 10000; // 3. 增加小程序端请求头标识 options.header = { // 'source-client': 'mini', ...options.header, }; // 4. 增加 token 请求头标识 const memberStore = useMemberStore(); const token = memberStore.token; if (token) { options.header.Authorization = token; } }, }; uni.addInterceptor('request', httpInterceptor); uni.addInterceptor('uploadFile', httpInterceptor); // 设置http请求 export const http = (options) => { return new Promise((resolve, reject) => { uni.request({ ...options, success(res) { // 1. 判断是否请求成功 if (res.statusCode >= 200 && res.statusCode < 300) { if (res.data.code >= 200 && res.data.code < 300) { resolve(res.data); } else if (res.data.code === 401 || res.data.code === 403) { // 2. 401 表示token过期 去往登录页重新登录 uni.showToast({ icon: 'none', title: `${res.data.msg}`, }); const memberStore = useMemberStore(); memberStore.clearUserInfo(); memberStore.clearToken(); if (origin.indexOf('ticket') == -1) { uni.navigateTo({ url: '/pages/login/index', }); } else { // 宏源 document.addEventListener( "deviceready", () => { navigator.security.closeWindow(); }, false ); } reject(res); } else if (res.data.code === 500) { uni.showToast({ icon: 'none', title: `${res.data.msg}`, }); } } else if (res.statusCode === 401) { // 2. 401 表示token过期 去往登录页重新登录 const memberStore = useMemberStore(); memberStore.clearUserInfo(); memberStore.clearToken(); if (origin.indexOf('ticket') == -1) { uni.navigateTo({ url: '/pages/login/index', }); } else { // 宏源 document.addEventListener( "deviceready", () => { navigator.security.closeWindow(); }, false ); } reject(res); } else { // 3. 其他错误 uni.showToast({ icon: 'none', title: '请求错误', }); reject(res); } // console.log(res) }, fail(err) { uni.showToast({ icon: 'none', title: '请求失败' + err.errMsg, }); console.log(err, '请求失败'); reject(err); }, }); }); };