layui前端,弹窗多选表单,选择后自动添加到主表单,附带状态判断、除重、单行删除功能

layui前端,弹窗多选表单,选择后自动添加到主表单,附带状态判断、除重、单行删除功能

实现效果如下:

点击选择,弹出弹窗
在这里插入图片描述

在这里插入图片描述
选择需要的数据后,主表格自动添加
在这里插入图片描述
在这里插入图片描述
除重
在这里插入图片描述
状态判断
在这里插入图片描述

主要前端代码如下:

HTML:
 <div>
            <table class="layui-table" lay-filter="main_table" id="choosetable"  >
                <thead>
                <tr>
                    <div class="layui-btn-container">
                        <a class="layui-btn layui-btn-sm" id="choose" name="choose" >
                            <i class="layui-icon">选择</i>
                        </a>
                    </div>
                </tr>
                <tr>
                    <th >操作</th>
                    <th >资产单号</th>
                    <th>资产编码</th>
                    <th >资产名称</th>
                    <th >资产类别</th>
                    <th >资产来源</th>
                    <th >资产所在位置</th>
                    <th >价格</th>

                </tr>
                

                <tr th:each="perii,lstati:${assetList}"><!--Thymeleaf 的循环渲染表格(数据从后端传入-->
                    <td ><input type='button' value='删除' class='layui-btn' onclick='delLine11(this)'/></td>
                    <td><input readonly="readonly" style="border:none;" type="text" name="tid" th:value="${perii.tid}"></td>
                    <td th:text="${perii.labelId}">资产编码</td>
                    <td th:text="${perii.assetName}">资产名称</td>
                    <td th:text="${perii.assetTypeName}">资产类别</td>
                    <td th:text="${perii.assetSourceName}">资产来源</td>
                    <td th:text="${perii.assetPositionName}">资产所在位置</td>
                    <td th:text="${perii.price}">价格</td>

                </tr>
                </thead>
            </table></div>
js:
<script>


    //资产选择器
    layui.tableSelect.render({
        elem : '#choose', //定义输入框input对象
        searchKey : 'search_LIKE_use_status', //搜索输入框的name值 默认keyword

        table : { //定义表格参数,与LAYUI的TABLE模块一致,只是无需再定义表格elem
            height : 220,
            url : '[[@{/amc/asset/queryList}]]',
            cols : [ [ {
                checkbox : true
            }, {
                field : 'tid',
                title : 'tid',
                width : 0
            },
                {
                    field : 'labelId',
                    title : '资产编号',
                    width : 100
                },{
                    field : 'useStatus',
                    title : '资产状态',
                    width : 100
                },{
                    field : 'assetName',
                    title : '资产名称',
                    width : 100
                },{
                    field : 'createdTime',
                    title : '购买时间',
                    width : 100
                },{
                    field : 'usePeriod',
                    title : '使用期限',
                    width : 100
                },{
                    field : 'assetTypeName',
                    title : '资产类别',
                    width : 100
                },{
                    field : 'assetSourceName',
                    title : '资产来源',
                    width : 100
                },{
                    field : 'assetPositionName',
                    title : '资产所在位置',
                    width : 100
                }, {
                    field : 'price',
                    title : '价格',
                    width : 100
                }] ]
        },
        done : function(elem, data) {
            var tr = $("#choosetable tr"); // 获取table中每一行内容
            var result =new Array();; // 数组
            for (var i = 0; i < tr.length; i++) {// 遍历表格中每一行的内容
                var tds = $(tr[i]).find("td");
                if (tds.length > 0) {
                    result.push({
                        "tid" : $(tds[1]).find("input").val()
                    })
                }
            }
            console.log("^^^^^^^^^^^^^^^^"+JSON.stringify(result));
            //选择完后的回调,包含2个返回值 elem:返回之前input对象;data:表格返回的选中的数据 []
            //拿到data[]后 就按照业务需求做想做的事情啦~比如加个隐藏域放ID...  choosetable
            if (data.data.length > 0) {
                var elementById = data.data[0];
                console.log(elementById);
                for(var i=0; i<data.data.length;i++){
                    var tid=data.data[i].tid;
                    var labelId=data.data[i].labelId;
                    var assetName=data.data[i].assetName;
                    var assetTypeName=data.data[i].assetTypeName;
                    var assetSourceName=data.data[i].assetSourceName;
                    var assetPositionName=data.data[i].assetPositionName;
                    var price=data.data[i].price;
                    var useStatus = data.data[i].useStatus;
                    if (result.length == 0) {
                        if (useStatus == "已使用") {
                            var tr = document.createElement("tr");
                            tr.innerHTML = "<tr>"
                                + "<td class='c6'><input  class='layui-btn'  type='button' value='删除' class='cla2' οnclick='delLine(this)'/></td>"
                                + "<td  class='c2'><input readonly='readonly' style='border:none;' type='text' name='tid' value='" + tid + "'></td>"
                                + "<td class='c2'><input readonly='readonly' style='border:none;' type='text' name='labelId' value='" + labelId + "'></td>"
                                + "<td class='c3'><input readonly='readonly' style='border:none;' type='text' name='assetName' value='" + assetName + "'></td>"
                                + "<td class='c3'><input readonly='readonly' style='border:none;' type='text' name='assetTypeName' value='" + assetTypeName + "'></td>"
                                + "<td class='c3'><input readonly='readonly' style='border:none;' type='text' name='assetSourceName' value='" + assetSourceName + "'></td>"
                                + "<td class='c3'><input readonly='readonly' style='border:none;' type='text' name='assetPositionName' value='" + assetPositionName + "'></td>"
                                + "<td class='c3'><input readonly='readonly' style='border:none;' type='text' name='price' value='" + price + "'></td>"
                                + "</tr>";
                            // 添加数据到表中
                            document.getElementById("choosetable").appendChild(tr);
                        } else {
                            layui.layer.msg("只能选择已使用状态的资产,请重新选择");
                        }
                    } else {
                        // 除重
                        var bb = true;
                        for (var a = 0; a < result.length; a++) {
                            console.log("^^^^^^^for^^^^^^^^");
                            if (tid == result[a].tid) {
                                bb = false;
                                break
                            } else {
                            }
                        }
                        if (bb == true) {
                            if (useStatus == "已使用") {
                                var tr = document.createElement("tr");
                                tr.innerHTML = "<tr>"
                                    + "<td class='c6'><input  class='layui-btn'  type='button' value='删除' class='cla2' οnclick='delLine(this)'/></td>"
                                    + "<td  class='c2'><input readonly='readonly' style='border:none;' type='text' name='tid' value='" + tid + "'></td>"
                                    + "<td class='c2'><input readonly='readonly' style='border:none;' type='text' name='labelId' value='" + labelId + "'></td>"
                                    + "<td class='c3'><input readonly='readonly' style='border:none;' type='text' name='assetName' value='" + assetName + "'></td>"
                                    + "<td class='c3'><input readonly='readonly' style='border:none;' type='text' name='assetTypeName' value='" + assetTypeName + "'></td>"
                                    + "<td class='c3'><input readonly='readonly' style='border:none;' type='text' name='assetSourceName' value='" + assetSourceName + "'></td>"
                                    + "<td class='c3'><input readonly='readonly' style='border:none;' type='text' name='assetPositionName' value='" + assetPositionName + "'></td>"
                                    + "<td class='c3'><input readonly='readonly' style='border:none;' type='text' name='price' value='" + price + "'></td>"
                                    + "</tr>";
                                // 添加数据到表中
                                document.getElementById("choosetable").appendChild(tr);
                            } else {
                                layui.layer.msg("只能选择已使用状态的资产,请重新选择");
                            }
                        }else {
                            layui.layer.msg("重复资产,请重新选择");
                        }
                        // 除重
                    }

                }

            } else {
                elem.val('');
                $('#userInCompanyTid').val('');
            }

        }

    });


//表格单行删除(用于弹窗中被选中的数据,在主表格中删除
function delLine(obj){
        var tr = obj.parentNode.parentNode;//parentNode 获取文档层次中的父对象
        document.getElementById("choosetable").removeChild(tr);
    }
    
//表格单行删除(用于后端传回在主表格中渲染的数据,在主表格中删除
  function delLine11(obj){
        var tr = obj.parentNode.parentNode;//parentNode 获取文档层次中的父对象
        document.getElementById("choosetable").deleteRow(tr.rowIndex);
    }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Layui有一个弹窗组件layer,可以用来生成弹窗表单。具体的步骤如下: 1. 引入Layui的layer组件和form组件。在HTML文件中引入以下代码: ```html <link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.5.7/css/layui.css"> <script src="https://cdn.staticfile.org/layui/2.5.7/layui.js"></script> ``` 2. 在JS文件中定义一个弹窗表单的函数,例如: ```javascript function openForm() { layui.use(['layer', 'form'], function(){ var layer = layui.layer; var form = layui.form; layer.open({ type: 1, area: ['500px', '300px'], title: '表单弹窗', content: $('#form'), btn: ['提交', '取消'], yes: function(index, layero){ // 提交表单的逻辑 }, btn2: function(index, layero){ // 取消的逻辑 }, cancel: function(){ // 点击右上角的关闭按钮的逻辑 } }); }); } ``` 3. 在HTML文件中定义一个包含表单的div元素,并隐藏它。例如: ```html <div id="form" style="display:none;"> <form class="layui-form" action=""> <div class="layui-form-item"> <label class="layui-form-label">用户名</label> <div class="layui-input-block"> <input type="text" name="username" required lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">密码</label> <div class="layui-input-block"> <input type="password" name="password" required lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input"> </div> </div> </form> </div> ``` 4. 在按钮或链接的点击事件中调用弹窗表单的函数。例如: ```html <button onclick="openForm()">打开表单弹窗</button> ``` 这样就可以在点击按钮或链接时弹出一个包含表单弹窗。用户填写完表单后,可以点击提交按钮,调用相应的提交逻辑。如果点击取消按钮或者右上角的关闭按钮,则关闭弹窗

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值