diff --git a/src/views/Company/components/DynamicTracking/components/NewsPanel.js b/src/views/Company/components/DynamicTracking/components/NewsPanel.js index 0c00bd4c..983d7d63 100644 --- a/src/views/Company/components/DynamicTracking/components/NewsPanel.js +++ b/src/views/Company/components/DynamicTracking/components/NewsPanel.js @@ -6,6 +6,30 @@ import { logger } from '@utils/logger'; import axios from '@utils/axiosConfig'; import NewsEventsTab from '../../CompanyOverview/NewsEventsTab'; +/** + * 标准化股票代码(补全后缀) + * @param {string} code - 股票代码(可能不带后缀) + * @returns {string} 带后缀的股票代码 + */ +const normalizeStockCode = (code) => { + if (!code) return code; + // 已有后缀则直接返回 + if (code.includes('.')) return code; + + const pureCode = code.replace(/\D/g, ''); + if (pureCode.length !== 6) return code; + + const prefix = pureCode[0]; + // 上交所:6、9 开头 + if (prefix === '6' || prefix === '9') return `${pureCode}.SH`; + // 深交所:0、2、3 开头 + if (prefix === '0' || prefix === '2' || prefix === '3') return `${pureCode}.SZ`; + // 北交所:8、4 开头 + if (prefix === '8' || prefix === '4') return `${pureCode}.BJ`; + + return code; +}; + const NewsPanel = ({ stockCode }) => { const [newsEvents, setNewsEvents] = useState([]); const [loading, setLoading] = useState(false); @@ -43,7 +67,8 @@ const NewsPanel = ({ stockCode }) => { async (query, page = 1) => { setLoading(true); try { - const searchTerm = query || stockName || stockCode; + // 优先使用自定义查询,否则用股票名称,最后用带后缀的股票代码 + const searchTerm = query || stockName || normalizeStockCode(stockCode); const { data: result } = await axios.get( `/api/events?q=${encodeURIComponent(searchTerm)}&page=${page}&per_page=10` );