MultipleForward.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <template>
  2. <view class="flex forward">
  3. <view class="flex-sub" @tap="handleCloseMultiple">
  4. <text class="cuIcon-close text-xxl"></text>
  5. <view>取消</view>
  6. </view>
  7. <view class="flex-sub" @tap="sendMultiple">
  8. <text class="cuIcon-forward text-xxl"></text>
  9. <view>合并转发</view>
  10. </view>
  11. <view class="flex-sub" @tap="sendSingle">
  12. <text class="cuIcon-forwardfill text-xxl"></text>
  13. <view>逐条转发</view>
  14. </view>
  15. <view class="flex-sub" @tap="storeMessage">
  16. <text class="cuIcon-favor text-xxl"></text>
  17. <view>收藏</view>
  18. </view>
  19. </view>
  20. </template>
  21. <script setup lang="ts">
  22. import {useMessageStore} from "@/store/messageStore";
  23. import {storeToRefs} from "pinia";
  24. import MessageUtils from "@/utils/MessageUtils";
  25. import type Collect from "@/mode/Collect";
  26. import CollectApi from "@/api/CollectApi";
  27. import {onUnload} from "@dcloudio/uni-app";
  28. const messageStore = useMessageStore()
  29. const { checkList } = storeToRefs(messageStore)
  30. /**
  31. * 关闭多选
  32. */
  33. const handleCloseMultiple = () => {
  34. messageStore.setShowMultipleCheck(false)
  35. messageStore.setCheckList([])
  36. }
  37. /**
  38. * 组件销毁,清空选中
  39. */
  40. onUnload(() => {
  41. handleCloseMultiple()
  42. })
  43. /**
  44. * 合并转发
  45. */
  46. const sendMultiple = (): void => {
  47. if (checkList.value.length > 0) {
  48. uni.navigateTo({
  49. url: `/pages/chat/send-other?multiple=true`
  50. })
  51. } else {
  52. MessageUtils.message('请选择转发的消息')
  53. }
  54. }
  55. /**
  56. * 逐条转发
  57. */
  58. const sendSingle = (): void => {
  59. if (checkList.value.length > 0) {
  60. uni.navigateTo({
  61. url: `/pages/chat/send-other`
  62. })
  63. } else {
  64. MessageUtils.message('请选择转发的消息')
  65. }
  66. }
  67. const storeMessage = (): void => {
  68. checkList.value.forEach((message) => {
  69. const collect: Collect = {
  70. fromId: message.fromId,
  71. content: message.content,
  72. messageType: message.messageType,
  73. extend: message.extend == null ? '' : JSON.stringify(message.extend),
  74. sendTime: message.timestamp
  75. }
  76. CollectApi.save(collect)
  77. })
  78. messageStore.setCheckList([])
  79. handleCloseMultiple()
  80. MessageUtils.message('收藏成功')
  81. }
  82. </script>
  83. <style scoped lang="scss">
  84. .forward{
  85. display: flex;
  86. width: 100vw;
  87. position: fixed;
  88. bottom: 0;
  89. left: 0;
  90. z-index: 999999;
  91. background-color: #ffffff;
  92. padding: 10px;
  93. view{
  94. color: #999999;
  95. text-align: center;
  96. font-size: 24upx;
  97. .text-xxl{
  98. font-size: 40upx;
  99. }
  100. }
  101. }
  102. </style>