mirror of
https://github.com/patdelphi/suanming.git
synced 2026-03-10 18:43:11 +08:00
feat: 完整实现奇门遁甲功能并优化显示效果
主要功能实现: - 新增奇门遁甲分析完整功能模块 - 实现奇门盘可视化展示 - 添加用神分析、格局识别、预测结果等核心功能 - 集成AI解读和PDF导出功能 - 扩展历史记录支持奇门遁甲类型 显示优化: - 修复时机评估[object Object]显示问题 - 优化时机评估显示为简洁格式 - 完善英文字段中文化映射 - 移除重复的成功概率显示 - 统一数值显示格式(小数转整数) 技术改进: - 扩展类型定义支持奇门遁甲 - 完善API接口和路由 - 优化错误处理和用户体验 - 统一前后端字段映射机制
This commit is contained in:
@@ -2,11 +2,12 @@ import React from 'react';
|
||||
import CompleteBaziAnalysis from './CompleteBaziAnalysis';
|
||||
import CompleteZiweiAnalysis from './CompleteZiweiAnalysis';
|
||||
import CompleteYijingAnalysis from './CompleteYijingAnalysis';
|
||||
import CompleteQimenAnalysis from './CompleteQimenAnalysis';
|
||||
import BaziAnalysisDisplay from './BaziAnalysisDisplay';
|
||||
|
||||
interface AnalysisResultDisplayProps {
|
||||
analysisResult?: any;
|
||||
analysisType: 'bazi' | 'ziwei' | 'yijing';
|
||||
analysisType: 'bazi' | 'ziwei' | 'yijing' | 'qimen';
|
||||
birthDate?: {
|
||||
date: string;
|
||||
time: string;
|
||||
@@ -429,6 +430,8 @@ const AnalysisResultDisplay: React.FC<AnalysisResultDisplayProps> = ({
|
||||
return renderZiweiAnalysis();
|
||||
case 'yijing':
|
||||
return renderYijingAnalysis();
|
||||
case 'qimen':
|
||||
return <CompleteQimenAnalysis analysis={analysisResult?.data || analysisResult} />;
|
||||
default:
|
||||
return (
|
||||
<div className="bg-white rounded-lg p-6 shadow-lg">
|
||||
@@ -461,6 +464,11 @@ const AnalysisResultDisplay: React.FC<AnalysisResultDisplayProps> = ({
|
||||
return <CompleteZiweiAnalysis birthDate={birthDate} analysisData={preAnalysisData} recordId={recordId} />;
|
||||
}
|
||||
|
||||
// 对于奇门遁甲,如果有预分析数据,直接返回 CompleteQimenAnalysis 组件
|
||||
if (analysisType === 'qimen' && preAnalysisData) {
|
||||
return <CompleteQimenAnalysis analysis={preAnalysisData} recordId={recordId} />;
|
||||
}
|
||||
|
||||
// 如果没有分析结果数据
|
||||
if (!analysisResult) {
|
||||
return (
|
||||
|
||||
1457
src/components/CompleteQimenAnalysis.tsx
Normal file
1457
src/components/CompleteQimenAnalysis.tsx
Normal file
File diff suppressed because it is too large
Load Diff
@@ -11,7 +11,7 @@ export type ExportMode = 'server' | 'frontend';
|
||||
|
||||
interface DownloadButtonProps {
|
||||
analysisData: any;
|
||||
analysisType: 'bazi' | 'ziwei' | 'yijing';
|
||||
analysisType: 'bazi' | 'ziwei' | 'yijing' | 'qimen';
|
||||
userName?: string;
|
||||
onDownload?: (format: DownloadFormat) => Promise<void>;
|
||||
className?: string;
|
||||
@@ -480,6 +480,7 @@ const DownloadButton: React.FC<DownloadButtonProps> = ({
|
||||
case 'bazi': return '八字命理';
|
||||
case 'ziwei': return '紫微斗数';
|
||||
case 'yijing': return '易经占卜';
|
||||
case 'qimen': return '奇门遁甲';
|
||||
default: return '命理';
|
||||
}
|
||||
};
|
||||
|
||||
@@ -8,6 +8,8 @@ interface YijingQuestionSelectorProps {
|
||||
value: string;
|
||||
onChange: (value: string) => void;
|
||||
className?: string;
|
||||
label?: string;
|
||||
placeholder?: string;
|
||||
}
|
||||
|
||||
// 问题分类和预设问题数据
|
||||
@@ -115,7 +117,9 @@ const questionCategories = {
|
||||
export const YijingQuestionSelector: React.FC<YijingQuestionSelectorProps> = ({
|
||||
value,
|
||||
onChange,
|
||||
className
|
||||
className,
|
||||
label = '占卜问题',
|
||||
placeholder = '请输入您要占卜的问题'
|
||||
}) => {
|
||||
const [selectedCategory, setSelectedCategory] = useState<string>('');
|
||||
const [selectedQuestion, setSelectedQuestion] = useState<string>('');
|
||||
@@ -261,10 +265,10 @@ variant="default"
|
||||
|
||||
{/* 主要问题输入框 */}
|
||||
<ChineseInput
|
||||
label="占卜问题"
|
||||
label={label}
|
||||
value={value}
|
||||
onChange={(e) => onChange(e.target.value)}
|
||||
placeholder="请输入您希望占卜的具体问题,或选择上方预设问题"
|
||||
placeholder={placeholder}
|
||||
required
|
||||
variant="filled"
|
||||
helperText="💡 提示:问题越具体,占卜结果越准确。您可以使用预设问题或自行输入。"
|
||||
|
||||
Reference in New Issue
Block a user