fix(device): 修复添加设备时设备类型/状态下拉框为空
前端:DeviceManagement.jsx 中补充 options 的判断条件 - 原条件 !field.options 对空数组 [] 判定为 false,导致 数据库里 options 被清空时下拉框没有选项 - 改为同时检查 null/undefined 和空数组,确保本地默认值 能正确兜底(type、status 字段同步修复) 后端:initDeviceFields.js 加固系统字段 options 兜底逻辑 - 系统字段(isSystem: true)的 options 永远不应为空 - 启动时如果检测到系统字段 options 为空,强制重置为默认 值,这样即使前端修复后 options 仍为空,后端重启时也能自愈 - 仅作用于系统字段,不影响用户自定义字段
This commit is contained in:
@@ -184,7 +184,17 @@ async function initDeviceFields() {
|
||||
}
|
||||
}
|
||||
|
||||
if (field.options && !existingOptions) {
|
||||
// 加固:系统字段(isSystem: true)的 options 永远不应为空
|
||||
// 如果用户在"字段管理"页面误清空了系统字段的 options(如设备类型/状态),
|
||||
// 启动时强制重置为默认值,避免前端拿到空 options 导致下拉框无选项
|
||||
if (
|
||||
existingField.isSystem &&
|
||||
field.options &&
|
||||
(!existingOptions || existingOptions.length === 0)
|
||||
) {
|
||||
await existingField.update({ options: field.options });
|
||||
console.log(`系统字段 options 为空,已重置为默认值: ${field.displayName}`);
|
||||
} else if (field.options && !existingOptions) {
|
||||
await existingField.update({ options: field.options });
|
||||
console.log(`更新字段 options: ${field.displayName}`);
|
||||
} else if (field.options && Array.isArray(existingOptions)) {
|
||||
|
||||
Reference in New Issue
Block a user