From 1aab8dfc4e62461a5821c9a673b0df1a4f602bbb Mon Sep 17 00:00:00 2001
From: xuncha <1658671838@qq.com>
Date: Fri, 6 Feb 2026 23:37:50 +0800
Subject: [PATCH] =?UTF-8?q?=E8=81=8A=E5=A4=A9=E9=A1=B5=E9=9D=A2=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=E5=AF=BC=E5=87=BA=E6=8C=89=E9=92=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/ChatPage.tsx | 24 ++++++++++++++++++++++--
src/pages/ExportPage.tsx | 35 ++++++++++++++++++++++++++++++++++-
2 files changed, 56 insertions(+), 3 deletions(-)
diff --git a/src/pages/ChatPage.tsx b/src/pages/ChatPage.tsx
index 9c5b94a..691b048 100644
--- a/src/pages/ChatPage.tsx
+++ b/src/pages/ChatPage.tsx
@@ -1,5 +1,6 @@
import React, { useState, useEffect, useRef, useCallback, useMemo } from 'react'
-import { Search, MessageSquare, AlertCircle, Loader2, RefreshCw, X, ChevronDown, Info, Calendar, Database, Hash, Play, Pause, Image as ImageIcon, Link, Mic, CheckCircle, Copy, Check } from 'lucide-react'
+import { Search, MessageSquare, AlertCircle, Loader2, RefreshCw, X, ChevronDown, Info, Calendar, Database, Hash, Play, Pause, Image as ImageIcon, Link, Mic, CheckCircle, Copy, Check, Download } from 'lucide-react'
+import { useNavigate } from 'react-router-dom'
import { createPortal } from 'react-dom'
import { useChatStore } from '../stores/chatStore'
import { useBatchTranscribeStore } from '../stores/batchTranscribeStore'
@@ -117,6 +118,8 @@ const SessionItem = React.memo(function SessionItem({
function ChatPage(_props: ChatPageProps) {
+ const navigate = useNavigate()
+
const {
isConnected,
isConnecting,
@@ -1228,7 +1231,7 @@ function ChatPage(_props: ChatPageProps) {
return
}
- const voiceMessages = result.messages
+ const voiceMessages: Message[] = result.messages
if (voiceMessages.length === 0) {
alert('当前会话没有语音消息')
return
@@ -1245,6 +1248,15 @@ function ChatPage(_props: ChatPageProps) {
setShowBatchConfirm(true)
}, [sessions, currentSessionId, isBatchTranscribing])
+ const handleExportCurrentSession = useCallback(() => {
+ if (!currentSessionId) return
+ navigate('/export', {
+ state: {
+ preselectSessionIds: [currentSessionId]
+ }
+ })
+ }, [currentSessionId, navigate])
+
// 确认批量转写
const confirmBatchTranscribe = useCallback(async () => {
if (!currentSessionId) return
@@ -1465,6 +1477,14 @@ function ChatPage(_props: ChatPageProps) {
)}
+