chore(addon/aikefu): 会话管理中,查看消息列表

This commit is contained in:
2025-12-08 17:15:50 +08:00
parent 6c5f163287
commit d3f56b899e

View File

@@ -19,6 +19,50 @@
.status-inactive { .status-inactive {
color: #faad14; color: #faad14;
} }
/* 简单消息列表样式 */
.simple-message-list {
max-height: 500px;
overflow-y: auto;
padding: 15px;
}
.message-item {
margin-bottom: 15px;
padding: 10px;
border-radius: 4px;
}
.message-item.user {
background-color: #e6f7ff;
border-left: 3px solid #1890ff;
}
.message-item.assistant {
background-color: #f6ffed;
border-left: 3px solid #52c41a;
}
.message-header {
display: flex;
justify-content: space-between;
margin-bottom: 5px;
font-size: 12px;
}
.message-role {
font-weight: bold;
color: #333;
}
.message-time {
color: #999;
}
.message-content {
font-size: 14px;
line-height: 1.4;
color: #666;
word-break: break-word;
}
.empty-message {
text-align: center;
color: #999;
padding: 30px;
}
</style> </style>
<div class="layui-card-body"> <div class="layui-card-body">
@@ -66,6 +110,30 @@
</div> </div>
</script> </script>
<!-- 简单消息列表模板 -->
<script type="text/html" id="messageListTpl">
<div class="simple-message-list">
{{# if(d.length > 0) {
d.forEach(function(item) {
var roleClass = item.role === 'user' ? 'user' : 'assistant';
var roleText = item.role === 'user' ? '用户' : '机器人';
}}}
<div class="message-item {{roleClass}}">
<div class="message-header">
<span class="message-role">{{roleText}}</span>
<span class="message-time">{{item.create_time}}</span>
</div>
<div class="message-content">{{item.content}}</div>
</div>
{{# });
} else {
}}}
<div class="empty-message">暂无消息记录</div>
{{# }
}}
</div>
</script>
<script> <script>
layui.use(['table', 'form', 'layer'], function() { layui.use(['table', 'form', 'layer'], function() {
var table = layui.table; var table = layui.table;
@@ -140,10 +208,49 @@
if (layEvent === 'view') { if (layEvent === 'view') {
// 查看消息 // 查看消息
layer.open({ layer.open({
type: 2, type: 1,
title: '消息记录', title: '消息记录',
content: ns.url("aikefu://shop/kefu/message", {conversation_id: data.conversation_id}), content: '<div class="simple-message-list" style="padding: 15px; max-height: 500px; overflow-y: auto;">加载中...</div>',
area: ['90%', '90%'] area: ['80%', '70%'],
success: function(layero, index) {
// 获取消息列表
$.ajax({
url: ns.url("aikefu://shop/kefu/getMessageList"),
type: 'POST',
data: {
conversation_id: data.conversation_id,
page: 1,
limit: 100 // 加载最多100条消息
},
dataType: 'json',
success: function(res) {
var messageList = res.data.list || [];
var html = '';
if (messageList.length > 0) {
messageList.forEach(function(item) {
var roleClass = item.role === 'user' ? 'user' : 'assistant';
var roleText = item.role === 'user' ? '用户' : '机器人';
html += '<div class="message-item ' + roleClass + '">';
html += '<div class="message-header">';
html += '<span class="message-role">' + roleText + '</span>';
html += '<span class="message-time">' + item.create_time + '</span>';
html += '</div>';
html += '<div class="message-content">' + item.content + '</div>';
html += '</div>';
});
} else {
html += '<div class="empty-message">暂无消息记录</div>';
}
layero.find('.simple-message-list').html(html);
},
error: function() {
layero.find('.simple-message-list').html('<div class="empty-message">加载消息失败</div>');
}
});
}
}); });
} else if (layEvent === 'end') { } else if (layEvent === 'end') {
// 结束会话 // 结束会话