import { useUserStore } from '@/stores/user' import config from './config' import utils from './utils' const request = (method, url, data, opt) => { const userStore = useUserStore() return new Promise((resolve, reject) => { opt.showLoading && uni.showLoading({ title: opt.loadingTitle, mask: method === 'POST' ? true : false }) uni.request({ method, url: utils.isHttp(url) ? url : config.apiBaseUrl + url, header: { Authorization: userStore.token, ...opt.header }, data }).then(res => { opt.showLoading && uni.hideLoading() const data = res.data if (data.code === 201) { userStore.setUserInfo({}) userStore.setToken('') // opt.isAuth && uni.navigateTo({ // url: '/pages/login/login' // }) } if (data.code === 200 || data.success) { resolve(data) } else { opt.showErrorMsg && uni.showToast({ title: data.msg, icon: 'none' }) reject(data) } }).catch(err => { opt.showLoading && uni.hideLoading() reject(err) }) }) } const http = {} const methods = ['GET', 'POST', 'PUT', 'DELETE'] methods.forEach(method => { http[method.toLowerCase()] = (url, data, options) => { const loadingTitle = method === 'GET' ? '加载中...' : '提交中...' const opt = Object.assign({ loadingTitle }, config.httpDefaultOption, options ) if (opt.isAuth) { const userStore = useUserStore() if (!userStore.token) { // uni.navigateTo({ // url: '/pages/login/login' // }) // return Promise.reject({ // msg: '无token' // }) } } // 提交数据中值为undefined的改成空字符串 if (typeof data === 'object') { for (let key in data) { if (data[key] === 'undefined') { data[key] = '' } } } return request(method, url, data, opt) } }) export default http