diff --git a/src/views/AgentChat/index.js b/src/views/AgentChat/index.js
index b7c9fc29..b35ed975 100644
--- a/src/views/AgentChat/index.js
+++ b/src/views/AgentChat/index.js
@@ -63,6 +63,7 @@ import { StepResultCard } from '@components/ChatBot/StepResultCard';
import { MarkdownWithCharts } from '@components/ChatBot/MarkdownWithCharts';
import { logger } from '@utils/logger';
import axios from 'axios';
+import HomeNavbar from '@components/Navbars/HomeNavbar';
/**
* Agent消息类型
@@ -174,6 +175,18 @@ const AgentChatV4 = () => {
const { user } = useAuth();
const toast = useToast();
+ // 确保组件总是返回有效的 React 元素
+ if (!user) {
+ return (
+
+
+
+ 正在加载...
+
+
+ );
+ }
+
// 会话相关状态
const [sessions, setSessions] = useState([]);
const [currentSessionId, setCurrentSessionId] = useState(null);
@@ -333,18 +346,47 @@ const AgentChatV4 = () => {
// 在 AgentChat 页面隐藏 Bytedesk 客服插件(避免遮挡页面)
useEffect(() => {
- // 隐藏 Bytedesk
- const bytedeskElements = document.querySelectorAll('[class*="bytedesk"], [id*="bytedesk"], [class*="BytedeskWeb"]');
- bytedeskElements.forEach(el => {
- if (el) el.style.display = 'none';
- });
+ // 隐藏 Bytedesk - 更安全的方式
+ const hideBytedeskElements = () => {
+ try {
+ // 查找所有 Bytedesk 相关元素
+ const bytedeskElements = document.querySelectorAll(
+ '[class*="bytedesk"], [id*="bytedesk"], [class*="BytedeskWeb"], .bytedesk-widget'
+ );
+
+ // 保存原始 display 值
+ const originalDisplays = new Map();
+
+ bytedeskElements.forEach(el => {
+ if (el && el.style) {
+ originalDisplays.set(el, el.style.display);
+ el.style.display = 'none';
+ }
+ });
+
+ // 返回清理函数
+ return () => {
+ bytedeskElements.forEach(el => {
+ if (el && el.style) {
+ const originalDisplay = originalDisplays.get(el);
+ if (originalDisplay !== undefined) {
+ el.style.display = originalDisplay;
+ } else {
+ el.style.display = '';
+ }
+ }
+ });
+ };
+ } catch (error) {
+ console.warn('Failed to hide Bytedesk elements:', error);
+ return () => {}; // 返回空清理函数
+ }
+ };
+
+ const cleanup = hideBytedeskElements();
// 组件卸载时恢复显示
- return () => {
- bytedeskElements.forEach(el => {
- if (el) el.style.display = '';
- });
- };
+ return cleanup;
}, []);
const addMessage = (message) => {
@@ -716,26 +758,13 @@ const AgentChatV4 = () => {
);
return (
- <>
- {/* 全局样式:确保页面占满整个视口 */}
+
+ {/* 顶部导航栏 */}
+
+
+ {/* 全局样式:确保页面正确显示 */}
{
`}
/>
+ {/* 主内容区域 */}
{
backdropFilter="blur(20px)"
borderBottom="1px solid"
borderColor={borderGold}
- px={{ base: 3, md: 6 }}
- py={{ base: 2, md: 3 }}
- minH={{ base: "60px", md: "72px" }}
+ px={{ base: 2, md: 4 }}
+ py={{ base: 2, md: 2 }}
+ minH={{ base: "56px", md: "64px" }}
boxShadow="0 4px 16px rgba(255, 215, 0, 0.1)"
+ flexShrink={0}
+ zIndex={10}
>
-
-
- }
- size="sm"
- variant="ghost"
- color={goldAccent}
- _hover={{ bg: 'rgba(255, 215, 0, 0.1)' }}
- aria-label="切换侧边栏"
- onClick={toggleSidebar}
- />
+
+
{
boxShadow="0 4px 12px rgba(255, 215, 0, 0.3)"
flexShrink={0}
>
-
+
-
-
- 价小前投研
-
-
+
+
+
+ 价小前投研
+
{
borderRadius="full"
px={{ base: 1, md: 2 }}
whiteSpace="nowrap"
+ display="inline-flex"
+ alignItems="center"
+ gap={1}
>
-
-
- AI 深度分析
-
+
+ AI 深度分析
-
- {AVAILABLE_MODELS.find(m => m.id === selectedModel)?.name || '智能模型'}
-
+
+ {AVAILABLE_MODELS.find(m => m.id === selectedModel)?.name || '智能模型'}
+
-
+
+ }
+ size="sm"
+ variant="ghost"
+ color={goldAccent}
+ _hover={{ bg: 'rgba(255, 215, 0, 0.1)' }}
+ aria-label="历史对话"
+ onClick={toggleSidebar}
+ />
}
size="sm"
@@ -1043,6 +1074,7 @@ const AgentChatV4 = () => {
_hover={{ color: goldAccent, bg: 'rgba(255, 215, 0, 0.1)' }}
aria-label="导出对话"
onClick={handleExportChat}
+ display={{ base: "none", sm: "inline-flex" }}
/>
}
@@ -1054,7 +1086,7 @@ const AgentChatV4 = () => {
onClick={toggleRightPanel}
/>
-
+
{/* 进度条 */}
{isProcessing && (
@@ -1364,7 +1396,7 @@ const AgentChatV4 = () => {
- >
+
);
};