From b64a0deae5b5d33f9e20671a68936b27f0b9b00b Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 21 七月 2026 18:03:03 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_pro2.0' into dev_pro2.0

---
 src/views/im/manager/message/group/modules/detail.vue |   92 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 92 insertions(+), 0 deletions(-)

diff --git a/src/views/im/manager/message/group/modules/detail.vue b/src/views/im/manager/message/group/modules/detail.vue
new file mode 100644
index 0000000..dae8977
--- /dev/null
+++ b/src/views/im/manager/message/group/modules/detail.vue
@@ -0,0 +1,92 @@
+<script lang="ts" setup>
+import type { ImManagerGroupMessageApi } from '#/api/im/manager/message/group';
+
+import { ref } from 'vue';
+
+import { DICT_TYPE } from '#/packages/constants/src';
+
+import { Descriptions, DescriptionsItem, Modal } from 'ant-design-vue';
+
+import { DictTag } from '#/components/dict-tag';
+import {
+  formatDateTimeText,
+  formatGroupLabel,
+  formatJsonText,
+  formatUserLabel,
+} from '#/views/im/manager/utils/format';
+import { MESSAGE_GROUP_READ_ENABLED } from '#/views/im/utils/config';
+import {
+  IM_AT_ALL_NICKNAME,
+  IM_AT_ALL_USER_ID,
+} from '#/views/im/utils/constants';
+
+import { MessageContentPreview } from '../..';
+
+const visible = ref(false);
+const detail = ref<ImManagerGroupMessageApi.GroupMessage>({} as ImManagerGroupMessageApi.GroupMessage);
+
+/** 鎵撳紑璇︽儏 */
+function open(row: ImManagerGroupMessageApi.GroupMessage) {
+  detail.value = row;
+  visible.value = true;
+}
+
+defineExpose({ open });
+</script>
+
+<template>
+  <Modal v-model:open="visible" :footer="null" title="缇よ亰娑堟伅璇︽儏" width="700px">
+    <Descriptions bordered :column="2">
+      <DescriptionsItem label="缂栧彿">{{ detail.id }}</DescriptionsItem>
+      <DescriptionsItem label="瀹㈡埛绔紪鍙�">
+        {{ detail.clientMessageId || '-' }}
+      </DescriptionsItem>
+      <DescriptionsItem label="缇�">
+        {{ formatGroupLabel(detail.groupName, detail.groupId) }}
+      </DescriptionsItem>
+      <DescriptionsItem label="鍙戦�佷汉">
+        {{ formatUserLabel(detail.senderNickname, detail.senderId) }}
+      </DescriptionsItem>
+      <DescriptionsItem label="绫诲瀷">
+        <DictTag :type="DICT_TYPE.IM_CONTENT_TYPE" :value="detail.type" />
+      </DescriptionsItem>
+      <DescriptionsItem label="鐘舵��">
+        <DictTag :type="DICT_TYPE.IM_MESSAGE_STATUS" :value="detail.status" />
+      </DescriptionsItem>
+      <DescriptionsItem v-if="MESSAGE_GROUP_READ_ENABLED" label="鍥炴墽" :span="2">
+        <DictTag
+          :type="DICT_TYPE.IM_MESSAGE_RECEIPT_STATUS"
+          :value="detail.receiptStatus"
+        />
+      </DescriptionsItem>
+      <DescriptionsItem label="@鐢ㄦ埛" :span="2">
+        <template v-if="detail.atUserIds?.length">
+          <span v-for="(userId, index) in detail.atUserIds" :key="userId">
+            <span v-if="Number(index) > 0">銆�</span>
+            <template v-if="userId === IM_AT_ALL_USER_ID">
+              @{{ IM_AT_ALL_NICKNAME }}
+            </template>
+            <template v-else>
+              @{{ detail.atUserNicknames?.[index] || userId }}
+              <span class="text-gray-400">({{ userId }})</span>
+            </template>
+          </span>
+        </template>
+        <span v-else>-</span>
+      </DescriptionsItem>
+      <DescriptionsItem label="鍙戦�佹椂闂�" :span="2">
+        {{ formatDateTimeText(detail.sendTime) }}
+      </DescriptionsItem>
+      <DescriptionsItem label="娑堟伅鍐呭" :span="2">
+        <MessageContentPreview
+          :content="detail.content"
+          :sender-nickname="detail.senderNickname"
+          :type="detail.type"
+        />
+      </DescriptionsItem>
+      <DescriptionsItem label="鍘熷 JSON" :span="2">
+        <pre class="m-0 whitespace-pre-wrap break-all rounded bg-gray-100 p-2 font-mono text-xs">{{ formatJsonText(detail.content) }}</pre>
+      </DescriptionsItem>
+    </Descriptions>
+  </Modal>
+</template>

--
Gitblit v1.9.3