index.js 4.8 KB

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