import utils from '../utils/util' import {service} from '../config' import { IM } from '../utils/im' export default { data: { errorOne: 1, errorTwo: 1, errorThree: 1, mixin: 'MixinText' }, methods: { /* =================== [$get 发起GET请求] =================== */ $get({url = '', headers = {}, data = {}, timeout = 8000}) { let vm = this const methods = 'GET' return new Promise((resolve, reject) => { this.$ajax({url, headers, methods, data, timeout}).then(({code, data}) => { resolve({code, data}) }).catch((err) => { reject(err) }) }) }, $post({url = '', headers = {}, data = {}, timeout = 8000}) { const methods = 'POST' return new Promise((resolve, reject) => { this.$ajax({url, headers, methods, data, timeout}).then(({code, data}) => { resolve({code, data}) }).catch((err) => { reject(err) }) }) }, $put({url = '', headers = {}, data = {}, timeout = 8000}) { const methods = 'PUT' return new Promise((resolve, reject) => { this.$ajax({url, headers, methods, data, timeout}).then(({code, data}) => { resolve({code, data}) }).catch((err) => { reject(err) }) }) }, $delete({url = '', headers = {}, data = {}, timeout = 8000}) { const methods = 'DELETE' return new Promise((resolve, reject) => { this.$ajax({url, headers, methods, data, timeout}).then(({code, data}) => { resolve({code, data}) }).catch((err) => { reject(err) }) }) }, $ajax({url = '', headers = {}, methods = 'GET', data = {}}) { // 增强体验:顶部加载中 wx.showNavigationBarLoading() let versions = this.$app.$options.globalData.versions let params = { XDEBUG_SESSION_START: '1', version: versions, from_user_id: wx.getStorageSync('from_user_id') || '', agent_user_id: wx.getStorageSync('agent_user_id') || '', agent: wx.getStorageSync('agent') || '', from_source: 'mp', from_type: wx.getStorageSync('fromType') || '' } // 构造请求体 let requestUrl = `${url}${url.includes('?') ? '&' : '?'}` + Object.keys(params).map(i => `${i}=${encodeURIComponent(params[i] || '')}`).join('&') const request = { url: requestUrl, timeout: 10000, method: ['GET', 'POST', 'PUT', 'DELETE'].indexOf(methods) > -1 ? methods : 'GET', header: Object.assign({ 'Authorization': 'Bearer ' + wx.getStorageSync('token'), 'X-Requested-With': 'XMLHttpRequest' }, headers), data: Object.assign({ // set something global }, data) } // 控制台调试日志 // console.table(request) // 发起请求 return new Promise((resolve, reject) => { let vm = this let pages = getCurrentPages() // 获取加载的页面 let currentPage = pages[pages.length - 1] // 获取当前页面的对象 let options = currentPage.options let url = '' for (var key in options) { url = `${url}${key}=${options[key]}&` } wx.request(Object.assign(request, { success: ({statusCode, data}) => { wx.hideNavigationBarLoading() const {code, message, notice, operate, path} = data wx.removeStorageSync('message') wx.stopPullDownRefresh() // 控制台调试日志 // 状态码正常 & 确认有数据 if (data.code === 0) { // 成功回调 wx.removeStorageSync('formId') resolve({statusCode, ...data}) } else if (data.code == 1) { reject(new Error(`error ${data.message}`)) vm.errorOne += 1 if (vm.errorOne <= 2) { wx.showModal({ // 使用模态框提示用户进行操作 title: `温馨提示`, content: data.message, showCancel: false, confirmText: `确定`, success: function (res) { if (res.confirm) { vm.errorOne = 1 wx.hideLoading() } } }) } let errorMessage = {message: '错误,请寻找开发人员协助'} wx.hideLoading() return wx.hideLoading() } else if (data.code === 2) { vm.errorTwo += 1 if (vm.errorTwo <= 2) { utils.wx_login().then((data) => { let route = `/${currentPage.route}?${url}` if (!data.data.token) { wx.removeStorageSync('information') wx.switchTab({ url: '/pages/tabBar/home' }) } else { currentPage.onShow() if (route.includes('tabBar')) { route = route.split('?')[0] wx.switchTab({url: route}) } else { wx.redirectTo({url: route}) } } let {accid, token} = data.data.im_user // wyy_user vm.$app.$options.globalData.nim = IM(accid, token) wx.hideLoading() }) } let errorMessage = {message: '错误,需要重新登录'} throw errorMessage } else if (code === 3) { utils.wx_login().then((data) => { let route = `/${currentPage.route}?${url}` if (!data.data.token) { wx.removeStorageSync('information') wx.switchTab({ url: '/pages/tabBar/home' }) } else { currentPage.onShow() if (route.includes('tabBar')) { route = route.split('?')[0] wx.switchTab({url: route}) } else { wx.redirectTo({url: route}) } } let {accid, token} = data.data.im_user // wyy_user vm.$app.$options.globalData.nim = IM(accid, token) wx.hideLoading() }) // vm.errorThree += 1 // if (vm.errorThree <= 2) { // utils.wx_login().then(({code, data}) => { // if (code === 0) { // vm.errorThree = 1 // currentPage.onLoad() // currentPage.onShow() // } // }) // } } }, fail: (err) => { // eslint-disable-next-line prefer-promise-reject-errors reject(err) }, complete: (res) => { setTimeout(() => { wx.hideLoading() // loading只展示一会就被去除了,加1s的时间延迟 }, 1000) if (res.errMsg.indexOf('timeout') > -1) { vm.errorOne += 1 let pages = getCurrentPages() // 获取加载的页面 if (vm.errorOne <= 2) { wx.showModal({ // 使用模态框提示用户进行操作 title: `${this.i18nL.pages.service.healthMGT.otherShow1}`, content: `${this.i18nL.pages.service.healthMGT.Ace26}`, showCancel: false, confirmText: `${this.i18nL.appWpy.confirmText}`, success: function (res) { if (res.confirm) { vm.errorOne = 1 wx.hideLoading() if (pages.length > 1) { wx.navigateBack({ delta: 1 }) } else { wx.reLaunch({url: '/pages/tabBar/home'}) } } } }) } let errorMessage = {message: '当前网络不稳定!请重试'} throw errorMessage } } })) }) } }, created() { let vm = this let cacheBodyData = wx.getStorageSync('cacheBodyData') if (cacheBodyData && vm.$app.$options.globalData.resubmit == 1) { let data = { data: cacheBodyData } vm.$app.$options.globalData.resubmit = 2 vm.$post({url: `${service.host}/save/weak/network/fat`, data}).then(({code, data}) => { if (code === 0) { vm.app.globalData.bodyFatData = null wx.setStorageSync('bodyFatData', '1') wx.removeStorageSync('cacheBodyData') } wx.hideLoading() }).catch(err => { }) } } }