找回密码
 立即注册

QQ登录

只需一步,快速开始

Tony.Fu 活字格认证 Wyn认证
超级版主   /  发表于:2024-7-18 11:55  /   查看:862  /  回复:1
本帖最后由 Tony.Fu 于 2024-7-18 12:24 编辑

需求场景
在活字格的10.0版本中增加了支持回写的【表格报表插件】,不知各位格友是否有体验呢
而我们有时遇到这样的场景:
希望允许用户只修改某一部分数据,而不是所有绑定的字段,例如:
我们在纵列上绑定月份,而希望用户只修改动态列中7月的数据
如图所示的动态列绑定
image.png477899474.png
最终展现时,需要让用户只可修改绿色的区域
image.png836732177.png


实现步骤
众所周知,我们可以通过自定义提交命令来管理用户的更新数据
1.配置报表的回写逻辑,这个部分可以及参考帮助文档-自定义回写配置
image.png565908202.png
↓注意取消自动回填,才能拿到 提交时 事件
image.png956343078.png
2.这样就可以在【提交时】事件中拿到表格提供的变更数据,再加亿点点处理
image.png607873229.png
  1. // 把Excel的日期转成JS用的日期
  2. function ExcelDateToJSDate(serial) {
  3.    var utc_days  = Math.floor(serial - 25569);
  4.    var utc_value = utc_days * 86400;                                       
  5.    var date_info = new Date(utc_value * 1000);
  6. var fractional_day = serial - Math.floor(serial) + 0.0000001;
  7. var total_seconds = Math.floor(86400 * fractional_day);
  8. var seconds = total_seconds % 60;
  9. total_seconds -= seconds;

  10.    var hours = Math.floor(total_seconds / (60 * 60));
  11.    var minutes = Math.floor(total_seconds / 60) % 60;
  12.    return new Date(date_info.getFullYear(), date_info.getMonth(), date_info.getDate(), hours, minutes, seconds);
  13. }


  14. // 获取表格中修改的数据JSON
  15. var data = Forguncy.CommandHelper.getVariableValue("数据");
  16. // 获取当前月份框中使用的月份
  17. var currentMonth = Forguncy.CommandHelper.getVariableValue("当前月");
  18. console.log("before:",data);
  19. data.records[0].updateRecords = data.records[0].updateRecords.filter(
  20.     (test) => {
  21.         // 过滤出数据日期 与 月份框相同的数据
  22.         return new Date(ExcelDateToJSDate(test.newEntity.日期)).getMonth() == currentMonth-1
  23.     }
  24. );

  25. Forguncy.CommandHelper.setVariableValue("数据",data);
  26. console.log("after filtered:",data);
复制代码
就可以实现提交数据的过滤了 效果如图:(只能提交7月的数据
PixPin_2023-12-18_17-21-00.gif

示例项目
2024-07-18 技术验证_1_限制回写区域.fgcc (7.67 MB, 下载次数: 127)

1 个回复

倒序浏览
Tony.Fu活字格认证 Wyn认证
超级版主   /  发表于:2024-7-18 14:58:44
沙发
这个帖子里的方式可以一定程度解决这个问题
【10.0.3】表格报表组件-希望能有更灵活的单元格输入控制
https://gcdn.grapecity.com.cn/showtopic-222919-1-1.html
(出处: 葡萄城开发者社区)

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部