Files
urbanLifeline/urbanLifelineWeb/packages/workcase_wechat/api/base.ts
2025-12-24 16:32:06 +08:00

50 lines
1.4 KiB
TypeScript

/**
* workcase_wechat API 封装
* 使用 uni.request 替代 axios
*/
/* eslint-disable @typescript-eslint/no-explicit-any */
declare const uni: {
getStorageSync: (key: string) => any
request: (options: any) => void
}
import type { ResultDomain } from '../types'
import { BASE_URL as CONFIG_BASE_URL } from '../config'
// API 基础配置
const BASE_URL = CONFIG_BASE_URL
// 通用请求方法
export function request<T>(options: {
url: string
method?: 'GET' | 'POST' | 'PUT' | 'DELETE'
data?: any
header?: Record<string, string>
}): Promise<ResultDomain<T>> {
return new Promise((resolve, reject) => {
const token = uni.getStorageSync('token') as string
uni.request({
url: BASE_URL + options.url,
method: options.method || 'GET',
data: options.data,
header: {
'Content-Type': 'application/json',
...(token ? { 'Authorization': `Bearer ${token}` } : {}),
...options.header
},
success: (res: any) => {
if (res.statusCode === 200) {
resolve(res.data as ResultDomain<T>)
} else {
reject(new Error(`请求失败: ${res.statusCode}`))
}
},
fail: (err: any) => {
reject(err)
}
})
})
}