更新Company页面的UI为FUI风格
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user