当前位置:   article > 正文

若依ztree树表实现_若依树表实现

若依树表实现

API Document [zTree -- jQuery tree plug-ins.]

以上是tree结构的推荐学习网站

问题的起源是当时刚接需求的时候需要实现树表,在初次接触时确实出现了一些问题,用了些时间才弄出来, 不是驴不走就是磨不转,所以分享一下经验

树表后台就层级返回封装好的层级集合就行,一般多为三层结构,返回格式json串,定义请求节点如:

  1. public class Ztree implements Serializable

这里挑重点来展示一下代码,需要注意的是如果数据量太大的情况下,可能会有错误,所以在做树的时候数据量需要结合实际情况去做判断

  1. /**
  2. * 查询部门管理树(排除下级)
  3. *
  4. * @param dept 部门
  5. * @return 所有部门信息
  6. */
  7. @Override
  8. @DataScope(deptAlias = "d")
  9. public List<Ztree> selectDeptTreeExcludeChild(SysDept dept)
  10. {
  11. Long deptId = dept.getDeptId();
  12. List<SysDept> deptList = deptMapper.selectDeptList(dept);
  13. Iterator<SysDept> it = deptList.iterator();
  14. while (it.hasNext())
  15. {
  16. SysDept d = (SysDept) it.next();
  17. if (d.getDeptId().intValue() == deptId
  18. || ArrayUtils.contains(StringUtils.split(d.getAncestors(), ","), deptId + ""))
  19. {
  20. it.remove();
  21. }
  22. }
  23. List<Ztree> ztrees = initZtree(deptList);
  24. return ztrees;
  25. }
  1. /**
  2. * 对象转部门树
  3. *
  4. * @param deptList 部门列表
  5. * @return 树结构列表
  6. */
  7. public List<Ztree> initZtree(List<SysDept> deptList)
  8. {
  9. return initZtree(deptList, null);
  10. }

这里需要设置你需要的节点去请求数据库得到相应的数据

  1. /**
  2. * 对象转部门树
  3. *
  4. * @param deptList 部门列表
  5. * @param roleDeptList 角色已存在菜单列表
  6. * @return 树结构列表
  7. */
  8. public List<Ztree> initZtree(List<SysDept> deptList, List<String> roleDeptList)
  9. {
  10. List<Ztree> ztrees = new ArrayList<Ztree>();
  11. boolean isCheck = StringUtils.isNotNull(roleDeptList);
  12. for (SysDept dept : deptList)
  13. {
  14. if (UserConstants.DEPT_NORMAL.equals(dept.getStatus()))
  15. {
  16. Ztree ztree = new Ztree();
  17. ztree.setId(dept.getDeptId());
  18. ztree.setpId(dept.getParentId());
  19. ztree.setName(dept.getDeptName());
  20. ztree.setTitle(dept.getDeptName());
  21. //自定义判断是否是用户
  22. if (!StringUtils.isNotNull(dept.getAncestors()) || "".equals(dept.getAncestors())){
  23. ztree.setUser(true);
  24. }
  25. if (isCheck)
  26. {
  27. ztree.setChecked(roleDeptList.contains(dept.getDeptId() + dept.getDeptName()));
  28. }
  29. ztrees.add(ztree);
  30. }
  31. }
  32. return ztrees;
  33. }

前端主要是引包和节点控制

样式引包

  1. <th:block th:include="include :: layout-latest-css"/>
  2. <th:block th:include="include :: ztree-css"/>

js里需要引的包

  1. <th:block th:include="include :: layout-latest-js"/>
  2. <th:block th:include="include :: ztree-js"/>

首先先得有树请求去请求数据形成树结构,后台定义的节点请求参数

这里边就只有一个重要的就是treeNode.id是后端定义的一个请求参数,至于其他的都是点击之后节点的显示和隐藏
  1. function queryDeptTree() {
  2. var url = ctx + "system/dept/treeData";
  3. var options = {
  4. url: url,
  5. expandLevel: 1,
  6. onClick: zOnClick
  7. };
  8. $.tree.init(options);
  9. function zOnClick(event, treeId, treeNode) {
  10. $("#deptId").val(treeNode.id);
  11. $("#parentId").val(treeNode.pId);
  12. $.table.search();
  13. }
  14. }
  15. $('#btnExpand').click(function () {
  16. $._tree.expandAll(true);
  17. $(this).hide();
  18. $('#btnCollapse').show();
  19. });
  20. $('#btnCollapse').click(function () {
  21. $._tree.expandAll(false);
  22. $(this).hide();
  23. $('#btnExpand').show();
  24. });
  25. $('#btnRefresh').click(function () {
  26. queryDeptTree();
  27. });

当你做完以上的事情 需要你在列表中进行放置这棵树,定义一个默认方法把以上

  1. var panehHidden = false;
  2. if ($(this).width() < 769) {
  3. panehHidden = true;
  4. }
  5. $('body').layout({initClosed: panehHidden, west__size: 185});
  6. // 回到顶部绑定
  7. if ($.fn.toTop !== undefined) {
  8. var opt = {
  9. win: $('.ui-layout-center'),
  10. doc: $('.ui-layout-center')
  11. };
  12. $('#scroll-up').toTop(opt);
  13. }
  14. queryDeptTree();

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/322350
推荐阅读
相关标签
  

闽ICP备14008679号