album.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. // pages/album/album.js
  2. const HOST = require('../../utils/const.js').apiUrl;
  3. import httpRequestApi from '../../utils/APIRequest';
  4. Page({
  5. /**
  6. * 页面的初始数据
  7. */
  8. data: {
  9. stateFlag: true,
  10. photoList: [],
  11. photoBoxToken: []
  12. },
  13. //更改相册
  14. setState: function () {
  15. this.setData({
  16. stateFlag: !this.data.stateFlag
  17. })
  18. const photoBox = this.data.stateFlag ? 'OPEN' : 'PRIVACY';
  19. httpRequestApi.setPhoto(photoBox).success(res => {
  20. const photoBoxToken = this.data.stateFlag ? [] : res.data.data.photoBoxToken.toString().split('');
  21. this.setData({
  22. photoBoxToken,
  23. })
  24. });
  25. },
  26. //上传相册
  27. addPhoto: function () {
  28. if(this.data.photoList.length >= 15) {
  29. wx.showModal({
  30. title: '温馨提示',
  31. content: '只能上传15张图片'
  32. })
  33. return false;
  34. };
  35. wx.chooseImage({
  36. count: 9, // 默认9
  37. sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
  38. sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
  39. success: (res) => {
  40. // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
  41. const tempFilePaths = res.tempFilePaths;
  42. //启动上传等待中...
  43. wx.showToast({
  44. title: '正在上传...',
  45. icon: 'loading',
  46. mask: true,
  47. duration: 1000
  48. })
  49. const that = this;
  50. let uploadImgCount = 0;
  51. tempFilePaths.forEach(item => {
  52. //上传文件
  53. wx.uploadFile({
  54. url: HOST + 'wx/file/upload',
  55. filePath: item,
  56. name: 'uploadfile_ant',
  57. header: {
  58. "Content-Type": "multipart/form-data"
  59. },
  60. success: (res) => {
  61. uploadImgCount++;
  62. const data = JSON.parse(res.data);
  63. if(data.success) {
  64. //上传文件成功后放到相册里
  65. httpRequestApi.addPhotoList({
  66. path: data.data
  67. }).success((res) => {
  68. if(res.data.success) {
  69. //再次调用相册列表
  70. that.getPhotoList();
  71. }
  72. }).fail(() => {
  73. wx.showModal({
  74. title: '错误提示',
  75. content: '图片上传到相册失败'
  76. })
  77. });
  78. }
  79. //如果是最后一张,则隐藏等待中
  80. if (uploadImgCount == tempFilePaths.length) {
  81. wx.hideToast();
  82. }
  83. },
  84. fail: function (res) {
  85. wx.hideToast();
  86. wx.showModal({
  87. title: '错误提示',
  88. content: '上传图片失败'
  89. })
  90. }
  91. });
  92. });
  93. }
  94. })
  95. },
  96. //删除相册
  97. removePhoto: function ({ currentTarget }) {
  98. httpRequestApi.removePhotoList(currentTarget.dataset.id).success((res) => {
  99. console.log('删除册列表', res);
  100. if(res.data.success) {
  101. this.getPhotoList();
  102. }
  103. })
  104. },
  105. /**
  106. * 生命周期函数--监听页面加载
  107. */
  108. onLoad: function (options) {
  109. this.getPhotoList();
  110. },
  111. /**
  112. * 生命周期函数--监听页面初次渲染完成
  113. */
  114. onReady: function () {
  115. },
  116. /**
  117. * 生命周期函数--监听页面显示
  118. */
  119. onShow: function () {
  120. },
  121. /**
  122. * 生命周期函数--监听页面隐藏
  123. */
  124. onHide: function () {
  125. },
  126. /**
  127. * 生命周期函数--监听页面卸载
  128. */
  129. onUnload: function () {
  130. },
  131. /**
  132. * 页面相关事件处理函数--监听用户下拉动作
  133. */
  134. onPullDownRefresh: function () {
  135. },
  136. /**
  137. * 页面上拉触底事件的处理函数
  138. */
  139. onReachBottom: function () {
  140. },
  141. /**
  142. * 用户点击右上角分享
  143. */
  144. onShareAppMessage: function () {
  145. },
  146. //获取相册列表
  147. getPhotoList: function () {
  148. httpRequestApi.getPhotoList({
  149. pageNo: 1,
  150. pageSize: 15
  151. }).success((res) => {
  152. console.log('相册列表', res.data.data.list);
  153. this.setData({
  154. photoList: res.data.data.list
  155. })
  156. })
  157. }
  158. })