返回列表 发布新帖

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

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


大家来答
    热门讨论
    精选文章
    平台技术干货-Web前端水印控件实现
    本文将针对平台如何实现前端水印控件功能进行说明与描述。主要内容包括:水印控件的设
    排错技巧 - 定制页面加载异常,画面空白
     背景说明新进ISV在定制开发时,常会遇到定制部署后,没正常呈现,却不知怎么排
    应用模组维护方法说明
    (本篇会聚焦在如何新增/维护模组及作业, 一步一步的教您该如何处理, 当您设定好模组/
    平台现有能力-hooks-数据重复性检查
    需求背景 ISV目前在使用低代码开发时,经常有一些前端校验的业务功能,以前大多
    平台现有能力-任务卡显隐功能
     需求背景 ISV当使用任务卡详情查询的业务上,待处理的数据和平台引擎的数
    • 关注公众号
    Copyright © 2025 鼎捷数智股份有限公司 版权所有 All Rights Reserved. Powered by Discuz! X5.0
    关灯 在本版发帖
    即将开放
    返回顶部
    快速回复 返回顶部 返回列表