使用BootDO框架在js中隐藏表的各个列(框架专用)

代使用BootDo框架,前端页面中可以自定义展示列

注意其中的clickToSelect,js如下:


$(function() {
    load();
});

function load() {
    $('#exampleTable')
        .bootstrapTable(
            {
                method : 'get', // 服务器数据的请求方式 get or post
                url : prefix + "/list", // 服务器数据的加载地址
            //  showRefresh : true,
            //  showToggle : true,
                showColumns : true,// 是否显示内容下拉框(选择显示的列)
                iconSize : 'outline',
                toolbar : '#exampleToolbar',
                striped : true, // 设置为true会有隔行变色效果
                dataType : "json", // 服务器返回的数据类型
                pagination : true, // 设置为true会在底部显示分页条
                // queryParamsType : "limit",
                // //设置为limit则会发送符合RESTFull格式的参数
                singleSelect : false, // 设置为true将禁止多选
                // contentType : "application/x-www-form-urlencoded",
                // //发送到服务器的数据编码类型
                pageSize : 10, // 如果设置了分页,每页数据条数
                pageList:[10,20,50],
                pageNumber : 1, // 如果设置了分布,首页页码
                //search : true, // 是否显示搜索框
                sidePagination : "server", // 设置在哪里进行分页,可选值为"client" 或者 "server"
                clickToSelect: true, // 单击行即可以选中,列表定制化,2018-6-12
                queryParams : function(params) {
                    return {
                        //说明:传入后台的参数包括offset开始索引,limit步长,sort排序列,order:desc或者,以及所有列的键值对
                        pageSize : params.pageSize,
                        pageNumber : params.pageNumber,

                    };
                },
                // //请求服务器数据时,你可以通过重写参数的方式添加一些额外的参数,例如 toolbar 中的参数 如果
                queryParamsType : '' ,//返回参数必须包含
                // limit, offset, search, sort, order 否则, 需要包含:
                // pageSize, pageNumber, searchText, sortName,
                // sortOrder.
                // 返回false将会终止请求
                columns : [
                    {
                        checkbox : true
                    },
                                                    {
                        field : 'code',
                        title : '订单号'
                    },
                                                    {
                        field : ...,
                        title : ...
                    },
                                                    {
                        field : 'Channel',
                        title : '渠道'
                    } ]
            });

    $('.keep-open').on({
        "hide.bs.dropdown":  function() {
        //"shown.bs.dropdown":  function() {
             var fields=$('#exampleTable').bootstrapTable('getHiddenColumns');
            //var showFields = $('#exampleTable').bootstrapTable('getVisibleColumns');
            var names = new Array();
            $.each(fields, function (i, name) {
                names[i] = name['field'];
            });
            //1.先删除这个用户这个模块对应的字段  ---参数用用户id和模块名
            //2.再重新插入这个用户这个模块对应的字段---names
            $.ajax({
                cache : false,
                type : "POST",
                url : "/system/column/saveUserColumn",
                data : {
                    'module' : '模块名',
                    'column' : names
                },
                async : false
            });
        }
    });
    //启动页面查看到的数据
    $.ajax({
        url: '/system/column/showUserColumn',
        type: 'POST',
        data: {
            'module' : '模块名'
        },
        success: function (result) {
            var names = new Array();
            names = result;
            //打开页面隐藏列
            hiddenColumns(names);
        }
    });
}
//打开页面隐藏列
function hiddenColumns(names) {
    if(names!=''){
        $.each(names, function (i, name) {
            $('#exampleTable').bootstrapTable('hideColumn', name);
        });
    }
}

对应的Controller:

    /**
     * 保存用户自定义隐藏的列
     */
    @Log("保存用户自定义的列")
    @ResponseBody
    @PostMapping("/saveUserColumn")
    public R saveUserColumn(String module,@RequestParam("column[]")  String[]  column){
        if( null!=column &&  column.length!=0 && module.length()!=0){
            if(columnService.saveUserColumn(module,column)>0){
                return R.ok();
            }
            return R.error();
        }
        return R.error();
    }

    /**
     * 每次进入页面时,查询到对应的自定义隐藏的column列
     * @return
     */
    @Log("查询用户的自定义column列")
    @ResponseBody
    @PostMapping("/showUserColumn")
    public String[] showUserColumn(String module){
        String[] columns =columnService.getUserColumns(module);
        return columns;
    }

