This commit is contained in:
2025-09-27 22:57:59 +08:00
parent 8a458ff0a4
commit ed26244cdb
12585 changed files with 1914308 additions and 3474 deletions

View File

@@ -7,7 +7,7 @@
<el-select v-model="q.status" style="width:140px"><el-option label="未解决" value="open" /><el-option label="已解决" value="resolved" /></el-select>
</el-form-item>
<el-form-item label="关键词">
<el-input v-model="q.kw" placeholder="主题/内容/用户ID" clearable />
<el-input v-model="q.kw" placeholder="内容/用户ID" clearable />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="fetch">查询</el-button>
@@ -19,15 +19,16 @@
<el-table :data="rows" size="large" @row-dblclick="openReply">
<el-table-column prop="id" label="ID" width="80" />
<el-table-column prop="userId" label="用户ID" width="100" />
<el-table-column prop="topic" label="主题" width="220" />
<el-table-column prop="message" label="内容" />
<el-table-column prop="replyContent" label="回复内容" />
<el-table-column label="状态" width="120">
<template #default="{row}"><el-tag :type="row.status==='resolved'?'success':'warning'">{{ row.status==='resolved'?'已解决':'未解决' }}</el-tag></template>
</el-table-column>
<el-table-column fixed="right" label="操作" width="220">
<template #default="{row}">
<el-button size="small" type="primary" @click="openReply(row)">回复</el-button>
<el-button size="small" type="primary" @click="openReply(row)" :disabled="row.status==='resolved'">回复</el-button>
<el-button size="small" @click="resolve(row)" v-if="row.status!=='resolved'">标记解决</el-button>
<el-button size="small" v-if="row.replyContent" @click="viewReply(row)">查看回复</el-button>
</template>
</el-table-column>
</el-table>
@@ -47,6 +48,7 @@
<script setup lang="ts">
import { ref, reactive, onMounted } from 'vue'
import { ElMessageBox } from 'element-plus'
import { get, post, put } from '../../api/http'
const q = reactive({ status: 'open', kw: '' })
@@ -64,6 +66,7 @@ function reset(){ q.status='open'; q.kw=''; fetch() }
function openReply(row: any){ visible.value = true; current.value = row; reply.value='' }
async function sendReply(){ await post(`/api/admin/consults/${current.value.id}/reply`, { content: reply.value }); visible.value=false; await fetch() }
async function resolve(row: any){ await put(`/api/admin/consults/${row.id}/resolve`, {}); row.status = 'resolved' }
function viewReply(row: any){ ElMessageBox.alert(row.replyContent || '无', '已回复内容', { confirmButtonText: '知道了' }) }
onMounted(fetch)
</script>