返回列表 发布新帖

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

185 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 按照之前的填写


大家来答
    热门讨论
      精选文章
      数据驱动2.0工作流流程变量说明
      在工作流执行的过程中,我们常常需要先取得一些待处理的数据,并在处理后将结果存放起
      互联中台整合请求安全码(digi-key)说明
      互联中台整合请求中有安全码的设计,用来验证整合请求的合法性。安全码的位置说明如下
      数据比对介绍
       一、数据比对介绍(一)业务场景在项目实施中,预算执行率的准确计算依赖于敏态
      Athena 五大驱动力介绍
                    在数字化转型的浪
      开发不踩雷-数据驱动2.0, 模型栏位异动调整时的注意事项
      场景说明我们在应用开发过程中, 模型的异动是非常常见的一般情况的开发顺序为 模型设
      • 关注公众号
      Copyright © 2025 鼎捷数智股份有限公司 版权所有 All Rights Reserved. Powered by Discuz! X5.0
      关灯 在本版发帖
      即将开放
      返回顶部
      快速回复 返回顶部 返回列表