album.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. // pages/components/album/album.js
  2. const app = getApp();
  3. const common = require('../../../common');
  4. const utils = require("../../../utils/util");
  5. const appConfig = require("../../../config");
  6. const wxUploadFile = utils.promisify(wx.uploadFile);
  7. Component({
  8. options: {
  9. addGlobalClass: true,
  10. },
  11. /**
  12. * 组件的属性列表
  13. */
  14. properties: {
  15. albumList: Object
  16. },
  17. /**
  18. * 组件的初始数据
  19. */
  20. data: {
  21. imgList: [],
  22. albumList: {
  23. "pages": {
  24. "totalPage": 0,
  25. "currentPage": 0,
  26. },
  27. "lists": []
  28. },
  29. bgColor: [
  30. "grey",
  31. "blue",
  32. "red",
  33. "cyan"
  34. ],
  35. pics: [],
  36. isLoad: false,
  37. lastId: 0,
  38. },
  39. ready: function () {
  40. var _this = this;
  41. this.loadAlbum(_this, this.data.lastId, 1, appConfig.pageSize);
  42. },
  43. /**
  44. * 组件的方法列表
  45. */
  46. methods: {
  47. setDefaultAlbum() {
  48. this.setData({
  49. albumList: {
  50. "pages": {
  51. "totalPage": 0,
  52. "currentPage": 0,
  53. },
  54. "lists": []
  55. },
  56. lastId: 0,
  57. });
  58. },
  59. onPullDownRefresh() {
  60. wx.showNavigationBarLoading();
  61. this.setDefaultAlbum();
  62. this.loadAlbum(this, 0, 1, appConfig.pageSize);
  63. wx.stopPullDownRefresh();
  64. },
  65. onReachBottom() {
  66. if (!this.data.albumList.pages) {
  67. return;
  68. }
  69. if (this.data.albumList.pages.currentPage < this.data.albumList.pages.totalPage) {
  70. this.setData({
  71. hiddenLoading: false,
  72. });
  73. //加载下一页
  74. this.loadAlbum(this, this.data.lastId, parseInt(this.data.albumList.pages.currentPage) + 1, appConfig.pageSize);
  75. }
  76. },
  77. loadAlbum(_this, lastId, page, pageSize) {
  78. this.data.lastId = lastId;
  79. this.setData({
  80. "isLoad": false
  81. });
  82. app.albumSync = res => {
  83. this.setData({
  84. hiddenLoading: true,
  85. });
  86. var showRes = this.data.albumList;
  87. if (parseInt(res.pages.currentPage) == 1) {
  88. this.data.pics = [];
  89. showRes = res;
  90. for (var i in res.lists) {
  91. this.data.pics.push(res.lists[i].source);
  92. }
  93. }else{
  94. showRes['pages'] = res.pages;
  95. for (var i in res.lists) {
  96. this.data.lastId = res.lists[i].id;
  97. this.data.pics.push(res.lists[i].source);
  98. showRes.lists.push(res.lists[i]);
  99. }
  100. }
  101. _this.setData({
  102. albumList: showRes
  103. });
  104. if (res.pages.currentPage == res.pages.totalPage || res.pages.totalPage == 0) {
  105. this.setData({
  106. "isLoad": true
  107. });
  108. this.setData({
  109. hiddenLoading: false,
  110. });
  111. }
  112. }
  113. common.album(this, this.data.lastId, page, pageSize)
  114. },
  115. showPic(e) {
  116. var pics = [e.target.dataset.source, e.target.dataset.src];
  117. var index = e.target.dataset.index;
  118. wx.previewImage({
  119. urls: this.data.pics,
  120. current: pics[0] // 当前显示图片的http链接
  121. })
  122. },
  123. remove(e){
  124. var _this = this;
  125. var uid = e.target.dataset.uid;
  126. var id = e.target.dataset.id;
  127. var type = e.target.dataset.type;
  128. app.removeAlbumSync = res =>{
  129. if(typeof res != 'object') {
  130. app.toast("删除失败");
  131. return;
  132. }
  133. if(res.code > 0){
  134. app.toast(res.msg || "删除失败");
  135. return;
  136. }
  137. app.toast("删除成功");
  138. setTimeout(function(){
  139. _this.setDefaultAlbum();
  140. _this.loadAlbum(_this, 0, 1, appConfig.pageSize);
  141. }, 1500);
  142. }
  143. wx.showModal({
  144. title: '温馨提示',
  145. content: '是否要永久删除此照片',
  146. success: function(item){
  147. if (item.confirm) {
  148. common.albumRemove(this, uid, id, type);
  149. }
  150. }
  151. })
  152. },
  153. ChooseImage() {
  154. wx.chooseImage({
  155. count: 8, //默认9
  156. sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
  157. sourceType: ['album'], //从相册选择
  158. success: (res) => {
  159. if (this.data.imgList.length != 0) {
  160. this.setData({
  161. imgList: this.data.imgList.concat(res.tempFilePaths)
  162. })
  163. } else {
  164. this.setData({
  165. imgList: res.tempFilePaths
  166. })
  167. }
  168. }
  169. });
  170. },
  171. ViewImage(e) {
  172. wx.previewImage({
  173. urls: this.data.imgList,
  174. current: e.currentTarget.dataset.url
  175. });
  176. },
  177. DelImg(e) {
  178. wx.showModal({
  179. title: '召唤师',
  180. content: '确定要删除这段回忆吗?',
  181. cancelText: '再看看',
  182. confirmText: '再见',
  183. success: res => {
  184. if (res.confirm) {
  185. this.data.imgList.splice(e.currentTarget.dataset.index, 1);
  186. this.setData({
  187. imgList: this.data.imgList
  188. })
  189. }
  190. }
  191. })
  192. },
  193. submitForm: function() {
  194. var _this = this;
  195. if (this.data.imgList.length == 0) {
  196. app.warning("请选择您要上传的文件~");
  197. return;
  198. }
  199. wx.showLoading({
  200. title: '上传中',
  201. });
  202. var header = {
  203. 'content-type': 'multipart/form-data',
  204. 'cookie': wx.getStorageSync(appConfig.storeKeys.sessionId)
  205. };
  206. var url = utils.getUrl("albumUpload");
  207. var success = 0;
  208. var fail = 0;
  209. const arr = this.data.imgList.map(path => {
  210. return wxUploadFile({
  211. url: url,
  212. header: header,
  213. filePath: path,
  214. name: 'file[]'
  215. });
  216. });
  217. Promise.all(arr).then(res => {
  218. return res.map(item => JSON.parse(item.data).data.files[0]);
  219. }).catch(err => {
  220. app.warning("上传文件失败~");
  221. wx.hideLoading();
  222. }).then(res => {
  223. return res;
  224. }).then(res => {
  225. var success = 0;
  226. var fail = 0;
  227. for(var i in res) {
  228. if(res[i].code == 0){
  229. success++;
  230. }else{
  231. fail++;
  232. }
  233. }
  234. wx.hideLoading();
  235. if(fail > 0) {
  236. app.toast("失败" + fail + "个");
  237. }else{
  238. app.toast("上传成功");
  239. _this.setData({
  240. imgList:[],
  241. });
  242. }
  243. setTimeout(function () {
  244. _this.setDefaultAlbum();
  245. _this.loadAlbum(_this, 0, 1, appConfig.pageSize);
  246. }, 2000);
  247. });
  248. }
  249. }
  250. })