2025-06-19 17:33:18 +08:00

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;
}, '?')
);
};