Commit 3fff13f5 by liguokang

feat:

parent 186c7d0b
......@@ -20,5 +20,12 @@
"@types/react": "^17.0.9",
"typescript": "^4.3.2",
"webpack": "^4.37.0"
},
"husky": {
"hooks": {
"pre-commit": "node hooks/pre-commit.js",
"commit-msg": "node hooks/commit-msg.js",
"pre-push": "node hooks/pre-commit.js"
}
}
}
/*
* @Author: liguokang
* @Date: 2021-06-03 10:01:31
* @LastEditors: liguokang
* @LastEditTime: 2021-06-03 17:24:54
* @Description:
* @Copyrigh: ©2021 杭州杰竞科技有限公司 版权所有
*/
const appId = window.getParameterByName('appid') || Cache.get('appid') || window.LS.getItem('appid');
export function getToken() {
const key = 'weixin_token_' + appId;
return window.Cache.get(key) || window.LS.getItem(key);
}
/*
* @Author: liguokang
* @Date: 2021-06-03 13:46:20
* @LastEditors: liguokang
* @LastEditTime: 2021-06-16 15:24:26
* @Description:
* @Copyrigh: ©2021 杭州杰竞科技有限公司 版权所有
*/
import { getToken } from '@/utils/auth';
import User from '@/core/user';
export function getHeaders(product, module, httpMethod, tempToken, xmKey) {
const headers = {
module: module,
product: product,
Accept: 'application/json',
appId: User.appId() || '',
openId: User.openId() || '',
userId: User.uid() || '',
p: 'wechat',
v: 'v5.0.0',
userType: 'C',
tempToken: tempToken || '',
xmKey: xmKey || '',
};
headers['Content-Type'] = 'application/json;charset=UTF-8';
headers['httpMethod'] = typeof httpMethod === 'string' ? httpMethod.toLowerCase() : httpMethod; // for example "post",
headers['xmToken'] = getToken() || tempToken || ''; // 让每个请求携带自定义token 请根据实际情况自行修改
return headers;
}
/*
* @Author: liguokang
* @Date: 2021-06-10 11:59:24
* @LastEditors: liguokang
* @LastEditTime: 2021-07-06 15:11:39
* @Description:
* @Copyrigh: ©2021 杭州杰竞科技有限公司 版权所有
*/
export function formatSecond(second) {
const days = Math.floor(second / 86400);
const hours = Math.floor((second % 86400) / 3600);
const minutes = Math.floor(((second % 86400) % 3600) / 60);
const seconds = Math.floor(((second % 86400) % 3600) % 60);
// const forMatDateStr = `${clearVal(hours)}:${clearVal(minutes)}:${clearVal(seconds)}`;
const forMatDateStr = `${clearVal(hours)}:${clearVal(minutes)}`;
return forMatDateStr;
}
function clearVal(val) {
if (val < 10) {
return `0${val}`;
} else {
return val;
}
}
import Vue from 'vue';
import axios from 'axios';
import User from '../core/user';
// 创建axios实例
let serverPath = window.CONFIG.server;
if (SERVER) {
serverPath = SERVER;
}
const service = axios.create({
baseURL: serverPath, // api 的 base_url
timeout: 20000, // 请求超时时间
});
// request拦截器
service.interceptors.request.use(
config => {
if (config.url.indexOf('public/') === -1 && User.token()) {
return config;
} else if (config.headers.module) {
const url = JSON.parse(JSON.stringify(config.url));
config.url = `${config.headers.module}/` + url;
return config;
} else {
// config.baseURL = '';
return config;
}
},
error => {
// Do something with request error
Promise.reject(error);
},
);
// response 拦截器
service.interceptors.response.use(
response => {
const { data } = response;
const { code, result, message } = data;
const rejectCode = [
'LOGIN_OVERDUE',
'10000',
'10001',
'10002',
'RPC_FAIL',
'ILLEGAL_ARGUMENT',
'BASIC_INFO_ERROR',
'SCHEDULE_HAS_REMOVE',
'SCHEDULE_NONE_STUDENT',
'NONE_PERMISSION_JOIN',
'VERIFY_CODE_ERROR',
];
if (code < 200 || code > 300) {
if (code == 418) {
window.location.href = 'https://www.xiaomai5.com/maintain.html';
} else if (code == 401 || code == 403) {
User.loginIn();
} else {
processHttpError(data);
}
return data;
// return Promise.reject(new Error('error'));
} else {
if (rejectCode.indexOf(code) > -1) {
console.table({
time: new Date().toString(),
code,
errorInfo: message || result,
});
// return Promise.reject(data);
}
return data;
}
},
error => {
let code = 0;
try {
code = error.response.data.status;
if (code == 418) {
window.location.href = 'https://www.xiaomai5.com/maintain.html';
} else if (code == 401 || code == 403) {
User.loginIn();
} else {
processHttpError(error.response.data);
}
} catch (e) {
if (error.toString().indexOf('Error: timeout') !== -1) {
console.table({
time: new Date().toString(),
errorInfo: '网络请求超时',
});
return Promise.reject(error);
}
if (error.toString().indexOf('Error: Network Error') !== -1) {
console.table({
time: new Date().toString(),
errorInfo: '网络请求错误',
});
return Promise.reject(error);
}
}
return Promise.reject(error);
},
);
function processHttpError(data) {
let message = '';
const status = Number(data.code) > 0 ? Number(data.code) : Number(data.status);
const code = Number(data.code);
if (status === 404) {
message = '404 网络错误 \n 请检查你的本地网络是否连接';
} else if (status === 500) {
try {
message = data.message || 'Oops! 500错误 \n 服务器异常';
} catch (e) {
message = 'Oops! 500错误 \n 服务器异常';
}
} else if (status === 0) {
return;
} else {
message = data.message;
}
console.table({
time: new Date().toString(),
code: code > 0 ? code : status,
errorInfo: message,
});
Vue.$wheatToast({
message: message,
position: 'middle',
});
}
export default service;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment