import { ref } from 'vue' // 基础配置 // const BASE_URL = "http://192.168.41.118:9090/api" const BASE_URL = "/api" export function useRequest() { const loading = ref(false) const error = ref(null) // 核心请求方法 const sendRequest = (options: UniApp.RequestOptions): Promise => { loading.value = true error.value = null return new Promise((resolve, reject) => { // 处理URL const url = options.url.startsWith('http') ? options.url : `${BASE_URL}/${options.url.replace(/^\//, '')}` // 添加token const token = uni.getStorageSync('token') const headers = { 'Content-Type': 'application/json', ...(token ? { 'Authorization': `Bearer ${token}` } : {}), ...options.header } uni.request({ url, method: options.method || 'GET', data: options.data, header: headers, timeout: options.timeout || 10000, success: (res) => { if (res.statusCode >= 200 && res.statusCode < 300) { resolve(res.data as T) } else { const err = new Error(res.data?.message || '请求失败') error.value = err reject(err) } }, fail: (err) => { error.value = err reject(err) }, complete: () => { loading.value = false } }) }) } // GET请求 const get = (url: string, params?: any) => { return sendRequest({ url, method: 'GET', data: params }) } // POST请求 const post = (url: string, data?: any) => { return sendRequest({ url, method: 'POST', data }) } return { loading, error, request: sendRequest, get, post } }