fix(types): 修复 ECharts 类型导出和组件类型冲突
- echarts.ts: 将 EChartsOption 改为 EChartsCoreOption 的类型别名 - FuiCorners: 移除 extends BoxProps,position 重命名为 corner - KLineChartModal/TimelineChartModal/ConcentrationCard: 使用导入的 EChartsOption - LoadingState: 新增骨架屏 variant 支持 - FinancialPanorama: 使用骨架屏加载状态 - useFinancialData/financialService: 优化数据获取逻辑 - Company/index: 简化组件结构 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -9,13 +9,17 @@ import axios from '@utils/axiosConfig';
|
||||
/**
|
||||
* 统一的 API 请求函数
|
||||
* axios 拦截器已自动处理日志记录
|
||||
* @param {string} url - 请求 URL
|
||||
* @param {object} options - 请求选项
|
||||
* @param {AbortSignal} options.signal - AbortController 信号,用于取消请求
|
||||
*/
|
||||
const apiRequest = async (url, options = {}) => {
|
||||
const { method = 'GET', body, ...rest } = options;
|
||||
const { method = 'GET', body, signal, ...rest } = options;
|
||||
|
||||
const config = {
|
||||
method,
|
||||
url,
|
||||
signal,
|
||||
...rest,
|
||||
};
|
||||
|
||||
@@ -36,80 +40,98 @@ export const financialService = {
|
||||
/**
|
||||
* 获取股票基本信息和最新财务摘要
|
||||
* @param {string} seccode - 股票代码
|
||||
* @param {object} options - 请求选项
|
||||
* @param {AbortSignal} options.signal - AbortController 信号
|
||||
*/
|
||||
getStockInfo: async (seccode) => {
|
||||
return await apiRequest(`/api/financial/stock-info/${seccode}`);
|
||||
getStockInfo: async (seccode, options = {}) => {
|
||||
return await apiRequest(`/api/financial/stock-info/${seccode}`, options);
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取完整的资产负债表数据
|
||||
* @param {string} seccode - 股票代码
|
||||
* @param {number} limit - 获取的报告期数量
|
||||
* @param {object} options - 请求选项
|
||||
* @param {AbortSignal} options.signal - AbortController 信号
|
||||
*/
|
||||
getBalanceSheet: async (seccode, limit = 12) => {
|
||||
return await apiRequest(`/api/financial/balance-sheet/${seccode}?limit=${limit}`);
|
||||
getBalanceSheet: async (seccode, limit = 12, options = {}) => {
|
||||
return await apiRequest(`/api/financial/balance-sheet/${seccode}?limit=${limit}`, options);
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取完整的利润表数据
|
||||
* @param {string} seccode - 股票代码
|
||||
* @param {number} limit - 获取的报告期数量
|
||||
* @param {object} options - 请求选项
|
||||
* @param {AbortSignal} options.signal - AbortController 信号
|
||||
*/
|
||||
getIncomeStatement: async (seccode, limit = 12) => {
|
||||
return await apiRequest(`/api/financial/income-statement/${seccode}?limit=${limit}`);
|
||||
getIncomeStatement: async (seccode, limit = 12, options = {}) => {
|
||||
return await apiRequest(`/api/financial/income-statement/${seccode}?limit=${limit}`, options);
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取完整的现金流量表数据
|
||||
* @param {string} seccode - 股票代码
|
||||
* @param {number} limit - 获取的报告期数量
|
||||
* @param {object} options - 请求选项
|
||||
* @param {AbortSignal} options.signal - AbortController 信号
|
||||
*/
|
||||
getCashflow: async (seccode, limit = 12) => {
|
||||
return await apiRequest(`/api/financial/cashflow/${seccode}?limit=${limit}`);
|
||||
getCashflow: async (seccode, limit = 12, options = {}) => {
|
||||
return await apiRequest(`/api/financial/cashflow/${seccode}?limit=${limit}`, options);
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取完整的财务指标数据
|
||||
* @param {string} seccode - 股票代码
|
||||
* @param {number} limit - 获取的报告期数量
|
||||
* @param {object} options - 请求选项
|
||||
* @param {AbortSignal} options.signal - AbortController 信号
|
||||
*/
|
||||
getFinancialMetrics: async (seccode, limit = 12) => {
|
||||
return await apiRequest(`/api/financial/financial-metrics/${seccode}?limit=${limit}`);
|
||||
getFinancialMetrics: async (seccode, limit = 12, options = {}) => {
|
||||
return await apiRequest(`/api/financial/financial-metrics/${seccode}?limit=${limit}`, options);
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取主营业务构成数据
|
||||
* @param {string} seccode - 股票代码
|
||||
* @param {number} periods - 获取的报告期数量
|
||||
* @param {object} options - 请求选项
|
||||
* @param {AbortSignal} options.signal - AbortController 信号
|
||||
*/
|
||||
getMainBusiness: async (seccode, periods = 4) => {
|
||||
return await apiRequest(`/api/financial/main-business/${seccode}?periods=${periods}`);
|
||||
getMainBusiness: async (seccode, periods = 4, options = {}) => {
|
||||
return await apiRequest(`/api/financial/main-business/${seccode}?periods=${periods}`, options);
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取业绩预告和预披露时间
|
||||
* @param {string} seccode - 股票代码
|
||||
* @param {object} options - 请求选项
|
||||
* @param {AbortSignal} options.signal - AbortController 信号
|
||||
*/
|
||||
getForecast: async (seccode) => {
|
||||
return await apiRequest(`/api/financial/forecast/${seccode}`);
|
||||
getForecast: async (seccode, options = {}) => {
|
||||
return await apiRequest(`/api/financial/forecast/${seccode}`, options);
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取行业排名数据
|
||||
* @param {string} seccode - 股票代码
|
||||
* @param {number} limit - 获取的报告期数量
|
||||
* @param {object} options - 请求选项
|
||||
* @param {AbortSignal} options.signal - AbortController 信号
|
||||
*/
|
||||
getIndustryRank: async (seccode, limit = 4) => {
|
||||
return await apiRequest(`/api/financial/industry-rank/${seccode}?limit=${limit}`);
|
||||
getIndustryRank: async (seccode, limit = 4, options = {}) => {
|
||||
return await apiRequest(`/api/financial/industry-rank/${seccode}?limit=${limit}`, options);
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取不同报告期的对比数据
|
||||
* @param {string} seccode - 股票代码
|
||||
* @param {number} periods - 对比的报告期数量
|
||||
* @param {object} options - 请求选项
|
||||
* @param {AbortSignal} options.signal - AbortController 信号
|
||||
*/
|
||||
getPeriodComparison: async (seccode, periods = 8) => {
|
||||
return await apiRequest(`/api/financial/comparison/${seccode}?periods=${periods}`);
|
||||
getPeriodComparison: async (seccode, periods = 8, options = {}) => {
|
||||
return await apiRequest(`/api/financial/comparison/${seccode}?periods=${periods}`, options);
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user