百数功能模块入口formeventlib相关介绍

想要正确使用百数功能模块,我们首先需要知道功能模块是如何和表单界面进行交互的;
百数功能模块体系是通过表单前端操作来驱动模块,达到自己想要的业务目的。
下面我们先介绍一下formeventlib功能模块:
字段触发(_formeventlib ) :当用户操作某个字段的时候触发;
表单字段-模块触发事件: 此事件会在我们对事件表单的字段进行操作时触发(例如:单行文本失去焦点, 下拉框选择一个选项时; 注意需要对此字段设置一个模块),通过此功能,可以自由扩展其他功能(例如:点击按钮请求第三方web-api), 此事件触发有3个必要的条件:
①、字段必须设置一个模块(所有字段默认为失去焦点即触发后端模块事件代码)。
在这里插入图片描述
②、表单的字段需要配置模块信息。
在这里插入图片描述
③、当光标与字段出现交互时, 例如: 编辑完字段内容失去输入焦点,或者是更改下拉框、单选框、复选框选项时,就会触发此事件。

事件触发流程:触发事件后,前端页面会将 “当前模块配置信息”, “当前表单别名”,“触发事件的字段信息”, “表单字段数据信息”, “预留参数” 传给后端对应的模块中的"_formeventlib"函数,然后执行"后端模块代码"后返回"返回结果",“需要界面展示的数据"和"需要界面弹出的提示”。
百数功能函数原型

def _formeventlib(config, formAlias, widgetValue, entryValue, info, other):

参数
config [数组型] :
模块当前配置中的字段信息
formAlias [字符型]:
表单别名
widgetValue [数组]:
触发事件的字段信息
entryValue [数组] :
表单里字段的数据信息, 通过修改并返回这个值的json字符串可以修改表单的字段属性
info [数组型] :
操作此表的userid信息和客户端ip等信息
other [数组型] :
附加信息,暂时只有前面模块的所有结果集信息,没有的话为空数组

参数详解
config的数据格式:

{
     "模块执行动作": {
          "type": "triggeraction",
          "actions": [
               {
                    "target": {
                         "entryId": "test"
                    },
                    "type": "insert_data",
                    "values": [
                         {
                              "type": "text",
                              "mode": "depend",
                              "depend": {
                                   "field": {
                                        "name": "单行文本",
                                        "type": "text"
                                   }
                              },
                              "field": {
                                   "name": "单行文本",
                                   "type": "text"
                              }
                         }
                    ],
                    "filter": {
                         "rel": "and",
                         "cond": {}
                    }
               }
          ],
          "source_form": "test"
     },
     "模块单行文本": "11",
     "模块多行文本": "22"
}

模块单行文本/多行文本/执行动作:模块配置界面的字段信息, 具体详情请点击 模块增强字段说明

widgetValue 的数据格式:
子表单外的字段触发事件时的格式:

{
    "data" : "456",
    "widgetNameAlias" : "多行文本",
    "widgetType" : "textarea"
}

子表单里的字段触发事件时的格式:

{
    "data" : "456",
    "widgetNameAlias" : "多行文本",
    "widgetType" : "textarea",
    "index" : 0,
    "subformNameAlias" : "子表单"
}

子表单字段导入数据触发事件时的格式:

{
     "widgetType": "subform",
     "widgetNameAlias": "子表单",
     "data": [
          {
               "数字": {
                    "widgetType": "number",
                    "visible": True,
                    "data": 15
               },
               "单行文本": {
                    "widgetType": "text",
                    "visible": True,
                    "data": "张三"
               }
          },
          {
               "数字": {
                    "widgetType": "number",
                    "visible": True,
                    "data": 16
               },
               "单行文本": {
                    "widgetType": "text",
                    "visible": True,
                    "data": "李四"
               }
          }
     ],
     "triggerType": "import"
}

data: 字段的值
widgetNameAlias: 字段的别名
widgetType: 字段的类型
triggerType: 触发类型:import表示导入数据(仅子表单导入数据时才存在)
index: 当前数据在子表单里的索引行数, 从0开始(仅子表单里的字段触发事件才存在)
subformNameAlias: 子表单名称(仅子表单里的字段触发事件才存在)

entryValue 的数据格式:

{
     "单行文本": {
          "visible": True,
          "data": "123",
          "widgetType": "text"
     },
     "多行文本": {
          "visible": True,
          "data": "456",
          "widgetType": "textarea"
     },
     "单选按钮组": {
          "items": [
               {
                    "value": "我的选项1"
               },
               {
                    "value": "我的选项2"
               },
               {
                    "value": "我的选项3"
               }
          ],
          "visible": True,
          "data": "我的选项1",
          "widgetType": "radiogroup"
     },
     "子表单": {
          "visible": True,
          "data": [
               {
                    "多行文本2": {
                         "data": "22",
                         "visible": True,
                         "widgetType": "textarea"
                    },
                    "单行文本2": {
                         "data": "11",
                         "visible": True,
                         "widgetType": "text"
                    }
               }
          ],
          "widgetType": "subform"
     }
}

data: 字段的值
visible: 是否可见, True表示可见, False表示隐藏
widgetType: 字段的类型
items: 单选按钮组, 复选框组, 下拉框, 下拉复选框 专有的表示所有选项
(修改字段的数据请参照下面的示例, 目前只支持四种字段属性, 格式同 _forminitiallib)

更多的数据格式介绍,见文档:https://doc.baibaoyun.com/detailed/909916。

info 的数据格式:
下面展示一些

{
    "operator":"55cb7d57f7a190e382857117",
    "clientIp":"175.8.178.125"
}

operator:当前操作人的userid
clientIp:客户端ip
other的数据格式:

{
     "libResult": [
          {
               "result": True,
               "text": "模块1的数据",
               "name": "测试模块",
               "datas": {
                    "单行文本": {
                         "data": "单行文本的数据"
                    },
                    "多行文本": {
                         "data": "多行文本的数据"
                    }
               }
          },
          {
               "result": True,
               "text": "模块2的数据",
               "name": "测试模块",
               "datas": {
                    "单行文本": {
                         "data": "单行文本的数据"
                    },
                    "多行文本": {
                         "data": "多行文本的数据"
                    }
               }
          }
     ]
}

libResult:前面模块的结果集信息,有几个模块就有几个子数组
result: 模块的逻辑型返回值
datas: 模块的数组型返回值
text: 模块的文本型返回值
name: 模块的名称

返回值
返回值接受多个返回值。
第一个返回值是Boolean(逻辑型),返回结果True(真)或False(假)。
第二个返回值是Json字符串(可选),返回给界面字段赋值。
第三个返回值是字符串(可选),返回给页面弹出提示。
(如果没有返回值时第一个返回值默认为True(真),第二/三个返回值默认为空)

事件触发示意图:
在这里插入图片描述

备注

widgetValue/entryValue 的数值是数组类型,因此大家可以通过数组的形式操作它。

formeventlib事件可以解决很多我们前端字段做不到的事情,例如:
根据界面需求动态计算取值;
根据用户输入的值动态改变字段的显示和隐藏;
接入第三方API获取数据 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值