diff --git a/frontend/src/components/business/MeetingCreateDrawer.tsx b/frontend/src/components/business/MeetingCreateDrawer.tsx index 6b72b2a..f711500 100644 --- a/frontend/src/components/business/MeetingCreateDrawer.tsx +++ b/frontend/src/components/business/MeetingCreateDrawer.tsx @@ -259,7 +259,8 @@ export const MeetingCreateDrawer: React.FC = ({ open, open={open} onClose={onCancel} width={960} - destroyOnClose + forceRender + destroyOnClose={false} placement="right" closable={false} footer={ diff --git a/frontend/src/pages/access/permissions/index.tsx b/frontend/src/pages/access/permissions/index.tsx index 14ff16d..c2ef062 100644 --- a/frontend/src/pages/access/permissions/index.tsx +++ b/frontend/src/pages/access/permissions/index.tsx @@ -317,7 +317,7 @@ export default function Permissions() { record.permType !== "button" && !!record.children?.length }} /> - diff --git a/frontend/src/pages/access/roles/index.tsx b/frontend/src/pages/access/roles/index.tsx index 993df08..e17fa48 100644 --- a/frontend/src/pages/access/roles/index.tsx +++ b/frontend/src/pages/access/roles/index.tsx @@ -637,7 +637,7 @@ export default function Roles() {
setSelectedUserKeys(keys as number[]) }} columns={[{ title: "显示名称", dataIndex: "displayName" }, { title: "用户名", dataIndex: "username" }, { title: "手机号", dataIndex: "phone" }]} /> - setDrawerOpen(false)} width={420} destroyOnHidden footer={
}> + setDrawerOpen(false)} width={420} destroyOnHidden forceRender footer={
}>
- - -
- - LIVE SESSION - 会中实时识别 - 会中页面只保留控制区和实时转写流。 - -
- - - - - - - - -
- - } /> - - - -
- -
ASR 模型{sessionDraft.asrModelName}
-
总结模型{sessionDraft.summaryModelName}
-
识别模式{sessionDraft.mode}
-
热词数量{sessionDraft.hotwords.length}
-
- 麦克风输入 -
-
+
+ + {/* 核心转写区域 */} +
+ {transcripts.length === 0 && !streamingText ? ( +
+ +
+ ) : ( +
+ {transcripts.map((item) => ( +
+
+ } style={{ background: "linear-gradient(135deg, #7a84ff, #9363ff)", border: "none" }} /> +
+
+
+ {item.speakerName} + {formatTranscriptTime(item.startTime)} +
+
{item.text}
- -
+ ))} -
- -
- - - -
- -
-
- 实时转写流 - 优先展示最终片段,流式草稿保留在底部作为当前正在识别的内容。 -
- - } color={recording ? "processing" : sessionStatus?.status === "ACTIVE" && hasRemoteActiveConnection ? "processing" : sessionStatus?.status === "PAUSED_RESUMABLE" || sessionStatus?.status === "PAUSED_EMPTY" ? "warning" : "default"}>{recording ? "采集中" : connecting ? "连接中" : sessionStatus?.status === "ACTIVE" && hasRemoteActiveConnection ? "连接占用中" : sessionStatus?.status === "PAUSED_RESUMABLE" || sessionStatus?.status === "PAUSED_EMPTY" ? "已暂停" : "待命"} - {sessionDraft.asrModelName} - -
- -
- {transcripts.length === 0 && !streamingText ? ( -
- + {streamingText ? ( +
+
+ } style={{ background: "#cbd5e1", border: "none" }} /> +
+
+
+ {streamingSpeaker} + ... +
+
{streamingText}
+
- ) : ( - - {transcripts.map((item) => ( -
-
{formatTranscriptTime(item.startTime)}
-
-
- } className="transcript-avatar" /> - {item.speakerName} - {item.userId ? UID: {item.userId} : null} - {formatTranscriptTime(item.startTime)} - {formatTranscriptTime(item.endTime)} -
-
{item.text}
-
-
- ))} - - {streamingText ? ( -
-
--:--
-
-
- } className="transcript-avatar" /> - {streamingSpeaker} - 流式草稿 -
-
{streamingText}
-
-
- ) : null} -
- )} + ) : null}
- - - + )} +
+ + {/* 底部悬浮控制条 */} +
+
+
+ {recording ? : } +
+
+
+ {recording ? "录音中..." : connecting ? "连接中..." : sessionStatus?.status === "PAUSED_RESUMABLE" || sessionStatus?.status === "PAUSED_EMPTY" ? "已暂停" : "待命"} +
+
+ {formatClock(elapsedSeconds)} +
+
+
+ + +
+ )} diff --git a/frontend/src/pages/organization/orgs/index.tsx b/frontend/src/pages/organization/orgs/index.tsx index d87ecec..f5e0e9c 100644 --- a/frontend/src/pages/organization/orgs/index.tsx +++ b/frontend/src/pages/organization/orgs/index.tsx @@ -185,7 +185,7 @@ export default function Orgs() { )}
-