/** * filekorolheader: 查看参数对话框 - 参数详情展示组件 * 功能:展示参数详细信息、参数配置、选项列表 * 路径:/ai-crop-model/data-sense-center/device-parameter/components * 规范:遵循crop-x/docs/开发项目规范.md,使用shadcn语义化样式 */ import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogFooter } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { Card } from '@/components/ui/card'; import { ParameterDefinition, DeviceType } from './deviceParameterReducer'; import { Eye, Settings, Hash } from 'lucide-react'; interface ViewParameterDialogProps { open: boolean; onOpenChange: (open: boolean) => void; viewingParam: ParameterDefinition | null; selectedType: DeviceType | null; } export function ViewParameterDialog({ open, onOpenChange, viewingParam, selectedType }: ViewParameterDialogProps) { const getParamTypeLabel = (type: string) => { const labels: Record = { 'number': '数字', 'string': '文本', 'boolean': '布尔', 'select': '选择' }; return labels[type] || type; }; const getParamTypeColor = (type: string) => { const colors: Record = { 'number': 'border-blue-200 dark:border-blue-800 text-blue-700 dark:text-blue-300 bg-blue-50 dark:bg-blue-950', 'string': 'border-green-200 dark:border-green-800 text-green-700 dark:text-green-300 bg-green-50 dark:bg-green-950', 'boolean': 'border-purple-200 dark:border-purple-800 text-purple-700 dark:text-purple-300 bg-purple-50 dark:bg-purple-950', 'select': 'border-orange-200 dark:border-orange-800 text-orange-700 dark:text-orange-300 bg-orange-50 dark:bg-orange-950' }; return colors[type] || 'border-gray-200 dark:border-gray-800 text-gray-700 dark:text-gray-300 bg-gray-50 dark:bg-gray-950'; }; return ( 参数详情 查看参数的详细配置信息 {viewingParam && (
{/* 参数基本信息 */}

基本信息

参数标识
{viewingParam.key}
参数名称
{viewingParam.label}
数据类型
{getParamTypeLabel(viewingParam.type)}
是否必填
{viewingParam.required ? ( 必填 ) : ( 选填 )}
参数描述
{viewingParam.description || '暂无描述'}
{/* 参数配置 */}

参数配置

默认值
{viewingParam.type === 'boolean' ? ( {viewingParam.defaultValue ? '是' : '否'} ) : viewingParam.type === 'select' && viewingParam.options ? (
{viewingParam.options.find(opt => opt.value === viewingParam.defaultValue)?.label || viewingParam.defaultValue}
值: {viewingParam.defaultValue}
) : ( {viewingParam.defaultValue?.toString() || '-'} )}
{viewingParam.unit && (
单位
{viewingParam.unit}
)} {viewingParam.type === 'number' && (viewingParam.min !== undefined || viewingParam.max !== undefined) && (
取值范围
{viewingParam.min !== undefined && viewingParam.max !== undefined ? `${viewingParam.min} ~ ${viewingParam.max}` : viewingParam.min !== undefined ? `≥ ${viewingParam.min}` : viewingParam.max !== undefined ? `≤ ${viewingParam.max}` : '-'} {viewingParam.unit && ` ${viewingParam.unit}`}
)}
{/* 选择类型选项 */} {viewingParam.type === 'select' && viewingParam.options && (

选项列表

{viewingParam.options.length} 个选项
{viewingParam.options.map((option, index) => (
{option.label} ({option.value}) {viewingParam.defaultValue === option.value && ( 默认 )}
))}
)} {/* 设备信息 */}
所属设备类型
{selectedType?.name}
{selectedType?.manufacturer && (
{selectedType.manufacturer} {selectedType.model ? `· ${selectedType.model}` : ''}
)}
)}
); }