index.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  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: Boolean,
  18. deleteCallBack: Function
  19. },
  20. methods: {
  21. /* 预览媒体 */
  22. viewMedias(e) {
  23. const {
  24. index,
  25. type
  26. } = e.currentTarget.dataset;
  27. wx.previewMedia({
  28. current: index,
  29. sources: type == 'image' ? this.data.files.viewImages : this.data.files.viewVideos,
  30. })
  31. },
  32. /* 预览文档 */
  33. viewFlies(e) {
  34. const {
  35. item
  36. } = e.currentTarget.dataset;
  37. wx.showLoading({
  38. title: '加载中...',
  39. })
  40. wx.downloadFile({
  41. url: item.url,
  42. complete({
  43. statusCode,
  44. tempFilePath
  45. }) {
  46. if (statusCode != 200) return;
  47. wx.openDocument({
  48. filePath: tempFilePath,
  49. fileType: item.postfix,
  50. showMenu: true,
  51. complete({
  52. errMsg
  53. }) {
  54. wx.hideLoading();
  55. if (errMsg != "openDocument:ok") wx.showToast({
  56. title: '打开失败',
  57. icon: "none"
  58. })
  59. }
  60. })
  61. }
  62. })
  63. },
  64. /* 删除文件 */
  65. handleDeleteFile(e) {
  66. let item = e.currentTarget.dataset.item || e.currentTarget.dataset.item;
  67. _Http.basic({
  68. "classname": "system.attachment.Attachment",
  69. "method": "deleteFileLink",
  70. "content": {
  71. "linksids": [item.linksid]
  72. }
  73. }).then(res => {
  74. if (res.msg != '成功') return wx.showToast({
  75. title: res.data,
  76. icon: "none"
  77. });
  78. let files = this.data.files;
  79. switch (item.fileType) {
  80. case "image":
  81. files.images = files.images.filter(v => v.url != item.url);
  82. files.viewImages = files.viewImages.filter(v => v.url != item.url);
  83. break;
  84. case "video":
  85. files.videos = files.videos.filter(v => v.url != item.url);
  86. files.viewVideos = files.viewVideos.filter(v => v.url != item.url);
  87. break;
  88. default:
  89. files.files = files.files.filter(v => v.attachmentid != item.attachmentid);
  90. break;
  91. };
  92. this.setData({
  93. files
  94. });
  95. this.triggerEvent("deleteCallBack")
  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. })