返回列表 发布新帖

同一单号不同项次,勾选其中一个项次时需同步勾选多笔数据,应如何实现?

252 1
发表于 2025-3-14 17:13:10 | 查看全部 阅读模式
问答

紧急程度

已完结


如图,想实现在画面上勾选数据时,判断若同一单号有其他项次,则一并勾上,比如单号01有项次1和2,在用户勾选项次1或者勾选项次2时,需同步将另一项次也进行勾选,取消单个勾选时也需将单号相同的项次同步取消,勾选后点按钮生成凭证时也是2个项次一起生成,请问应如何实现?

                               
登录/注册后可看大图

最佳答案

查看完整内容

本帖最后由 周云建 于 2025-3-17 15:35 编辑 1、给表格添加hooks 2、hooks 类型为 rowSelectedHook 行被选择,可获取当前行节点 3、选中/取消时 按照 指定的 条件 选中/取消其他行 的 hooks 示例代码为: // 这里的 task_name 需要变为自己的 单号 字段名 const column = 'task_name'; // 这里的 zyjtesttaskdata_id 需要变为自己的 行数据 业务主键 例如 user_id const key = 'zyjtesttaskdata_id'; // 这里的 id 要换成 自 ...

评论1

周云建Lv.3 发表于 2025-3-17 14:44:51 | 查看全部
本帖最后由 周云建 于 2025-3-17 15:35 编辑

1、给表格添加hooks
2、hooks 类型为 rowSelectedHook 行被选择,可获取当前行节点
3、选中/取消时 按照 指定的 条件 选中/取消其他行 的 hooks 示例代码为:

// 这里的 task_name 需要变为自己的 单号 字段名
const column = 'task_name';
// 这里的 zyjtesttaskdata_id 需要变为自己的 行数据 业务主键 例如 user_id
const key = 'zyjtesttaskdata_id';

// 这里的 id 要换成 自己的表格id
const table_id = '80e55093-95af-4c3f-a978-89821bc0fb62';

// 第一步 获取当前操作行的数据
var thisRowData = e.data.value[column]; // 这是需要判断的条件数据 例如 问题中的 单号
var thisRowChecked = e.data.uibot_checked; // 这是复选框 选择状态
var thisKeyValue = e.data.value[key]; // 这是 业务主键数据

var needSelect = [];

if (thisRowChecked != undefined) {
  // 第二步 获取表格的数据
  var tableComponent = component.getComponentById(table_id);
  var tableData = tableComponent.getAllRowData();

  tableData.forEach((row) => {
    // 第三步 获取当前行数据值
    var rowValue = row.value[column];
    var keyValue = row.value[key];
    var uuid = row.uuid;
    var rowChecked = row.value.uibot_checked;

   // 存储一下 待处理数组 会用到的有效数据
    var temp = {};
    temp.rowValue = rowValue;
    temp.keyValue = keyValue;
    temp.uuid = uuid;
    temp.rowChecked = rowChecked;
   
    // 符合条件的数据放入待处理数组中
    if (rowValue == thisRowData) {
      needSelect.push(temp);
    }
  });

  //因为会重复触发hooks 所以需要对操作对象进行判断是否是有效的操作
  var shouldClear = false;
  needSelect.forEach((row) => {
    if (row.keyValue == thisKeyValue) {
      // 如果当前触发的行的数据值 和 页面上实际上操作后的数据不一致,就归类为 无效操作
      if (row.rowChecked != thisRowChecked) {
        shouldClear = true;
      }
    }
  });

  // 针对无效操作的数据 清空 后续的代码就不会执行
  if (shouldClear) {
    needSelect = [];
  }

  // 处理 需要操作的数据数组 进行勾选操作
  needSelect.forEach((row) => {
    if (row.keyValue != thisKeyValue) {
      if (row.rowChecked != thisRowChecked) {
        tableComponent.selected(row.uuid, thisRowChecked);
      }
    }
  });

  // 手动触发变更检测,更新视图
  component.markForCheck();

}


4、凭证查询 的 hooks 按照之前的填写


大家来答
    热门讨论
    精选文章
    排错技巧 - 地中台查不到调用日志
    问题描述客户反馈:系统今天都有正常交易,但在EAI上却查不到日志记录,可能是什么原
    私有化效能问题排查
     需求背景在私有化环境中,客户的服务器环境可能在本地,也可能在云端,可能会受
    设定高代码应用的作业权限控制(纯DAP前后端)
    场景比较常见的运作场景是纯DAP的前端页面, 通常会有选单, 这时候, 就会有一个需求,
    数据驱动2.0_组合场景, 任务结束后走不同分支设定方式说明
    场景以下图为例, 当[订单签核]任务结束后, 希望依条件决定后面要走到[工单待签核]或[
    低代码的标准表格中高级查询指定字段的列值支持下拉配置
        需求背景            当用户在使用低代
    • 关注公众号
    Copyright © 2025 鼎捷数智股份有限公司 版权所有 All Rights Reserved. Powered by Discuz! X5.0
    关灯 在本版发帖
    即将开放
    返回顶部
    快速回复 返回顶部 返回列表