/* * @Company: hugeInfo * @Author: ldh * @Date: 2022-02-16 11:28:12 * @LastEditTime: 2022-03-15 09:50:39 * @LastEditors: lwh * @Version: 1.0.0 * @Description: axios处理方法 */ import axios from 'axios'; import CryptoJS from 'crypto-js'; import appUrl from './appUrl'; import * as $$ from '../utils/utility'; // aes加密,接口请求数据加密,数据返回解密 const aes_key = 'tVTShp12fFVkNBxV'; const aes_iv = 'PKCS5Padding'; // 加密 function aes_encrypt(text) { let value = text ? text : ''; return CryptoJS.AES.encrypt(value, CryptoJS.enc.Utf8.parse(aes_key), { iv: CryptoJS.enc.Utf8.parse(aes_iv), mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7, }).toString(); } // 解密 function aes_decrypt(text) { let value = text ? text : ''; let decrypted = CryptoJS.AES.decrypt(value, CryptoJS.enc.Utf8.parse(aes_key), { iv: CryptoJS.enc.Utf8.parse(aes_iv), mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7, }); return JSON.parse(decrypted.toString(CryptoJS.enc.Utf8) || 'null'); } // 网络异常 function networkException(err) { if (err.code !== 200) { $$.catchApiError({ content: '抱歉!网络异常请刷新' }); } } // api返回结果处理 function resHandle(resData) { const { code, data, msg } = resData; if (code == '0') { // let res_data = data ? aes_decrypt(data) : true; return { type: true, data }; } else if (code == '401' || code == '10002') { $$.catchApiError({ content: '抱歉! 登录状态已失效请重新登录', loginStatus: 'lose' }); return { type: false }; } else { $$.catchApiError({ content: msg }); return { type: false }; } } export const ax = axios; export function request(value = {}) { let local = localStorage.getItem('operationToken'); let token = !local ? null : JSON.parse(local); // 无token时 // if (!token) { // $$.catchApiError({ content: '抱歉!登录状态已失效请重新登录', loginStatus: 'lose' }); // return false; // } // let data = aes_encrypt(JSON.stringify(value.data)); let data = value.data; const url = `${appUrl[value.service] || ''}/api/${value.url}`; axios.defaults.baseURL = $$.isDebug ? appUrl.debug : appUrl.web; // axios.defaults.headers.common['Authorization'] = token; if (value.type === 'get') { return ax .get(url, { params: value.data }) .then((response) => { return resHandle(response.data); }) .catch((err) => { networkException(err); return false; }); } else { return ax .post(url, data) .then((response) => { return resHandle(response.data); }) .catch((err) => { networkException(err); return false; }); } }