# 调试记录 ## 特殊参数显示问题 ### 问题描述 在数据管理页面中,装备详情对话框的特殊参数部分显示为空行或不显示。 ### 调试步骤 1. 后端数据查询 ```sql # 测试特殊参数查询 SELECT equipment_id, param_name, param_value, param_unit FROM custom_params WHERE param_name IS NOT NULL AND param_value IS NOT NULL LIMIT 5 ``` 2. 日志记录 ```python logging.info(f"Getting details for equipment ID: {id}") logging.info(f"Equipment type: {equipment_type}") logging.info(f"Found equipment details: {result['name']}") logging.info(f"Custom params: {result.get('custom_params')}") ``` 3. 前端调试 ```javascript console.log('Requesting details for row:', row) console.log('Details response:', response.data) console.log('Custom params:', response.data.custom_params) console.log('Selected data:', selectedData.value) ``` ### 关键发现 1. 数据库查询 - 特殊参数表中有数据 - JSON_ARRAYAGG 返回的格式需要处理 - 需要过滤掉 NULL 值 2. 数据格式 - 后端返回的特殊参数是 JSON 字符串 - 需要在前端解析为数组 - 确保数组不为空 3. 前端渲染 - 条件判断需要更严格 - 需要确保数据类型正确 - 需要正确格式化显示值 ### 解决方案 1. 后端查询优化 ```sql ( SELECT JSON_ARRAYAGG( JSON_OBJECT( 'id', csp.id, 'param_name', csp.param_name, 'param_value', csp.param_value, 'param_unit', csp.param_unit, 'description', csp.description ) ) FROM custom_params csp WHERE csp.equipment_id = e.id AND csp.param_name IS NOT NULL AND csp.param_value IS NOT NULL ) as custom_params ``` 2. 前端数据处理 ```javascript // 确保 custom_params 是数组 if (typeof response.data.custom_params === 'string') { response.data.custom_params = JSON.parse(response.data.custom_params) } ``` 3. 渲染条件优化 ```vue