index.vue 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <template>
  2. <view>
  3. <view class="TUI-fileMessage">
  4. <view class="fileMessage">
  5. <view class="fileMessage-box">
  6. <image class="file-icon" src="../../../../../static/images/file.png"></image>
  7. <label @tap="download" class="file-title">{{ filePayload.fileName }}</label>
  8. </view>
  9. </view>
  10. </view>
  11. <view class="pop" v-if="Show">
  12. <view class="text-box"><text class="download-confirm" @tap.stop="downloadConfirm">下载</text></view>
  13. <view class="text-box"><text class="abandon" @tap="cancel">取消</text></view>
  14. </view>
  15. </view>
  16. </template>
  17. <script>
  18. export default {
  19. data() {
  20. return {
  21. Show: false,
  22. filePayload: {}
  23. };
  24. },
  25. components: {},
  26. props: {
  27. message: {
  28. type: Object,
  29. default: () => {}
  30. },
  31. isMine: {
  32. type: Boolean,
  33. default: true
  34. }
  35. },
  36. watch: {
  37. message: {
  38. handler: function(newVal) {
  39. this.setData({
  40. filePayload: newVal.payload
  41. });
  42. },
  43. immediate: true,
  44. deep: true
  45. }
  46. },
  47. methods: {
  48. download() {
  49. this.setData({
  50. Show: true
  51. });
  52. },
  53. downloadConfirm() {
  54. uni.downloadFile({
  55. url: this.filePayload.fileUrl,
  56. success(res) {
  57. const filePath = res.tempFilePath;
  58. uni.openDocument({
  59. filePath,
  60. success() {
  61. console.log('打开文档成功');
  62. }
  63. });
  64. }
  65. });
  66. },
  67. cancel() {
  68. this.setData({
  69. Show: false
  70. });
  71. }
  72. }
  73. };
  74. </script>
  75. <style>
  76. @import './index.css';
  77. </style>