index.vue 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <template>
  2. <view class="page_container">
  3. <custom-nav-bar :title="title" />
  4. <u-list class="message_list" height="1">
  5. <u-list-item v-for="message in mergeList" :key="message.clientMsgID">
  6. <nomal-message-item @click="clickMessage" :source="message" />
  7. </u-list-item>
  8. </u-list>
  9. </view>
  10. </template>
  11. <script>
  12. import { myPreview } from "../../../util/preview";
  13. import CustomNavBar from "../../../components/CustomNavBar/index.vue";
  14. import NomalMessageItem from "./NomalMessageItem.vue";
  15. import { MessageType } from "openim-uniapp-polyfill";
  16. export default {
  17. components: {
  18. CustomNavBar,
  19. NomalMessageItem,
  20. },
  21. data() {
  22. return {
  23. mergeList: [],
  24. title: "",
  25. };
  26. },
  27. onLoad(options) {
  28. try {
  29. const mergeData = JSON.parse(decodeURIComponent(options.mergeData));
  30. this.mergeList = mergeData.multiMessage;
  31. this.title = mergeData.title;
  32. } catch (e) {}
  33. },
  34. methods: {
  35. clickMessage(message) {
  36. switch (message.contentType) {
  37. case MessageType.PictureMessage:
  38. // uni.previewImage({
  39. // urls: [message.pictureElem.sourcePicture.url],
  40. // });
  41. myPreview(0, [message.pictureElem.sourcePicture.url])
  42. break;
  43. case MessageType.VideoMessage:
  44. uni.$u.route("/pages_im/pages/conversation/previewVideo/index", {
  45. previewVideoUrl: message.videoElem.videoUrl,
  46. });
  47. break;
  48. case MessageType.CardMessage:
  49. uni.$u.route("/pages_im/pages/common/userCard/index", {
  50. sourceID: message.cardElem.userID,
  51. });
  52. break;
  53. case MessageType.LocationMessage:
  54. let locationInifo = {};
  55. try {
  56. locationInifo = JSON.parse(message.locationElem.description);
  57. } catch (e) {}
  58. if (!locationInifo.latng) return;
  59. uni.$u.route("/pages_im/pages/conversation/previewLocation/index", {
  60. latng: locationInifo.latng,
  61. });
  62. break;
  63. case MessageType.MergeMessage:
  64. uni.$u.route("/pages_im/pages/conversation/previewMerge/index", {
  65. mergeData: encodeURIComponent(JSON.stringify(message.mergeElem)),
  66. });
  67. break;
  68. default:
  69. break;
  70. }
  71. },
  72. },
  73. };
  74. </script>
  75. <style lang="scss" scoped>
  76. .page_container {
  77. background-color: #f8f8f8;
  78. .message_list {
  79. flex: 1;
  80. margin-top: 24rpx;
  81. }
  82. }
  83. </style>