baidu / amis

前端低代码框架,通过 JSON 配置就能生成各种页面。
https://baidu.github.io/amis/
Apache License 2.0
17.22k stars 2.5k forks source link

mapping 和 picker 支持潜在大数据量的转换展示 #5025

Open Hi-Alan opened 2 years ago

Hi-Alan commented 2 years ago

是否关联于某个问题吗:

input-table 中某列为外键,默认控件为 mapping 且 source 为 crud 的 api,其值通过 picker 打开一个 crud 对话框选取;

  1. 默认情况下,该行确认后 mapping 转换失败显示”通配值“,因为 mapping 的 source 返回数据格式只支持 object, 而不是数组;
  2. 若通过自定义 filter 转换成 object, mapping 可正确展示处于 crud 第一页的可选值;但是若选取的是第2页的数据,则 mapping 转换失败显示”-“,且再次编辑该行时,picker 控件直接展示值而不是对应的标签

预期的解决方案:

  1. 内置 Array 转 Object 的 Filter
  2. mapping 和 picker 可正确展示 crud 对话框选取第二页及以后的数据,请求 source 指定 url 时,可带上 values 参数让后端仅返回指定数据

其他可接受方案:

暂未想到

任何附加信息:

Hi-Alan commented 2 years ago

暂时通过 input-table 字段存储完整数据,而不仅是 value 的模式解决,方法如下:

  1. 该列 quickEdit 模式下的 picker 控件设置 "joinValues" 为 false
  2. 并搭配一个 formula 控件 value = "${picker.object_value_field}"
  3. 该列在展示模式下采用模板语法,形如 "tpl": "${picker.object_label_field}"
  4. 后端数据读取后,对 picker 的值进行转换

此方法也适合普通的 picker 控件在普通表单使用