131 lines
3.2 KiB
TypeScript
131 lines
3.2 KiB
TypeScript
import config from '../config';
|
|
|
|
// 定义token
|
|
let token = '';
|
|
// 在登录之后设置token
|
|
export function setToken(t: string) {
|
|
token = t;
|
|
// 可以选择将token保存到缓存中
|
|
// wx.setStorageSync('token', token)
|
|
}
|
|
export function clearToken() {
|
|
token = '';
|
|
// wx.setStorageSync('token', '')
|
|
}
|
|
|
|
interface Header {
|
|
'X-Access-Token': string;
|
|
}
|
|
export function request(method: any = 'GET', url: string, data?: any) {
|
|
return new Promise((resolve, reject) => {
|
|
const header: Header = { 'X-Access-Token': '' };
|
|
if (token) {
|
|
header['X-Access-Token'] = token;
|
|
} else {
|
|
header['X-Access-Token'] = wx.getStorageSync('token');
|
|
}
|
|
wx.request({
|
|
method,
|
|
url: config.baseUrl + url,
|
|
data,
|
|
header,
|
|
success: (res: any) => {
|
|
console.log(res);
|
|
if (res.data.code === 200 || res.data.code === 0) {
|
|
resolve(res.data);
|
|
} else if (res.data.message.includes('token失效')) {
|
|
//重新登录
|
|
wx.removeStorageSync('userInfo');
|
|
wx.removeStorageSync('token');
|
|
wx.removeStorageSync('organName');
|
|
wx.reLaunch({
|
|
url: '/pages/login/login'
|
|
});
|
|
} else {
|
|
resolve(res.data);
|
|
wx.showToast({
|
|
title: res.data.message,
|
|
icon: 'none'
|
|
});
|
|
}
|
|
},
|
|
fail: err => {
|
|
wx.showToast({
|
|
title: '访问失败,请检查当前的网络',
|
|
icon: 'none'
|
|
});
|
|
console.error('请求错误', err);
|
|
reject(err);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
export const getAction = (url: string, params?: Object) =>
|
|
request('GET', generateUrl(url, params));
|
|
|
|
export const deleteAction = (url: string, params?: Object) =>
|
|
request('DELETE', generateUrl(url, params));
|
|
|
|
export const postAction = (url: string, data?: Object) =>
|
|
request('POST', url, data);
|
|
|
|
export const putAction = (url: string, data?: Object) =>
|
|
request('PUT', url, data);
|
|
|
|
interface UploadOption {
|
|
name: string;
|
|
filePath: string;
|
|
params?: Object;
|
|
}
|
|
export function upload(url: string, option: UploadOption) {
|
|
const { name = 'file', filePath, params } = option;
|
|
if (!filePath) throw new Error('filepath-not-found');
|
|
if (!wx.getStorageSync('token')) throw new Error('请先登录!');
|
|
|
|
return new Promise((resolve, reject) => {
|
|
const header: any = {
|
|
'Content-Type': 'multipart/form-data',
|
|
'X-Access-Token': ''
|
|
};
|
|
if (token) {
|
|
header['X-Access-Token'] = token;
|
|
} else {
|
|
header['X-Access-Token'] = wx.getStorageSync('token');
|
|
}
|
|
wx.uploadFile({
|
|
url: config.baseUrl + url,
|
|
filePath,
|
|
name,
|
|
formData: params,
|
|
header,
|
|
success: resolve,
|
|
fail: err => {
|
|
wx.showToast({
|
|
title: '上传失败',
|
|
icon: 'none'
|
|
});
|
|
console.error('请求错误', err.errMsg);
|
|
reject(err);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
const generateUrl = (url: string, params?: any) => {
|
|
if (!params) return url;
|
|
|
|
const keys = Object.keys(params);
|
|
if (keys.length < 1) return url;
|
|
|
|
return (
|
|
url +
|
|
keys.reduce((res, it, idx) => {
|
|
if (typeof params[it] !== 'undefined') {
|
|
return `${res}${idx > 0 ? '&' : ''}${it}=${params[it]}`;
|
|
}
|
|
return res;
|
|
}, '?')
|
|
);
|
|
};
|