123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. import React from 'react'
  2. import Taro from '@tarojs/taro'
  3. // const baseURL = HOST
  4. export default async (options) => {
  5. const opts = optionBuilder(options)
  6. console.log(opts, "optsoptsoptsoptsoptsoptsoptsoptsoptsopts")
  7. return Taro.request(opts)
  8. .then((res) => {
  9. console.log(res, '----------');
  10. const { code } = typeof res.data === 'string' ? JSON.parse(res.data) : res.data
  11. if (code == '1000') {
  12. return res
  13. } else {
  14. throw res
  15. }
  16. return res
  17. })
  18. .catch((err) => {
  19. console.log(err, '111111111111');
  20. if(err.status=== 504){
  21. Taro.showToast({
  22. title: "请检查网络",
  23. icon: 'none'
  24. })
  25. throw err
  26. }
  27. throw err
  28. })
  29. }
  30. export function optionBuilder(options) {
  31. const {
  32. url,
  33. data = {},
  34. method = 'get',
  35. params = {},
  36. header
  37. } = options
  38. // console.log(user,'user')
  39. let api = `/api/mp${url}`
  40. if (JSON.stringify(params) != "{}") {
  41. api = `${api}?${paramsToString(params)}`
  42. }
  43. const token = Taro.getStorageSync('token')||''
  44. return {
  45. url: api,
  46. method,
  47. data,
  48. header: {
  49. 'content-type': 'application/json',
  50. 'X-Authorization-JWT': `${token}`,
  51. // 'appId': appId,
  52. // 'x-action': 'miniapp',
  53. // 'x-version': Version,
  54. // 'x-consultant': consultant,
  55. // 'x-recommender': recommender,
  56. ...header || {},
  57. },
  58. mode: 'cors',
  59. }
  60. }
  61. function paramsToString(params) {
  62. return Object.keys(params).map((key) => {
  63. const val = params[key]
  64. return Array.isArray(val) ? val.map((x) => {
  65. return composeKeyValue(key, x)
  66. }).join('&') : composeKeyValue(key, val)
  67. }).join('&')
  68. }
  69. function composeKeyValue(k, v, encode) {
  70. return encode === false ? `${k}=${v}` : `${encodeURIComponent(k)}=${encodeURIComponent(v)}`
  71. }
  72. export const uploadFiles = async (files,url) => {
  73. const uploads = []
  74. const token = Taro.getStorageSync('token')||''
  75. for (var i = 0; i < files.length; i++) {
  76. uploads[i] = new Promise((resolve, reject) => {
  77. Taro.uploadFile({
  78. url: url||`/api/mp/image`,
  79. filePath: files[i],
  80. header: {
  81. 'authorization': `X-Authorization-JWT ${token}`,
  82. // 'x-action': 'miniapp'
  83. },
  84. name: 'file',
  85. success: function (res) {
  86. // debugger
  87. const _data = JSON.parse(res.data)
  88. // if (_data.code !== CODE_SUCCESS) {
  89. // reject(new Error(_data.message))
  90. // }
  91. resolve(_data.data)
  92. },
  93. fail(err) {
  94. reject(err)
  95. }
  96. })
  97. })
  98. }
  99. return Promise.all(uploads)
  100. }