import { ref } from 'vue'; function requestInterceptor(options) { const token = uni.getStorageSync("access_token"); options.header = { 'Authorization': token ? 'Bearer ' + token : '', 'Content-Type': 'application/json' }; return options; } function responseInterceptor(response) { if (response.statusCode === 200) { const data = response.data; if (data.status === 'Toke_Error' || data.code === 10001) { uni.removeStorageSync("access_token"); uni.removeStorageSync("refresh_token"); uni.showModal({ title: '提示', content: '登录已过期,请重新登录', showCancel: false, success: () => { uni.reLaunch({ url: '/pages/Login' }); } }); return Promise.reject(data); } if (data.status === false) { uni.showToast({ title: data.msg || data.meg || '操作失败', icon: 'none' }); } return data; } else { uni.showToast({ title: '请求失败,请稍后重试', icon: 'none' }); return Promise.reject(response.data); } } export function useHttp() { const isLoading = ref(false); function sendRequest(options) { isLoading.value = true; uni.showLoading({ title: '加载中' }); let processedOptions = requestInterceptor(options); return new Promise((resolve, reject) => { uni.request({ ...processedOptions, success: (res) => { let processedResponse = responseInterceptor(res); isLoading.value = false; uni.hideLoading(); resolve(processedResponse); }, fail: (err) => { isLoading.value = false; uni.hideLoading(); uni.showToast({ title: '网络异常,请检查网络', icon: 'none' }); reject(err); } }); }); } return { isLoading, sendRequest }; }