import React from 'react'; import { Box, Typography, Paper, List, ListItem, ListItemIcon, Collapse, FormControl, InputLabel, Select, MenuItem, SelectChangeEvent, Checkbox, Button, } from '@mui/material'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import ExpandLessIcon from '@mui/icons-material/ExpandLess'; import { FieldType } from '@/utils/dummyDataGenerator'; // 字段数据接口 interface FieldData { id: string; fieldType: string; label: string | null; placeholder: string; name: string; value: string; isSelected: boolean; generatedValue: string; useInvalidData?: boolean; } // 字段类型显示名称映射 const FIELD_TYPE_NAMES: Record = { [FieldType.TEXT]: '文本', [FieldType.EMAIL]: '邮箱', [FieldType.PHONE]: '手机号', [FieldType.NUMBER]: '数字', [FieldType.DATE]: '日期', [FieldType.TEXTarea]: '文本域', [FieldType.RADIO]: '单选框', [FieldType.CHECKBOX]: '复选框', [FieldType.SELECT]: '下拉框', [FieldType.PASSWORD]: '密码', [FieldType.NAME]: '姓名', [FieldType.ID_CARD]: '身份证号', [FieldType.UNKNOWN]: '未知', }; interface FieldListProps { fields: FieldData[]; showFields: boolean; onToggleShowFields: () => void; onFieldTypeChange: (fieldId: string, newType: string) => void; onLocateField: (fieldId: string) => void; onHoverField: (fieldId: string | null) => void; onToggleFieldSelection: (fieldId: string) => void; onToggleAllFields: () => void; hoveredFieldId: string | null; } const FieldList: React.FC = ({ fields, showFields, onToggleShowFields, onFieldTypeChange, onHoverField, onToggleFieldSelection, onToggleAllFields, hoveredFieldId, }) => { if (fields.length === 0) return null; const handleTypeChange = (fieldId: string, event: SelectChangeEvent) => { onFieldTypeChange(fieldId, event.target.value); }; const allSelected = fields.every((f) => f.isSelected); const selectedCount = fields.filter((f) => f.isSelected).length; return ( 已识别字段 ({fields.length}) 0 ? 'primary.main' : 'grey.300', color: selectedCount > 0 ? 'white' : 'text.secondary', px: 1, py: 0.25, borderRadius: 1, }} > {selectedCount} 已选择 {showFields ? : } {fields.map((field, index) => ( onHoverField(field.id)} onMouseLeave={() => onHoverField(null)} > { e.stopPropagation(); onToggleFieldSelection(field.id); }} /> {field.label || field.name || field.placeholder || `字段 ${index + 1}`} 类型 {field.placeholder && ( 占位符: {field.placeholder} )} ))} ); }; export default FieldList;