bootstrap-table点击全选同属性的所有数据的方法/点选同组的所有数据条目

今天有个需求,要求如下:

点击全选所有相同属性的字段,以便进行批量操作
bootstrap-table点击选中所有同属性的数据,区别于全选与点选,需要先选中需要全选其同组数据的数据,然后点击全选同组按钮,便会选中其所有同属性的数据,以便后续进行批量操作

查阅了一下相关资料,并不多,大多数如何默认选中之类的操作
结合了一些资料,我实现了此功能,实现原理如下

使用字段格式化,修改点选栏的方法,如果有需要默认点选的字段便自动点选确认
添加按钮,点击按钮会使需要选中的数据塞入默认选中数组中,然后重置表格便会默认点选同组的所有数据了
默认点选字段的数组要及时,再添加记忆滚轮位置的方法,选定后跳回原位置

废话不说,直接上代码

先定义一个需要选定的数据的数组

var checkSet = new Set();

在表格初始化时,对点选栏进行重写

var options = {
            url: prefix + "/list",

			......
            rememberSelected: true, //翻页记住选中
            
            columns: [{
                field: 'state',
                checkbox: true,
                formatter: function (value, row, index) {
                    // 如果属性相同就默认选中
                    if (checkSet.has(row.name)) {
                        return {checked: true};
                    }
                    return {checked: false};
                }
            },
            ......

在html页面添加‘全选同组’的按钮(使用了ruoyi框架)

 <a class="btn btn-danger multiple disabled" onclick="checkAllGroup()">
                <i class="fa fa-check"></i> 全选同组
            </a>

实现点击全选相同属性所有数据的方法

    // 点选同组的所有数据
    function checkAllGroup() {
    	//清空默认选中数据
        checkSet = new Set(); 
        // 拿到需要的选中的数据的名称
        var checkNameList = $.map($("#" + table.options.id).bootstrapTable('getSelections'), function (row) {
            return $.common.getItemField(row, table.options.columns[2].field);
        });
        for (var i = 0; i < checkNameList.length; i++) {
            checkSet.add(checkNameList[i])
        }
        // 获取当前滚动条的位置
        var scollPostion = $('#bootstrap-table').bootstrapTable('getScrollPosition');
        // 重置表格以调用点选方法
        $.form.reset()
        // 回到原位置
        setTimeout(function () {
            $('#bootstrap-table').bootstrapTable('scrollTo', scollPostion);
        }, 200);
    }

利用上述方法,我成功实现了需求所需功能