更新Company页面的UI为FUI风格

This commit is contained in:
2025-12-17 21:11:34 +08:00
parent 318a83434a
commit 067b720263
2 changed files with 174 additions and 20 deletions

View File

@@ -1,11 +1,11 @@
/**
* useStockQuoteData - 股票行情数据获取 Hook
*
* 合并获取行情数据和基本信息,供 StockQuoteCard 内部使用
* 使用 /api/stock/{code}/quote-detail 接口获取完整行情数据
* 供 StockQuoteCard 内部使用
*/
import { useState, useEffect, useCallback } from 'react';
import { stockService } from '@services/eventService';
import { logger } from '@utils/logger';
import axios from '@utils/axiosConfig';
import type { StockQuoteCardData } from '../types';
@@ -77,16 +77,23 @@ export const useStockQuoteData = (stockCode?: string): UseStockQuoteDataResult =
const refetchRef = useCallback(async () => {
if (!stockCode) return;
// 获取行情数据
// 标准化股票代码(去除后缀)
const baseCode = stockCode.split('.')[0];
// 获取行情详情数据(使用新的 quote-detail 接口)
setQuoteLoading(true);
setError(null);
try {
logger.debug('useStockQuoteData', '获取股票行情', { stockCode });
const quotes = await stockService.getQuotes([stockCode]);
const quoteResult = quotes?.[stockCode] || quotes;
const transformedData = transformQuoteData(quoteResult, stockCode);
logger.debug('useStockQuoteData', '行情数据转换完成', { stockCode, hasData: !!transformedData });
setQuoteData(transformedData);
logger.debug('useStockQuoteData', '获取股票行情详情', { stockCode, baseCode });
const { data: result } = await axios.get(`/api/stock/${baseCode}/quote-detail`);
if (result.success && result.data) {
const transformedData = transformQuoteData(result.data, stockCode);
logger.debug('useStockQuoteData', '行情数据转换完成', { stockCode, hasData: !!transformedData });
setQuoteData(transformedData);
} else {
setError('获取行情数据失败');
setQuoteData(null);
}
} catch (err) {
logger.error('useStockQuoteData', '获取行情失败', err);
setError('获取行情数据失败');
@@ -95,10 +102,10 @@ export const useStockQuoteData = (stockCode?: string): UseStockQuoteDataResult =
setQuoteLoading(false);
}
// 获取基本信息
// 获取基本信息(公司简介等)
setBasicLoading(true);
try {
const { data: result } = await axios.get(`/api/stock/${stockCode}/basic-info`);
const { data: result } = await axios.get(`/api/stock/${baseCode}/basic-info`);
if (result.success) {
setBasicInfo(result.data);
}
@@ -120,18 +127,27 @@ export const useStockQuoteData = (stockCode?: string): UseStockQuoteDataResult =
const controller = new AbortController();
let isCancelled = false;
// 标准化股票代码(去除后缀)
const baseCode = stockCode.split('.')[0];
const fetchData = async () => {
// 获取行情数据
// 获取行情详情数据(使用新的 quote-detail 接口)
setQuoteLoading(true);
setError(null);
try {
logger.debug('useStockQuoteData', '获取股票行情', { stockCode });
const quotes = await stockService.getQuotes([stockCode]);
logger.debug('useStockQuoteData', '获取股票行情详情', { stockCode, baseCode });
const { data: result } = await axios.get(`/api/stock/${baseCode}/quote-detail`, {
signal: controller.signal,
});
if (isCancelled) return;
const quoteResult = quotes?.[stockCode] || quotes;
const transformedData = transformQuoteData(quoteResult, stockCode);
logger.debug('useStockQuoteData', '行情数据转换完成', { stockCode, hasData: !!transformedData });
setQuoteData(transformedData);
if (result.success && result.data) {
const transformedData = transformQuoteData(result.data, stockCode);
logger.debug('useStockQuoteData', '行情数据转换完成', { stockCode, hasData: !!transformedData });
setQuoteData(transformedData);
} else {
setError('获取行情数据失败');
setQuoteData(null);
}
} catch (err: any) {
if (isCancelled || err.name === 'CanceledError') return;
logger.error('useStockQuoteData', '获取行情失败', err);
@@ -141,10 +157,10 @@ export const useStockQuoteData = (stockCode?: string): UseStockQuoteDataResult =
if (!isCancelled) setQuoteLoading(false);
}
// 获取基本信息
// 获取基本信息(公司简介等)
setBasicLoading(true);
try {
const { data: result } = await axios.get(`/api/stock/${stockCode}/basic-info`, {
const { data: result } = await axios.get(`/api/stock/${baseCode}/basic-info`, {
signal: controller.signal,
});
if (isCancelled) return;