layui 树组件tree 通过API获取数据

一、简单

	var treedata=[];tree.render({elem: '#addLeftType',id: 'demoId',data: treedata,showCheckbox: true,oncheck: function(obj){console.log(obj.data); // 得到当前点击的节点数据console.log(obj.checked); // 节点是否被选中console.log(obj.elem); // 得到当前节点元素},edit: ['add', 'update', 'del'] // 开启节点的右侧操作图标});get_tree_data(0);//初始化// 使用 layui 的 ajax 方法来获取树节点数据function get_tree_data(id){$.ajax({type:'post',url: "{:url('classif_listjson')}",data: {id:id},success:function(response){tree.reload('demoId', {data:response,});tree.setChecked('demoId', [1,2]); //单个勾选 id 为 1 的节点}});};

初始化 默认选中:只能这个位置才能生效

tree.setChecked('demoId', [1,2]); //单个勾选 id 为 1 的节点

二、复杂(只能单选,二级):增加、编辑、删除功能

//tree组件 操作 开始var show_btn = [];var show_btn_ids='';var array_ids=[];function get_tree_id(checkarr){ for(var i=0;i<checkarr.length;i++){ if(checkarr[i].children){get_tree_id(checkarr[i].children)}else{show_btn_ids += checkarr[i].id+',';array_ids.push(checkarr[i].id);$("#classify_ids").val(show_btn_ids);}} }var treedata=[];//用来修改后的节点数据var update_treedata=[];//渲染var inst1 = tree.render({elem: '#addLeftType'  //绑定元素,id: 'demoId',edit: ['add', 'update', 'del'],showCheckbox: true,data:treedata,click: function(obj){//layer.msg(JSON.stringify(obj.data));},oncheck: function(obj){// console.log(obj); //得到当前点击的节点数据 show_btn_ids = '';$("#classify_ids").val('');$("#showLeftType").html('');//获得选中的节点var checkData = tree.getChecked('demoId');$("#showLeftType").html("");//console.log(checkData.length)// 取消其它选中,只能单选uncheckAllExceptOne()get_tree_id(checkData); },operate: function(obj){var type = obj.type; //得到操作类型:add、edit、delvar data = obj.data; //得到当前节点的数据var elem = obj.elem; //得到当前节点元素//Ajax 操作var id = data.id; //得到节点索引var all_id = data.pid_all.split(","); if(type === 'add'){ //增加节点addType(id,all_id);//返回 key 值return '增加';} else if(type === 'update'){ //修改节点var title = elem.find('.layui-tree-txt').html()$.ajax({type: "post",url: "{:url('classif_add')}",dataType:"json",   //返回格式为jsondata: {id:id,title:title,field:'name',action:'ajax_update'},success: function(data){layer.msg(data.msg);$("#"+id).text(title);},error: function(){layer.msg('更新失败!');}});} else if(type === 'del'){ //删除节点$.ajax({type: "post",url: "{:url('classif_add')}",dataType:"json",   //返回格式为jsondata: {id:id,del_is:1,action:'ajax_del'},success: function(data){layer.msg(data.msg);if(data.code==200){//获得选中的节点var checkData = tree.getChecked('demoId');//清空选中array_ids=[];//重新获取选中idget_tree_id(checkData); //treedata 结构数据,id递归删除对应id,array_ids给默认选中的id加上update_treedata= delete_tree_id(treedata,id,array_ids,"del",0,all_id);//重新渲染组件tree.reload('demoId', {data:update_treedata});//清空$("#showLeftType").html("");//再次获得选中的节点var checkData = tree.getChecked('demoId');//再次清空选中array_ids=[];//再次重新获取选中idget_tree_id(checkData); }},error: function(){layer.msg('更新失败!');}});};}});//取消除了当前选中所有选项function uncheckAllExceptOne(checkboxId) {var checkboxes = document.querySelectorAll('#addLeftType input[type="checkbox"]');for (var i = 0; i < checkboxes.length; i++) {checkboxes[i].checked = false;}}function get_page_data(id){$.ajax({type:'post',url: '{:url('classif_listjson')}',data: {id:id},success:function(response){treedata = response.data;if(response.code!=200){treedata =[{title:response.msg,id:99999999,children:[]}];}tree.reload('demoId', {data:treedata});{notempty name="$rs"}tree.setChecked('demoId', [{$rs['classify1']},{$rs['classify2']}]); //单个勾选 id 为 1 的节点{/notempty}}});};var p_id=0;var add_terr_item_title="未命名";get_page_data({$id});tree.setChecked('demoId', [1, 2]); // 批量勾选 id 为 1,3 的节点//操作节点type:del删除 add 添加function delete_tree_id(data,id,array_ids,type,addid,all_id){ var is_data=data;var one_data=[];var p_spread=true;for(var i=0;i<data.length;i++){if(id==data[i].id&&type=="del"){is_data.splice(i,1);}else if(type=="add"&&(id==data[i].id)){if(is_data[i].children){is_data[i].children.push({id:addid,title:add_terr_item_title,pid_all:all_id.toString()+','+addid});}else{is_data[i].children=[];is_data[i].children.push({id:addid,title:add_terr_item_title,pid_all:all_id.toString()+','+addid});}}for (let index = 0; index < array_ids.length; index++) {var acid = array_ids[index];if(data[i]&&acid==data[i].id){if(is_data[i]){is_data[i].checked=true;}}} //父节点展开if(data[i]&&data[i].id==id){is_data[i].spread=p_spread;//父节点展开}if(all_id){for (let k = 0; k <all_id.length; k++) {const sp_id = all_id[k];if(data[i]&&sp_id==data[i].id){is_data[i].spread=p_spread;//父节点展开}}}if(data[i]&&data[i].children){delete_tree_id(data[i].children,id,array_ids,type,addid,all_id);}}one_data=is_data;return  one_data;}function addType(pid,all_id){var typetitle = $("#typetitle").val();var titleif(pid==p_id||pid==""||pid==0||pid==null||pid==undefined){title = typetitle? typetitle:add_terr_item_title;}else{title=add_terr_item_title;}add_terr_item_title=title;$.ajax({type: "post",url: "{:url('classif_add')}",dataType:"json",   //返回格式为jsondata: {pid:pid,title:title,level_limit:{$level_limit}},success: function(data){layer.msg(data.msg);if(data.code==200){//获得选中的节点var checkData = tree.getChecked('demoId');//清空选中array_ids=[];//重新获取选中idget_tree_id(checkData); //treedata 结构数据,id递归删除对应id,array_ids给默认选中的id加上,all_idupdate_treedata= delete_tree_id(treedata,pid,array_ids,"add",data.add_id,all_id);if((pid==0||pid==null||pid==undefined||pid==""||pid==p_id)){update_treedata.push({id:data.add_id,title:add_terr_item_title,pid_all:p_id.toString()+','+data.add_id});}//重新渲染组件tree.reload('demoId', {data:update_treedata});//清空$("#showLeftType").html("");//再次获得选中的节点var checkData = tree.getChecked('demoId');//再次清空选中array_ids=[];//再次重新获取选中idget_tree_id(checkData); add_terr_item_title="未命名";}else{//重新渲染组件tree.reload('demoId');}},error: function(){layer.msg('更新失败!');}});}$("#addType").click(function(){//更新后台数据addType(p_id,0);})//tree组件 操作 结束

去掉uncheckAllExceptOne()就可以多选了

表单提交的一些判断

/* 监听提交 */form.on('submit(component-form-demo1)', function(data){/* 启动加载... */var indexload = layer.load(1, {shade: [0.1,'#fff'] //0.1透明度的白色背景});// 加入分类var data = JSON.parse(JSON.stringify(data.field));var checkData = tree.getChecked('demoId');if (Object.keys(checkData).length === 0) {layer.close(indexload);/* 关闭加载弹层... */layer.msg('请选择分类');return}var classify1 = checkData[0]['id'];var classify2 =  checkData[0]?.children?.[0]?.id;;data.classify1=classify1;data.classify2=classify2;var addData = JSON.stringify(data);$.ajax({url: "{:url('add')}",type: "post",dataType:"json",   //返回格式为jsondata: {data:addData},success: function(data) {layer.close(indexload);/* 关闭加载弹层... */layer.msg(data['msg']);/* 延迟2秒刷新... */if(data['code']==200){setTimeout(function(){window.location.reload()  },2000)}},error: function() {layer.close(indexload);/* 关闭加载弹层... */layer.msg('{$form_server_error_title}');}});});

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是数据仪表板?数据可视化仪表盘怎么制作?

在数据经济时代&#xff0c;分析数据是每个企业做出最佳决策的关键。但是&#xff0c;手动分析和解释大量数据是不可行的。数据可视化对于分析数据中存在的各种有价值信息至关重要&#xff0c;包括可见趋势和隐藏趋势等。仪表盘显示可视化趋势和信息&#xff0c;例如 KPI、趋势…

npm安装依赖报错ERESOLVE unable to resolve dependency tree(我是在taro项目中)(node、npm 版本问题)

换了电脑之后新电脑安装包出错 &#x1f447;&#x1f447;&#x1f447; npm install 安装包报错 ERESOLVE unable to resolve dependency tree 百度后尝试使用 npm install --force 还是报错 参考 有人说是 node 版本和 npm 版本的问题 参考 新电脑 node版本&#xff1a;16.1…

HackTheBox - Medium - Windows - Aero

Aero 这个机器利用了今年比较新的cve&#xff0c;关于windows11的漏洞&#xff0c;类似于lnk、scf&#xff0c;但这个危害更高&#xff0c;通过易受攻击的windows11 利用theme、msstyles来实现RCE. Aero 是一台中等难度的 Windows 机器&#xff0c;最近有两个 CVE&#xff1a;…

Apache Tomcat httpoxy 安全漏洞 CVE-2016-5388 已亲自复现

Apache Tomcat httpoxy 安全漏洞 CVE-2016-5388 已亲自复现 漏洞名称漏洞描述影响版本 漏洞复现环境搭建漏洞利用修复建议 总结 漏洞名称 漏洞描述 在Apache Tomcat中发现了一个被归类为关键的漏洞&#xff0c;该漏洞在8.5.4(Application Server Soft ware)以下。受影响的是组…

语音识别与人机交互:发展历程、挑战与未来前景

导言 语音识别技术作为人机交互领域的重要组成部分&#xff0c;近年来取得了巨大的发展。本文将深入研究语音识别与人机交互的发展历程、遇到的问题、解决过程、未来的可用范围&#xff0c;以及在各国的应用和未来的研究趋势。我们将探讨在这个领域&#xff0c;哪一方能取得竞争…

comfyUI + animateDiff video2video AI视频生成工作流介绍及实例

原文&#xff1a;comfyUI animateDiff video2video AI视频生成工作流介绍及实例 - 知乎 目录 收起 前言 准备工作环境 comfyUI相关及介绍 comfyUI安装 生成第一个视频 进一步生成更多视频 注意事项 保存为不同的格式 视频宽高设置 种子值设置 提示词与负向提示词…

如何将图片转为PDF

问题描述&#xff1a;如何将图片转为PDF&#xff0c;有时需要将纸质文档扫描成PDF&#xff0c;然后上传到网上。 解决办法&#xff1a;平时使用的方法是将图片插入到word文件中&#xff0c;然后将图片设置为浮于文字下方&#xff0c;然后调整图片的大小&#xff0c;铺满整个wo…

如何进一步优化Ubuntu服务器的性能

导读&#xff1a; 要进一步优化Ubuntu服务器的性能&#xff0c;您可以考虑以下几个方面&#xff1a;优化软件包管理&#xff1a; Ubuntu使用APT&#xff08;Advanced Package Tool&#xff09;作为其软件包管理工具。为了提高性能&#xff0c;您可以采取以下措施 要进一步优化U…

C# Tcplistener,Tcp服务端简易封装

文章目录 前言相关文章前言设计代码简单使用运行结果 前言 我最近有个需求要写Tcp服务端&#xff0c;我发现Tcp服务端的回调函数比较麻烦&#xff0c;简化Tcp的服务&#xff0c;我打算自己封装一个简单的Tcp服务端。 相关文章 C# TCP应用编程三 异步TCP应用编程 C# Tcpclient…

【ArcGIS微课1000例】0081:ArcGIS指北针乱码解决方案

问题描述&#xff1a; ArcGIS软件在作图模式下插入指北针&#xff0c;出现指北针乱码&#xff0c;如下图所示&#xff1a; 问题解决 下载并安装字体&#xff08;配套实验数据包0081.rar中获取&#xff09;即可解决该问题。 正常的指北针选择器&#xff1a; 专栏介绍&#xff…

Python Pandas Excel/csv文件的保存与读取(第14讲)

Python Pandas Excel/csv文件的读取于保存(第14讲)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔…

Redis BitMap(位图)

这里是小咸鱼的技术窝&#xff08;CSDN板块&#xff09;&#xff0c;我又开卷了 之前经手的项目运行了10多年&#xff0c;基于重构&#xff0c;里面有要实现一些诸如签到的需求&#xff0c;以及日历图的展示&#xff0c;可以用将签到信息存到传统的关系型数据库&#xff08;MyS…

2017年第六届数学建模国际赛小美赛A题飓风与全球变暖解题全过程文档及程序

2017年第六届数学建模国际赛小美赛 A题 飓风与全球变暖 原题再现&#xff1a; 飓风&#xff08;也包括在西北太平洋被称为“台风”的风暴以及在印度洋和西南太平洋被称为“严重热带气旋”&#xff09;具有极大的破坏性&#xff0c;往往造成数百人甚至数千人死亡。   许多气…

【Transformer框架代码实现】

Transformer Transformer框架注意力机制框架导入必要的库Input Embedding / Out EmbeddingPositional EmbeddingTransformer EmbeddingScaleDotProductAttention(self-attention)MultiHeadAttention 多头注意力机制EncoderLayer 编码层Encoder多层编码块&#xff0f;前馈网络层…

CentOS安装Python解释,CentOS设置python虚拟环境,linux设置python虚拟环境

一、安装python解释器 1、创建解释器安装的目录&#xff1a;/usr/local/python39 cd /usr/local mkdir python39 2、下载依赖 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel xz-devel …

【蓝桥杯】专题练习

前缀和 3956. 截断数组 - AcWing题库 一看到题目很容易想到的思路是对数组求前缀和&#xff0c;然后枚举两个分段点就好&#xff0c;时间复杂度是On^2&#xff0c;n是1e5会t&#xff0c;需要优化。 朴素的代码&#xff0c;会超时&#xff1a; #include <bits/stdc.h> u…

【小白专用】php pdo sqlsrv 类,php连接sqlserver

1.找到自己版本&#xff0c;我的程序是64位的。 注意&#xff1a;ts与nts的区别&#xff0c;查看phpinfo信息&#xff0c;如下 <?phpecho phpinfo();?> 2.运行后&#xff0c;可以查看到如下数据&#xff1a; ① PHP 的版本是8.2.13&#xff1b; ② 属于线程安全版 ts…

Axure中继器的使用

目录 一. 中继器 概述 作用 运用场景 二. 中继器的使用 三. 三列表格增删改查案例展示 一. 中继器 概述 在Axure软件中&#xff0c;中继器&#xff08;Repeater&#xff09;是一种特殊的控件&#xff0c;它的作用是允许用户创建重复的数据项&#xff0c;并以列表或表格…

Kubernetes 容器编排(6)

企业级镜像仓库Harbor 上传harbor安装包并安装 $ tar xf harbor-offline-installer-v2.5.3.tgz $ cp harbor.yml.tmpl harbor.yml $ vim harbor.yml hostname: 192.168.246.217# http related config http:# port for http, default is 80. If https enabled, this port will…

计算机组成原理第4章-(主存储器)【中】

只读存储器ROM分类 对于只读存储器ROM来说&#xff0c;共有三类&#xff1a;“PROM”、“EPROM”、“EEPROM”。 存储器的扩展【重要】 首先&#xff0c;我们要明白存储器为什么要扩展&#xff1f;&#xff1f; 因为单片存储芯片的容量是有限的&#xff0c;很那满足实际的需…