import { noEmpty } from '@utils' const Http = (options = { data: {} }) => { return new Promise((resolve, reject) => { if (options.loadingStr === 'loading') { uni.showLoading({ mask: true, title: '加载中..' }) } let token = uni.getStorageSync('MD_token') || '' let header = { 'Content-Type': 'application/json', 'token': token, // 'Content-Type': 'application/x-www-form-urlencoded' } let params = {...options.data} if (uni.getStorageSync('APP_token')) params.token = uni.getStorageSync('APP_token') for (let key in options.data) { if (options.data[key] === undefined || options.data[key] === 'undefined') { params[key] = '' } } let url = uni.baseUrl + options.url // let url = options.url if (options.queryData) { let qStr = '' for(let k in options.queryData) { qStr += `${k}=${options.queryData[k]}&` } qStr = qStr.substr(0, qStr.length - 1) url += `?${qStr}` } uni.request({ url, data: { ...params }, header, method: options.method || 'POST', complete: res => { if (options.loadingStr === 'loading') { uni.hideLoading() } }, success: res => { const { data: cData } = res const code = cData.errno switch (code) { case 0: return resolve(noEmpty(cData.data) ? cData.data : cData) break case 401: case 404: case 405: uni.removeStorageSync('MD_userInfo') const u2 = uni.getStorageSync('MD_userInfo2') if (u2.bind_wechat === '1' && uni.getStorageSync('MD_token')) { uni.login({ success: function (res) { if (res.code) { uni.api.base.apiwxautologin({code: res.code}).then(cData => { if (cData.token === 'error') { uni.removeStorageSync('MD_token') } else { uni.setStorageSync('MD_userInfo', cData) uni.setStorageSync('MD_token', cData.token) uni.api.base.apidicttree().then(res => { const cObj = res || {} let newDict = {} for (let k in cObj) { const cArr = cObj[k].map(item => { return { ...item, key: item.dict_label, val: item.dict_value } }) newDict[k] = cArr } uni.setStorageSync('MD_dict', newDict) }) uni.api.base.apiuserinfo().then(res2 => { uni.setStorageSync('MD_userInfo2', res2) uni.reLaunch({ url: '/pages/index/index' }) }) } }) } } }) } else { uni.showToast({ title: `请先登录~`, icon: 'none', }) uni.navigateTo({ url: '/pages/user/login/login' }) } break default: uni.showModal({ title: '提示', content: `${cData.errmsg}(${code})`, }) return reject(cData) } // resolve() }, fail: err => { console.log(err) reject(err) } }) }) } // export default Http function request (url, data, loadingStr, queryData) { return Http({ url, data, loadingStr, queryData, }) } export { request, }