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