返回列表 发布新帖

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

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


大家来答
    精选文章
    前端定制基于postmessage通讯机制使用说明
     业务场景:       在前端定制开发场景中需要实现不同任务
    DAP后端应用写法-使用DWDataSet进行数据库的新增/修改
    场景使用高代码后端要去数据库变更数据, 除了直接下SQL的方式外, 更可用java物件的方
    DAP后端应用写法-使用DWQueryInfo进行数据库的查询
    场景使用高代码后端要去数据库查资料, 除了直接下SQL的方式外, 更可用java物件的方式,
    排錯技巧 - 雅典娜签核,间歇性会报错
     问题描述顾问反馈:雅典娜签核套件点击OA送签或查看签核流程时,间歇性会报错。
    鼎捷雅典娜-运营单元
     背景说明鼎捷雅典娜是云地整合的架构,在新客户期初导入时,需要针对新客户租户
    • 关注公众号
    Copyright © 2025 鼎捷数智股份有限公司 版权所有 All Rights Reserved. Powered by Discuz! X5.0
    关灯 在本版发帖
    即将开放
    返回顶部
    快速回复 返回顶部 返回列表