提交消息列表功能

This commit is contained in:
liuwei
2025-04-01 14:04:10 +08:00
parent 325c21b181
commit 5db76f1a46

View File

@@ -8,37 +8,38 @@
<!-- 筛选条件 --> <!-- 筛选条件 -->
<el-card class="filter-card"> <el-card class="filter-card">
<el-form :inline="true" size="small"> <!-- 筛选条件部分 -->
<el-form {% raw %}:inline="true"{% endraw %} size="small">
<el-form-item label="群组"> <el-form-item label="群组">
<el-select v-model="filter.groupId" placeholder="选择群组" clearable> <el-select {% raw %}v-model="filter.groupId"{% endraw %} placeholder="选择群组" clearable>
<el-option <el-option
v-for="group in groups" {% raw %}v-for="group in groups"
:key="group.id" :key="group.id"
:label="group.name" :label="group.name"
:value="group.id"> :value="group.id"{% endraw %}>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="日期范围"> <el-form-item label="日期范围">
<el-date-picker <el-date-picker
v-model="dateRange" {% raw %}v-model="dateRange"
type="daterange" type="daterange"
range-separator="至" range-separator="至"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
:picker-options="pickerOptions"> :picker-options="pickerOptions"{% endraw %}>
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="搜索内容"> <el-form-item label="搜索内容">
<el-input v-model="filter.searchText" placeholder="搜索消息内容" clearable></el-input> <el-input {% raw %}v-model="filter.searchText"{% endraw %} placeholder="搜索消息内容" clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="searchMessages">搜索</el-button> <el-button type="primary" {% raw %}@click="searchMessages"{% endraw %}>搜索</el-button>
<el-button @click="resetFilter">重置</el-button> <el-button {% raw %}@click="resetFilter"{% endraw %}>重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-card> </el-card>
@@ -46,10 +47,10 @@
<!-- 消息列表 --> <!-- 消息列表 -->
<el-card class="message-card"> <el-card class="message-card">
<el-table <el-table
:data="messages" {% raw %}:data="messages"
style="width: 100%" style="width: 100%"
size="small" size="small"
v-loading="loading" v-loading="loading"{% endraw %}
border> border>
<el-table-column <el-table-column
prop="timestamp" prop="timestamp"
@@ -75,7 +76,7 @@
<template slot-scope="scope"> <template slot-scope="scope">
<!-- 文本消息 --> <!-- 文本消息 -->
<div v-if="scope.row.message_type == 1"> <div v-if="scope.row.message_type == 1">
{{ scope.row.content }} {% raw %}{{ scope.row.content }}{% endraw %}
</div> </div>
<!-- 图片消息 --> <!-- 图片消息 -->
@@ -92,7 +93,7 @@
<!-- 其他类型消息 --> <!-- 其他类型消息 -->
<div v-else> <div v-else>
{{ scope.row.content || `【消息类型: ${scope.row.message_type}】` }} {% raw %}{{ scope.row.content || `【消息类型: ${scope.row.message_type}】` }}{% endraw %}
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
@@ -109,43 +110,43 @@
<!-- 分页 --> <!-- 分页 -->
<div class="pagination-container"> <div class="pagination-container">
<el-pagination <el-pagination
@size-change="handleSizeChange" {% raw %}@size-change="handleSizeChange"
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
:current-page="pagination.page" :current-page="pagination.page"
:page-sizes="[10, 20, 50, 100]" :page-sizes="[10, 20, 50, 100]"
:page-size="pagination.pageSize" :page-size="pagination.pageSize"{% endraw %}
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
:total="pagination.total"> {% raw %}:total="pagination.total"{% endraw %}>
</el-pagination> </el-pagination>
</div> </div>
</el-card> </el-card>
<!-- 消息详情对话框 --> <!-- 消息详情对话框 -->
<el-dialog title="消息详情" :visible.sync="detailDialogVisible" width="60%"> <el-dialog title="消息详情" {% raw %}:visible.sync="detailDialogVisible"{% endraw %} width="60%">
<div v-if="selectedMessage"> <div {% raw %}v-if="selectedMessage"{% endraw %}>
<el-descriptions :column="1" border> <el-descriptions {% raw %}:column="1"{% endraw %} border>
<el-descriptions-item label="时间">{{ selectedMessage.timestamp }}</el-descriptions-item> <el-descriptions-item label="时间">{% raw %}{{ selectedMessage.timestamp }}{% endraw %}</el-descriptions-item>
<el-descriptions-item label="群组">{{ selectedMessage.group_name }}</el-descriptions-item> <el-descriptions-item label="群组">{% raw %}{{ selectedMessage.group_name }}{% endraw %}</el-descriptions-item>
<el-descriptions-item label="发送者">{{ selectedMessage.sender_name }}</el-descriptions-item> <el-descriptions-item label="发送者">{% raw %}{{ selectedMessage.sender_name }}{% endraw %}</el-descriptions-item>
<el-descriptions-item label="消息类型">{{ getMessageTypeName(selectedMessage.message_type) }}</el-descriptions-item> <el-descriptions-item label="消息类型">{% raw %}{{ getMessageTypeName(selectedMessage.message_type) }}{% endraw %}</el-descriptions-item>
<el-descriptions-item label="内容">{{ selectedMessage.content }}</el-descriptions-item> <el-descriptions-item label="内容">{% raw %}{{ selectedMessage.content }}{% endraw %}</el-descriptions-item>
<!-- 图片或视频消息 --> <!-- 图片或视频消息 -->
<el-descriptions-item v-if="selectedMessage.message_type == 3 || selectedMessage.message_type == 43" label="媒体内容"> <el-descriptions-item {% raw %}v-if="selectedMessage.message_type == 3 || selectedMessage.message_type == 43"{% endraw %} label="媒体内容">
<img v-if="selectedMessage.message_type == 3 && selectedMessage.message_thumb" :src="selectedMessage.message_thumb" style="max-width: 100%;"> <img {% raw %}v-if="selectedMessage.message_type == 3 && selectedMessage.message_thumb" :src="selectedMessage.message_thumb"{% endraw %} style="max-width: 100%;">
<video v-if="selectedMessage.message_type == 43 && selectedMessage.attachment_url" :src="selectedMessage.attachment_url" controls style="max-width: 100%;"></video> <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> </el-descriptions-item>
<el-descriptions-item label="原始XML" v-if="selectedMessage.message_xml"> <el-descriptions-item label="原始XML" {% raw %}v-if="selectedMessage.message_xml"{% endraw %}>
<pre style="white-space: pre-wrap; word-break: break-all;">{{ selectedMessage.message_xml }}</pre> <pre style="white-space: pre-wrap; word-break: break-all;">{% raw %}{{ selectedMessage.message_xml }}{% endraw %}</pre>
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
</div> </div>
</el-dialog> </el-dialog>
<!-- 图片预览 --> <!-- 图片预览 -->
<el-dialog :visible.sync="imageDialogVisible" append-to-body width="80%" class="image-dialog"> <el-dialog {% raw %}:visible.sync="imageDialogVisible"{% endraw %} append-to-body width="80%" class="image-dialog">
<img v-if="selectedMessage && selectedMessage.message_thumb" :src="selectedMessage.message_thumb" style="max-width: 100%;"> <img {% raw %}v-if="selectedMessage && selectedMessage.message_thumb" :src="selectedMessage.message_thumb"{% endraw %} style="max-width: 100%;">
</el-dialog> </el-dialog>
</div> </div>
{% endblock %} {% endblock %}