// src/views/Company/components/DynamicTracking/NewsEventsTab/utils.ts // 新闻动态 - 工具函数 import type { IconType } from 'react-icons'; import { FaNewspaper, FaBullhorn, FaGavel, FaFlask, FaDollarSign, FaShieldAlt, FaFileAlt, FaIndustry, } from 'react-icons/fa'; import type { ThemeConfig, BadgeStyle } from './types'; /** * 事件类型图标映射 */ const EVENT_TYPE_ICONS: Record = { 企业公告: FaBullhorn, 政策: FaGavel, 技术突破: FaFlask, 企业融资: FaDollarSign, 政策监管: FaShieldAlt, 政策动态: FaFileAlt, 行业事件: FaIndustry, }; /** * 获取事件类型对应的图标 */ export const getEventTypeIcon = (eventType?: string): IconType => { if (!eventType) return FaNewspaper; return EVENT_TYPE_ICONS[eventType] || FaNewspaper; }; /** * 获取重要性徽章样式 */ export const getImportanceBadgeStyle = ( importance: string | undefined, theme: ThemeConfig, isBlackGold: boolean ): BadgeStyle => { if (isBlackGold) { const styles: Record = { S: theme.badgeS, A: theme.badgeA, B: theme.badgeB, C: theme.badgeC, }; return styles[importance || ''] || { bg: 'rgba(107, 114, 128, 0.2)', color: '#9CA3AF' }; } // 默认主题使用 colorScheme const colorMap: Record = { S: 'red', A: 'orange', B: 'yellow', C: 'green', }; return { colorScheme: colorMap[importance || ''] || 'gray', bg: '', color: '' }; }; /** * 格式化日期 */ export const formatDate = (dateStr?: string): string => { if (!dateStr) return ''; return new Date(dateStr).toLocaleDateString('zh-CN', { year: 'numeric', month: '2-digit', day: '2-digit', }); }; /** * 格式化涨跌幅 */ export const formatChange = (value: number | null | undefined): string => { if (value === null || value === undefined) return '-'; const prefix = value > 0 ? '+' : ''; return `${prefix}${value.toFixed(2)}%`; }; /** * 获取涨跌幅颜色 */ export const getChangeColor = (value: number | null | undefined): string => { if (value === null || value === undefined) return '#9CA3AF'; return value > 0 ? '#EF4444' : '#10B981'; }; /** * 提取关键词显示文本 */ export const getKeywordText = (keyword: string | { concept?: string; name?: string }): string => { if (typeof keyword === 'string') return keyword; return keyword?.concept || keyword?.name || '未知'; };