Layui+dtree實現左邊分類列表,右邊數據列表

来源:https://www.cnblogs.com/fxsen/archive/2023/05/11/17390136.html
-Advertisement-
Play Games

效果如下 代碼實現 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>帖子類別</title> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Comp ...


效果如下

99a95b9ac593dff728e1e49ef0fd403c.png

代碼實現

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>帖子類別</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="${request.contextPath}/static/lib/layui-v2.6.3/css/layui.css" media="all">
    <link rel="stylesheet" href="${request.contextPath}/static/css/public.css" media="all">
    <link rel="stylesheet" href="${request.contextPath}/static/lib/layui_ext/dtree/dtree.css">
    <link rel="stylesheet" href="${request.contextPath}/static/lib/layui_ext/dtree/font/dtreefont.css">
</head>
<body>
<div class="layui-fluid">
    <div class="layui-row layui-col-space15">
        <!-- 左樹 -->
        <div class="layui-col-sm12 layui-col-md4 layui-col-lg2">
            <div class="layui-card">
                <div class="layui-card-body mini-bar" id="ltTree">

                </div>
            </div>
        </div>
        <!-- 右表 -->
        <div class="layui-col-sm12 layui-col-md8 layui-col-lg10">
            <div class="layuimini-container">
                <div class="layuimini-main">
                    <fieldset class="table-search-fieldset">
                        <legend>搜索信息</legend>
                        <div style="margin: 10px 10px 10px 10px">
                            <form class="layui-form layui-form-pane" action="">
                                <div class="layui-form-item">
                                    <div class="layui-inline">
                                        <label class="layui-form-label">姓名</label>
                                        <div class="layui-input-inline">
                                            <input type="text" name="keyword" autocomplete="off" class="layui-input">
                                        </div>
                                    </div>
                                    <div class="layui-inline">
                                        <label class="layui-form-label">性別</label>
                                        <div class="layui-input-inline">
                                            <select name="gender"  lay-filter="aihao">
                                                <option value="" selected=""></option>
                                                <option value="0">男</option>
                                                <option value="1">女</option>
                                            </select>
                                        </div>
                                    </div>
                                    <div class="layui-inline">
                                        <label class="layui-form-label">是否驅蟲</label>
                                        <div class="layui-input-inline">
                                            <select name="expellingParasite"  lay-filter="aihao">
                                                <option value="" selected=""></option>
                                                <option value="0">是</option>
                                                <option value="1">否</option>
                                            </select>
                                        </div>
                                    </div>
                                    <div class="layui-inline">
                                        <label class="layui-form-label">是否絕育</label>
                                        <div class="layui-input-inline">
                                            <select name="sterilization"  lay-filter="aihao">
                                                <option value="" selected=""></option>
                                                <option value="0">是</option>
                                                <option value="1">否</option>
                                            </select>
                                        </div>
                                    </div>
                                    <div class="layui-inline">
                                        <label class="layui-form-label">是否接種疫苗</label>
                                        <div class="layui-input-inline">
                                            <select name="vaccination"  lay-filter="aihao">
                                                <option value="" selected=""></option>
                                                <option value="0">是</option>
                                                <option value="1">否</option>
                                            </select>
                                        </div>
                                    </div>
                                    <div class="layui-inline">
                                        <label class="layui-form-label">數據來源</label>
                                        <div class="layui-input-inline">
                                            <select name="source"  lay-filter="aihao">
                                                <option value="" selected=""></option>
                                                <option value="0">系統錄入</option>
                                                <option value="1">用戶發佈</option>
                                            </select>
                                        </div>
                                    </div>
                                    <div class="layui-inline">
                                        <label class="layui-form-label">審核狀態</label>
                                        <div class="layui-input-inline">
                                            <select name="status"  lay-filter="aihao">
                                                <option value="" selected=""></option>
                                                <option value="0">未審核</option>
                                                <option value="1">已審核</option>
                                            </select>
                                        </div>
                                    </div>
                                    <div class="layui-inline">
                                        <button type="submit" class="layui-btn layui-btn-primary"  lay-submit lay-filter="data-search-btn"><i class="layui-icon"></i> 搜 索</button>
                                    </div>
                                </div>
                            </form>
                        </div>
                    </fieldset>
                    <script type="text/html" id="toolbarDemo">
                        <div class="layui-btn-container">
                            <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="add"> 添加 </button>
                        </div>
                    </script>
                    <table class="layui-hide" id="currentTableId" lay-filter="currentTableFilter"></table>
                    <script type="text/html" id="currentTableBar">
                        <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">編輯</a>
                        <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">刪除</a>
                    </script>
                </div>
            </div>
        </div>

    </div>
</div>


