# 表单中“保存并继续”后能获取上一步保存的信息
# 1.场景介绍
新建一个机构表单,在新建机构后点击保存并继续按钮,再新建机构时,父机构ID进行下拉选择时能够关联到上一步新增的机构。
# 2.效果展示
以机构表单为例,新建机构testA,点击保存并继续后查看父机构ID下拉组件,可以选到testA。
效果展示如下:

# 3.实现思路
方法一:
可以在“保存并继续”系统按钮添加动作代码块,使表单执行原本的保存并继续Api.submitFormAndGoOn方法后再次查询接口给下拉选择控件赋值。
方法二:
在“保存并继续”系统按钮添加动作代码块,使表单执行原本的保存并继续Api.submitFormAndGoOn方法后再刷新表单,使表单重新初始化达到刷新下拉选择选项的目的。
# 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.2.1 绑定数据源为自定义v_list
在机构表单-表单设置-高级设置-添加内部变量list
在机构表单中,父机构ID:组件类型为下拉选择,绑定数据来源为自定义,绑定变量选择v_list:

# 4.2.2 定义自定义方法getOptionList
在机构表单-表单设置-高级设置-添加方法,方法名为:getOptionList,添加代码块:

示例代码如下:
//接口查询给下拉选择控件下拉选项赋值
let url = "XXX"
let condition = {
  XXX
}
this.Ajax.post(url, condition, true, {
  returnResponse: true
}).then(data => {
  console.log("data====", data)
  this.v_list = data.data.data.map(item => {
    return {
      code: item.id,
      name: item.name
    }
    this.Api.getElement('pid').setOptions(this.v_list) // 设置下拉列表
  })
})  
# 4.2.3 在“保存并继续”系统按钮添加动作代码块
在机构表单-表单设置-按钮设置中添加系统按钮:保存并继续,对保存并继续按钮进行编辑,添加动作代码块:

示例代码如下:
await this.Api.submitFormAndGoOn()
setTimeout(() => {
  this.getOptionList()
}, 500)
    
# 4.2.4 添加表单加载后事件
在机构表单-表单设置-高级设置-添加事件:表单加载后

# 4.3 完善表单(方法二)
# 4.3.1 绑定数据源为数据实体
在机构表单中,父机构ID:组件类型为下拉选择,绑定数据来源为数据实体

# 4.3.2 在“保存并继续”按钮是添加动作代码块
在机构表单-表单设置-按钮设置中添加系统按钮:保存并继续,对保存并继续按钮进行编辑,添加动作代码块:

示例代码如下:
await this.Api.submitFormAndGoOn()
setTimeout(() => {
  this.getLoading = true
  setTimeout(() => {
    this.getLoading = false
  }, 500);
}, 500);