diff --git a/src/components/SubTabContainer/index.tsx b/src/components/SubTabContainer/index.tsx index 84d65d1d..889f83c0 100644 --- a/src/components/SubTabContainer/index.tsx +++ b/src/components/SubTabContainer/index.tsx @@ -198,7 +198,7 @@ const SubTabContainer: React.FC = memo(({ 我已阅读并同意 { + const planName = (selectedPlan as { name?: string } | null)?.name?.toLowerCase(); + return planName === 'pro' || planName === 'max' ? AGREEMENT_URLS[planName] : AGREEMENT_URLS.pro; + })()} isExternal color="#3182CE" textDecoration="underline" mx={1} onClick={(e) => e.stopPropagation()} > - 《{(selectedPlan as any)?.name?.toLowerCase() === 'max' ? 'MAX' : 'PRO'}会员服务协议》 + 《{(selectedPlan as { name?: string } | null)?.name?.toLowerCase() === 'max' ? 'MAX' : 'PRO'}会员服务协议》 diff --git a/src/views/Company/components/CompanyOverview/index.tsx b/src/views/Company/components/CompanyOverview/index.tsx index 11ea698d..19dd714f 100644 --- a/src/views/Company/components/CompanyOverview/index.tsx +++ b/src/views/Company/components/CompanyOverview/index.tsx @@ -1,35 +1,31 @@ // src/views/Company/components/CompanyOverview/index.tsx // 公司档案 - 主组件(组合层) +// 注:StockQuoteCard 已移至 Company/index.tsx,放在 Tab 容器上方,切换 Tab 时始终可见 import React from "react"; -import { VStack } from "@chakra-ui/react"; import type { CompanyOverviewProps } from "./types"; // 子组件 -import StockQuoteCard from "../StockQuoteCard"; import BasicInfoTab from "./BasicInfoTab"; /** * 公司档案组件 * * 功能: - * - 显示股票行情卡片(个股详情) * - 显示基本信息 Tab(内部懒加载各子 Tab 数据) * + * 注意: + * - StockQuoteCard 已提升到 Company/index.tsx 中渲染 + * - 确保切换 Tab 时股票行情卡片始终可见 + * * 懒加载策略: * - BasicInfoTab 内部根据 Tab 切换懒加载数据 * - 各 Panel 组件自行获取所需数据(如 BusinessInfoPanel 调用 useBasicInfo) */ const CompanyOverview: React.FC = ({ stockCode }) => { return ( - - {/* 股票行情卡片 - 个股详情 */} - - - {/* 基本信息内容 - 传入 stockCode,内部懒加载各 Tab 数据 */} - - + ); }; diff --git a/src/views/Company/components/ForecastReport/components/DetailTable.tsx b/src/views/Company/components/ForecastReport/components/DetailTable.tsx index 5dbab05d..2ed1ada2 100644 --- a/src/views/Company/components/ForecastReport/components/DetailTable.tsx +++ b/src/views/Company/components/ForecastReport/components/DetailTable.tsx @@ -114,10 +114,13 @@ const tableStyles = ` } `; -interface TableRowData extends DetailTableRow { +// 表格行数据类型 - 扩展索引签名以支持 boolean +type TableRowData = { key: string; isImportant?: boolean; -} + 指标: string; + [year: string]: string | number | boolean | null | undefined; +}; const DetailTable: React.FC = ({ data }) => { const { years, rows } = data; diff --git a/src/views/Company/index.tsx b/src/views/Company/index.tsx index 0d293099..353a888b 100644 --- a/src/views/Company/index.tsx +++ b/src/views/Company/index.tsx @@ -19,6 +19,7 @@ import SubTabContainer from '@components/SubTabContainer'; import { useCompanyEvents } from './hooks/useCompanyEvents'; import { useCompanyData } from './hooks/useCompanyData'; import CompanyHeader from './components/CompanyHeader'; +import StockQuoteCard from './components/StockQuoteCard'; import { THEME, TAB_CONFIG } from './config'; // ============================================ @@ -39,11 +40,31 @@ TabLoadingFallback.displayName = 'TabLoadingFallback'; interface CompanyContentProps { stockCode: string; + isInWatchlist: boolean; + watchlistLoading: boolean; + onWatchlistToggle: () => void; onTabChange: (index: number, tabKey: string) => void; } -const CompanyContent = memo(({ stockCode, onTabChange }) => ( +const CompanyContent = memo(({ + stockCode, + isInWatchlist, + watchlistLoading, + onWatchlistToggle, + onTabChange, +}) => ( + {/* 股票行情卡片 - 放在 Tab 切换器上方,始终可见 */} + + + + + {/* Tab 内容区 */} {