diff --git a/src/views/Company/ForecastReport.js b/src/views/Company/ForecastReport.js index 5dea7ee4..a4da1376 100644 --- a/src/views/Company/ForecastReport.js +++ b/src/views/Company/ForecastReport.js @@ -1,6 +1,6 @@ import React from 'react'; import { Box, Text, VStack, Icon } from '@chakra-ui/react'; -import { FaChartLine } from 'react-icons/fa'; +import { LineChart } from 'lucide-react'; /** * 预测报告组件 - 占位符 @@ -16,7 +16,7 @@ const ForecastReport = ({ stockCode }) => { textAlign="center" > - + 预测报告功能开发中 diff --git a/src/views/Company/MarketDataView.js b/src/views/Company/MarketDataView.js index 76c232b4..174c5c31 100644 --- a/src/views/Company/MarketDataView.js +++ b/src/views/Company/MarketDataView.js @@ -1,6 +1,6 @@ import React from 'react'; import { Box, Text, VStack, Icon } from '@chakra-ui/react'; -import { FaChartBar } from 'react-icons/fa'; +import { BarChart2 } from 'lucide-react'; /** * 市场数据视图组件 - 占位符 @@ -16,7 +16,7 @@ const MarketDataView = ({ stockCode }) => { textAlign="center" > - + 市场数据功能开发中 diff --git a/src/views/Company/components/CompanyOverview/BasicInfoTab/components/AnnouncementsPanel.tsx b/src/views/Company/components/CompanyOverview/BasicInfoTab/components/AnnouncementsPanel.tsx index f24dce1b..7807bba7 100644 --- a/src/views/Company/components/CompanyOverview/BasicInfoTab/components/AnnouncementsPanel.tsx +++ b/src/views/Company/components/CompanyOverview/BasicInfoTab/components/AnnouncementsPanel.tsx @@ -22,7 +22,7 @@ import { ModalFooter, useDisclosure, } from "@chakra-ui/react"; -import { ExternalLinkIcon } from "@chakra-ui/icons"; +import { ExternalLink } from "lucide-react"; import { useAnnouncementsData } from "../../hooks/useAnnouncementsData"; import { THEME } from "../config"; @@ -92,7 +92,7 @@ const AnnouncementsPanel: React.FC = ({ stockCode, isAc )} } + icon={} variant="ghost" color={THEME.goldLight} aria-label="查看原文" diff --git a/src/views/Company/components/CompanyOverview/BasicInfoTab/components/BranchesPanel.tsx b/src/views/Company/components/CompanyOverview/BasicInfoTab/components/BranchesPanel.tsx index a4536124..a96f75ae 100644 --- a/src/views/Company/components/CompanyOverview/BasicInfoTab/components/BranchesPanel.tsx +++ b/src/views/Company/components/CompanyOverview/BasicInfoTab/components/BranchesPanel.tsx @@ -11,7 +11,7 @@ import { SimpleGrid, Center, } from "@chakra-ui/react"; -import { FaSitemap, FaBuilding, FaCheckCircle, FaTimesCircle } from "react-icons/fa"; +import { GitBranch, Building2, CheckCircle, XCircle } from "lucide-react"; import { useBranchesData } from "../../hooks/useBranchesData"; import { THEME } from "../config"; @@ -85,7 +85,7 @@ const BranchesPanel: React.FC = ({ stockCode, isActive = tru border="1px solid" borderColor="rgba(212, 175, 55, 0.2)" > - + 暂无分支机构信息 @@ -118,7 +118,7 @@ const BranchesPanel: React.FC = ({ stockCode, isActive = tru borderRadius="md" bg="rgba(212, 175, 55, 0.1)" > - + = ({ stockCode, isActive = tru {/* 状态徽章 */} {branch.business_status} diff --git a/src/views/Company/components/CompanyOverview/BasicInfoTab/components/BusinessInfoPanel.tsx b/src/views/Company/components/CompanyOverview/BasicInfoTab/components/BusinessInfoPanel.tsx index eb8a0e16..d99b79b5 100644 --- a/src/views/Company/components/CompanyOverview/BasicInfoTab/components/BusinessInfoPanel.tsx +++ b/src/views/Company/components/CompanyOverview/BasicInfoTab/components/BusinessInfoPanel.tsx @@ -12,15 +12,15 @@ import { Icon, } from "@chakra-ui/react"; import { - FaBuilding, - FaMapMarkerAlt, - FaIdCard, - FaUsers, - FaBalanceScale, - FaCalculator, - FaBriefcase, - FaFileAlt, -} from "react-icons/fa"; + Building2, + MapPin, + CreditCard, + Users, + Scale, + Calculator, + Briefcase, + FileText, +} from "lucide-react"; // 使用统一主题 import { COLORS, GLASS, glassCardStyle } from "@views/Company/theme"; @@ -173,27 +173,27 @@ const BusinessInfoPanel: React.FC = ({ stockCode, isActi {/* 工商信息卡片 */} - + = ({ stockCode, isActi {/* 服务机构卡片 */} - + @@ -222,12 +222,12 @@ const BusinessInfoPanel: React.FC = ({ stockCode, isActi {/* 下半部分:主营业务 + 经营范围 */} diff --git a/src/views/Company/components/CompanyOverview/BasicInfoTab/components/CompanyOverviewNavSkeleton.tsx b/src/views/Company/components/CompanyOverview/BasicInfoTab/components/CompanyOverviewNavSkeleton.tsx index 7804d1d6..763e0954 100644 --- a/src/views/Company/components/CompanyOverview/BasicInfoTab/components/CompanyOverviewNavSkeleton.tsx +++ b/src/views/Company/components/CompanyOverview/BasicInfoTab/components/CompanyOverviewNavSkeleton.tsx @@ -24,11 +24,11 @@ import { Td, } from '@chakra-ui/react'; import { - FaShareAlt, - FaUserTie, - FaSitemap, - FaInfoCircle, -} from 'react-icons/fa'; + Share2, + UserRound, + GitBranch, + Info, +} from 'lucide-react'; // 深空 FUI 主题配置(与 SubTabContainer 保持一致) const DEEP_SPACE = { @@ -46,10 +46,10 @@ const DEEP_SPACE = { // 导航配置(与主组件 config.ts 保持同步) const OVERVIEW_TABS = [ - { key: 'shareholder', name: '股权结构', icon: FaShareAlt }, - { key: 'management', name: '管理团队', icon: FaUserTie }, - { key: 'branches', name: '分支机构', icon: FaSitemap }, - { key: 'business', name: '工商信息', icon: FaInfoCircle }, + { key: 'shareholder', name: '股权结构', icon: Share2 }, + { key: 'management', name: '管理团队', icon: UserRound }, + { key: 'branches', name: '分支机构', icon: GitBranch }, + { key: 'business', name: '工商信息', icon: Info }, ]; /** diff --git a/src/views/Company/components/CompanyOverview/BasicInfoTab/components/management/CategorySection.tsx b/src/views/Company/components/CompanyOverview/BasicInfoTab/components/management/CategorySection.tsx index 80b20ee9..fdb7d429 100644 --- a/src/views/Company/components/CompanyOverview/BasicInfoTab/components/management/CategorySection.tsx +++ b/src/views/Company/components/CompanyOverview/BasicInfoTab/components/management/CategorySection.tsx @@ -10,7 +10,7 @@ import { Icon, SimpleGrid, } from "@chakra-ui/react"; -import type { IconType } from "react-icons"; +import type { LucideIcon } from "lucide-react"; import { THEME } from "../../config"; import ManagementCard from "./ManagementCard"; @@ -19,7 +19,7 @@ import type { ManagementPerson, ManagementCategory } from "./types"; interface CategorySectionProps { category: ManagementCategory; people: ManagementPerson[]; - icon: IconType; + icon: LucideIcon; color: string; } diff --git a/src/views/Company/components/CompanyOverview/BasicInfoTab/components/management/ManagementCard.tsx b/src/views/Company/components/CompanyOverview/BasicInfoTab/components/management/ManagementCard.tsx index 433a36a5..42369df4 100644 --- a/src/views/Company/components/CompanyOverview/BasicInfoTab/components/management/ManagementCard.tsx +++ b/src/views/Company/components/CompanyOverview/BasicInfoTab/components/management/ManagementCard.tsx @@ -13,10 +13,10 @@ import { Tag, } from "@chakra-ui/react"; import { - FaVenusMars, - FaGraduationCap, - FaPassport, -} from "react-icons/fa"; + Users as GenderIcon, + GraduationCap, + CreditCard, +} from "lucide-react"; import { THEME } from "../../config"; import { formatDate } from "../../utils"; @@ -53,7 +53,7 @@ const ManagementCard: React.FC = ({ person, categoryColor } {person.gender && ( @@ -69,7 +69,7 @@ const ManagementCard: React.FC = ({ person, categoryColor } {person.education && ( - + {person.education} )} @@ -80,7 +80,7 @@ const ManagementCard: React.FC = ({ person, categoryColor } )} {person.nationality && person.nationality !== "中国" && ( - + {person.nationality} )} diff --git a/src/views/Company/components/CompanyOverview/BasicInfoTab/components/management/ManagementPanel.tsx b/src/views/Company/components/CompanyOverview/BasicInfoTab/components/management/ManagementPanel.tsx index 5901fd48..4586fb75 100644 --- a/src/views/Company/components/CompanyOverview/BasicInfoTab/components/management/ManagementPanel.tsx +++ b/src/views/Company/components/CompanyOverview/BasicInfoTab/components/management/ManagementPanel.tsx @@ -3,11 +3,11 @@ import React, { useMemo } from "react"; import { - FaUserTie, - FaCrown, - FaEye, - FaUsers, -} from "react-icons/fa"; + UserRound, + Crown, + Eye, + Users, +} from "lucide-react"; import { useManagementData } from "../../../hooks/useManagementData"; import { THEME } from "../../config"; @@ -31,10 +31,10 @@ interface ManagementPanelProps { * 分类配置映射 */ const CATEGORY_CONFIG: Record = { - 高管: { icon: FaUserTie, color: THEME.gold }, - 董事: { icon: FaCrown, color: THEME.goldLight }, - 监事: { icon: FaEye, color: "green.400" }, - 其他: { icon: FaUsers, color: THEME.textSecondary }, + 高管: { icon: UserRound, color: THEME.gold }, + 董事: { icon: Crown, color: THEME.goldLight }, + 监事: { icon: Eye, color: "green.400" }, + 其他: { icon: Users, color: THEME.textSecondary }, }; /** diff --git a/src/views/Company/components/CompanyOverview/BasicInfoTab/components/management/types.ts b/src/views/Company/components/CompanyOverview/BasicInfoTab/components/management/types.ts index 81cac215..1e0f6f56 100644 --- a/src/views/Company/components/CompanyOverview/BasicInfoTab/components/management/types.ts +++ b/src/views/Company/components/CompanyOverview/BasicInfoTab/components/management/types.ts @@ -1,7 +1,7 @@ // src/views/Company/components/CompanyOverview/BasicInfoTab/components/management/types.ts // 管理团队相关类型定义 -import type { IconType } from "react-icons"; +import type { LucideIcon } from "lucide-react"; /** * 管理人员信息 @@ -31,6 +31,6 @@ export type CategorizedManagement = Record = ({ factor }) => { color={factor.year_on_year > 0 ? 'red.400' : 'green.400'} > 0 ? FaArrowUp : FaArrowDown} + as={factor.year_on_year > 0 ? ArrowUp : ArrowDown} mr={1} boxSize={3} /> diff --git a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/atoms/ProcessNavigation.tsx b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/atoms/ProcessNavigation.tsx index 8f0af035..a65ce2f1 100644 --- a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/atoms/ProcessNavigation.tsx +++ b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/atoms/ProcessNavigation.tsx @@ -7,7 +7,7 @@ import React, { memo } from 'react'; import { HStack, VStack, Box, Text, Icon, Badge } from '@chakra-ui/react'; -import { FaArrowRight } from 'react-icons/fa'; +import { ArrowRight } from 'lucide-react'; // 黑金主题配置(使用更亮的金色提高对比度) const THEME = { @@ -133,7 +133,7 @@ const ProcessNavigation: React.FC = memo(({ /> @@ -148,7 +148,7 @@ const ProcessNavigation: React.FC = memo(({ /> diff --git a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/BusinessSegmentsCard.tsx b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/BusinessSegmentsCard.tsx index 501c6578..fb6974e9 100644 --- a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/BusinessSegmentsCard.tsx +++ b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/BusinessSegmentsCard.tsx @@ -20,7 +20,7 @@ import { SimpleGrid, Button, } from '@chakra-ui/react'; -import { FaIndustry, FaExpandAlt, FaCompressAlt } from 'react-icons/fa'; +import { Factory, Maximize2, Minimize2 } from 'lucide-react'; import type { BusinessSegment } from '../types'; // 黑金主题配置 @@ -52,7 +52,7 @@ const BusinessSegmentsCard: React.FC = ({ - + 业务板块详情 {businessSegments.length} 个板块 @@ -74,7 +74,7 @@ const BusinessSegmentsCard: React.FC = ({ size="sm" variant="ghost" leftIcon={ - + } onClick={() => onToggleSegment(idx)} color={THEME.gold} diff --git a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/BusinessStructureCard.tsx b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/BusinessStructureCard.tsx index b3c5e36d..65dbe147 100644 --- a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/BusinessStructureCard.tsx +++ b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/BusinessStructureCard.tsx @@ -16,7 +16,7 @@ import { Badge, Icon, } from '@chakra-ui/react'; -import { FaChartPie } from 'react-icons/fa'; +import { PieChart } from 'lucide-react'; import { BusinessTreeItem } from '../atoms'; import type { BusinessStructure } from '../types'; @@ -42,7 +42,7 @@ const BusinessStructureCard: React.FC = ({ - + 业务结构分析 {businessStructure[0]?.report_period} diff --git a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/CompetitiveAnalysisCard.tsx b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/CompetitiveAnalysisCard.tsx index 8bc9b0bc..bff088a8 100644 --- a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/CompetitiveAnalysisCard.tsx +++ b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/CompetitiveAnalysisCard.tsx @@ -33,17 +33,17 @@ import { useDisclosure, } from '@chakra-ui/react'; import { - FaTrophy, - FaCog, - FaStar, - FaChartLine, - FaDollarSign, - FaFlask, - FaShieldAlt, - FaRocket, - FaUsers, - FaExternalLinkAlt, -} from 'react-icons/fa'; + Trophy, + Settings, + Star, + TrendingUp, + DollarSign, + FlaskConical, + Shield, + Rocket, + Users, + ExternalLink, +} from 'lucide-react'; import ReactECharts from 'echarts-for-react'; import { ScoreBar } from '../atoms'; import { getRadarChartOption } from '../utils/chartOptions'; @@ -110,7 +110,7 @@ const CompetitorTags = memo(({ competitors }) => ( color="yellow.500" borderRadius="full" > - + {competitor} ))} @@ -127,14 +127,14 @@ interface ScoreSectionProps { const ScoreSection = memo(({ scores }) => ( - - - - - - - - + + + + + + + + )); @@ -201,7 +201,7 @@ const CompetitiveAnalysisCard: React.FC = memo( - + 竞争地位分析 {competitivePosition.ranking && ( = memo( size="xs" variant="ghost" color="yellow.500" - rightIcon={} + rightIcon={} onClick={onOpen} _hover={{ bg: 'rgba(212, 175, 55, 0.1)' }} > @@ -269,7 +269,7 @@ const CompetitiveAnalysisCard: React.FC = memo( - + 行业排名详情 diff --git a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/CorePositioningCard/atoms/HighlightCard.tsx b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/CorePositioningCard/atoms/HighlightCard.tsx index e4a0b75d..da229f66 100644 --- a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/CorePositioningCard/atoms/HighlightCard.tsx +++ b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/CorePositioningCard/atoms/HighlightCard.tsx @@ -4,7 +4,7 @@ import React, { memo } from 'react'; import { Box, HStack, VStack, Icon, Text } from '@chakra-ui/react'; -import { FaUsers } from 'react-icons/fa'; +import { Users } from 'lucide-react'; import { THEME, ICON_MAP, HIGHLIGHT_HOVER_STYLES } from '../theme'; import type { InvestmentHighlightItem } from '../../../types'; @@ -13,7 +13,7 @@ interface HighlightCardProps { } export const HighlightCard = memo(({ highlight }) => { - const IconComponent = ICON_MAP[highlight.icon] || FaUsers; + const IconComponent = ICON_MAP[highlight.icon] || Users; return ( = memo( - + {corePositioning?.one_line_intro && ( = memo( - + = memo( - + = memo( {/* 核心定位区域(深色背景) */} - + {/* 一句话介绍 */} {corePositioning?.one_line_intro && ( @@ -152,7 +152,7 @@ const CorePositioningCard: React.FC = memo( borderRight={BORDER_RIGHT_RESPONSIVE} borderColor="whiteAlpha.100" > - + {highlights.length > 0 ? ( highlights.map((highlight, idx) => ( @@ -168,7 +168,7 @@ const CorePositioningCard: React.FC = memo( {/* 商业模式区域 */} - + = { - bank: FaUniversity, - fire: FaFire, - users: FaUsers, - 'trending-up': FaChartLine, - cpu: FaMicrochip, - 'shield-check': FaShieldAlt, +export const ICON_MAP: Record = { + bank: University, + fire: Flame, + users: Users, + 'trending-up': TrendingUp, + cpu: Cpu, + 'shield-check': Shield, }; // ==================== 样式常量 ==================== diff --git a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/KeyFactorsCard.tsx b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/KeyFactorsCard.tsx index f479f4c6..1408640a 100644 --- a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/KeyFactorsCard.tsx +++ b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/KeyFactorsCard.tsx @@ -23,7 +23,7 @@ import { AccordionPanel, AccordionIcon, } from '@chakra-ui/react'; -import { FaBalanceScale } from 'react-icons/fa'; +import { Scale } from 'lucide-react'; import { KeyFactorCard } from '../atoms'; import type { KeyFactors } from '../types'; @@ -66,7 +66,7 @@ const KeyFactorsCard: React.FC = ({ keyFactors }) => { - + 关键因素 diff --git a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/StrategyAnalysisCard.tsx b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/StrategyAnalysisCard.tsx index ab61cecf..55fc5937 100644 --- a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/StrategyAnalysisCard.tsx +++ b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/StrategyAnalysisCard.tsx @@ -19,7 +19,7 @@ import { GridItem, Center, } from '@chakra-ui/react'; -import { FaRocket, FaChartBar } from 'react-icons/fa'; +import { Rocket, BarChart2 } from 'lucide-react'; import type { Strategy } from '../types'; // 样式常量 - 避免每次渲染创建新对象 @@ -54,7 +54,7 @@ const EmptyState = memo(() => (
- + 战略数据更新中 战略方向和具体举措数据将在近期更新 @@ -97,7 +97,7 @@ const StrategyAnalysisCard: React.FC = memo( - + 战略分析 diff --git a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/TimelineCard.tsx b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/TimelineCard.tsx index c4ba3085..b77ee9fd 100644 --- a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/TimelineCard.tsx +++ b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/TimelineCard.tsx @@ -16,7 +16,7 @@ import { Box, Icon, } from '@chakra-ui/react'; -import { FaHistory } from 'react-icons/fa'; +import { History } from 'lucide-react'; import TimelineComponent from '../organisms/TimelineComponent'; import type { DevelopmentTimeline } from '../types'; @@ -59,7 +59,7 @@ const TimelineCard: React.FC = ({ developmentTimeline }) => { - + 发展时间线 diff --git a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/ValueChainCard.tsx b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/ValueChainCard.tsx index 2a80c4d5..8140e737 100644 --- a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/ValueChainCard.tsx +++ b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/components/ValueChainCard.tsx @@ -20,7 +20,7 @@ import { Box, Flex, } from '@chakra-ui/react'; -import { FaNetworkWired } from 'react-icons/fa'; +import { Network } from 'lucide-react'; import ReactECharts from 'echarts-for-react'; import { ProcessNavigation, @@ -133,7 +133,7 @@ const ValueChainCard: React.FC = memo(({ {/* 头部区域 */} - + 产业链分析 diff --git a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/index.tsx b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/index.tsx index a9dd6181..469e1241 100644 --- a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/index.tsx +++ b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/index.tsx @@ -12,7 +12,7 @@ import React, { useMemo } from 'react'; import { Card, CardBody } from '@chakra-ui/react'; -import { FaBrain, FaBuilding, FaLink, FaHistory } from 'react-icons/fa'; +import { Brain, Building2, Link2, History } from 'lucide-react'; import SubTabContainer, { type SubTabConfig } from '@components/SubTabContainer'; import LoadingState from '../../LoadingState'; import { StrategyTab, BusinessTab, ValueChainTab, DevelopmentTab } from './tabs'; @@ -28,10 +28,10 @@ const THEME = { * Tab 配置 */ const DEEP_ANALYSIS_TABS: SubTabConfig[] = [ - { key: 'strategy', name: '战略分析', icon: FaBrain, component: StrategyTab }, - { key: 'business', name: '业务结构', icon: FaBuilding, component: BusinessTab }, - { key: 'valueChain', name: '产业链', icon: FaLink, component: ValueChainTab }, - { key: 'development', name: '发展历程', icon: FaHistory, component: DevelopmentTab }, + { key: 'strategy', name: '战略分析', icon: Brain, component: StrategyTab }, + { key: 'business', name: '业务结构', icon: Building2, component: BusinessTab }, + { key: 'valueChain', name: '产业链', icon: Link2, component: ValueChainTab }, + { key: 'development', name: '发展历程', icon: History, component: DevelopmentTab }, ]; /** diff --git a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/organisms/TimelineComponent/EventDetailModal.tsx b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/organisms/TimelineComponent/EventDetailModal.tsx index 040c47f3..5f196f93 100644 --- a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/organisms/TimelineComponent/EventDetailModal.tsx +++ b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/organisms/TimelineComponent/EventDetailModal.tsx @@ -22,7 +22,7 @@ import { Icon, Button, } from '@chakra-ui/react'; -import { FaCheckCircle, FaExclamationCircle } from 'react-icons/fa'; +import { CheckCircle, AlertCircle } from 'lucide-react'; import type { TimelineEvent } from '../../types'; interface EventDetailModalProps { @@ -48,7 +48,7 @@ const EventDetailModal: React.FC = ({ diff --git a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/organisms/TimelineComponent/index.tsx b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/organisms/TimelineComponent/index.tsx index b5a746f2..bf798a68 100644 --- a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/organisms/TimelineComponent/index.tsx +++ b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/organisms/TimelineComponent/index.tsx @@ -20,10 +20,10 @@ import { useDisclosure, } from '@chakra-ui/react'; import { - FaCalendarAlt, - FaArrowUp, - FaArrowDown, -} from 'react-icons/fa'; + Calendar, + ArrowUp, + ArrowDown, +} from 'lucide-react'; import EventDetailModal from './EventDetailModal'; import type { TimelineComponentProps, TimelineEvent } from '../../types'; @@ -74,7 +74,7 @@ const TimelineComponent: React.FC = ({ events }) => { shadow="md" > @@ -108,7 +108,7 @@ const TimelineComponent: React.FC = ({ events }) => { diff --git a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/organisms/ValueChainNodeCard/RelatedCompaniesModal.tsx b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/organisms/ValueChainNodeCard/RelatedCompaniesModal.tsx index bf900b61..24567a73 100644 --- a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/organisms/ValueChainNodeCard/RelatedCompaniesModal.tsx +++ b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/organisms/ValueChainNodeCard/RelatedCompaniesModal.tsx @@ -34,19 +34,19 @@ import { Tooltip, Button, } from '@chakra-ui/react'; -import { ExternalLinkIcon } from '@chakra-ui/icons'; import { - FaBuilding, - FaHandshake, - FaUserTie, - FaIndustry, - FaCog, - FaNetworkWired, - FaFlask, - FaStar, - FaArrowRight, - FaArrowLeft, -} from 'react-icons/fa'; + ExternalLink, + Building, + Handshake, + UserCircle, + Factory, + Settings, + Network, + FlaskConical, + Star, + ArrowRight, + ArrowLeft, +} from 'lucide-react'; import type { ValueChainNode, RelatedCompany } from '../../types'; interface RelatedCompaniesModalProps { @@ -64,15 +64,15 @@ interface RelatedCompaniesModalProps { */ const getNodeTypeIcon = (type: string) => { const icons: Record = { - company: FaBuilding, - supplier: FaHandshake, - customer: FaUserTie, - product: FaIndustry, - service: FaCog, - channel: FaNetworkWired, - raw_material: FaFlask, + company: Building, + supplier: Handshake, + customer: UserCircle, + product: Factory, + service: Settings, + channel: Network, + raw_material: FlaskConical, }; - return icons[type] || FaBuilding; + return icons[type] || Building; }; /** @@ -242,7 +242,7 @@ const RelatedCompaniesModal: React.FC = ({ } + icon={} variant="ghost" colorScheme="blue" onClick={() => { @@ -287,8 +287,8 @@ const RelatedCompaniesModal: React.FC = ({ = ({ ) : (
- + 暂无相关公司 diff --git a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/organisms/ValueChainNodeCard/index.tsx b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/organisms/ValueChainNodeCard/index.tsx index 02401ed0..461b6d7c 100644 --- a/src/views/Company/components/CompanyOverview/DeepAnalysisTab/organisms/ValueChainNodeCard/index.tsx +++ b/src/views/Company/components/CompanyOverview/DeepAnalysisTab/organisms/ValueChainNodeCard/index.tsx @@ -22,15 +22,15 @@ import { ScaleFade, } from '@chakra-ui/react'; import { - FaBuilding, - FaHandshake, - FaUserTie, - FaIndustry, - FaCog, - FaNetworkWired, - FaFlask, - FaStar, -} from 'react-icons/fa'; + Building, + Handshake, + UserCircle, + Factory, + Settings, + Network, + FlaskConical, + Star, +} from 'lucide-react'; import { logger } from '@utils/logger'; import axios from '@utils/axiosConfig'; import RelatedCompaniesModal from './RelatedCompaniesModal'; @@ -71,17 +71,17 @@ const THEME = { */ const getNodeTypeIcon = (type: string) => { const icons: Record = { - company: FaBuilding, - supplier: FaHandshake, - customer: FaUserTie, - product: FaIndustry, - service: FaCog, - channel: FaNetworkWired, - raw_material: FaFlask, - regulator: FaBuilding, - end_user: FaUserTie, + company: Building, + supplier: Handshake, + customer: UserCircle, + product: Factory, + service: Settings, + channel: Network, + raw_material: FlaskConical, + regulator: Building, + end_user: UserCircle, }; - return icons[type] || FaBuilding; + return icons[type] || Building; }; /** @@ -195,7 +195,7 @@ const ValueChainNodeCard: React.FC = memo(({ node.importance_score >= 70 && ( - + )} diff --git a/src/views/Company/components/CompanyOverview/components/shareholder/ActualControlCard.tsx b/src/views/Company/components/CompanyOverview/components/shareholder/ActualControlCard.tsx index ffeb6b40..af07c684 100644 --- a/src/views/Company/components/CompanyOverview/components/shareholder/ActualControlCard.tsx +++ b/src/views/Company/components/CompanyOverview/components/shareholder/ActualControlCard.tsx @@ -17,7 +17,7 @@ import { StatNumber, StatHelpText, } from "@chakra-ui/react"; -import { FaCrown } from "react-icons/fa"; +import { Crown } from "lucide-react"; import type { ActualControl } from "../../types"; import { THEME } from "../../BasicInfoTab/config"; @@ -58,7 +58,7 @@ const ActualControlCard: React.FC = ({ actualControl = [ return ( - + 实际控制人 diff --git a/src/views/Company/components/CompanyOverview/components/shareholder/ConcentrationCard.tsx b/src/views/Company/components/CompanyOverview/components/shareholder/ConcentrationCard.tsx index bb600010..97bdd58b 100644 --- a/src/views/Company/components/CompanyOverview/components/shareholder/ConcentrationCard.tsx +++ b/src/views/Company/components/CompanyOverview/components/shareholder/ConcentrationCard.tsx @@ -15,7 +15,7 @@ import { CardHeader, SimpleGrid, } from "@chakra-ui/react"; -import { FaChartPie, FaArrowUp, FaArrowDown } from "react-icons/fa"; +import { PieChart, ArrowUp, ArrowDown } from "lucide-react"; import { echarts, type ECharts, type EChartsOption } from '@lib/echarts'; import type { Concentration } from "../../types"; import { THEME } from "../../BasicInfoTab/config"; @@ -182,7 +182,7 @@ const ConcentrationCard: React.FC = ({ concentration = [ return ( - + 股权集中度 @@ -208,7 +208,7 @@ const ConcentrationCard: React.FC = ({ concentration = [ colorScheme={item.ratio_change > 0 ? "red" : "green"} > 0 ? FaArrowUp : FaArrowDown} + as={item.ratio_change > 0 ? ArrowUp : ArrowDown} mr={1} boxSize={3} /> diff --git a/src/views/Company/components/CompanyOverview/components/shareholder/ShareholdersTable.tsx b/src/views/Company/components/CompanyOverview/components/shareholder/ShareholdersTable.tsx index f6eab8ef..3cceaca5 100644 --- a/src/views/Company/components/CompanyOverview/components/shareholder/ShareholdersTable.tsx +++ b/src/views/Company/components/CompanyOverview/components/shareholder/ShareholdersTable.tsx @@ -5,7 +5,7 @@ import React, { useMemo, memo } from "react"; import { Box, HStack, Heading, Badge, Icon, useBreakpointValue } from "@chakra-ui/react"; import { Table, Tag, Tooltip, ConfigProvider } from "antd"; import type { ColumnsType } from "antd/es/table"; -import { FaUsers, FaChartLine } from "react-icons/fa"; +import { Users, LineChart } from "lucide-react"; import type { Shareholder } from "../../types"; import { THEME } from "../../BasicInfoTab/config"; @@ -96,7 +96,7 @@ const ShareholdersTable: React.FC = ({ if (type === "circulation") { return { title: title || "十大流通股东", - icon: FaChartLine, + icon: LineChart, iconColor: "purple.500", ratioField: "circulation_share_ratio" as keyof Shareholder, ratioLabel: "流通股比例", @@ -106,7 +106,7 @@ const ShareholdersTable: React.FC = ({ } return { title: title || "十大股东", - icon: FaUsers, + icon: Users, iconColor: "green.500", ratioField: "total_share_ratio" as keyof Shareholder, ratioLabel: "持股比例", diff --git a/src/views/Company/components/DynamicTracking/NewsEventsTab/components/NewsEmptyState.tsx b/src/views/Company/components/DynamicTracking/NewsEventsTab/components/NewsEmptyState.tsx index 44f6a849..5e5d347b 100644 --- a/src/views/Company/components/DynamicTracking/NewsEventsTab/components/NewsEmptyState.tsx +++ b/src/views/Company/components/DynamicTracking/NewsEventsTab/components/NewsEmptyState.tsx @@ -3,7 +3,7 @@ import React, { memo } from 'react'; import { Center, VStack, Icon, Text } from '@chakra-ui/react'; -import { FaNewspaper } from 'react-icons/fa'; +import { Newspaper } from 'lucide-react'; import type { NewsEmptyStateProps } from '../types'; const NewsEmptyState: React.FC = ({ @@ -15,7 +15,7 @@ const NewsEmptyState: React.FC = ({
= ({ {event.view_count !== undefined && ( - + {event.view_count} @@ -125,7 +125,7 @@ const NewsEventCard: React.FC = ({ )} {event.hot_score !== undefined && ( - + {event.hot_score.toFixed(1)} @@ -152,7 +152,7 @@ const NewsEventCard: React.FC = ({ - + 相关涨跌: diff --git a/src/views/Company/components/DynamicTracking/NewsEventsTab/components/NewsPagination.tsx b/src/views/Company/components/DynamicTracking/NewsEventsTab/components/NewsPagination.tsx index 27d26e81..619d7593 100644 --- a/src/views/Company/components/DynamicTracking/NewsEventsTab/components/NewsPagination.tsx +++ b/src/views/Company/components/DynamicTracking/NewsEventsTab/components/NewsPagination.tsx @@ -3,7 +3,7 @@ import React, { memo, useMemo } from 'react'; import { Box, HStack, Text, Button, Icon } from '@chakra-ui/react'; -import { FaChevronLeft, FaChevronRight } from 'react-icons/fa'; +import { ChevronLeft, ChevronRight } from 'lucide-react'; import type { NewsPaginationProps } from '../types'; const NewsPagination: React.FC = ({ @@ -87,7 +87,7 @@ const NewsPagination: React.FC = ({ _hover={{ bg: theme.cardHoverBg, borderColor: theme.gold }} onClick={() => onPageChange(1)} isDisabled={!has_prev || isLoading} - leftIcon={} + leftIcon={} > 首页 @@ -128,7 +128,7 @@ const NewsPagination: React.FC = ({ _hover={{ bg: theme.cardHoverBg, borderColor: theme.gold }} onClick={() => onPageChange(totalPages)} isDisabled={!has_next || isLoading} - rightIcon={} + rightIcon={} > 末页 diff --git a/src/views/Company/components/DynamicTracking/NewsEventsTab/components/NewsSearchBar.tsx b/src/views/Company/components/DynamicTracking/NewsEventsTab/components/NewsSearchBar.tsx index a915f5db..3a0010b6 100644 --- a/src/views/Company/components/DynamicTracking/NewsEventsTab/components/NewsSearchBar.tsx +++ b/src/views/Company/components/DynamicTracking/NewsEventsTab/components/NewsSearchBar.tsx @@ -3,8 +3,7 @@ import React, { memo } from 'react'; import { HStack, Input, InputGroup, InputLeftElement, Button, Text, Icon } from '@chakra-ui/react'; -import { SearchIcon } from '@chakra-ui/icons'; -import { FaNewspaper } from 'react-icons/fa'; +import { Search, Newspaper } from 'lucide-react'; import type { NewsSearchBarProps } from '../types'; const NewsSearchBar: React.FC = ({ @@ -31,7 +30,7 @@ const NewsSearchBar: React.FC = ({ - + = ({ {total > 0 && ( - + 共找到{' '} diff --git a/src/views/Company/components/DynamicTracking/NewsEventsTab/types.ts b/src/views/Company/components/DynamicTracking/NewsEventsTab/types.ts index 4fe69202..cbac9527 100644 --- a/src/views/Company/components/DynamicTracking/NewsEventsTab/types.ts +++ b/src/views/Company/components/DynamicTracking/NewsEventsTab/types.ts @@ -1,7 +1,7 @@ // src/views/Company/components/DynamicTracking/NewsEventsTab/types.ts // 新闻动态 - 类型定义 -import type { IconType } from 'react-icons'; +import type { LucideIcon } from 'lucide-react'; /** * 徽章样式配置 diff --git a/src/views/Company/components/DynamicTracking/NewsEventsTab/utils.ts b/src/views/Company/components/DynamicTracking/NewsEventsTab/utils.ts index 4f3c5098..2c6f978d 100644 --- a/src/views/Company/components/DynamicTracking/NewsEventsTab/utils.ts +++ b/src/views/Company/components/DynamicTracking/NewsEventsTab/utils.ts @@ -1,38 +1,38 @@ // src/views/Company/components/DynamicTracking/NewsEventsTab/utils.ts // 新闻动态 - 工具函数 -import type { IconType } from 'react-icons'; +import type { LucideIcon } from 'lucide-react'; import { - FaNewspaper, - FaBullhorn, - FaGavel, - FaFlask, - FaDollarSign, - FaShieldAlt, - FaFileAlt, - FaIndustry, -} from 'react-icons/fa'; + Newspaper, + Megaphone, + Gavel, + FlaskConical, + DollarSign, + Shield, + FileText, + Factory, +} from 'lucide-react'; import type { ThemeConfig, BadgeStyle } from './types'; /** * 事件类型图标映射 */ -const EVENT_TYPE_ICONS: Record = { - 企业公告: FaBullhorn, - 政策: FaGavel, - 技术突破: FaFlask, - 企业融资: FaDollarSign, - 政策监管: FaShieldAlt, - 政策动态: FaFileAlt, - 行业事件: FaIndustry, +const EVENT_TYPE_ICONS: Record = { + 企业公告: Megaphone, + 政策: Gavel, + 技术突破: FlaskConical, + 企业融资: DollarSign, + 政策监管: Shield, + 政策动态: FileText, + 行业事件: Factory, }; /** * 获取事件类型对应的图标 */ -export const getEventTypeIcon = (eventType?: string): IconType => { - if (!eventType) return FaNewspaper; - return EVENT_TYPE_ICONS[eventType] || FaNewspaper; +export const getEventTypeIcon = (eventType?: string): LucideIcon => { + if (!eventType) return Newspaper; + return EVENT_TYPE_ICONS[eventType] || Newspaper; }; /** diff --git a/src/views/Company/components/DynamicTracking/components/DynamicTrackingNavSkeleton.tsx b/src/views/Company/components/DynamicTracking/components/DynamicTrackingNavSkeleton.tsx index 8c545ed6..f2a659ca 100644 --- a/src/views/Company/components/DynamicTracking/components/DynamicTrackingNavSkeleton.tsx +++ b/src/views/Company/components/DynamicTracking/components/DynamicTrackingNavSkeleton.tsx @@ -17,7 +17,7 @@ import { Card, CardBody, } from '@chakra-ui/react'; -import { FaNewspaper, FaBullhorn, FaCalendarAlt, FaChartBar } from 'react-icons/fa'; +import { Newspaper, Megaphone, Calendar, BarChart2 } from 'lucide-react'; // 深空 FUI 主题配置(与 SubTabContainer 保持一致) const DEEP_SPACE = { @@ -35,10 +35,10 @@ const DEEP_SPACE = { // 导航配置(与主组件保持同步) const TRACKING_TABS = [ - { key: 'news', name: '新闻动态', icon: FaNewspaper }, - { key: 'announcements', name: '公司公告', icon: FaBullhorn }, - { key: 'disclosure', name: '财报披露日程', icon: FaCalendarAlt }, - { key: 'forecast', name: '业绩预告', icon: FaChartBar }, + { key: 'news', name: '新闻动态', icon: Newspaper }, + { key: 'announcements', name: '公司公告', icon: Megaphone }, + { key: 'disclosure', name: '财报披露日程', icon: Calendar }, + { key: 'forecast', name: '业绩预告', icon: BarChart2 }, ]; /** diff --git a/src/views/Company/components/DynamicTracking/index.js b/src/views/Company/components/DynamicTracking/index.js index ba15d544..a2ff3265 100644 --- a/src/views/Company/components/DynamicTracking/index.js +++ b/src/views/Company/components/DynamicTracking/index.js @@ -4,7 +4,7 @@ import React, { useState, useEffect, useMemo, useCallback, memo, lazy } from 'react'; import { Card, CardBody } from '@chakra-ui/react'; -import { FaNewspaper, FaBullhorn, FaCalendarAlt, FaChartBar } from 'react-icons/fa'; +import { Newspaper, Megaphone, Calendar, BarChart2 } from 'lucide-react'; import SubTabContainer from '@components/SubTabContainer'; import { @@ -29,28 +29,28 @@ const TRACKING_TABS = [ { key: 'news', name: '新闻动态', - icon: FaNewspaper, + icon: Newspaper, component: NewsPanel, fallback: , }, { key: 'announcements', name: '公司公告', - icon: FaBullhorn, + icon: Megaphone, component: AnnouncementsPanel, fallback: , }, { key: 'disclosure', name: '财报披露日程', - icon: FaCalendarAlt, + icon: Calendar, component: DisclosureSchedulePanel, fallback: , }, { key: 'forecast', name: '业绩预告', - icon: FaChartBar, + icon: BarChart2, component: ForecastPanel, fallback: , }, diff --git a/src/views/Company/components/FinancialPanorama/components/StockComparison.tsx b/src/views/Company/components/FinancialPanorama/components/StockComparison.tsx index ab9e867a..3642449c 100644 --- a/src/views/Company/components/FinancialPanorama/components/StockComparison.tsx +++ b/src/views/Company/components/FinancialPanorama/components/StockComparison.tsx @@ -23,7 +23,7 @@ import { Grid, GridItem, } from '@chakra-ui/react'; -import { ArrowUpIcon, ArrowDownIcon } from '@chakra-ui/icons'; +import { ArrowUp, ArrowDown } from 'lucide-react'; import { useToast } from '@chakra-ui/react'; import ReactECharts from 'echarts-for-react'; import { logger } from '@utils/logger'; @@ -166,8 +166,8 @@ export const StockComparison: React.FC = ({ {diff !== null ? ( - {diff > 0 && } - {diff < 0 && } + {diff > 0 && } + {diff < 0 && } {metric.format === 'percent' ? `${Math.abs(diff).toFixed(2)}pp` diff --git a/src/views/Company/components/MarketDataView/components/AnalysisModal.tsx b/src/views/Company/components/MarketDataView/components/AnalysisModal.tsx index a5906710..1b4040c3 100644 --- a/src/views/Company/components/MarketDataView/components/AnalysisModal.tsx +++ b/src/views/Company/components/MarketDataView/components/AnalysisModal.tsx @@ -16,7 +16,6 @@ import { Text, Icon, } from '@chakra-ui/react'; -import { ExternalLinkIcon } from '@chakra-ui/icons'; import { FileText, TrendingUp, Building2, Newspaper, BookOpen } from 'lucide-react'; import MarkdownRenderer from './MarkdownRenderer'; import { formatNumber } from '../utils/formatUtils'; diff --git a/src/views/Company/components/MarketDataView/components/panels/TradeDataPanel/MetricOverlaySearch.tsx b/src/views/Company/components/MarketDataView/components/panels/TradeDataPanel/MetricOverlaySearch.tsx index 080775ea..c3477b62 100644 --- a/src/views/Company/components/MarketDataView/components/panels/TradeDataPanel/MetricOverlaySearch.tsx +++ b/src/views/Company/components/MarketDataView/components/panels/TradeDataPanel/MetricOverlaySearch.tsx @@ -28,8 +28,7 @@ import { Flex, useDisclosure, } from '@chakra-ui/react'; -import { SearchIcon, CloseIcon, AddIcon } from '@chakra-ui/icons'; -import { Database, TrendingUp } from 'lucide-react'; +import { Database, TrendingUp, Search, X, Plus } from 'lucide-react'; import debounce from 'lodash/debounce'; import { searchMetrics, fetchMetricData, type MetricSearchResult } from '@services/categoryService'; @@ -233,7 +232,7 @@ const MetricOverlaySearch: React.FC = ({ {/* Search input */} - + = ({ } + icon={} onClick={() => { setSearchQuery(''); setSearchResults([]); @@ -318,7 +317,7 @@ const MetricOverlaySearch: React.FC = ({ {isAdded ? ( Added ) : ( - + )} diff --git a/src/views/Company/components/MarketDataView/components/panels/TradeDataPanel/components/DailyKLineChart.tsx b/src/views/Company/components/MarketDataView/components/panels/TradeDataPanel/components/DailyKLineChart.tsx index 5d03248c..d0fe4e65 100644 --- a/src/views/Company/components/MarketDataView/components/panels/TradeDataPanel/components/DailyKLineChart.tsx +++ b/src/views/Company/components/MarketDataView/components/panels/TradeDataPanel/components/DailyKLineChart.tsx @@ -3,7 +3,7 @@ import React, { memo, useMemo } from 'react'; import { Box, Text, VStack, Center, Icon } from '@chakra-ui/react'; -import { InfoIcon } from '@chakra-ui/icons'; +import { Info } from 'lucide-react'; import ReactECharts from 'echarts-for-react'; import { darkGoldTheme } from '../../../../constants'; @@ -32,7 +32,7 @@ export interface DailyKLineChartProps { const EmptyState: React.FC<{ title: string; description: string }> = ({ title, description }) => (
- + {title} {description} diff --git a/src/views/Company/components/MarketDataView/components/panels/TradeDataPanel/components/KLineToolbar.tsx b/src/views/Company/components/MarketDataView/components/panels/TradeDataPanel/components/KLineToolbar.tsx index 18811ab3..623a92e7 100644 --- a/src/views/Company/components/MarketDataView/components/panels/TradeDataPanel/components/KLineToolbar.tsx +++ b/src/views/Company/components/MarketDataView/components/panels/TradeDataPanel/components/KLineToolbar.tsx @@ -18,8 +18,7 @@ import { MenuItem, Tooltip, } from '@chakra-ui/react'; -import { RepeatIcon, ChevronDownIcon, ViewIcon, ViewOffIcon } from '@chakra-ui/icons'; -import { BarChart2, TrendingUp, Calendar, LineChart, Activity, Pencil } from 'lucide-react'; +import { BarChart2, TrendingUp, Calendar, LineChart, Activity, Pencil, RefreshCw, ChevronDown, Eye, EyeOff } from 'lucide-react'; import { darkGoldTheme, PERIOD_OPTIONS } from '../../../../constants'; import type { IndicatorType, MainIndicatorType, DrawingType } from '../../../../utils/chartOptions'; @@ -155,7 +154,7 @@ const KLineToolbar: React.FC = ({