index.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. const _Http = getApp().globalData.http;
  2. import {
  3. fileList
  4. } from "../../utils/matchingFeilType";
  5. Component({
  6. properties: {
  7. files: {
  8. type: Object,
  9. value: {
  10. images: [],
  11. viewImages: [],
  12. videos: [],
  13. viewVideos: [],
  14. files: []
  15. },
  16. },
  17. delete: {
  18. type: Boolean
  19. }
  20. },
  21. methods: {
  22. /* 预览媒体 */
  23. viewMedias(e) {
  24. const {
  25. index,
  26. type
  27. } = e.currentTarget.dataset;
  28. wx.previewMedia({
  29. current: index,
  30. sources: type == 'image' ? this.data.files.viewImages : this.data.files.viewVideos,
  31. })
  32. },
  33. /* 预览文档 */
  34. viewFlies(e) {
  35. const {
  36. item
  37. } = e.currentTarget.dataset;
  38. wx.showLoading({
  39. title: '加载中...',
  40. })
  41. wx.downloadFile({
  42. url: item.url,
  43. complete({
  44. statusCode,
  45. tempFilePath
  46. }) {
  47. if (statusCode != 200) return;
  48. wx.openDocument({
  49. filePath: tempFilePath,
  50. fileType: item.postfix,
  51. showMenu: true,
  52. complete({
  53. errMsg
  54. }) {
  55. wx.hideLoading();
  56. if (errMsg != "openDocument:ok") wx.showToast({
  57. title: '打开失败',
  58. icon: "none"
  59. })
  60. }
  61. })
  62. }
  63. })
  64. },
  65. /* 删除文件 */
  66. handleDeleteFile(e) {
  67. let item = e.currentTarget.dataset.item || e.currentTarget.dataset.item;
  68. _Http.basic({
  69. "classname": "system.attachment.Attachment",
  70. "method": "deleteFileLink",
  71. "content": {
  72. "linksids": [item.linksid]
  73. }
  74. }).then(res => {
  75. if (res.msg != '成功') return wx.showToast({
  76. title: res.data,
  77. icon: "none"
  78. });
  79. let files = this.data.files;
  80. switch (item.fileType) {
  81. case "image":
  82. files.images = files.images.filter(v => v.url != item.url);
  83. files.viewImages = files.viewImages.filter(v => v.url != item.url);
  84. break;
  85. case "video":
  86. files.videos = files.videos.filter(v => v.url != item.url);
  87. files.viewVideos = files.viewVideos.filter(v => v.url != item.url);
  88. break;
  89. default:
  90. files.files = files.files.filter(v => v.attachmentid != item.attachmentid);
  91. break;
  92. };
  93. this.setData({
  94. files
  95. });
  96. })
  97. },
  98. /* 处理附件 */
  99. handleFiles(arr, init = false) {
  100. let files = init ? {
  101. images: [],
  102. viewImages: [],
  103. videos: [],
  104. viewVideos: [],
  105. files: []
  106. } : this.data.files,
  107. list = fileList(arr);
  108. list.forEach(v => {
  109. switch (v.fileType) {
  110. case "video":
  111. files.videos.push(v)
  112. files.viewVideos.push({
  113. url: v.url,
  114. type: "video",
  115. poster: v.subfiles[0].url
  116. })
  117. break;
  118. case "image":
  119. files.images.push(v)
  120. files.viewImages.push({
  121. url: v.url,
  122. type: "image"
  123. })
  124. break;
  125. default:
  126. files.files.push(v)
  127. break;
  128. }
  129. });
  130. this.setData({
  131. files
  132. })
  133. },
  134. /* 初始化数据 */
  135. initData() {
  136. this.setData({
  137. files: {
  138. images: [],
  139. viewImages: [],
  140. videos: [],
  141. viewVideos: [],
  142. files: []
  143. }
  144. })
  145. },
  146. }
  147. })