js问题

想把逻辑删除按钮放在表格前上,之前是在表后,无法获取到正确的行进行标记

// 获取报表对象

var report = this.options.form || _g();

// 使用帆软内置的获取选中行方法(如果可用)

var selectedRows = [];

var $tds = $("td[widgetname='box']:has(:checked)"); // 通过jQuery查找被选中的复选框

console.log($tds)

$tds.each(function () {

    var cell = $(this).attr('id');

    console.log(cell)

    var row = cell.split(',')[1]; // 获取行号

    console.log("行", row)

    selectedRows.push(parseInt(row) + 1); // 转换为 1-based 行号

});

// 如果没有选中任何行,尝试原方法

if (selectedRows.length == 0) {

    for (var i = 2; i <= 50; i++) {

        try {

            if (report.getCellValue(0, i - 1) == 1) {

                selectedRows.push(i);

            }

        } catch (e) {

            break;

        }

    }

}

if (selectedRows.length == 0) {

    alert("请至少选择一行数据!");

    return false;

}

// 弹框确认是否取消该任务

FR.Msg.confirm("提示", "是否确定取消该任务?", function (value) {

    if (value) { // 点击“确定”

        // 标记是否有可取消的任务

        var canCancel = true;

        

        // 先检查所有选中行的状态

        selectedRows.forEach(function (row) {

            var currentStatus = report.getCellValue(12, row - 1);

            // 如果存在状态不为0的行,标记为不可取消

            if (currentStatus != 0) {

                canCancel = false;

            }

        });

        

        // 判断是否可以取消

        if (!canCancel) {

            FR.Msg.alert("提示", "当前状态无法取消!");

            return; // 终止后续操作

        }

        

        // 所有选中行状态均为0,执行取消操作

        selectedRows.forEach(function (row) {

            report.setCellValue(12, row - 1, "4");

        });

        // 提交报表(触发报表内置的提交逻辑)

        report.writeReport(function () { 

            // 提交成功后刷新页面

           _g().refreshAllSheets(); 

      });

    }

}); 

1_计划初版 (2).zip

FineReport Kennethq 发布于 2025-9-15 12:55
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
用户k6280494Lv6专家互助
发布于2025-9-15 13:37
  • 2关注人数
  • 17浏览人数
  • 最后回答于:2025-9-15 13:37
    请选择关闭问题的原因
    确定 取消
    返回顶部