const wxApi = { /** * @description 统一接口调用 * @param {String} api 微信接口名称 * @param {Object} options 微信接口传参 */ _api(api, options) { options = options || {}; for (let i in options) { options[i] === null && delete options[i]; } if (!wx[api]) return this._error('call', 'wxApi', api, 'not a wxapi'); const success = options.success; options.success = res => { res.data && (res = res.data); success && success(res); }; !options.fail && (options.fail = res => { this._error('api', api, res); }); wx[api](options); }, /** * @description 统一错误处理 * @param {String} type 错误类型 * @param {String} info 错误描述 * @param {Object} res 具体错误数据 * @param {Int} level 错误等级 */ _error(type, info, res, level) { console.log({ type: type, info: info, res: res, level: level }); }, showToast(params, type) { params = { title: params.title || '', mask: params.mask || true, icon: params.icon || 'none' } if (type && type === 'loading') { this._api('showLoading', params); } else { params.duration = 2000; this._api('showToast', params); } }, hideToast(type) { if (type && type === 'loading') { this._api('hideLoading'); } else { this._api('hideToast'); } }, getLocation(cb) { const _this = this; this.getSetting({ success(res) { if (!res.authSetting['scope.userLocation']) { _this.authorize({ scope: 'scope.userLocation', success() { wx.getLocation({ type: 'wgs84', success(res) { cb && cb(res); } }); }, fail(err) { global.router.goto({ path: '/pages/auth/index', type: global.ROUTER_TYPE.CLOSE_ALL, query: { type: 'getLocation' } }); } }); } else { wx.getLocation({ type: 'wgs84', success(res) { cb && cb(res); } }); } }, fail(err) { _this.showToast({ title: '获取用户设置失败,请稍后重试' }); } }) }, getSetting(params) { this._api('getSetting', params); }, authorize(params) { this._api('authorize', params); }, showConfirm(title, content, success, confirmText, cancelText = '取消', confirmColor = '', cancelColor = '') { this._api('showModal', { title: title, content: content, cancelText: cancelText, cancelColor: cancelColor, confirmText: confirmText, confirmColor: confirmColor, success: success }); }, openSetting(success) { this._api('openSetting', { success: success }); }, scanCode(params) { this._api('scanCode', params); }, openLocation(params) { this._api('openLocation', params); }, requestPayment(params) { this._api('requestPayment', params); } }; export default wxApi;