若依 弹出复选框表格

news2025/8/2 21:57:32

需求:

工资表用户应该可以弹框选择(弹窗选择用户表的id)

 最后效果差不多这样:

 步骤:

1.首先,先看我们需求啊,  工资表用户应该可以弹框选择

通过需求确认:

与这个需求关联的表有:

【用户工资表】,【用户表】

需求是,当用户工资表添加数据--选择用户id时,可以弹窗选择用户表的数据。

也就是当我们添加时,将用户id字段/选项目前的text形式转为弹窗选择

2.然后我们确定一下,上文说弹窗选择用户id,那咱们需要找到弹窗的数据表

例如上面是用户id,那就找你项目中确认的用户表即可,也就是说弹窗数据对应用户表,在用户表中,选择数据,并将结果返回给用户id

本项目用户表我直接用的若依的,若依直接找若依用户表数据即可。至于找那张表以及他们所在位置,先别急,按照下面步骤一步步操作就可以。

具体步骤

一.打开工资表add页面(选择add页面,是因为需求说了,是用户添加工资数据时,修改字段

下面是原始代码: 

<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
    <th:block th:include="include :: header('新增用户工资')" />
    <th:block th:include="include :: datetimepicker-css" />
</head>
<body class="white-bg">
    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
        <form class="form-horizontal m" id="form-salary-add">
            <div class="form-group">    
                <label class="col-sm-3 control-label is-required">用户ID:</label>
                <div class="col-sm-8">
                    <input name="userId" class="form-control" type="text" required>
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">工资:</label>
                <div class="col-sm-8">
                    <input name="salary" class="form-control" type="text">
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">生效时间:</label>
                <div class="col-sm-8">
                    <div class="input-group date">
                        <input name="effectDate" class="form-control" placeholder="yyyy-MM-dd" type="text">
                        <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
                    </div>
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">备注信息:</label>
                <div class="col-sm-8">
                    <input name="remark" class="form-control" type="text">
                </div>
            </div>
        </form>
    </div>
    <th:block th:include="include :: footer" />
    <th:block th:include="include :: datetimepicker-js" />
    <script th:inline="javascript">
        var prefix = ctx + "jh_product/salary"
        $("#form-salary-add").validate({
            focusCleanup: true
        });

        function submitHandler() {
            if ($.validate.form()) {
                $.operate.save(prefix + "/add", $('#form-salary-add').serialize());
            }
        }

        $("input[name='effectDate']").datetimepicker({
            format: "yyyy-mm-dd",
            minView: "month",
            autoclose: true
        });
    </script>
</body>
</html>

<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
    <th:block th:include="include :: header('新增用户工资')" />
    <th:block th:include="include :: datetimepicker-css" />
</head>
<body class="white-bg">
    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
        <form class="form-horizontal m" id="form-salary-add">

 下面这是用户id代码,要将text形式转为弹窗形式

             <div class="form-group">    
                <label class="col-sm-3 control-label is-required">用户ID:</label>
                <div class="col-sm-8">

                    <input name="userId" class="form-control" type="text" required>
                </div>

修改第一处: 

      <div class="form-group">    
                <label class="col-sm-3 control-label is-required">用户ID:</label>
                <div class="col-sm-8">

               //解释一下:下面input  之所以写俩,一个userName 一个userId  原因是因为,这个表数据中没有员工名字,只有员工id,依旧分不清谁是谁,所以我们加一个userName,这个数据也在我们所要弹窗调用的用户表里,这个userName ,userId,这俩名字,我们来自于,用户表domain下的字段,我在这段代码下放个图片

        <input name="userName" type="hidden"><!--员工姓名-->
        <input name="userId" class="form-control" type="text" readonly="true"
       οnclick="selectWxUser()" required><!--员工id-->
        <span class="input-group-addon"><i class="fa fa-search"></i></span>            
<!-- 
<input name="userId" class="form-control" type="text" required>-->


                </div>

 

</div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">工资:</label>
                <div class="col-sm-8">
                    <input name="salary" class="form-control" type="text">
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">生效时间:</label>
                <div class="col-sm-8">
                    <div class="input-group date">
                        <input name="effectDate" class="form-control" placeholder="yyyy-MM-dd" type="text">
                        <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
                    </div>
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">备注信息:</label>
                <div class="col-sm-8">
                    <input name="remark" class="form-control" type="text">
                </div>
            </div>
        </form>
    </div>
    <th:block th:include="include :: footer" />
    <th:block th:include="include :: datetimepicker-js" />
    <script th:inline="javascript">
        var prefix = ctx + "jh_product/salary"
        $("#form-salary-add").validate({
            focusCleanup: true
        });

        function submitHandler() {
            if ($.validate.form()) {
                $.operate.save(prefix + "/add", $('#form-salary-add').serialize());
            }
        }

        $("input[name='effectDate']").datetimepicker({
            format: "yyyy-mm-dd",
            minView: "month",
            autoclose: true

 修改第二处:对应上面调用的方法

我当时的操作过程:

function selectWxUser() {
    //解释一下,下面这个url地址,我们去若依用户表Controller找(改成弹窗形式要选择的数据在用户表Conteoller里),见下图
    // var prefix = ctx + "system/user";
    // var url = prefix + "/list";
    var url =ctx + "system/user/list"
    $.modal.open("选择员工id", url, '800', '600', function (index, layero) {
        var iframeWin = layero.find('iframe')[0];
        var data = iframeWin.contentWindow.selectHandler(index, layero);
        console.debug(data);
        if (data.length > 0) {
            var user = data[0];
            console.debug("select userId:" + user.userId);
            console.debug("select userName:" + user.userName);

            $("input[name='userId']").val(user.userId);
            $("input[name='userName']").val(user.userName);
        }

        $.modal.close(index);
    });
}

 上图地址对应controller:

[先解释一下,上面两张图的请求地址是对应的] 

 接着看,你可以看到,上图红线框起来的地方最后一句:

return getDataTable(list);

他返回的是一个list形式,在页面是展示是这样:

而我们需要的页面形式,

所以,我们要新加一段请求地址的代码,如下

@RequiresPermissions("system:user:list")
@GetMapping("/select")
public String select()
{
    return prefix + "/select";
}

 

与之对应的add页面也要随之改,因为这个url请求地址请求的就是controller

 //用户id多选框
        function selectWxUser() {
            //解释一下,下面这个url地址,我们去用户表找(改成弹窗形式要选择的数据在用户表里),见下图
            // var prefix = ctx + "system/user";
            // var url = prefix + "/select";
            var url =ctx + "system/user/select"
            $.modal.open("选择员工id", url, '800', '600', function (index, layero) {
                var iframeWin = layero.find('iframe')[0];
                var data = iframeWin.contentWindow.selectHandler(index, layero);
                console.debug(data);
                if (data.length > 0) {
                    var user = data[0];
                    console.debug("select userId:" + user.userId);
                    console.debug("select userName:" + user.userName);

                    $("input[name='userId']").val(user.userId);
                    $("input[name='userName']").val(user.userName);
                }

                $.modal.close(index);
            });
        }


    </script>
</body>
</html> 

完整的add页面代码:

<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
    <th:block th:include="include :: header('新增用户工资')" />
    <th:block th:include="include :: datetimepicker-css" />
</head>
<body class="white-bg">
    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
        <form class="form-horizontal m" id="form-salary-add">
            <div class="form-group">    
                <label class="col-sm-3 control-label is-required">用户ID:</label>
                <div class="col-sm-8">
                    <input name="userName" type="hidden"><!--员工姓名-->
                    <input name="userId" class="form-control" type="text" readonly="true"
                     onclick="selectWxUser()" required><!--员工id-->
<!--                    <input name="userId" class="form-control" type="text" required>-->
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">工资:</label>
                <div class="col-sm-8">
                    <input name="salary" class="form-control" type="text">
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">生效时间:</label>
                <div class="col-sm-8">
                    <div class="input-group date">
                        <input name="effectDate" class="form-control" placeholder="yyyy-MM-dd" type="text">
                        <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
                    </div>
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">备注信息:</label>
                <div class="col-sm-8">
                    <input name="remark" class="form-control" type="text">
                </div>
            </div>
        </form>
    </div>
    <th:block th:include="include :: footer" />
    <th:block th:include="include :: datetimepicker-js" />
    <script th:inline="javascript">
        var prefix = ctx + "jh_product/salary"
        $("#form-salary-add").validate({
            focusCleanup: true
        });

        function submitHandler() {
            if ($.validate.form()) {
                $.operate.save(prefix + "/add", $('#form-salary-add').serialize());
            }
        }

        $("input[name='effectDate']").datetimepicker({
            format: "yyyy-mm-dd",
            minView: "month",
            autoclose: true
        });
        //用户id多选框
        function selectWxUser() {
            //解释一下,下面这个url地址,我们去用户表找(改成弹窗形式要选择的数据在用户表里),见下图
            // var prefix = ctx + "system/user";
            // var url = prefix + "/select";
            var url =ctx + "system/user/select"
            $.modal.open("选择员工id", url, '800', '600', function (index, layero) {
                var iframeWin = layero.find('iframe')[0];
                var data = iframeWin.contentWindow.selectHandler(index, layero);
                console.debug(data);
                if (data.length > 0) {
                    var user = data[0];
                    console.debug("select userId:" + user.userId);
                    console.debug("select userName:" + user.userName);

                    $("input[name='userId']").val(user.userId);
                    $("input[name='userName']").val(user.userName);
                }

                $.modal.close(index);
            });
        }
    </script>
</body>
</html>

最后一步:上文写了,controlelr请求地址新添加了一个

为了避免乱套/混淆,我们需要的数据是用户表数据

我们可以新建一个html,名字叫select,跟user(弹窗要选择的页面文件)放一块。

将user.html代码复制到select

然后添加两段代码:

function selectHandler(index, layero) {
    return table.rememberSelecteds["bootstrap-table"];
}

 下面这段代码一定记得加,加上add表中的data才能获取到值,而不是unidefined

rememberSelected: true,

 到此,这个功能完全完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/16037.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

APS自动排产-AP工厂高级计划

安达发AP主要解决的问题&#xff1a; 客户交货需求&#xff1a;将销售订单、销售预测&#xff0c;同一转换为客户交货需求。生产净需求&#xff1a;考虑客户交货需求、当前库存、采购在途、生产在制、生产提前期、生产周期等&#xff0c;扣库存、展 BOM&#xff0c;最终产生产…

你知道数字化表单在防疫中的运用有哪些吗?

说到信息登记&#xff0c;很多人第一印象就是纸质化表格。但是随着科技发展&#xff0c;纸质化登记模式早已被out了。相比传统的纸质表格登记信息&#xff0c;现在普及的数字化表单登记模式有着更多的优势&#xff0c;例如&#xff1a;成本低、不宜丢失、打破了时间与地点限制&…

EasyCode的Mybatis终极版模板

EasyCode的Mybatis终极版距离我第一次上手EasyCode已经有一年的时间提醒一下&#xff0c;看这篇文章&#xff0c;如果你已经有EasyCode使用基础&#xff0c;只是来拿一下模板&#xff0c;可以直接看&#xff0c;如果你同时想知道知道到底怎么用easy code&#xff0c;请先看[Eas…

RabbitMQ初步到精通-第四章-RabbitMQ工作模式-Routing

第四章-RabbitMQ工作模式-Routing 1.模式介绍 1.1 模式 路由模式-继续还是和Exchange打交道&#xff0c;上节提到的Exchange类型为Fanout&#xff0c;此次声明的类型为direct 与默认Exchange一致。但还有最核心的一点&#xff0c;上节未使用Routing key&#xff0c;此次模式中…

SpringBoot实用开发篇复习3

我们之前学习了数据访问层的解决方案&#xff0c;包括关系数据库和非关系数据库&#xff0c;这一篇我们重点学校SpringBoot整合第三方技术&#xff0c;下面一起努力学习吧。 目录 一、整合第三方技术 1.1、缓存 1.1.1、缓存的作用 1.1.2、SpringBoot缓存使用方式 1.1.3、手…

C/C++自动 21 级(含卓越 211)《软件技术基础》期末大作业

C/C自动 21 级(含卓越 211)《软件技术基础》期末大作业 一、作业内容 题目一&#xff1a;请你设计一个算法&#xff0c;从顺序表中删除自第 i 个结点开始的 k 个结点。要求先输出整个顺序表&#xff0c;再输出删除自第 i 个结点开始的 k 个结点后的结果。 【编程提示】 假设…

高性能计算(HPC)存储高校科研应用分析

育人为本&#xff0c;国之根本&#xff0c;高校从理论教学到实操教学&#xff0c;从教室到实验室&#xff0c;改变了传统的教学模式&#xff0c;以数据的力量塑造新技术型高科技人才。随着科研项目多元化与数据量的增多&#xff0c;对计算速度与存储空间的要求不断提升&#xf…

rae众筹首个新目标,Tinkering开发板来了~

编辑&#xff1a;OAK中国 首发&#xff1a;oakchina.cn 喜欢的话&#xff0c;请多多&#x1f44d;⭐️✍ 内容可能会不定期更新&#xff0c;官网内容都是最新的&#xff0c;请查看首发地址链接。 ▌前言 Hello&#xff0c;大家好&#xff0c;这里是OAK中国&#xff0c;我是助手…

安全进阶:SSH实验配置指导

实验拓扑 实验需求 完成PC及交换机的配置&#xff0c;使得PC能够通过SSH的方式登录到交换机。 实验步骤及配置 交换机完成基础配置 [SW] interface Vlanif 1 [SW-Vlanif1] ip address 192.168.1.100 24简单起见&#xff0c;我们就直接使用VLAN1与PC对接&#xff0c;因此将交…

[附源码]java毕业设计企业物资信息管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

基于Simulink模拟具有两个目标的双基地雷达(附源码)

目录 一、示例 二、发射机 三、目标 四、接收机 五、结果和显示 六、总结 七、程序 此示例演示如何仿真具有两个目标的双基地雷达系统。双基地雷达的发射器和接收器不位于同一位置&#xff0c;而是沿着不同的路径移动。 一、示例 以下模型显示了双基地雷达系统的端到…

Failed to connect to any host resolved for DNS name第一次测试Redis/Jedis时报错(虚拟机)

有很多方法都会导致报这个错&#xff0c;后面提&#xff0c;先说解决方案 0. 尝试重启Redis&#xff0c;再运行测试代码 1. 检查配置文件环节 1⃣️是否设置后台启动(设置为yes) 2⃣️检查是否设置运行远程访问 这一步需要注意两个地方 注释掉bind和将protected-mode设置为…

项目八 51单片机WIFI控制继电器

前言&#xff1a;作者想要帮助一些童鞋和爱好者进行项目构建&#xff0c;但自知能力有限&#xff0c;不喜可论&#xff0c;创作不易&#xff0c;勿喷。 系统由STC89C51单片机、4路继电器、wifi esp8266模块及电源组成。 可以说是一个非常简单的设计&#xff0c;但这里我来说明…

(六)笔记.net core学习之泛型、逆变/协变、泛型缓存

1.泛型&#xff1a;延迟声明&#xff1a;不指定参数类型&#xff0c;调用是才指定&#xff0c;把参数类型的声明推迟到调用 2.泛型包含&#xff1a;泛型类、泛型方法、泛型接口、泛型委托、逆变/协变、泛型缓存 3.泛型约束 1.接口约束 Where T : 接口 2.基类约束 Where…

i++的错误使用

文章目录问题题目完整代码问题 在执行以下代码之前&#xff0c;i的值为8&#xff0c;length的值为10。 while (i < length) {tempArray[i] middle[i]; }我预想中的结果应该是tempArray[8] middle[8];&#xff0c;然后i。 结果tempArray[8]没有被赋值&#xff1a; 反倒是…

树/二叉树/森林之间的相互转换 与遍历

森林就是多棵树的集合&#xff0c;但是森林也可以只有一棵树&#xff0c;二叉树是一种特殊的树&#xff0c;固定的度为2&#xff0c;这是基本前情提要&#xff5e; 树常见的存储方式有三种&#xff1a; &#xff08;1&#xff09;双亲表示法 仅用定义一个结点对象&#xff0…

windows添加node环境

参考&#xff1a;npm和cnpm&#xff08;windows&#xff09;安装步骤_李疆~的博客-CSDN博客_cnpm一、什么是npm和cnpmnpm&#xff08;node package manager&#xff09;&#xff1a;nodejs的包管理器&#xff0c;用于node插件管理&#xff08;包括安装、卸载、管理依赖等&#…

YRCloudFile V6.9.0 加速企业在大数据应用技术创新

近日&#xff0c;焱融科技发布分布式文件存储产品 YRCloudFile 6.9.0 版本。该版本在功能和性能方面有多项技术性突破&#xff0c;主要包括大数据应用无缝对接 Hadoop &#xff0c;为大数据应用提供高性能存储平台&#xff1b;独有的 Dataload 功能和智能分层细粒度化&#xff…

查询不为空的字段

数据&#x1f4ca; idnameparent_id1党组织02陕西党委1314Null25渭南党委Null 实验⁉️ 查询int类型不为空的字段 select * from org where parent_id <> ""❌mybatis 中的 if判断会把整形中的 0 识别为false(空) select * from org where parent_id ! &quo…

体会多态的好

目录 继承和组合&#xff1a; 区别和联系 1.安全性角度&#xff08;封装性&#xff09; 2.灵活性角度&#xff08;牵一发动全身&#xff09; 多态&#xff1a; 一.怎样实现多态 1.完成向上转型 直接赋值&#xff1a;​​​​​​​ 方法传参 方法的返回值 2.完成方法重…