246 lines
8.8 KiB
JavaScript
246 lines
8.8 KiB
JavaScript
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 => {
|
||
})
|
||
}
|
||
}
|
||
}
|