index.js 4.6 KB

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