From 27cd042df9aca0383a49f3514bc21958dd890912 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 29 六月 2026 15:42:23 +0800
Subject: [PATCH] 银川 1.联调产品维护页面 2.添加IM即时通讯模块

---
 src/views/im/home/pages/conversation/components/message/tip-segments.vue |   54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 54 insertions(+), 0 deletions(-)

diff --git a/src/views/im/home/pages/conversation/components/message/tip-segments.vue b/src/views/im/home/pages/conversation/components/message/tip-segments.vue
new file mode 100644
index 0000000..19b7be2
--- /dev/null
+++ b/src/views/im/home/pages/conversation/components/message/tip-segments.vue
@@ -0,0 +1,54 @@
+<!--
+  娑堟伅鏂囨湰鐗囨娓叉煋锛歵ip 鏂囨 + TEXT 姘旀场鍏辩敤
+  - mention 娈垫寕鐐瑰嚮 鈫� openMentionUserInfoCardAtEvent
+  - link 娈垫覆鏌� <a target="_blank">锛屾祻瑙堝櫒榛樿琛屼负鎵撳紑鏂版爣绛�
+  - text 娈靛師鏍疯緭鍑�
+-->
+<script lang="ts" setup>
+import type { TipSegment } from '#/views/im/utils/message'
+
+import { IM_AT_ALL_USER_ID } from '#/views/im/utils/constants'
+import { openMentionUserInfoCardAtEvent } from '#/views/im/utils/user'
+
+defineOptions({ name: 'ImTipSegments' })
+
+defineProps<{
+  segments: TipSegment[]
+}>()
+
+/** @鍏ㄤ綋鎴愬憳鏄箍鎾� mention锛屼粎楂樹寒閰嶈壊锛屼笉鎸傚彲鐐瑰嚮浜や簰 */
+function isClickableMention(segment: { userId: number }): boolean {
+  return segment.userId !== IM_AT_ALL_USER_ID
+}
+
+/** mention 娈电偣鍑伙細fallbackName 鍙� segment 鏂囨湰锛岄伩鍏� friend / member 閮芥煡涓嶅埌鏃跺脊绌� */
+function handleMentionClick(
+  segment: { text: string; type: 'mention'; userId: number; },
+  event: MouseEvent
+) {
+  if (!isClickableMention(segment)) {
+    return
+  }
+  openMentionUserInfoCardAtEvent(segment.userId, event, segment.text)
+}
+</script>
+
+<template>
+  <template v-for="(segment, _index) in segments" :key="_index">
+    <span
+      v-if="segment.type === 'mention'"
+      class="text-[#576b95]"
+      :class="{ 'cursor-pointer hover:underline': isClickableMention(segment) }"
+      @click.stop="handleMentionClick(segment, $event)"
+      >{{ segment.text }}</span>
+    <a
+      v-else-if="segment.type === 'link'"
+      :href="segment.href"
+      target="_blank"
+      rel="noopener noreferrer"
+      class="text-[#576b95] hover:underline break-all"
+      @click.stop
+      >{{ segment.text }}</a>
+    <span v-else>{{ segment.text }}</span>
+  </template>
+</template>

--
Gitblit v1.9.3