index.html 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432
  1. <title>树形组件</title>
  2. <div class="layui-card layadmin-header">
  3. <div class="layui-breadcrumb" lay-filter="breadcrumb">
  4. <a lay-href="">主页</a>
  5. <a><cite>组件</cite></a>
  6. <a><cite>树形组件</cite></a>
  7. </div>
  8. </div>
  9. <div class="layui-fluid">
  10. <div class="layui-row layui-col-space15">
  11. <div class="layui-col-md12">
  12. <div class="layui-card">
  13. <div class="layui-card-header">基本演示</div>
  14. <div class="layui-card-body">
  15. <div class="layui-btn-container">
  16. <button type="button" class="layui-btn layui-btn-sm" lay-demo="getChecked">获取选中节点数据</button>
  17. <button type="button" class="layui-btn layui-btn-sm" lay-demo="setChecked">勾选指定节点</button>
  18. <button type="button" class="layui-btn layui-btn-sm" lay-demo="reload">重载实例</button>
  19. </div>
  20. <div id="test-tree-demo1"></div>
  21. </div>
  22. </div>
  23. <div class="layui-card">
  24. <div class="layui-card-header">常规用法</div>
  25. <div class="layui-card-body">
  26. <div id="test-tree-demo2"></div>
  27. </div>
  28. </div>
  29. <div class="layui-card">
  30. <div class="layui-card-header">无连接线风格</div>
  31. <div class="layui-card-body">
  32. <div id="test-tree-demo3"></div>
  33. </div>
  34. </div>
  35. <div class="layui-card">
  36. <div class="layui-card-header">仅节点左侧图标控制收缩</div>
  37. <div class="layui-card-body">
  38. <div id="test-tree-demo4"></div>
  39. </div>
  40. </div>
  41. <div class="layui-card">
  42. <div class="layui-card-header">手风琴模式</div>
  43. <div class="layui-card-body">
  44. <div id="test-tree-demo5"></div>
  45. </div>
  46. </div>
  47. <div class="layui-card">
  48. <div class="layui-card-header">点击节点新窗口跳转</div>
  49. <div class="layui-card-body">
  50. <div id="test-tree-demo6"></div>
  51. </div>
  52. </div>
  53. <div class="layui-card">
  54. <div class="layui-card-header">开启复选框</div>
  55. <div class="layui-card-body">
  56. <div id="test-tree-demo7"></div>
  57. </div>
  58. </div>
  59. <div class="layui-card">
  60. <div class="layui-card-header">开启节点操作图标</div>
  61. <div class="layui-card-body">
  62. <div id="test-tree-demo8"></div>
  63. </div>
  64. </div>
  65. </div>
  66. </div>
  67. </div>
  68. <script>
  69. layui.use(['admin', 'tree', 'util'], function(){
  70. var tree = layui.tree
  71. ,layer = layui.layer
  72. ,util = layui.util
  73. //模拟数据
  74. ,data = [{
  75. title: '一级1'
  76. ,id: 1
  77. ,field: 'name1'
  78. ,checked: true
  79. ,spread: true
  80. ,children: [{
  81. title: '二级1-1 可允许跳转'
  82. ,id: 3
  83. ,field: 'name11'
  84. ,href: 'https://www.layui.com/'
  85. ,children: [{
  86. title: '三级1-1-3'
  87. ,id: 23
  88. ,field: ''
  89. ,children: [{
  90. title: '四级1-1-3-1'
  91. ,id: 24
  92. ,field: ''
  93. ,children: [{
  94. title: '五级1-1-3-1-1'
  95. ,id: 30
  96. ,field: ''
  97. },{
  98. title: '五级1-1-3-1-2'
  99. ,id: 31
  100. ,field: ''
  101. }]
  102. }]
  103. },{
  104. title: '三级1-1-1'
  105. ,id: 7
  106. ,field: ''
  107. ,children: [{
  108. title: '四级1-1-1-1 可允许跳转'
  109. ,id: 15
  110. ,field: ''
  111. ,href: 'https://www.layui.com/doc/'
  112. }]
  113. },{
  114. title: '三级1-1-2'
  115. ,id: 8
  116. ,field: ''
  117. ,children: [{
  118. title: '四级1-1-2-1'
  119. ,id: 32
  120. ,field: ''
  121. }]
  122. }]
  123. },{
  124. title: '二级1-2'
  125. ,id: 4
  126. ,spread: true
  127. ,children: [{
  128. title: '三级1-2-1'
  129. ,id: 9
  130. ,field: ''
  131. ,disabled: true
  132. },{
  133. title: '三级1-2-2'
  134. ,id: 10
  135. ,field: ''
  136. }]
  137. },{
  138. title: '二级1-3'
  139. ,id: 20
  140. ,field: ''
  141. ,children: [{
  142. title: '三级1-3-1'
  143. ,id: 21
  144. ,field: ''
  145. },{
  146. title: '三级1-3-2'
  147. ,id: 22
  148. ,field: ''
  149. }]
  150. }]
  151. },{
  152. title: '一级2'
  153. ,id: 2
  154. ,field: ''
  155. ,spread: true
  156. ,children: [{
  157. title: '二级2-1'
  158. ,id: 5
  159. ,field: ''
  160. ,spread: true
  161. ,children: [{
  162. title: '三级2-1-1'
  163. ,id: 11
  164. ,field: ''
  165. },{
  166. title: '三级2-1-2'
  167. ,id: 12
  168. ,field: ''
  169. }]
  170. },{
  171. title: '二级2-2'
  172. ,id: 6
  173. ,field: ''
  174. ,children: [{
  175. title: '三级2-2-1'
  176. ,id: 13
  177. ,field: ''
  178. },{
  179. title: '三级2-2-2'
  180. ,id: 14
  181. ,field: ''
  182. ,disabled: true
  183. }]
  184. }]
  185. },{
  186. title: '一级3'
  187. ,id: 16
  188. ,field: ''
  189. ,children: [{
  190. title: '二级3-1'
  191. ,id: 17
  192. ,field: ''
  193. ,fixed: true
  194. ,children: [{
  195. title: '三级3-1-1'
  196. ,id: 18
  197. ,field: ''
  198. },{
  199. title: '三级3-1-2'
  200. ,id: 19
  201. ,field: ''
  202. }]
  203. },{
  204. title: '二级3-2'
  205. ,id: 27
  206. ,field: ''
  207. ,children: [{
  208. title: '三级3-2-1'
  209. ,id: 28
  210. ,field: ''
  211. },{
  212. title: '三级3-2-2'
  213. ,id: 29
  214. ,field: ''
  215. }]
  216. }]
  217. }]
  218. //模拟数据1
  219. ,data1 = [{
  220. title: '江西'
  221. ,id: 1
  222. ,children: [{
  223. title: '南昌'
  224. ,id: 1000
  225. ,children: [{
  226. title: '青山湖区'
  227. ,id: 10001
  228. },{
  229. title: '高新区'
  230. ,id: 10002
  231. }]
  232. },{
  233. title: '九江'
  234. ,id: 1001
  235. },{
  236. title: '赣州'
  237. ,id: 1002
  238. }]
  239. },{
  240. title: '广西'
  241. ,id: 2
  242. ,children: [{
  243. title: '南宁'
  244. ,id: 2000
  245. },{
  246. title: '桂林'
  247. ,id: 2001
  248. }]
  249. },{
  250. title: '陕西'
  251. ,id: 3
  252. ,children: [{
  253. title: '西安'
  254. ,id: 3000
  255. },{
  256. title: '延安'
  257. ,id: 3001
  258. }]
  259. }]
  260. //模拟数据2
  261. ,data2 = [{
  262. title: '早餐'
  263. ,id: 1
  264. ,children: [{
  265. title: '油条'
  266. ,id: 5
  267. },{
  268. title: '包子'
  269. ,id: 6
  270. },{
  271. title: '豆浆'
  272. ,id: 7
  273. }]
  274. },{
  275. title: '午餐'
  276. ,id: 2
  277. ,checked: true
  278. ,children: [{
  279. title: '藜蒿炒腊肉'
  280. ,id: 8
  281. },{
  282. title: '西湖醋鱼'
  283. ,id: 9
  284. },{
  285. title: '小白菜'
  286. ,id: 10
  287. },{
  288. title: '海带排骨汤'
  289. ,id: 11
  290. }]
  291. },{
  292. title: '晚餐'
  293. ,id: 3
  294. ,children: [{
  295. title: '红烧肉'
  296. ,id: 12
  297. ,fixed: true
  298. },{
  299. title: '番茄炒蛋'
  300. ,id: 13
  301. }]
  302. },{
  303. title: '夜宵'
  304. ,id: 4
  305. ,children: [{
  306. title: '小龙虾'
  307. ,id: 14
  308. ,checked: true
  309. },{
  310. title: '香辣蟹'
  311. ,id: 15
  312. ,disabled: true
  313. },{
  314. title: '烤鱿鱼'
  315. ,id: 16
  316. }]
  317. }];
  318. //基本演示
  319. tree.render({
  320. elem: '#test-tree-demo1'
  321. ,data: data
  322. ,showCheckbox: true //是否显示复选框
  323. ,id: 'test-tree-demoId1'
  324. ,isJump: true //是否允许点击节点时弹出新窗口跳转
  325. ,click: function(obj){
  326. var data = obj.data; //获取当前点击的节点数据
  327. layer.msg('状态:'+ obj.state + '<br>节点数据:' + JSON.stringify(data));
  328. }
  329. });
  330. //按钮事件
  331. util.event('lay-demo', {
  332. getChecked: function(othis){
  333. var checkedData = tree.getChecked('test-tree-demoId1'); //获取选中节点的数据
  334. layer.alert(JSON.stringify(checkedData), {shade:0});
  335. console.log(checkedData);
  336. }
  337. ,setChecked: function(){
  338. tree.setChecked('test-tree-demoId1', [12, 16]); //勾选指定节点
  339. }
  340. ,reload: function(){
  341. //重载实例
  342. tree.reload('test-tree-demoId1', {
  343. });
  344. }
  345. });
  346. //常规用法
  347. tree.render({
  348. elem: '#test-tree-demo2' //默认是点击节点可进行收缩
  349. ,data: data1
  350. });
  351. //无连接线风格
  352. tree.render({
  353. elem: '#test-tree-demo3'
  354. ,data: data1
  355. ,showLine: false //是否开启连接线
  356. });
  357. //仅节点左侧图标控制收缩
  358. tree.render({
  359. elem: '#test-tree-demo4'
  360. ,data: data1
  361. ,onlyIconControl: true //是否仅允许节点左侧图标控制展开收缩
  362. ,click: function(obj){
  363. layer.msg(JSON.stringify(obj.data));
  364. }
  365. });
  366. //手风琴模式
  367. tree.render({
  368. elem: '#test-tree-demo5'
  369. ,data: [{
  370. title: '优秀'
  371. ,children: [{
  372. title: '80 ~ 90'
  373. },{
  374. title: '90 ~ 100'
  375. }]
  376. },{
  377. title: '良好'
  378. ,children: [{
  379. title: '70 ~ 80'
  380. },{
  381. title: '60 ~ 70'
  382. }]
  383. },{
  384. title: '要努力奥'
  385. ,children: [{
  386. title: '0 ~ 60'
  387. }]
  388. }]
  389. ,accordion: true
  390. });
  391. //点击节点新窗口跳转
  392. tree.render({
  393. elem: '#test-tree-demo6'
  394. ,data: data
  395. ,isJump: true //link 为参数匹配
  396. });
  397. //开启复选框
  398. tree.render({
  399. elem: '#test-tree-demo7'
  400. ,data: data2
  401. ,showCheckbox: true
  402. });
  403. //开启节点操作图标
  404. tree.render({
  405. elem: '#test-tree-demo8'
  406. ,data: data1
  407. ,edit: ['add', 'update', 'del'] //操作节点的图标
  408. ,click: function(obj){
  409. layer.msg(JSON.stringify(obj.data));
  410. }
  411. });
  412. });
  413. </script>