123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- import { IHttpResponse, IObject } from '@/types/interface'
- import router from "@/router";
-
- // import { useRouter, useRoute } from 'vue-router'
- import axios, { AxiosRequestConfig } from 'axios'
- import qs from 'qs'
- import { getToken } from './cache'
- import { getValueByKeys } from './utils'
- import { ElMessage } from 'element-plus'
- import { SM4Util } from '@/utils/sm4'
- import { sm4Key } from '@/utils/utils'
- import BaseService from '@/utils/baseService'
- import { setCache } from '@/utils/cache'
-
- // const router = useRouter()
- const sm4 = new SM4Util()
- let baseURL = ''
- console.log(import.meta.env)
-
- if (import.meta.env.MODE === 'production') {
- // 生产环境逻辑
- console.log('这是生产环境')
- baseURL = import.meta.env.VITE_APP_BASE_URL_N
- } else {
- // 开发环境逻辑
- console.log('这是开发环境')
- }
- const httpN = axios.create({
- baseURL,
- timeout: 10 * 1000,
- })
-
- httpN.interceptors.request.use(
- function (config: any) {
- config.headers['X-Requested-With'] = 'XMLHttpRequest'
- config.headers['Request-Start'] = new Date().getTime()
- const token = getToken()
- if (token) {
- config.headers['Access-Token'] = token
- }
- if (config.method?.toUpperCase() === 'GET') {
- config.params = { ...config.params, _t: new Date().getTime() }
- }
- if (
- Object.values(config.headers).includes(
- 'application/x-www-form-urlencoded'
- )
- ) {
- config.data = qs.stringify(config.data)
- }
- return config
- },
- function (error) {
- return Promise.reject(error)
- }
- )
- httpN.interceptors.response.use(
- (response) => {
-
- if (response.data.code === 401002) {
- // redirectLogin()
- // // 刷新token
- // BaseService.post('/iaw/portal/phoneLogin', {}).then((res: any) => {
- // if (res && res.code === 0) {
- // setCache('refreshCacheAccessToken', res.data, false)
- // ElMessage.warning('token更新,请重试!')
- // } else {
- // ElMessage.error(response.data.message)
- // redirectLogin()
- // }
- // return
- // })
- } else if (response.data.code === 401001) {
- redirectLogin()
- } else if (
- response.data.code === 403003 ||
- response.data.code === 403001 ||
- response.data.code === 403004
- ) {
- ElMessage.error(response.data.message)
- }
- return response
- },
- (error) => {
- const status = getValueByKeys(error, 'response.status', 500)
- const httpCodeLabel: IObject<string> = {
- 400: '请求参数错误',
- 401: '未授权,请登录',
- 403: '拒绝访问',
- 404: `请求地址出错: ${getValueByKeys(error, 'response.config.url', '')}`,
- 408: '请求超时',
- 500: 'API接口报500错误',
- 501: '服务未实现',
- 502: '网关错误',
- 503: '服务不可用',
- 504: '网关超时',
- 505: 'HTTP版本不受支持',
- }
- if (error && error.response) {
- console.error('请求错误', error.response.data)
- }
- if (status === 401) {
- redirectLogin()
- }
- return Promise.reject(new Error(httpCodeLabel[status] || '接口错误'))
- }
- )
-
- const redirectLogin = () => {
- console.log('redirectLogin');
-
- router.push('/login')
- return
- }
-
- export default (o: AxiosRequestConfig): Promise<IHttpResponse> => {
- return new Promise((resolve, reject) => {
- httpN(o)
- .then((res: any) => {
- //登录失效
- // if(res.data && res.data.statusCode === 401){
- // router.push("/login");
- // ElMessage.error("登录失效,请重新登录!")
- // return;
- // } else if (res.data) {
- // //解密
- // if(res?.data && res.data.statusCode === 0 && res.data.bizContent && (import.meta.env.VITE_APP_BASE_URL.includes('https://qtzl.etcjz.cn') || import.meta.env.VITE_APP_BASE_URL.includes('http://100.65.11.2'))) {
- // res.data.bizContent = sm4.decryptData_CBC(res.data.bizContent, sm4Key);
- // if(res && res.data) {
- // return resolve(res.data);
- // } else {
- // ElMessage.error("接口返回解密数据,解密失败!")
- // }
- // } else {
- // return resolve(res.data);
- // }
- res.data.statusCode = res.data.code
- return resolve(res.data)
- // }
- })
- .catch(reject)
- })
- }
|