管理员可以看到所有会话了

This commit is contained in:
yml
2026-06-05 19:43:55 +08:00
parent 59093f8fd5
commit 92c603794a
5 changed files with 236 additions and 31 deletions
@@ -196,12 +196,17 @@ function roleLabel(role: string) {
support: '客服',
customer: '咨询',
system: '系统',
admin: '管理员',
}
return map[role] || '成员'
}
function senderLabel(message: ChatMessage) {
if (message.sender_type === 'system') return '系统'
// 管理员消息特殊标识
if (message.sender_role === 'admin') {
return `管理员 · ${message.sender_name}`
}
return `${roleLabel(message.sender_role)} · ${message.sender_name}`
}
</script>
@@ -228,7 +233,11 @@ function senderLabel(message: ChatMessage) {
v-for="item in messages"
:key="item.id"
class="message-row"
:class="{ self: item.is_self, system: item.sender_type === 'system' }"
:class="{
self: item.is_self,
system: item.sender_type === 'system',
admin: item.sender_role === 'admin' && !item.is_self
}"
>
<template v-if="item.sender_type === 'system'">
<span class="system-message">{{ item.content }}</span>
@@ -236,7 +245,9 @@ function senderLabel(message: ChatMessage) {
<template v-else>
<div class="avatar">{{ roleLabel(item.sender_role).slice(0, 1) }}</div>
<div class="bubble-wrap">
<span class="sender-name">{{ senderLabel(item) }}</span>
<span class="sender-name" :class="{ 'admin-label': item.sender_role === 'admin' && !item.is_self }">
{{ senderLabel(item) }}
</span>
<div v-if="item.content" class="bubble">{{ item.content }}</div>
<div v-if="item.attachment_urls.length > 0" class="message-attachments">
<ChatAttachmentImage
@@ -421,6 +432,20 @@ function senderLabel(message: ChatMessage) {
background: #dff5eb;
}
.message-row.admin .bubble {
background: #fff4e6;
border-left: 3px solid #ff9800;
}
.message-row.admin .avatar {
background: #ff9800;
}
.admin-label {
color: #ff9800;
font-weight: 600;
}
.message-attachments {
display: grid;
gap: 6px;