wxRequest.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. import { getToken } from '@/utils/auth'
  2. import config from '@/config'
  3. const baseUrl = config.baseUrl
  4. //上传文件还是选择相册图片
  5. const getWxFile = (type,fileNum) => {
  6. return new Promise((resolve, reject) => {
  7. //文件上传
  8. if (type === 'file') {
  9. wx.chooseMessageFile({
  10. count: fileNum || 1,
  11. type: 'file',
  12. success: (res) => {
  13. resolve(res)
  14. },
  15. fail(error) {
  16. console.log(' 上传失败', error);
  17. uni.showToast({
  18. title: '上传失败',
  19. icon: 'none'
  20. })
  21. reject(error)
  22. }
  23. });
  24. }
  25. //相册或者摄像头
  26. if (type === 'img') {
  27. wx.chooseImage({
  28. count: 1, // 选择图片数量
  29. sizeType: ['original', 'compressed'], // 图片类型
  30. sourceType: ['album', 'camera'], // 来源(相册或摄像头)
  31. success: function (res) {
  32. resolve(res)
  33. },
  34. fail(error) {
  35. console.log(' 上传失败', error);
  36. uni.showToast({
  37. title: '上传失败',
  38. icon: 'none'
  39. })
  40. reject(error)
  41. }
  42. });
  43. }
  44. })
  45. }
  46. const getUploadPromise = (file) => {
  47. return new Promise((resolve, reject) => {
  48. const path = file.path
  49. wx.uploadFile({
  50. url: baseUrl + '/common/upload', // 服务器接口地址
  51. filePath: path, // 本地文件路径(通过 wx.chooseImage 获取)
  52. name: 'file', // 文件对应的 key(服务器接收字段名)
  53. formData: { // 额外表单数据
  54. file: file,
  55. },
  56. header: {
  57. 'Authorization': 'Bearer ' + getToken(), // 自定义请求头
  58. },
  59. success(res) {
  60. const data = JSON.parse(res.data);
  61. resolve(data);
  62. },
  63. fail(error) {
  64. console.log(' 上传失败', error);
  65. uni.showToast({
  66. title: '上传失败',
  67. icon: 'none'
  68. })
  69. reject(error)
  70. }
  71. });
  72. })
  73. }
  74. const uploadFile = async (files) => {
  75. const filesPromise = files.map((item) => {
  76. return getUploadPromise(item)
  77. })
  78. try {
  79. const results = await Promise.all(filesPromise)
  80. console.log('results',results);
  81. return results;
  82. } catch (error) {
  83. console.log('上传失败-uploadFile', error);
  84. throw error;
  85. }
  86. }
  87. /**
  88. *
  89. * type: 文件上传方式
  90. * file:选择文件
  91. * img: 相册或者摄像头
  92. */
  93. export const wxUploadFile = async (type,fileNum) => {
  94. try {
  95. console.log('11');
  96. //选择文件
  97. const files = await getWxFile(type,fileNum);
  98. console.log('选择文件', files,files.tempFiles);
  99. //上传服务器
  100. const u_files = await uploadFile(files.tempFiles);
  101. console.log('上传服务器', u_files);
  102. return u_files;
  103. } catch (error) {
  104. console.log('上传失败-wxUploadFile', error);
  105. throw error;
  106. }
  107. }
  108. /**
  109. * 拨打电话
  110. */
  111. export const wxMakePhoneCall = (phoneNumber) => {
  112. uni.makePhoneCall({
  113. phoneNumber: phoneNumber
  114. });
  115. }