2.3.9 历史回复列表
This commit is contained in:
@@ -123,7 +123,7 @@
|
||||
未启动任务
|
||||
</div>
|
||||
<!-- 统计数据 -->
|
||||
<div class="mt-2 pt-2 border-t border-gray-200 space-y-1">
|
||||
<div class="mt-2 pt-2 border-t border-gray-200 space-y-1 relative">
|
||||
<div class="flex items-center justify-between text-xs">
|
||||
<span class="text-gray-500">已打招呼</span>
|
||||
<span class="text-blue-600 font-medium">{{ greetingStats.greetingCount }} 位</span>
|
||||
@@ -134,7 +134,33 @@
|
||||
</div>
|
||||
<div class="flex items-center justify-between text-xs">
|
||||
<span class="text-gray-500">已回复</span>
|
||||
<span class="text-emerald-600 font-medium">{{ greetingStats.replyCount || 0 }} 条</span>
|
||||
<div class="flex items-center gap-1">
|
||||
<button @click="showReplyList" class="text-blue-500 hover:text-blue-600 hover:underline cursor-pointer" title="查看回复列表">
|
||||
历史回复
|
||||
</button>
|
||||
<span class="text-emerald-600 font-medium">{{ greetingStats.replyCount || 0 }} 条</span>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 回复列表弹出框 -->
|
||||
<div v-if="replyListVisible" class="absolute left-0 right-0 bottom-full mb-1 bg-white border border-gray-200 rounded-lg shadow-lg z-50 max-h-48 overflow-hidden" :style="{ maxWidth: sidebarWidth + 'px' }">
|
||||
<div class="flex items-center justify-between px-3 py-2 border-b border-gray-100 bg-gray-50">
|
||||
<span class="text-xs font-semibold text-gray-600">历史回复列表</span>
|
||||
<button @click="replyListVisible = false" class="text-gray-400 hover:text-gray-600">
|
||||
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
<div class="overflow-y-auto max-h-36">
|
||||
<div v-if="repliedSessions.length === 0" class="text-gray-400 text-xs text-center py-3">
|
||||
暂无回复记录
|
||||
</div>
|
||||
<div v-else>
|
||||
<div v-for="(name, index) in repliedSessions" :key="index" class="px-3 py-1.5 text-xs text-gray-700 hover:bg-gray-50 border-b border-gray-50 last:border-0 truncate" :title="name">
|
||||
{{ name }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -160,6 +186,26 @@ const props = defineProps({
|
||||
|
||||
const emit = defineEmits(['tabSwitch', 'goBack', 'stopAll'])
|
||||
|
||||
// 回复列表相关
|
||||
const replyListVisible = ref(false)
|
||||
/** @type {import('vue').Ref<string[]>} */
|
||||
const repliedSessions = ref([])
|
||||
|
||||
// 显示回复列表
|
||||
const showReplyList = async () => {
|
||||
replyListVisible.value = !replyListVisible.value
|
||||
if (replyListVisible.value && window.electronAPI?.getRepliedSessions) {
|
||||
try {
|
||||
const result = await window.electronAPI.getRepliedSessions()
|
||||
// 最新的在最后,前端展示时保持原顺序(最下边是最新的)
|
||||
repliedSessions.value = result || []
|
||||
} catch (e) {
|
||||
console.error('获取回复列表失败:', e)
|
||||
repliedSessions.value = []
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Event handlers
|
||||
const onTabSwitch = (id) => emit('tabSwitch', id)
|
||||
const onGoBack = () => emit('goBack')
|
||||
|
||||
1
src/types/electron.d.ts
vendored
1
src/types/electron.d.ts
vendored
@@ -126,6 +126,7 @@ export interface ElectronAPI {
|
||||
|
||||
// 打招呼统计
|
||||
getGreetingStats: () => Promise<GreetingStats>
|
||||
getRepliedSessions: () => Promise<string[]>
|
||||
|
||||
// 获取打招呼内容
|
||||
fetchPrologue: () => Promise<{ success: boolean; data?: string[]; error?: string }>
|
||||
|
||||
Reference in New Issue
Block a user