显示自定义数据来源的下拉组件

1.场景介绍

在机构表单中父机构ID为下拉选择组件(数据来源为自定义),新增机构,关联父机构ID,新增完成后,下拉选择的父机构ID的值可显示在机构视图中。

#2.效果展示

效果展示如下:

#3.实现思路

1.表单中父机构ID下拉选择组件的数据来源选为自定义,使用变量v_formList给父机构ID进行赋值,添加自定义方法getFormList获取其值,在表单加载后事件中调用getFormList方法。

2.在视图中使用变量v_viewList存储调用接口获取的父机构ID的值,添加自定义方法getViewList,在视图加载后事件,调用getViewList方法将获取到的数据显示在视图中。

注:本场景中getFormList和getViewList方法以通过调用查询“机构”实体的接口获取父机构ID的数据

#4.操作步骤

#4.1 创建数据实体

执行数据库脚本,以MySQL为例,示例脚本如下:

    drop table if exists work_organ;
    create table work_organ (
        ID varchar(64) not null,
        CODE varchar(64) comment '机构编码',
        NAME varchar(64) comment '机构名称',
        TYPES varchar(32) comment '机构类型',
        PARENT_ID varchar(64) comment '父机构ID',
        primary key (ID)
    );

在构件包内,新建机构数据实体

#4.2 生成表单和视图

右键点击“机构”实体,生成机构表单和视图。

#4.3 完善表单

#4.3.1 添加变量v_formList

在机构表单-表单设置-高级设置-添加内部变量formList

在机构表单中,父机构ID:组件类型改为下拉选择,数据来源选择自定义,并绑定变量选择v_formList,使用v_formList给父机构ID进行赋值:

#4.3.2 添加自定义方法getFormList

在机构表单-表单设置-高级设置-添加方法,方法名:getFormList,通过接口查询给父机构ID下拉选择赋值:

示例代码如下:

//通过接口查询机构实体获取数据
let url = "http://127.0.0.1:28079/api/lowcode/models/actions/query-with-page?entityName=viewDisplay.entity.WorkOrgan&pageIndex=0&pageSize=10&cascadeDeep=0"
//结果处理:发送post请求获取父机构ID的数据赋值给v_formList
this.Ajax.post(url, {}, false).then(data => {
  this.v_formList = data.data.map(item => ({
    code: item.id,  
    name: item.name  
  }));   
  // 设置下拉列表:调用方法,将v_formList赋值给下拉选择
  this.Api.getElement('parentId').setOptions(this.v_formList); 
})

注:示例中url取自预览机构视图时,不同环境下ip和端口会有差异,请根据实际情况进行修改。

this.Ajax.post具体用法请参考:前端API:POST请求

#4.3.3 添加表单加载后事件调用方法

在机构表单-表单设置-高级设置-添加事件:表单加载后

#4.4 完善视图

#4.4.1 添加变量v_viewList

在机构默认视图-视图设置-高级设置-添加内部变量viewList,用于存储调用接口获取的父机构ID的值:

#4.4.2 添加自定义方法getViewList

在机构默认视图-视图设置-高级设置-添加方法,方法名:getViewList,通过接口查询“机构”实体获取父机构ID的值:

示例代码如下:


let url = "http://127.0.0.1:28079/api/lowcode/models/actions/query-with-page?entityName=viewDisplay.entity.WorkOrgan&pageIndex=0&pageSize=10&cascadeDeep=0"

return this.Ajax.post(url, {}, false)

注:getViewList方法中url获取方法与getFormList中的url相同

#4.4.3 添加视图加载后事件调用方法

在机构默认视图-视图设置-高级设置-添加事件:视图加载后

// 调用异步 getViewList 方法获取数据
let params =  await this.getViewList();
//将获取的数据赋值给v_viewList
this.v_viewList = params.data.map(item => {
    return {
        code: item.id,
        name: item.name
    }
  })
  //将v_viewList添加到 data 数组的每个对象中,this.data代表视图列表数据
for (let i = 0; i < this.data.length; i++) {
  //使用this.$set方法,向 this.data[i] 对象添加一个v_formList 的新属性,其值为this.v_viewList
  this.$set( this.data[i],'v_formList',this.v_viewList)
}

更多请参见EOS Low-Code Platform 8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值