let server = { baseHost: '', host: '', mapKey: '', //高德地图key staticMapKey: '', //腾讯静态地图key api: { login: '', uploadImg: '' } } let request = (obj, method) => { let api = obj.api, params = obj.params ? obj.params : {}, cb = obj.cb ? obj.cb : null, failCb = obj.failCb ? obj.failCb : null, hideLoading = obj.hideLoading ? obj.hideLoading : false; /** * 重构api */ if (typeof server.api[api] == 'undefined') { wx.showModal({ title: '错误', content: `接口${api}不存在`, showCancel: false }) return } let url = server.baseHost + server.api[api]; if (!hideLoading) { wx.showLoading({ title: "加载中" }) } /** * 重构params,加上token */ if (api != 'login') { if (wx.getStorageSync('token')) { params.token = wx.getStorageSync('token') } else { //重新登录 login(() => { request(obj, method) }) } } /** * http类型 */ let header = {} if (method == 'POST') { header = { 'Content-Type': 'application/x-www-form-urlencoded' } } /** * 发送http请求 */ wx.request({ url, data: params, header, method, dataType: 'json', responseType: 'text', success(res) { if (!hideLoading) { wx.hideLoading() } switch (res.data.code) { case 1: cb && cb(res.data.data) break case 2: //重新登录 login(() => { request(obj, method) }) break default: if (failCb) { return failCb(res.data) } // 后台返回内容末尾含关键字history,则前台点击确定返回上一页或是首页 let keyword = "back"; if (!res.data.msg) return wx.showModal({ title: '提示', content: res.data.msg.split(keyword)[0], showCancel: false, success: function(e) { if (e.confirm && res.data.msg.indexOf(keyword) > -1) { let pages = getCurrentPages(); if (pages.length > 1) { wx.navigateBack({}) } else { wx.reLaunch({ url: '/pages/tabBar/home/index', }) } } } }) } }, fail(res) { console.log('fail', res) }, complete(res) { } }) } /** * HTTP基本请求 */ let $Get = (obj) => { request(obj, 'GET') } let $Post = (obj) => { request(obj, 'POST') } /** * 登录 */ let login = (cb) => { wx.login({ success(res) { if (res.code) { $Post({ api: "login", params: { code: res.code }, cb: (res) => { if (res.token) { wx.setStorageSync('token', res.token) } } }) } cb && cb() }, fail(res) { console.log('login fail', res) }, complete(res) { } }) } export { server, $Get, $Post, login }