import config from './config' let arr = [] export default (options = {}) => { if (options.data == undefined) { options.data = {} } // 防止接口重复点击 if (arr.indexOf(options.url) === -1) { arr.push(options.url) } else { return new Promise((resolve, reject) => { reject({ code: -1, msg: '请勿重复提交', }) }) } return new Promise((reslove, reject) => { uni.request({ url: options.url.indexOf('http') === -1 ? config.domain + options.url : options.url, data: { ...options.data, }, header: { // 'Content-Type': 'application/json;charset=UTF-8', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', Authorization: uni.getStorageSync('access_token'), ...options.header, }, method: options.method || 'GET', success: async (res) => { console.log(res) if (arr.indexOf(options.url) > -1) { arr.splice(arr.indexOf(options.url), 1) } if (res.data.resultCode !== 10000 && res.data.code !== 'A0000') { errHandler(res.data) reject(res.data) } else { reslove(res.data) } }, fail: (err) => { if (arr.indexOf(options.url) > -1) { arr.splice(arr.indexOf(options.url), 1) } reject(err) uni.showToast({ icon: 'none', title: '网络异常,请稍后再试', }) uni.reLaunch({ url: '/pages/user/login', }) }, }) }) } /** * 错误处理 * @param {Number} code 错误码 */ function errHandler(res) { switch (res.code) { case '401': // #ifdef MP uni.clearStorageSync() // #endif uni.reLaunch({ url: '/pages/user/login' }) break case 'A0202': // #ifdef MP uni.clearStorageSync() // #endif uni.reLaunch({ url: '/pages/user/login' }) break default: uni.showToast({ title: res.message || res.msg || '网络异常,请稍后再试', duration: 2000, icon: 'none', }) break } }