<script src="${request.contextPath}/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script>
    layui.extend({
        dtree: '${request.contextPath}/static/lib/layui_ext/dtree/dtree'   // {/}的意思即代表採用自有路徑,即不跟隨 base 路徑
    }).use(['layer', 'form', 'table', 'util', 'dtree'], function () {
        var $ = layui.jquery;
        var layer = layui.layer;
        var form = layui.form;
        var table = layui.table;
        var util = layui.util;
        var dtree = layui.dtree;
        var s_categoryId;
        function tableRender(categoryId){
            s_categoryId = categoryId;
            table.render({
                elem: '#currentTableId',
                url: '${request.contextPath}/petInfo/listData',
                toolbar: '#toolbarDemo',
                defaultToolbar: ['filter', 'exports', 'print', {
                    title: '提示',
                    layEvent: 'LAYTABLE_TIPS',
                    icon: 'layui-icon-tips'
                }],
                cols: [[
                    {field: 'categoryName', width: 126, title: '寵物分類'},
                    {field: 'breed', width: 126, title: '寵物品種'},
                    {field: 'name', width: 126, title: '寵物姓名'},
                    {field: 'gender', width: 126, title: '寵物性別',templet: function (d){
                            if (d.gender === 0){
                                return "<span>男</span>";
                            }else {
                                return "<span>女</span>";
                            }
                        }},
                    {field: 'age', width: 126, title: '寵物年齡'},
                    {field: 'weight', width: 126, title: '寵物體重'},
                    {field: 'furColor', width: 126, title: '寵物毛色'},
                    {field: 'expellingParasite', width: 126, title: '是否驅蟲',templet: function (d){
                            if (d.expellingParasite === 0){
                                return "<span>是</span>";
                            }else {
                                return "<span>否</span>";
                            }
                        }},
                    {field: 'sterilization', width: 126, title: '是否絕育',templet: function (d){
                            if (d.sterilization === 0){
                                return "<span>是</span>";
                            }else {
                                return "<span>否</span>";
                            }
                        }},
                    {field: 'vaccination', width: 126, title: '是否接種疫苗',templet: function (d){
                            if (d.vaccination === 0){
                                return "<span>是</span>";
                            }else {
                                return "<span>否</span>";
                            }
                        }},
                    {field: 'source', width: 126, title: '數據來源',templet: function (d){
                            if (d.expellingParasite === 0){
                                return "<span>系統錄入</span>";
                            }else {
                                return "<span>用戶發佈</span>";
                            }
                        }},
                    {title: '操作', width: 126, toolbar: '#currentTableBar', align: "center"}
                ]],
                limits: [10, 15, 20, 25, 50, 100],
                limit: 15,
                page: true,
                skin: 'row,line',
                where: {categoryId:categoryId}
            });
        }

        // 監聽搜索操作
        form.on('submit(data-search-btn)', function (data) {
            //執行搜索重載
            table.reload('currentTableId', {
                page: {
                    curr: 1
                }
                , where: {
                    keyword: data.field.keyword,
                    categoryId:s_categoryId,
                    gender:data.field.gender,
                    expellingParasite:data.field.expellingParasite,
                    sterilization:data.field.sterilization,
                    vaccination:data.field.vaccination,
                    source:data.field.source,
                    status:data.field.status
                }
            }, 'data');
            return false;
        });
        /**
         * toolbar監聽事件
         */
        table.on('toolbar(currentTableFilter)', function (obj) {
            if (obj.event === 'add') {  // 監聽添加操作
                var index = layer.open({
                    title: '添加寵物',
                    type: 2,
                    shade: 0.2,
                    maxmin:false,
                    shadeClose: true,
                    area: ['800px', '100%'],
                    content: '${request.contextPath}/petInfo/add',
                    //通過end回調
                    end: function(){
                        table.reload('currentTableId');
                    }
                });
                $(window).on("resize", function () {
                    layer.full(index);
                });
            } else if (obj.event === 'delete') {  // 監聽刪除操作
                var checkStatus = table.checkStatus('currentTableId')
                    , data = checkStatus.data;
                layer.alert(JSON.stringify(data));
            }
        });
        table.on('tool(currentTableFilter)', function (obj) {
            var data = obj.data;
            if (obj.event === 'edit') {

                var index = layer.open({
                    title: '編輯寵物',
                    type: 2,
                    shade: 0.2,
                    maxmin:false,
                    shadeClose: true,
                    area: ['800px', '100%'],
                    content: '${request.contextPath}/petInfo/edit?id='+data.id,
                    //通過end回調
                    end: function(){
                        table.reload('currentTableId');
                    }
                });
                $(window).on("resize", function () {
                    layer.full(index);
                });
                return false;
            } else if (obj.event === 'delete') {
                layer.confirm('真的刪除麽', function (index) {
                    layer.close(index);
                    $.ajax({
                        type : "get",
                        url : "${request.contextPath}/petInfo/delete?id="+data.id,
                        async : false,
                        success : function(result){
                            if (result.success){
                                var d_index = layer.alert("刪除成功", {
                                    title: '提示'
                                }, function () {
                                    // 關閉彈出層
                                    layer.close(d_index);
                                    table.reload('currentTableId');
                                });
                            }else{
                                layer.alert(result.msg,{icon: 2});
                            }
                        }
                    });
                });
            }
        });
        // 初始化樹
        var DemoTree = dtree.render({
            elem: "#ltTree",
            method: 'GET',
            url: "${request.contextPath}/petCategory/listAll", // 使用url載入(可與data載入同時存在)
            toolbar: true, //更多工具欄用法詳見工具欄
            toolbarWay:"fixed",
            toolbarShow: []
            , done: function (data, url, first) {
                //預設選中第一個
                var dTreeid = $("cite").attr("data-id");
                dtree.click(DemoTree, dTreeid);
                tableRender(dTreeid);
            },
            toolbarFun:{
                loadToolbarBefore: function(buttons, param, $div){
                    console.log(buttons);
                    console.log(param);
                    console.log($div);
                    buttons.addToolbar = "";  // 取消新增功能
                    buttons.editToolbar = ""; //取消編輯功能
                    buttons.delToolbar = "";
                    return buttons; // 將按鈕對象返回
                }
            },
            toolbarExt:[
                {
                    toolbarId: "del",
                    icon: "dtree-icon-roundclose",
                    title: "刪除",
                    handler: function (node, $div) {
                        layer.confirm('真的刪除麽', function (index) {
                            layer.close(index);
                            layer.msg(JSON.stringify(node));
                        });
                    }
                }
            ]
        });
        // 綁定節點點擊
        dtree.on("node('ltTree')" ,function(obj){
            table.reload("currentTableId", {
                //點擊載入右邊表格
                where: {categoryId:obj.param.nodeId}
            })
        });
    });
