消息列表支持显示图片
This commit is contained in:
@@ -82,7 +82,9 @@
|
||||
<!-- 图片消息 -->
|
||||
<div v-else-if="scope.row.message_type == 3">
|
||||
<div>【图片消息】</div>
|
||||
<img v-if="scope.row.message_thumb" :src="scope.row.message_thumb" class="message-thumb" @click="showImage(scope.row)">
|
||||
<!-- 优先使用image_path显示图片,如果没有则回退到message_thumb -->
|
||||
<img v-if="scope.row.image_path" :src="getImageUrl(scope.row.image_path)" class="message-thumb" @click="showImage(scope.row)">
|
||||
<img v-else-if="scope.row.message_thumb" :src="scope.row.message_thumb" class="message-thumb" @click="showImage(scope.row)">
|
||||
</div>
|
||||
|
||||
<!-- 视频消息 -->
|
||||
@@ -133,7 +135,8 @@
|
||||
|
||||
<!-- 图片或视频消息 -->
|
||||
<el-descriptions-item {% raw %}v-if="selectedMessage.message_type == 3 || selectedMessage.message_type == 43"{% endraw %} label="媒体内容">
|
||||
<img {% raw %}v-if="selectedMessage.message_type == 3 && selectedMessage.message_thumb" :src="selectedMessage.message_thumb"{% endraw %} style="max-width: 100%;">
|
||||
<img {% raw %}v-if="selectedMessage.message_type == 3 && selectedMessage.image_path" :src="getImageUrl(selectedMessage.image_path)"{% endraw %} style="max-width: 100%;">
|
||||
<img {% raw %}v-else-if="selectedMessage.message_type == 3 && selectedMessage.message_thumb" :src="selectedMessage.message_thumb"{% endraw %} style="max-width: 100%;">
|
||||
<video {% raw %}v-if="selectedMessage.message_type == 43 && selectedMessage.attachment_url" :src="selectedMessage.attachment_url"{% endraw %} controls style="max-width: 100%;"></video>
|
||||
</el-descriptions-item>
|
||||
|
||||
@@ -146,7 +149,8 @@
|
||||
|
||||
<!-- 图片预览 -->
|
||||
<el-dialog {% raw %}:visible.sync="imageDialogVisible"{% endraw %} append-to-body width="80%" class="image-dialog">
|
||||
<img {% raw %}v-if="selectedMessage && selectedMessage.message_thumb" :src="selectedMessage.message_thumb"{% endraw %} style="max-width: 100%;">
|
||||
<img {% raw %}v-if="selectedMessage && selectedMessage.image_path" :src="getImageUrl(selectedMessage.image_path)"{% endraw %} style="max-width: 100%;">
|
||||
<img {% raw %}v-else-if="selectedMessage && selectedMessage.message_thumb" :src="selectedMessage.message_thumb"{% endraw %} style="max-width: 100%;">
|
||||
</el-dialog>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -332,6 +336,25 @@
|
||||
49: '链接消息'
|
||||
};
|
||||
return typeMap[type] || `未知类型(${type})`;
|
||||
},
|
||||
getImageUrl(imagePath) {
|
||||
// 如果路径为空,返回空字符串
|
||||
if (!imagePath) return '';
|
||||
|
||||
// 提取文件名
|
||||
const fileName = imagePath.split('\\').pop().split('/').pop();
|
||||
|
||||
// 检查路径中是否包含static/images
|
||||
if (imagePath.includes('static/images') || imagePath.includes('static\\images')) {
|
||||
// 提取static/images后面的部分
|
||||
const parts = imagePath.split(/static[\/\\]images[\/\\]/);
|
||||
if (parts.length > 1) {
|
||||
return `/static/images/${parts[1]}`;
|
||||
}
|
||||
}
|
||||
|
||||
// 如果不包含static/images,则直接使用文件名
|
||||
return `/static/images/${fileName}`;
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
|
||||
@@ -129,7 +129,7 @@ class MessageStorageDB(BaseDBOperator):
|
||||
sql_count = "SELECT COUNT(*) as total FROM messages WHERE 1=1 "
|
||||
sql_data = """
|
||||
SELECT id, group_id, timestamp, sender, content, message_type,
|
||||
attachment_url, message_id, message_xml, message_thumb
|
||||
attachment_url, message_id, message_xml, message_thumb, image_path
|
||||
FROM messages
|
||||
WHERE 1=1
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user