|
|
da02461965
|
更新Company页面的UI为FUI风格
|
2025-12-22 11:52:30 +08:00 |
|
|
|
efe5f45e31
|
更新Company页面的UI为FUI风格
|
2025-12-22 11:08:45 +08:00 |
|
|
|
96c94eaec4
|
更新Company页面的UI为FUI风格
|
2025-12-22 10:41:54 +08:00 |
|
|
|
23dd573663
|
更新Company页面的UI为FUI风格
|
2025-12-22 10:21:49 +08:00 |
|
|
|
2d48e08e43
|
更新Company页面的UI为FUI风格
|
2025-12-22 09:52:02 +08:00 |
|
|
|
46c7649bf0
|
更新Company页面的UI为FUI风格
|
2025-12-22 08:01:41 +08:00 |
|
|
|
ee734e719e
|
更新Company页面的UI为FUI风格
|
2025-12-22 07:48:16 +08:00 |
|
|
|
453c2f8635
|
更新Company页面的UI为FUI风格
|
2025-12-22 00:19:44 +08:00 |
|
|
|
d7429b94ae
|
更新Company页面的UI为FUI风格
|
2025-12-22 00:13:30 +08:00 |
|
|
|
fec478f361
|
更新Company页面的UI为FUI风格
|
2025-12-22 00:08:01 +08:00 |
|
|
|
79ec798abf
|
更新Company页面的UI为FUI风格
|
2025-12-22 00:05:26 +08:00 |
|
|
|
f09062491e
|
更新Company页面的UI为FUI风格
|
2025-12-22 00:02:14 +08:00 |
|
|
|
19ca71068b
|
更新Company页面的UI为FUI风格
|
2025-12-21 23:55:34 +08:00 |
|
|
|
840ed920b8
|
更新Company页面的UI为FUI风格
|
2025-12-21 23:52:34 +08:00 |
|
|
|
9baa57a15d
|
更新Company页面的UI为FUI风格
|
2025-12-21 23:43:41 +08:00 |
|
|
|
54b7d9fc89
|
更新Company页面的UI为FUI风格
|
2025-12-21 23:40:02 +08:00 |
|
|
|
d9b804c46c
|
更新Company页面的UI为FUI风格
|
2025-12-21 23:22:33 +08:00 |
|
|
|
e177de647d
|
更新Company页面的UI为FUI风格
|
2025-12-21 19:49:14 +08:00 |
|
|
|
b61f7a5048
|
更新Company页面的UI为FUI风格
|
2025-12-21 19:29:42 +08:00 |
|
zdl
|
d74162b7ce
|
fix(CompanyOverview): 修复 React Strict Mode 下骨架屏闪现问题
- 移除所有 hooks 中的 finally 块,避免请求取消时错误更新状态
- 添加 hasLoaded 状态追踪首次加载完成
- CanceledError 时直接返回,不更新任何状态
- 使用派生 isLoading 状态确保骨架屏正确显示
修复的 hooks:
- useShareholderData.ts
- useManagementData.ts
- useAnnouncementsData.ts
- useDisclosureData.ts
- useBasicInfo.ts
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 18:58:53 +08:00 |
|
zdl
|
bea4c7fe81
|
perf(MarketDataView): 优化数据映射性能和请求管理
- useMarketData: 使用 Map 替代 findIndex,O(n*m) → O(n+m) 性能优化
- useMarketData: 修复 React StrictMode 下请求被意外取消的问题
- config.ts: 添加 CompanyOverview 和 DynamicTracking 的骨架屏 fallback
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 18:55:06 +08:00 |
|
zdl
|
d3f4a8e02c
|
perf(DynamicTracking): 子面板支持延迟加载和骨架屏
- ForecastPanel/NewsPanel 接收 isActive 和 activationKey 控制数据加载
- 使用骨架屏替代 Spinner 加载状态
- Tab 切换时自动刷新数据
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 18:55:05 +08:00 |
|
zdl
|
90e2a48d66
|
feat(BasicInfoTab): 添加骨架屏并适配延迟加载
- 各 Panel 组件适配新的 hooks 参数格式
- 新增 BasicInfoTabSkeleton 骨架屏组件
- 新增 CompanyOverviewNavSkeleton 导航骨架屏组件
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 18:55:05 +08:00 |
|
zdl
|
298ac5a335
|
perf(CompanyOverview): hooks 支持 enabled 延迟加载和刷新
- 所有 hooks 参数改为 options 对象形式
- 新增 enabled 参数支持延迟加载
- 新增 refreshKey 参数支持手动刷新
- 智能初始化 loading 状态,避免首次渲染闪现空状态
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 18:55:04 +08:00 |
|
zdl
|
672e746a26
|
feat(SubTabContainer): 支持 Tab 激活状态和刷新机制
- SubTabContainer: 新增 isActive 和 activationKey props 传递给子组件
- SubTabContainer: 修复 Tab 切换时页面滚动位置跳转问题
- TabPanelContainer: 新增 skeleton prop 支持自定义骨架屏
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 18:55:04 +08:00 |
|
zdl
|
88da7ad1a5
|
fix(mock): 完善股票名称映射,支持多只股票
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 18:55:04 +08:00 |
|
zdl
|
8c9cc9845d
|
perf(DynamicTracking): 优化组件加载体验,子组件懒加载
- 使用 React.lazy() 懒加载所有子面板组件
- 为每个 Tab 添加专属骨架屏 fallback
- SubTabContainer 同步渲染,点击立即显示二级导航
- 添加 memo、useCallback、useMemo 性能优化
- 新增 DynamicTrackingSkeleton.tsx 骨架屏组件
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 18:55:04 +08:00 |
|
zdl
|
11544909d3
|
style(MarketDataView): 缩小页面间距
- Container py: 6 → 4
- VStack spacing: 6 → 4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 18:55:04 +08:00 |
|
zdl
|
08842b9097
|
fix: 优化加载状态和布局
MarketDataView:
- 移除重复的 LoadingState,改用 KLineModule 内部骨架屏
- 修复点击股票行情后数据不显示的问题
FinancialPanorama:
- 移除表格右上角"显示 6 期"标签
- 优化 loadingTab 状态处理
SubTabContainer:
- 重构布局:Tab 区域可滚动,右侧元素固定
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 18:55:04 +08:00 |
|
zdl
|
0ad0287f7b
|
fix(FinancialPanorama): 优化期数切换和数据加载
- Tab 切换时检查期数是否一致,不一致则重新加载
- 股票切换时立即清空旧数据,确保显示骨架屏
- 表格右上角显示当前期数
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 18:55:03 +08:00 |
|
zdl
|
d394c25d7e
|
feat(MarketDataView): 添加股票行情骨架屏
- 创建 MarketDataSkeleton 组件(摘要卡片 + K线图表 + Tab)
- 配置 Suspense fallback,点击时直接显示骨架屏
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 18:55:03 +08:00 |
|
|
|
7fd1dc34f4
|
更新Company页面的UI为FUI风格
|
2025-12-19 15:53:46 +08:00 |
|
zdl
|
6776e1d557
|
feat(SubTabContainer): 支持自定义 Suspense fallback
- SubTabConfig 添加 fallback 属性
- 财务全景/盈利预测配置骨架屏 fallback
- 解决点击 Tab 先显示 Spinner 再显示骨架屏的问题
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 15:23:56 +08:00 |
|
zdl
|
6eec7c6402
|
feat(ForecastReport): 添加盈利预测骨架屏
- 创建 ForecastSkeleton 组件(图表卡片 + 表格)
- 初始加载时显示骨架屏
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 15:18:00 +08:00 |
|
zdl
|
27b0e9375a
|
feat(FinancialPanorama): 添加页面骨架屏
- 创建 FinancialPanoramaSkeleton 组件
- 初始加载时显示完整骨架屏(概览面板、图表、主营业务、Tab)
- 优化加载体验,避免内容闪烁
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 15:13:24 +08:00 |
|
zdl
|
e71f42b608
|
style(FinancialPanorama): 优化 UI 布局
- Tab 组件:移除重复的标题区域(Tab 栏已有标题)
- Table 组件:眼睛图标改为"趋势"按钮,更明确的交互提示
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 15:06:50 +08:00 |
|
zdl
|
2c1acb41b4
|
refactor(DynamicTracking): 将 NewsEventsTab 移至正确目录并重构
- 从 CompanyOverview/ 移动到 DynamicTracking/(修复跨目录引用)
- 拆分为目录结构:constants.ts, types.ts, utils.ts
- 提取 5 个子组件:NewsSearchBar, NewsEventCard, NewsPagination,
NewsEmptyState, NewsLoadingState
- 转换为 TypeScript,添加完整类型定义(ThemeConfig, NewsEvent 等)
- 所有子组件使用 React.memo 优化渲染
- 更新 NewsPanel.js 引用路径
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 15:03:36 +08:00 |
|
zdl
|
23788bbebf
|
refactor(CompanyOverview): 删除透传组件,直接使用 BasicInfoTab
- config.ts: 直接 lazy import BasicInfoTab
- CompanyTabs: 直接导入 BasicInfoTab
- 删除 CompanyOverview/index.tsx(仅透传无逻辑)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 14:47:12 +08:00 |
|
zdl
|
2cc16be585
|
docs(FinancialPanorama): 更新组件文档
- 更新目录结构说明
- 新增性能优化章节(memo、共享主题、组件提取等)
- 更新组件层级图
- 新增数据流图
- 新增懒加载策略说明
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 14:45:08 +08:00 |
|
zdl
|
11ca0e7a99
|
refactor(FinancialPanorama): 简化 useFinancialData Hook
- 移除未使用的 forecast 状态
- 移除未使用的 industryRank 状态
- 简化返回值类型定义
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 14:44:54 +08:00 |
|
zdl
|
ff951972ee
|
refactor(FinancialPanorama): 优化主组件 Props 传递
- 使用 MetricChartModal 替代内联 Modal
- 简化 showMetricChart 回调
- componentProps 使用展开语法传递颜色常量
- 简化 useMemo 依赖数组
- 移除未使用的 imports
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 14:44:42 +08:00 |
|
zdl
|
41da6fa372
|
perf(FinancialPanorama): Tab 组件添加 memo 优化
- MetricsCategoryTab: 使用共享主题,主组件和 7 个子组件添加 memo
- BalanceSheetTab: 添加 memo
- IncomeStatementTab: 添加 memo
- CashflowTab: 添加 memo
- FinancialMetricsTab: 添加 memo
- 减少不必要的重渲染
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 14:44:32 +08:00 |
|
zdl
|
54cce55c29
|
perf(FinancialPanorama): 表格组件使用共享配置 + memo
- BalanceSheetTable: 使用共享主题,添加 memo
- IncomeStatementTable: 使用共享主题,添加 memo
- CashflowTable: 使用共享主题,添加 memo
- 移除内联主题定义,减少重复代码
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 14:44:26 +08:00 |
|
zdl
|
0e29f1aff4
|
refactor(FinancialPanorama): 提取 MetricChartModal 组件
- 从 index.tsx 提取独立的指标图表弹窗组件
- 使用 memo 包装优化性能
- 包含图表展示和同比/环比计算表格
- 减少主组件约 100 行代码
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 14:44:20 +08:00 |
|
zdl
|
7b58f83490
|
refactor(FinancialPanorama): 提取共享表格主题配置
- 新增 utils/tableTheme.ts 统一黑金主题配置
- BLACK_GOLD_TABLE_THEME: Ant Design ConfigProvider 主题
- getTableStyles(): CSS 样式工厂函数
- calculateYoY(): 同比计算共享函数
- 消除约 200 行重复代码
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 14:44:13 +08:00 |
|
zdl
|
22062a6556
|
perf(PledgePanel): 添加 useMemo 缓存图表配置
- 使用 useMemo 缓存 getPledgeDarkGoldOption 计算结果
- 避免每次渲染重新计算图表配置
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 14:23:47 +08:00 |
|
zdl
|
94854fee3e
|
refactor(MarketDataView): 提取 DataRow 原子组件,样式统一
- 新增 shared/DataRow.tsx:通用数据行组件(支持 gold/orange/red/green 变体)
- 新增样式常量:financingRowStyle, securitiesRowStyle, buyRowStyle, sellRowStyle, dayCardStyle
- FundingPanel: 使用 useMemo 缓存图表配置和数据,使用 DataRow 替代重复结构
- BigDealPanel: 使用 dayCardStyle 替代内联样式
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 14:20:46 +08:00 |
|
zdl
|
852d5fd188
|
refactor(ForecastReport): 架构优化与性能提升
阶段一 - 核心优化:
- 所有子组件添加 React.memo 防止不必要重渲染
- 图表组件统一使用 EChartsWrapper 替代 ReactECharts
- 提取 isForecastYear、IMPORTANT_METRICS 到 constants.ts
- DetailTable 样式提取为 DETAIL_TABLE_STYLES 常量
阶段二 - 架构优化:
- 新增 hooks/useForecastData.ts:数据获取 + Map 缓存 + AbortController
- 新增 services/forecastService.ts:API 封装层
- 新增 utils/chartFormatters.ts:图表格式化工具函数
- 主组件精简:79行 → 63行,添加错误处理和重试功能
优化效果:
- 消除 4 处 isForecastYear 重复定义
- 样式从每次渲染重建改为常量复用
- 添加请求缓存,避免频繁切换时重复请求
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 14:17:21 +08:00 |
|
zdl
|
4e71623477
|
docs(Company): 添加组件模块总览 README
新增 Company/components/README.md:
- 组件概览表格(7 个核心组件)
- 完整目录结构说明
- 组件层级关系图
- 技术栈和主题系统说明
- 使用示例
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 13:44:03 +08:00 |
|
zdl
|
ce4da40ef6
|
refactor(DeepAnalysis): TypeScript 重构,提取 useDeepAnalysisData Hook
- 新增 types.ts:API 类型定义、状态接口、Tab 映射常量
- 新增 hooks/useDeepAnalysisData.ts:提取数据获取逻辑
- 懒加载:按 Tab 按需请求
- 数据缓存:已加载数据不重复请求
- 竞态处理:stockCode 变更时防止旧请求覆盖
- 重写 index.tsx:memo 优化,代码行数 229 → 81
- 新增 README.md:组件文档
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-19 13:42:16 +08:00 |
|