</script>
</body>
</html>

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 廣告是App開發者最常用的流量變現方法之一,當App擁有一定數量用戶時,開發者就需要考慮如何進行流量變現,幫助App實現商業可持續增長。 鯨鴻動能流量變現服務是廣告服務依托華為終端強大的平臺與數據能力為開發者提供的App流量變現服務,開發者通過該服務可以在自己的App中獲取並向用戶展示精美的、高價值 ...
  • 源碼 https://github.com/webabcd/flutter_demo 作者 webabcd 一統天下 flutter - 插件: flutter 使用 web 原生控制項,並做數據通信 示例如下: lib\plugin\plugin2.dart /* * 插件 * 本例用於演示 flu ...
  • 一、本文想給你聊的東西包含一下幾個方面:(僅限於es6之前的語法哈,因為es6裡面class這關鍵字用上了。。) 1.原型是啥?原型鏈是啥? 2.繼承的通用概念。 3.Javascript實現繼承的方式有哪些? 二、原型是啥?原型鏈是啥? 1.原型是函數本身的prototype屬性。 首先js和ja ...
  • 背景: 本來項目開發系統防掛機功能,在其餘游覽器中均可以使用。但是呢在蘋果的safair游覽器中會出現幾率失效,最後經過排查發現是蘋果的墓碑機制導致。即:此標簽頁活躍,其他標簽頁假死。然後就導致防掛機失效了。 原理: 假如當前游覽器中有3個標簽頁分別是A,B,C,每個標簽頁都有倒計時。正常情況下,每 ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 Vue3+TS(uniapp)手擼一個聊天頁面 前言 最近在自己的小程式中做了一個智能客服,API使用的是雲廠商的API,然後聊天頁面...嗯,找了一下關於UniApp(vite/ts)版本的好像不多,有一個官方的但其中的其他代碼太多了, ...
  • 本系列內容為JS全解析,為千鋒教育資深前端老師獨家創作 致力於為大家講解清晰JavaScript相關知識點,含有豐富的代碼案例及講解。如果感覺對大家有幫助的話,可以【點個關註】持續追更~ this指向(掌握) this 是一個關鍵字,是一個使用在作用域內的關鍵字 作用域分為全局作用域和局部作用域(私 ...
  • 1、深拷貝 1.1、概念 對象的深拷貝是指其屬性與其拷貝的源對象的屬性不共用相同的引用(指向相同的底層值)的副本。 因此,當你更改源或副本時,可以確保不會導致其他對象也發生更改;也就是說,你不會無意中對源或副本造成意料之外的更改。 在深拷貝中,源和副本是完全獨立的。深拷貝與其源對象不共用引用,所以對 ...
  • 作者:京東科技 牛志偉 近期對Webpack5構建性能進行了優化,構建耗時從150s到60s再到10s,下麵詳細講解下優化過程。 優化前現狀 1.歷史項目基於Vue3 + Webpack5技術棧,其中webpack配置項由開發者自己維護(沒有使用@vue/cli-service),並且做了環境分離。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...