123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. import Taro from '@tarojs/taro'
  2. import { getQueryString } from '.'
  3. const logger = Taro.getRealtimeLogManager()
  4. export default (url, options) => {
  5. const { params, skipError, header, ...leftOptions } = options || {}
  6. const queryStr = getQueryString(params)
  7. const urlWithParams = queryStr ? `${url}?${queryStr}` : url;
  8. const nwUrl = `${HOST}/api/wx${urlWithParams}`
  9. const authToken = Taro.getStorageSync('token')
  10. const tokenHeader = authToken ? { 'X-Authorization-JWT': authToken } : {}
  11. const nwHeader = {
  12. ...(header || {}),
  13. ...tokenHeader,
  14. }
  15. return new Promise((resolve, reject) => {
  16. Taro.request({
  17. ...leftOptions,
  18. url: nwUrl,
  19. header: nwHeader,
  20. success: (res) => {
  21. const { code, message, data, token } = res.data
  22. if (token || data?.token) {
  23. Taro.setStorage({ key: 'token', data: token || data?.token })
  24. }
  25. if (code === 1000) {
  26. resolve(data)
  27. } else {
  28. console.error(res)
  29. logger.error(nwUrl)
  30. logger.error(options)
  31. logger.error(res)
  32. if (!skipError) {
  33. Taro.showToast({
  34. title: message||'网络异常',
  35. icon: 'none',
  36. })
  37. }
  38. reject(message?.indexOf('java') > -1 ? '系统内部错误' : message)
  39. }
  40. },
  41. fail: (err) => {
  42. console.error(err)
  43. logger.error('网络错误')
  44. logger.error(nwUrl)
  45. logger.error(options)
  46. logger.error(err)
  47. const message = err.message || err.errMsg || err
  48. if (!skipError) {
  49. Taro.showToast({
  50. title: message,
  51. icon: 'none',
  52. })
  53. }
  54. reject(message)
  55. }
  56. })
  57. })
  58. }
  59. export function uploadFile(filePath) {
  60. const authToken = Taro.getStorageSync('token')
  61. const tokenHeader = authToken ? { 'X-Authorization-JWT': authToken } : {}
  62. return new Promise((resolve, reject) => {
  63. Taro.uploadFile({
  64. // eslint-disable-next-line no-undef
  65. url: `${HOST}/api/wx/image`,
  66. filePath,
  67. name: 'file',
  68. header: tokenHeader,
  69. success: (res) => {
  70. if (res.errMsg === 'uploadFile:ok') {
  71. const { code, message, data, token } = JSON.parse(res.data)
  72. if (token || data?.token) {
  73. Taro.setStorage({ key: 'token', data: token || data?.token })
  74. }
  75. if (code === 1000) {
  76. resolve(data)
  77. } else {
  78. console.error(res)
  79. logger.error("上传文件失败")
  80. logger.error(res)
  81. reject(message?.indexOf('java') > -1 ? '系统内部错误' : message)
  82. }
  83. } else {
  84. console.error(res)
  85. logger.error("上传文件失败")
  86. logger.error(res)
  87. reject(res.errMsg)
  88. }
  89. },
  90. fail: (err) => {
  91. console.error(err)
  92. logger.error("上传文件失败")
  93. logger.error(err)
  94. const message = err.message || err.errMsg || err
  95. reject(message)
  96. }
  97. })
  98. })
  99. }