index.js 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. import qs from 'qs'
  2. const ToolClass = {
  3. DateFormat (timestamp, type = 'YY:MM:DD hh:mm:ss') { // 格式化时间
  4. if (timestamp) {
  5. let YY = new Date(timestamp).getFullYear()
  6. let MM = new Date(timestamp).getMonth() + 1
  7. let DD = new Date(timestamp).getDate()
  8. let hh = new Date(timestamp).getHours()
  9. let mm = new Date(timestamp).getMinutes()
  10. if (type === 'YY:MM:DD') {
  11. return `${YY}-${MM > 9 ? MM : '0' + MM}-${DD > 9 ? DD : '0' + DD}`
  12. } else if (type === 'hh:mm:ss') {
  13. return `${hh > 9 ? hh : '0' + hh}:${mm > 9 ? mm : '0' + mm}`
  14. } else {
  15. return `${YY}-${MM > 9 ? MM : '0' + MM}-${DD > 9 ? DD : '0' + DD} ${hh > 9 ? hh : '0' + hh}:${mm > 9 ? mm : '0' + mm}`
  16. }
  17. }
  18. },
  19. ReplaceURLParams (url, params) {
  20. const args = { ...(params || {}), org: 'MQ' }
  21. return Object.keys(args).reduce((acc, k) => { // 此方法对每个元素进行处理
  22. const re = new RegExp(`:${k}(?!w)`, 'i')
  23. return acc.replace(re, args[k])
  24. }, url)
  25. },
  26. WxRequest (config) {
  27. this.ToolRequest({
  28. url: config.url,
  29. method: config.method,
  30. ...(config.data || {}),
  31. success (res) {
  32. config.success(res)
  33. },
  34. error (res) {
  35. config.error(res)
  36. }
  37. })
  38. },
  39. ToolRequest (config) { // 网络请求
  40. let _that = this
  41. let urlData = qs.stringify(config.urlData)
  42. let queryData = qs.stringify(config.queryData)
  43. if (config.url.indexOf(':') > -1) {
  44. if (typeof config.urlData === 'object') {
  45. config.url = this.ReplaceURLParams(config.url, config.urlData)
  46. } else {
  47. config.url = config.url.slice(0, config.url.indexOf(':')) + urlData
  48. }
  49. }
  50. if (queryData) {
  51. config.url += '?' + queryData
  52. }
  53. let Header = { 'Access-Control-Expose-Headers': 'X-Authorization-JWT' }
  54. if (wx.getStorageSync('token') !== '' && wx.getStorageSync('tokentime') !== '' && wx.getStorageSync('tokentime') - 0 + 24 * 60 * 60 * 1000 >= Date.now()) { // 本地获取token
  55. Header['X-Authorization-JWT'] = wx.getStorageSync('token')
  56. }
  57. wx.request({
  58. url: `${SERVER_API}${config.url}`,
  59. method: config.method,
  60. ...(config.data || {}),
  61. header: { ...Header },
  62. success: (res) => {
  63. const token = res.data?.token
  64. if (token) { // 更新本地存储token
  65. wx.setStorageSync('token', token)
  66. wx.setStorageSync('tokentime', Date.now())
  67. }
  68. if (res.data.code - 0 === 1001) { // token失效
  69. // wx.login({ // 微信获取code
  70. // success (subRes) {
  71. // wx.request({ // 登录获取token
  72. // url: `${SERVER_API}/login?code=${subRes.code}`,
  73. // method: `post`,
  74. // success: (cRes) => {
  75. // const token = cRes.header['X-Authorization-JWT'] || cRes.header['X-Authorization-JWT']
  76. // if (token) { // 更新本地存储token
  77. // wx.setStorageSync('token', token)
  78. // _that.WxRequest(config) // 获得token之后重新请求接口
  79. // }
  80. // }
  81. // })
  82. // }
  83. // })
  84. }
  85. if (config.success !== undefined && res.data.code - 0 === 1000) {
  86. config.success(res)
  87. }
  88. if (config.error !== undefined && res.data.code - 0 !== 1000) {
  89. config.error(res)
  90. wx.showToast({
  91. title: res.data.message,
  92. icon: 'none',
  93. duration: 2000
  94. })
  95. }
  96. },
  97. fail: (res) => {
  98. const token = res.data?.token
  99. if (token) { // 更新本地存储token
  100. wx.setStorageSync('token', token)
  101. wx.setStorageSync('tokentime', Date.now())
  102. }
  103. if (res.data.code - 0 === 1001) { // token失效
  104. // wx.navigateTo({ url: '../../pages/SignIn/index' })
  105. config.error('登录失效')
  106. }
  107. if (config.error !== undefined) {
  108. config.error(res)
  109. }
  110. }
  111. })
  112. }
  113. }
  114. export default ToolClass