/*jshint esversion: 9 */ /** * http请求配置 */ import axios from 'axios' import { userDataStore } from '@/store/user' import { encrypt, decrypt } from '@/utils/encrypt' // import { useMessage } from 'naive-ui' import router from '@/router' import { createDiscreteApi } from 'naive-ui' import { set } from 'lodash' const { message } = createDiscreteApi(['message']) let baseApiURL = import.meta.env.VITE_APP_baseApiURL //api原始链接 const timeout = 30000 //api请求超时时间 export const service = axios.create({ //可创建多个 axios实例 baseURL: baseApiURL, //设置公共的请求前缀 timeout: timeout, //超时终止请求 }) service.interceptors.request.use( (config) => { const userData = userDataStore() config.headers = config.headers || {} // config.headers['token'] = userData.userInfo.token if (userData?.userInfo?.token) { // config.headers['Authorization'] = 'Bearer ' + userData?.userInfo?.token config.headers['Token'] = userData?.userInfo?.token } else { config.headers['Token'] = 'test' } return config }, () => { return Promise.reject({ msg: '请求发生错误,请稍后再试', }) }, ) let modelShow = false service.interceptors.response.use( (response) => { response.data = decrypt(response.data) console.log( '%c🔍-- 解密后出参 --', 'background: linear-gradient(90deg, #FF6B6B, #4ECDC4); color: white; padding: 5px 60px; border-radius: 5px; font-weight: bold;', '', ) console.log( '%c原始数据:', //增加样式 'color: #FF6B6B; padding: 5px 0; border-radius: 5px; font-weight: bold;', '', '\n', response.data, ) console.log( '%cJSON格式:', 'color: #4ECDC4; padding: 5px 0; border-radius: 5px; font-weight: bold;', '\n', JSON.stringify(response.data, null, 2), ) const data = response.data if (!data) { return Promise.reject({ msg: '请求发生错误', }) } const status = data?.status || response.status switch (status) { case 200: // return data return Promise.resolve(response) case 401: //表示需要重新登录 // if (!modelShow) { // modelShow = true // if (window.confirm('登录已经失效,是否重新登录?')) { // router.push({ // path: '/login', // }) // } // modelShow = false // } setTimeout(() => { message.error('登录已经失效,请重新登录') // 清除所有localStorage localStorage.clear() window.location.href = 'http://sgwpdm.ah.sgcc.com.cn/iws/#/unified/' }, 500) return Promise.reject(data) case 202: //表示失败,参数或其他原因 return Promise.reject(data) case 500: //表示报错。未知原因 return Promise.reject(data) default: return Promise.reject(data) } }, (error) => { //数据请求发生错误 message.error('请求发生错误,请稍后再试') return Promise.reject({ msg: '请求发生错误,请稍后再试', }) }, )