EOS Low-Code Platform 8 EOS Low-Code Platform 8
产品简介
安装部署
应用开发
专题场景实战案例
低代码(Low-Code)开发参考手册
高开开发参考手册
流程开发参考手册
AFCenter 使用指南
Governor 使用指南
FAQ
  • 树形下拉
  • 1 适用场景
  • 2 基础功能
  • 2.1 树面板
  • 2.1.1 指定树形json
  • 2.1.2 实体
  • 2.1.3 字典
  • 2.2 展现方式
  • 3 高级
  • 3.1 控制可选中节点
  • 3.2 查询实体前设置过滤条件

# 树形下拉

# 1 适用场景

选项信息是一对多的关系,且具有层次性和联动性,多用于创建主类目和所属下级子类目的场景,多用于城市选择(比如省市区)等包含有层次关系的场景。

# 2 基础功能

拥有配置数据来源、展示模式等功能;

# 2.1 树面板

可以通过树面板配置树形下拉所展示数据;有指定树形json、实体、业务字典三种;

# 2.1.1 指定树形json

可以通过通过静态json数据展示树形下拉;格式如下:

[{
"id":"10",
"label":"中国",
"value":"zg",
"children":[{
"id":"1",
"label":"上汽",
"value":"sq",
"type":"4S"},
{"id":"2",
"label":"吉利",
"value":"jl",
"type":"4S"
}]
}]

例如我们不建实体关系,想用静态json数据创建下拉树;效果如下:

image-20240110165145290

步骤1.点击表单设置-》高级设置 -》变量 -》添加一个变量v_treeJson

其中children 为子级数组;type 给结点设置一个标记类型;

[{
"id":"10",
"label":"中国",
"value":"zg",
"children":[{
"id":"1",
"label":"上汽",
"value":"sq",
"type":"4S"},
{"id":"2",
"label":"吉利",
"value":"jl",
"type":"4S"
}]
}]

步骤2.树面板选择指定树形json ;指定树形json绑定刚才定义的变量v_treeJson;指定子级键名字端;节点类型设置可选节点的type类型(例如type:"4S")

image-20240110165026554

# 2.1.2 实体

可以创建实体,绑定实体关系,如强关联实体1:n,自关联实体,或者弱关联实体展示树形下拉数据;

# 2.1.2.1 一对多关系树

场景:供应商和商品是1:n实体关系,我们配置一个选择供应商下的商品的下拉树;

效果展示:

image-20240110160001953

步骤1.建立一对多关联实体;商品和供应商通过supId和id进行关联;

image-20240110160235878

步骤2.数据来源绑定实体选择1:n的 n的一方实体(即是叶子结点绑定的值);树面板选择实体,选择节点为1:n的 1的一方实体(即根节点);

image-20240110161147565

步骤3.节点配置;配置显示字段,和父节点关联字段、和子节点关联字段、选择想要的图标;

根节点供应商supplier实体配置如下,选择和子节点关联字段为id;(需要和建实体关系的字段对应)

image-20240110161428300

子节点商品commodity实体配置如下,选择和父节点关联字段为supId;如果商品下还有子节点可以配置和子节点关联字段为id;(需要和建实体关系的字段对应)

image-20240110161911402

# 2.1.2.2 实体自关联关系树

例如我们配置一个实体根据自己的父id自关联的选择下拉树;

image-20240110163852194 步骤1.建立自关联实体

通过id和pid进行关联

image-20240110164050301

步骤2.数据来源绑定实体选择自关联实体;树面板选择实体,选择节点为自关联实体;

image-20240110164213848

步骤4.节点配置;配置显示字段、和子节点关联字段id(需要和建实体关系的字段对应),选择想要的图标

image-20240110164334633

步骤5.配置根节点过滤条件;由于是实体自关联,所以要确实哪些数据是根数据;自关联实体数据如下,我们可以设置pid为0的为根节点;

image-20240110164701103

image-20240110164809687

# 2.1.3 字典

# 2.1.3.1 字典省市区下拉树

对于一些有层级关系的字典类型数据,例如字典省;此字典有子类型市,市有子类型区;选择省字典,下拉树可以按其子类型层级展示;

image-20240109155653239

效果如下:

image-20240110165913318

配置如下:树面板选择业务字典,选择根节点为省;

image-20240110170302813

# 2.2 展现方式

展示方式有树形 /层进;

image-20240110170758952

树形和层进展示效果如下:

image-20240110170631523

# 3 高级

# 3.1 控制可选中节点

如果我们想控制哪些节点可选择;例如:我们要控制只能选择节点名称为上汽的节点,选择其他的节点给出错误提示

效果展示:

image-20240110170913361

步骤1.可以在右侧配置项高级中添加事件选择allowSelect;

image-20240110171044768

步骤2.编写控制代码

console.log(node, callback, 'node')
if (node.label !== '上汽') {
  this.$message({
   message: '请选择名称为上汽的数据',
   type: 'warning'
  });
 //返回false;节点不可选择
  callback(false)
}
else {
  //返回true ;节点可选择
  callback(true)
}

# 3.2 查询实体前设置过滤条件

可以设置实体查询前过滤条件、排序等;此事件只对实体有效;例如如下格式代码:

console.log('data:', data) //对应的点击的值,可以看打印出data里面的值
console.log("prepare select")
const { node } = data || {};
const { data: nodeData } = node || {}
if(nodeData) {
  console.log('nodeData:', nodeData)
  if(nodeData.type === "OrderSupplier") {
    const condtiion =  {
      "and": {
          "items": [
              {
                  "propertyName": "supplierId",
                  "op": "=",
                  "propertyValue": nodeData.id
              }
          ]
      }
    }
    callback(condition)
  }
} else {
 const condtiion = {
   "and": {
     "items": [{
       "propertyName": "enable", // 需要过滤的属性,自己根据需要自定义
       "op": "=", //设置过滤条件 = |<>|contains |not contains 分别为等于|不等于|包含|不包含
       "propertyValue": "yes" // 过滤属性对应的值
     }]
    },
   "orderPropertyNames": "name:desc" // 分为两种升序|降序 “sortField:asc|desc”
  }
  callback(condtiion)
}
上次更新: 2024/3/21下午2:06:29

← 下拉选择 单选框组 →