对应的serviceImpl:

    /**
     * 保存用户自定义的具体模块的列名称
     * 1.删除已经有的
     * 2.插入新的
     * @param columns
     * @return
     */
    @Override
    public int saveUserColumn(String module,String[] columns) {

        UserDO user = ShiroUtils.getUser();
        Long userId = user.getId();
        columnDao.removeUserColumn(userId, module);
        List<ColumnDO> list = new ArrayList<>();
        for (String c: columns) {
            ColumnDO columnDO = new ColumnDO();
            columnDO.setUserId(userId);
            columnDO.setModule(module);
            columnDO.setColumn(c);
            list.add(columnDO);
        }
        return columnDao.saveBatch(list);
    }

    /**
     * 获取用户上次的已经隐藏勾选的自定义列:
     * @return
     */
    @Override
    public String[] getUserColumns(String module) {
        UserDO user = ShiroUtils.getUser();
        List<ColumnDO> list =columnDao.getUserColumns(user.getId(), module);
        if(null!=list && list.size()>0){
            String[] userColumns = new String[list.size()];
            List<String> strList = new ArrayList<>();
            for (ColumnDO c : list) {//由于只需要column,则先给一个对象是String的集合
                strList.add(c.getColumn());
            }
            userColumns = strList.toArray(userColumns);//将集合转化为String数组
            return userColumns;
        }
        return null;
    }

对应的dao:

    /**
     * 批量插入,效率大大提高,不过注意mysql默认接受sql的大小是1M
     * @param column
     * @return
     */
    int saveBatch(@Param("columns") List<ColumnDO> columns);
    /**
     * 删除登陆用户对应的具体模块的列信息
     * @param userId
     * @param module
     * @return
     */
    int removeUserColumn(@Param("userId") Long userId,@Param("module") String module);

    /**
     * 获取用户上次的已经勾选的自定义列的集合
     * @param userId
     * @param module
     * @return
     */
    List<ColumnDO> getUserColumns(@Param("userId") Long userId,@Param("module") String module);

对应的mapper:

    <delete id="removeUserColumn">
        delete from pm_column where 1=1 AND user_id = #{userId} AND module = #{module}
    </delete>
    <insert id="saveBatch">
        INSERT INTO pm_column
        (
        `user_id`,
        `module`,
        `column`
        )
        VALUES
        <foreach collection ="columns" item="item" separator =",">
            (#{item.userId}, #{item.module}, #{item.column})
        </foreach >
    </insert>

    <select id="getUserColumns" resultType="com.biyouxin.pm.column.domain.ColumnDO">
        select `id`,`user_id`,`module`,`column` from pm_column
        where 1=1 AND user_id = #{userId} AND module = #{module}
    </select>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
授权方式: 开源软件 界面语言: 简体文 文件大小: 12.3 MB 更新时间: 2020-08-12 资源类型: 国产软件 推荐等级: ★★★☆☆ 平台环境: JAVA 作者主页: 点击查看 演示地址: 点击查看 详细介绍 – [ BootDo后台管理系统 v1.0 ] BootDo 是高效率,低封装,面向学习型,面向微服的开源JavaEE开发框架BootDo是在SpringBoot基础上搭建的一个Java基础开发平台,MyBatis为数据访问层,ApacheShiro为权限授权层,Ehcahe对常用数据进行缓存。 BootDo主要定位于后台管理系统学习交流,已内置后台管理系统的基础功能和高效的代码生成工具,包括:系统权限组件、数据权限组件、数据字典组件、核心工具组件、视图操作组件、工作流组件、代码生成等。前端界面风格采用了结构简单、性能优良、页面美观大气的TwitterBootstrap页面展示框架。采用分层设计、双重验证、提交数据安全编码、密码加密、访问验证、数据权限验证。使用Maven做项目管理,提高项目的易开发性、扩展性。 BootDo目前包括以下四大模块,系统管理(SYS)模块、内容管理(CMS)模块、在线办公(OA)模块、代码生成(GEN)模块。系统管理模块,包括企业组织架构(用户管理、机构管理、区域管理)、菜单管理、角色权限管理、字典管理等功能;内容管理模块,包括内容管理(文章、链接),栏目管理、站点管理、公共留言、文件管理、前端网站展示等功能;在线办公模块,提供简单的请假流程实例;代码生成模块,完成重复的工作。 BootDo提供了常用工具进行封装,包括日志工具、缓存工具、服务器端验证、数据字典、当前组织机构数据(用户、机构、区域)以及其它常用小工具等。另外还提供一个强大的在线代码生成工具。 BootDo内置功能 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 机构管理:配置系统组织机构(公司、部门、小组),树结构展现,可随意调整上下级。 区域管理:系统城市区域模型,如:国家、省市、地市、区县的维护。 菜单管理:配置系统菜单,操作权限,按钮权限标识等。 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。 字典管理:对系统经常使用的一些较为固定的数据进行维护,如:是否、男女、类别、级别等。 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 工作流引擎:实现业务工单流转、在线流程设计器。 BootDo截图 相关阅读 同类推荐: 站长常用源码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值