本文摘要
介绍在泛微 Ecology ecode 开发中,利用 ecodeSDK.overwritePropsFnQueueMapSet 覆写 Table 组件属性的方法,为流程待办列表的当前节点列动态生成筛选项并实现本地筛选。文中通过路径校验定位页面、从数据中提取唯一节点构建过滤器、再配置列的过滤函数完成实现,并提示远程加载数据时需另行处理网络延迟与数据同步问题。
📌
该文章由丸子引导AI辅助制作生成,如有改进意见,欢迎评论区留言。
引言
在许多企业级应用中,我们常常需要对流程待办事项进行筛选,以便用户能够更快速地找到需要处理的任务。本文将介绍如何为Table表格增加筛选功能,特别是针对流程待办筛选当前节点的实现方法。

代码实现

下面的代码示例展示了如何通过ecodeSDK.overwritePropsFnQueueMapSet方法,为Table表格增加筛选功能:
ecodeSDK.overwritePropsFnQueueMapSet('Table', { fn: (newProps) => { // 日志输出,检查组件定位是否成功 console.log('!找到组件啦!!!!!!');
// 检查当前路径是否正确 if (!ecodeSDK.checkLPath('/wui/index.html#/main/workflow/listDoing?menuIds=1,13')) return; console.log("路径识别正确!", newProps);
// 创建一个 Map 来存储 unique 的 currentnodeid 和 currentnodeidspan const uniqueNodes = new Map();
// 遍历 newProps.datas 数组,获取 unique 的 currentnodeid 和 currentnodeidspan newProps.datas.forEach(data => { if (!uniqueNodes.has(data.currentnodeid)) { uniqueNodes.set(data.currentnodeid, data.currentnodeidspan); } });
// 构建 filters 数组 const filters = Array.from(uniqueNodes.entries()).map(([value, text]) => ({ text, value }));
// 遍历 newProps.columns 数组,找到 dataIndex 为 'currentnodeid' 的对象 newProps.columns.forEach(column => { if (column.dataIndex === 'currentnodeid') { // 修改 title 为 '当前节点1' column.title = '当前节点1';
// 设置动态 filters column.filters = filters;
// 增加 onFilter 函数 column.onFilter = (value, record) => record.currentnodeid === value; } });
// 输出修改后的 columns 数组 console.log("修改后的 columns:", newProps.columns); },});组件定位
首先,我们通过日志输出检查组件是否定位成功:
console.log('!找到组件啦!!!!!!');路径检查
接着,我们验证当前路径是否正确:
if (!ecodeSDK.checkLPath('/wui/index.html#/main/workflow/listDoing?menuIds=1,13')) return;console.log("路径识别正确!", newProps);数据筛选
然后,我们创建一个Map来存储唯一的currentnodeid和currentnodeidspan,并构建filters数组:
const uniqueNodes = new Map();newProps.datas.forEach(data => { if (!uniqueNodes.has(data.currentnodeid)) { uniqueNodes.set(data.currentnodeid, data.currentnodeidspan); }});const filters = Array.from(uniqueNodes.entries()).map(([value, text]) => ({ text, value}));动态过滤器
最后,我们遍历newProps.columns数组,找到dataIndex为’currentnodeid’的对象,修改其title、设置动态filters并增加onFilter函数:
newProps.columns.forEach(column => { if (column.dataIndex === 'currentnodeid') { column.title = '当前节点1'; column.filters = filters; column.onFilter = (value, record) => record.currentnodeid === value; }});实际应用
本地模式
上述代码示例为本地模式下的数据筛选功能。在本地测试时,可以通过模拟数据来验证筛选功能是否正常工作。
远程加载数据
在实际应用中,我们需要结合“远程加载数据”来实现更为复杂的筛选功能。具体实现方式将根据实际需求和环境进行调整。
提示:远程加载数据时,需注意网络延迟和数据同步问题,确保用户体验流畅。
结论
通过以上步骤,我们成功为Table表格增加了筛选功能,特别是针对流程待办筛选当前节点的实现。这种方法不仅提升了用户体验,也为后续的功能扩展提供了良好的基础。
✅
成功实现了为Table表格增加筛选功能!
如有任何问题或改进建议,欢迎在评论区留言与我们交流。
希望这篇文章能帮助你更好地理解和实现Table表格的筛选功能。如果有任何疑问,欢迎在评论区留言讨论!