From fe75cffbf3bae6777aa2794fd89fa5dc37f5df8d Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期二, 15 七月 2025 10:11:23 +0800 Subject: [PATCH] 项目初始化 --- src/utils/request.ts | 90 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 90 insertions(+), 0 deletions(-) diff --git a/src/utils/request.ts b/src/utils/request.ts new file mode 100644 index 0000000..6884b80 --- /dev/null +++ b/src/utils/request.ts @@ -0,0 +1,90 @@ +import config from '@/config' +import { getToken } from '@/utils/auth' +import errorCode from '@/utils/errorCode' +import { toast, showConfirm, tansParams } from '@/utils/common' +import { RequestConfig, ResponseData } from '@/types/request' +import useUserStore from '@/store/modules/user' + +let timeout = 10000 +const baseUrl = config.baseUrl + +const request = <T>(config: RequestConfig): Promise<ResponseData<T>> => { + // 鏄惁闇�瑕佽缃� token + const isToken = (config.headers || {}).isToken === false + config.header = config.header || {} + if (getToken() && !isToken) { + config.header['Authorization'] = 'Bearer ' + getToken() + } + // get璇锋眰鏄犲皠params鍙傛暟 + if (config.params) { + let url = config.url + '?' + tansParams(config.params) + url = url.slice(0, -1) + config.url = url + } + return new Promise((resolve, reject) => { + uni.request({ + method: config.method || 'GET', + timeout: config.timeout || timeout, + url: (config.baseUrl || baseUrl) + config.url, + data: config.data, + header: config.header, + dataType: 'json' + }).then(response => { + /* let [error, res] = response + if (error) { + toast('鍚庣鎺ュ彛杩炴帴寮傚父') + reject('鍚庣鎺ュ彛杩炴帴寮傚父') + return + } */ + const res = response + const data: ResponseData<T> = res.data as ResponseData<T> + const code = data.code || 200 + // @ts-ignore + const msg: string = errorCode[code] || data.msg || errorCode['default'] + if (code === 401) { + showConfirm('鐧诲綍鐘舵�佸凡杩囨湡锛屾偍鍙互缁х画鐣欏湪璇ラ〉闈紝鎴栬�呴噸鏂扮櫥褰�?').then(res => { + if (res.confirm) { + useUserStore().logOut().then(res => { + uni.reLaunch({ url: '/pages/login' }) + }) + } + }) + reject('鏃犳晥鐨勪細璇濓紝鎴栬�呬細璇濆凡杩囨湡锛岃閲嶆柊鐧诲綍銆�') + } else if (code === 500) { + toast(msg) + reject('500') + } else if (code !== 200) { + toast(msg) + reject(code) + } + resolve(data) + }) + .catch(error => { + let { message } = error + if (message === 'Network Error') { + message = '鍚庣鎺ュ彛杩炴帴寮傚父' + } else if (message.includes('timeout')) { + message = '绯荤粺鎺ュ彛璇锋眰瓒呮椂' + } else if (message.includes('Request failed with status code')) { + message = '绯荤粺鎺ュ彛' + message.substr(message.length - 3) + '寮傚父' + } + toast(message) + reject(error) + }) + }) +} + +export function postAction(url: string, data?: any, isToken: boolean = true) { + return request({ data, url, method: 'POST', headers: { isToken }, }) +} +export function getAction(url: string, params?: any, isToken: boolean = true) { + return request({ params, url, method: 'GET', headers: { isToken }, }) +} +export function putAction(url: string, data?: any, isToken: boolean = true) { + return request({ data, url, method: 'PUT', headers: { isToken }, }) +} +export function deleteAction(url: string, data?: any, isToken: boolean = true) { + return request({ data, url, method: 'DELETE', headers: { isToken }, }) +} + +export default request -- Gitblit v1.9.3