TextMessageRender.vue 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <template>
  2. <view class="text_message_container bg_container">
  3. <mp-html
  4. @linktap="navigate"
  5. :previewImg="false"
  6. :showImgMenu="false"
  7. :lazyLoad="false"
  8. :content="getContent"
  9. />
  10. <!-- <u-parse :imgOptions="false" @navigate="navigate" :content="getContent" /> -->
  11. </view>
  12. </template>
  13. <script>
  14. import { parseBr } from "../../../../../util/common";
  15. import { parseAt, parseLink } from "../../../../../util/imCommon";
  16. import { MessageType } from "openim-uniapp-polyfill";
  17. export default {
  18. name: "TextMessageRender",
  19. components: {},
  20. props: {
  21. message: Object,
  22. },
  23. computed: {
  24. getContent() {
  25. if (this.message.contentType === MessageType.QuoteMessage) {
  26. return this.message.quoteElem.text;
  27. }
  28. if (this.message.contentType === MessageType.AtTextMessage) {
  29. return parseAt(this.message.atTextElem);
  30. }
  31. return parseLink(parseBr(this.message.textElem?.content));
  32. },
  33. },
  34. data() {
  35. return {};
  36. },
  37. methods: {
  38. navigate(link) {
  39. // console.log(link);
  40. if (link.innerText.includes("@")) {
  41. this.$emit("showInfo", link.href);
  42. }
  43. },
  44. },
  45. };
  46. </script>
  47. <style lang="scss" scoped>
  48. .bg_container {
  49. padding: 16rpx 24rpx;
  50. border-radius: 0rpx 12rpx 12rpx 12rpx;
  51. background-color: #f0f0f0;
  52. }
  53. </style>