fix: filter_fields从browserfields.alters取data/dataurl/valueField

This commit is contained in:
yumoqing 2026-07-01 15:51:24 +08:00
parent 5107e6c830
commit faa571ffe0

View File

@ -310,10 +310,18 @@ def build_filter_field_list(desc) -> list:
modulename = getattr(desc, 'modulename', '')
result = []
# 构建 browserfields alters 映射(含 inline data
alters_map = {}
if desc.browserfields and hasattr(desc.browserfields, 'get'):
alters_map = desc.browserfields.get('alters', {}) or {}
for var_name, field_info in var_field_map.items():
field_name = field_info['name']
field_title = field_info.get('title', field_name)
field_uitype = field_info.get('uitype', 'str')
# browserfields alters 中的 uitype 优先
if field_name in alters_map and alters_map[field_name].get('uitype'):
field_uitype = alters_map[field_name]['uitype']
field_def = {
'name': var_name,
@ -322,6 +330,18 @@ def build_filter_field_list(desc) -> list:
'cwidth': 15
}
# 从 alters 取 inline data 或 dataurl
if field_name in alters_map:
alter = alters_map[field_name]
if alter.get('data'):
field_def['data'] = alter['data']
if alter.get('dataurl'):
field_def['dataurl'] = alter['dataurl']
if alter.get('valueField'):
field_def['valueField'] = alter['valueField']
if alter.get('textField'):
field_def['textField'] = alter['textField']
if field_uitype == 'code' and field_name in codes_map:
c = codes_map[field_name]
ctable = c.table if isinstance(c, dict) else getattr(c, 'table', '')