import React, { useState } from 'react'; interface BasicInfoProps { onChange?: (data: Record) => void; } // 定义表单数据类型 interface FormDataType { name: string; code: string; risk: string; is_enabled: boolean; description: string; references_laws: { name: string; articles: string[]; content: string; }; evaluation_point_groups_id: number | null; type: string; } export function BasicInfo({ onChange }: BasicInfoProps) { const [formData, setFormData] = useState({ name: '', code: '', risk: 'medium', is_enabled: true, description: '', references_laws: { name: '', articles: [], content: '' }, evaluation_point_groups_id: null, type: '' }); const [isDescExpanded, setIsDescExpanded] = useState(false); const [lawArticlesInput, setLawArticlesInput] = useState(''); const handleToggleDescription = () => { setIsDescExpanded(!isDescExpanded); }; const handleInputChange = (e: React.ChangeEvent) => { const { id, value } = e.target; const newData = { ...formData }; // 映射id到表单字段名 switch(id) { case 'rule-name': newData.name = value; break; case 'rule-code': newData.code = value; break; case 'risk-level': newData.risk = value; break; case 'is-enabled': newData.is_enabled = value === 'true'; break; case 'rule-description': newData.description = value; break; case 'law-name': newData.references_laws.name = value; break; case 'law-content': newData.references_laws.content = value; break; case 'law-articles': setLawArticlesInput(value); break; case 'evaluation-point-group': newData.evaluation_point_groups_id = value ? parseInt(value) : null; break; case 'checkpoint-type': newData.type = value; break; } setFormData(newData); if (onChange) { onChange(newData); } }; const handleLawArticlesChange = (value: string) => { setLawArticlesInput(value); const articles = value.split(',') .map(article => article.trim()) .filter(article => article !== ''); const newData = { ...formData, references_laws: { ...formData.references_laws, articles } }; setFormData(newData); if (onChange) { onChange(newData); } }; return (

基本信息

请使用简洁明了的名称,不超过30个字符
用于系统标识的唯一编码
请定义评查点的风险等级
评查点类型用于分类管理,便于规则统一调用
创建后是否立即启用此评查点
{ if (e.key === 'Enter' || e.key === ' ') { handleToggleDescription(); } }} tabIndex={0} role="button" >
详细描述有助于其他用户了解该评查点的用途
{/* 引用法典输入区域 */}
handleLawArticlesChange(e.target.value)} />
多个条款用逗号分隔,将自动转换为数组格式
引用的法律条文将在评查结果中显示,帮助用户理解评查规则的法律依据
{/* 预览区域 */}
预览效果
{formData.references_laws.name || '《中华人民共和国民法典》'}
{formData.references_laws.articles.length > 0 ? formData.references_laws.articles.map((article, index) => ( {article} )) : ( <> 第五百八十五条 第五百八十六条 )}
{formData.references_laws.content || '当事人应当按照约定全面履行自己的义务。'}
); }