跳到主要内容
宜搭低代码开发:待办列表功能实现与认证实操 | 极客日志
JavaScript SaaS 大前端
宜搭低代码开发:待办列表功能实现与认证实操 综述由AI生成 在钉钉宜搭平台通过自定义页面实现待办列表功能的完整流程。内容涵盖创建普通表单定义字段、配置自定义页面模板、调用宜搭 API 进行数据的增删改查及分页搜索。重点讲解了如何通过 JavaScript 处理表单数据交互、状态转换(进行中转已完成)以及消息通知设置。适用于宜搭低代码开发师高级认证备考及实际业务场景开发。
山野诗人 发布于 2026/4/5 更新于 2026/5/23 30 浏览1. 考前须知
如下图:需要扫描二维码加入组织,我当时扫描失效,以下是另一种加入组织的方法。
步骤 1:打开手机钉钉右下角点击我的找到【客服与帮助】
步骤 2:在【客服与帮助】页面下滑找到【快捷工具】选择【加入团队】即可根据名称搜索加入组织
2. 项目实操
2.1 新增普通表单
2.1.1 进行中待办
(1)创建如下字段:
待办事项:单行文本组件,必填
分类:单选组件,必填,按照个人、工作、其他分类
重要度:评分组件,默认值为 1,必填
设置提醒日期:日期组件,格式为年月日
待办详情:多行文本组件
(2)设置重要度的默认值为 1
步骤 1:获取组件唯一标识,复制 rateField_me2n0yf0(每个人创建的组件标识都不一样,按照自己创建的即可)
步骤 2:在左侧动作面板中使用如下代码设置默认值
that.$('组件唯一标识' ).setValue ()
2.1.2 已完成待办
点击进行中待办表单旁边的⚙按钮,复制表单,并修改页面名称为【已完成待办】
2.2 新增 TodoList 自定义界面
2.2.1 TodoList 自定义页面 点击+,新建自定义页面,在弹出的页面中【从模板中新建】,找到【工作台模板 -01】,点击使用,如下图所示
创建进行中待办表格,进行一些字段/样式设置(拖拽两个组件分组、子表格,如下展示)
选中表格组件,删除无用字段,增加:待办事项、分类、重要度、设置提醒日期、待办事项
设置字段名称,浏览器新开一个页面窗口,打开'进行中待办'的表单设计,选中组件→右侧点击'高级'→复制组件标识,粘贴到表格对应的数据字段,效果如下图所示
修改'设置提醒日期'的数据类型,时间格式;修改'重要度'为枚举,并修改对应样式,操作步骤,代码如下
[ { "color" : "grey" , "text" : "1" , "value" : 1 , "__sid__" : "serial_me9yvo5m" } , { "color" : "blue" , "text" : "2" , "value" : 2 , "__sid__" : "serial_me9yvo5n" } , { "color" : "yellow" , "text" : "3" , "value" : 3 , "__sid__" : "serial_me9yvo5o" } , { "color" : "green" , "text" : "4" , "value" : 4 , "__sid__" : "serial_me9yvo5p" } , { "color" : "red" , "text" : "5" , "value" : 5 , "__sid__" : "serial_me9yvo5q" } ]
点击复制,用于已完成待办页面的展示,并选中分组组件,更改标题为'已完成待办',效果如下图
选择整个页面,点击右上角'页面设置',设置背景色为'白色'
2.3 TodoList 自定义页面功能实现 比如在浏览器端想调用应用编码为 APP_X1X2X3X4 的「流程实例 - 流程发起」服务接口,则在数据面板里调用请求地址为(使用相对路径即可 ):
/dingtalk/web/APP_X1X2X3X4 /v1/process/startInstance.json
获取应用编码的步骤,以我当前创建的项目为例,在浏览器上方复制如下,我此时的应用编码为:appType:APP_L0MRPK82DM5SNZ2UIHPM
获取 formUuid 的步骤,以'进行中待办'表单为例,同样浏览器上方获取,我此时'进行中待办'的 formUuid 为:FORM-50859B5DAD37446FA143EDCB4CF3A44375VP,用于下面获取数据展示定义必填参数
对于表格组件来说,我们主要在如下图所示,这两个地方进行配置
2.3.1 进行中待办 - 数据展示 **步骤 1:**选中左侧数据源,删除三个未被使用的远程数据源,并添加【getTodoData】远程 API,可选中下面这个参考文档,定位到 3.5 根据条件搜索表单实例 ID 列表,获取接口,请求类型,请求参数
请求地址:/v1/form/searchFormDatas.json
请求类型:GET
请求参数:formUuid 表单 Id 必填
**步骤 2:**在数据处理部分,选中请求完成回调函数,修改如下代码,其中,字段名称都要跟表格字段对应一致,如下
function didFetch (content ) {
**步骤 3:**点击进行中待办的表格,右侧数据源设置变量为 state.getTodoData,并且修改数据主键为:instid
**步骤 4:**测试结果,在'进行中待办'页面新增一条数据,然后我们回到'TodoList 自定义页面'点击预览查看已新增一条待办事项为'测试 1'的数据,也可点击页面右上角选择'新窗口打开',此时数据展示功能完成。
2.3.2 进行中待办 - 分页/搜索 **步骤 1:**在'进行中待办'页面新增 6 条数据,效果如下
**步骤 2:**在数据源新增两个变量 page 和 searchKey
远程 getTodoData 中设置请求参数变量,代码如下:
{ searchFieldJson : JSON .stringify ({ radioField_me2n0yez : state.searchKey }), formUuid : "FORM-50859B5DAD37446FA143EDCB4CF3A44375VP" , currentPage : state.page , pageSize : 5 }
**步骤 3:**选中'进行中待办'的表格,滑到页面最底下选择'分页、搜索、排序时触发',定义函数名称为 onFetchTodoData,如果显示名称已存在,直接选中右侧的 onFetchTodoData 即可,现在我们动作面板编写代码
**步骤 4:**选择表格点击右侧分页设置,设置 pageSize 值为 5
2.3.3 进行中待办 - 新增 **步骤 1:**选中表格,在右侧点击'顶部操作',删除原有的操作一,操作二,点击'添加一项'按钮,新增一个'新增待办'
**步骤 2:**在右侧新增一个对话框组件,设置标题为'新增待办',并在对话框页面创建如下字段,举例:我这里对话框的唯一标识为 dialog_me9xwn20,后面点击按钮打开弹窗的时候要用到
待办事项:单行文本组件,必填
分类:单选组件,必填,按照个人、工作、其他分类
重要度:评分组件,默认值为 1,必填
设置提醒日期:日期组件,格式为年月日
待办详情:多行文本组件
如下图,可点击这两个位置,对弹窗进行隐藏,以便我们后续写代码逻辑
**步骤 3:**选中表格,在右侧点击'顶部操作',点击新增待办中编辑,添加回调函数为 onActionBarItemClick,然后返回 js 面板书写代码
**步骤 4:**代码书写,打开弹窗,分别重置表单组件唯一标识的值
export function onActionBarItemClick ( ) {
**步骤 5:**选中对话框组件,滑到最底下,选择 onOk 编写我们的代码逻辑
**步骤 6:**添加 insert 远程数据源,关闭自动加载,请求方式为 post
请求地址:/v1/form/saveFormData.json
请求类型:post
**步骤 7:**测试结果,新增成功,校验效果也生效
2.3.4 进行中待办 - 删除 **步骤 1:**新增一个对话框组件,并且设置标题为'确认删除',样式设置为一级标题;再嵌套一个文本组件,设置内容为'删除后无法撤销,数据会永久删除,是否确认删除?',设置样式为二级标题,padding 为 12px。因为我们要删除数据,所以需要获取到当前选择数据的 id,需要在对话框里增加一个输入框组件,设置为隐藏,用于存储当前数据的 id
**步骤 2:**在页面右侧操作列中增加'删除',绑定回调函数 onDeleteClick,编写代码
export function onDeleteClick (rowData ) { this .$('dialog_mea9fcvy' ).show (() => { this .$('textField_mea9fcw0' ).setValue (rowData.instid ) }) }
**步骤 3:**当点击确认,调用 onDeleteTodoData,设置代码
export function onDeleteTodoData ( ) { const param = {
**步骤 4:**新增 deleteData 远程数据源,关闭自动加载,设置请求方式为 post
请求地址:/v1/form/deleteFormData.json
请求类型:post
2.3.5 进行中待办 - 编辑 **步骤 1:**在页面右侧操作列中增加'编辑',绑定回调函数 onEditClick,打开新增待办的弹窗,回填数据,代码如下
export function onEditClick (rowData ) { this .$('dialog_me9xwn20' ).show (() => {
**步骤 2:**操作列出现两个,导致页面效果换行,所以我们需要在右侧选择操作列→设置合适的宽度,如下图设置为 130px,页面显示效果正常
**步骤 3:**编辑同样我们需要获取到当前数据 id,用于更新数据,刷新列表。所以需要在新增待办弹框创建一个实例 Id 用于存放当条数据 id,隐藏;在数据源增加一个 flag 变量,用于判断我们打开的是新增还是编辑操作;增加 updateData 远程数据源,关闭自动加载调
请求地址:/v1/form/updateFormData.json
请求类型:post
(1)找到'新增待办'按钮触发的函数 onActionBarItemClick,设置 flag 值为 insert,并且重置输入框组件实例 ID 的值
export function onActionBarItemClick ( ) {
(2)找到'编辑'按钮触发的函数 onEditClick,设置 flag 值为 edit,设置实例 ID 值为 rowData.instid
export function onEditClick (rowData ) {
(3)点击确定按钮,找到 onOk 函数修改代码,增加一个 if 判断,如果 flag 值为 insert,新增数据,反之修改数据
2.3.6 已完成待办 - 数据展示 **步骤 1:**选择表格组件,在右侧页面设置中,找到顶部操作,删除操作 1,操作 2;操作列,将详情删除,新增一项删除,效果如下
**步骤 2:**新建远程 API,getDoneData,设置请求地址、参数值、请求方式,数据处理
function didFetch (content ) {
**步骤 3:**设置已完成待办数据源变量、数据主键
**步骤 4:**在已完成待办中新增 6 条数据,进行测试,已成功显示
2.3.7 已完成待办 - 分页/搜索 **步骤 1:**将已完成待办这里分页设置为 5,并且新增变量 donePage 和 doneSearchKey
**步骤 2:**将远程数据源 getDoneData 绑定请求参数变量,如下
{ searchFieldJson : JSON .stringify ({ radioField_me2ndu47 : state.doneSearchKey }), formUuid : "FORM-17BD995E61214B80BCEE9BB6EADF8DC8JNTV" , currentPage : state.donePage , pageSize : 5 }
**步骤 3:**选中已完成待办表格,右侧动作选择分页,排序,搜索触发绑定 onFetchDoneData,编写代码
2.3.8 已完成待办 - 删除 **步骤 1:**操作列中为删除绑定 onDeleteClick,代码可以直接复用,不用再写
**步骤 2:**在大纲树中打开删除的对话框,在右侧动作设置中直接定位到代码,增加一行,每次点击删除的时候会同时更新进行中待办,已完成待办表格数据,调用两次接口,我这里为了简写代码就这样写了,后续应该可以优化的
this .dataSourceMap ['getDoneList' ].load ()
2.3.9 进行中待办 - 选择单行,删除数据,在已完成待办插入数据 在页面设置中找到行选择器,开启显示,选择单选,在单行选择回调 onSelect 写逻辑代码
export function onSelect (selected, rowData, selectedRows ) { const param1 = { formInstId : rowData.instid } this .dataSourceMap ['deleteData' ].load (param1).then (res => { setTimeout (() => { this .dataSourceMap ['getTodoData' ].load (); }, 1000 ); }) const data1 = {
2.3.10'设置提醒日期'的通知功能 在'进行中待办'表单设置中国,点击页面设置,再点击左侧'消息通知',新增完成此功能实现
3. TodoList 自定义页面整体代码 相关免费在线工具 Keycode 信息 查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
Escape 与 Native 编解码 JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
JavaScript / HTML 格式化 使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
JavaScript 压缩与混淆 Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online