import { Card, Space, Tag, Typography, Popconfirm } from 'antd'; import { EditOutlined, DeleteOutlined, UserOutlined, BankOutlined, ExportOutlined } from '@ant-design/icons'; import { cardStyles } from './CardStyles'; import type { Character } from '../types'; const { Text, Paragraph } = Typography; interface CharacterCardProps { character: Character; onEdit?: (character: Character) => void; onDelete: (id: string) => void; onExport?: () => void; } export const CharacterCard: React.FC = ({ character, onEdit, onDelete, onExport }) => { const getRoleTypeColor = (roleType?: string) => { const roleColors: Record = { 'protagonist': 'blue', 'supporting': 'green', 'antagonist': 'red', }; return roleColors[roleType || ''] || 'default'; }; const getRoleTypeLabel = (roleType?: string) => { const roleLabels: Record = { 'protagonist': '主角', 'supporting': '配角', 'antagonist': '反派', }; return roleLabels[roleType || ''] || '其他'; }; const isOrganization = character.is_organization; return ( onEdit(character)} />] : []), ...(onExport ? [] : []), onDelete(character.id)} okText="确定" cancelText="取消" > , ]} > ) : ( ) } title={ {character.name} {isOrganization ? ( 组织 ) : ( character.role_type && ( {getRoleTypeLabel(character.role_type)} ) )} } description={
{/* 角色特有字段 */} {!isOrganization && ( <> {character.age && (
年龄: {character.age}
)} {character.gender && (
性别: {character.gender}
)} {character.personality && (
性格: {character.personality}
)} )} {/* 组织特有字段 */} {isOrganization && ( <> {character.organization_type && (
类型: {character.organization_type}
)} {character.power_level !== undefined && character.power_level !== null && (
势力等级: = 70 ? 'red' : character.power_level >= 50 ? 'orange' : 'default'}> {character.power_level}
)} {character.location && (
所在地: {character.location}
)} {character.color && (
代表颜色: {character.color}
)} {character.motto && (
格言: {character.motto}
)} {character.organization_purpose && (
目的: {character.organization_purpose}
)} {character.organization_members && (
成员: {typeof character.organization_members === 'string' ? character.organization_members : JSON.stringify(character.organization_members)}
)} )} {/* 通用字段 - 背景信息截断显示 */} {character.background && (
{character.background}
)}
} />
); };