1.添加部门的弹出层
<!-- 添加和修改的弹出层开始 --> <div style="display: none;padding: 5px" id="addOrUpdateDiv"> <form action="" method="post" class="layui-form " id="dataFrm" lay-filter="dataFrm"> <div class="layui-form-item"> <label class="layui-form-label">父级部门</label> <div class="layui-input-block">
<!--隐藏域pid-->
<input type="hidden" name="pid" id="pid"> <ul id="deptTree" class="dtree" data-id="0"></ul> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">部门名称</label> <div class="layui-input-block"> <input type="hidden" name="id"> <input type="text" name="title" lay-verify="required" autocomplete="off" placeholder="请输入部门名称" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">部门地址</label> <div class="layui-input-block"> <input type="text" name="address" lay-verify="required" autocomplete="off" placeholder="请输入部门地址" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">部门备注</label> <div class="layui-input-block"> <textarea class="layui-textarea" name="remark" id="content"></textarea> </div> </div> <div class="layui-form-item"> <div class="layui-inline"> <label class="layui-form-label">是否展开</label> <div class="layui-input-inline"> <input type="radio" name="open" value="1" title="展开" checked=""> <input type="radio" name="open" value="0" title="不展开"> </div> </div> <div class="layui-inline"> <label class="layui-form-label">是否可用</label> <div class="layui-input-inline"> <input type="radio" name="available" value="1" title="可用" checked=""> <input type="radio" name="available" value="0" title="不可用"> </div> </div> <div class="layui-inline"> <label class="layui-form-label">排序码</label> <div class="layui-input-inline"> <input type="text" name="ordernum" id="ordernum" lay-verify="required/number" autocomplete="off" placeholder="请输入排序码[>0]" class="layui-input" > </div> </div> </div> <div class="layui-form-item"> <div class="layui-input-block" style="text-align: center;"> <button type="button" class="layui-btn" lay-submit="" id="doSubmit" ><span class="layui-icon layui-icon-release"></span>提交</button> <button type="reset" class="layui-btn layui-btn-warm"><span class="layui-icon layui-icon-refresh-1"></span>重置</button> </div> </div> </form> </div> <!-- 添加和修改的弹出层结束 -->
2.dtree的样式引入
<link rel="stylesheet" href="/resources/layui_ext/dtree/dtree.css" media="all" /> <link rel="stylesheet" href="/resources/layui_ext/dtree/font/dtreefont.css" media="all" />
3.dtree拓展
layui.extend({ dtree: '/resources/layui_ext/dtree/dtree' // {/}的意思即代表采用自有路径,即不跟随 base 路径 }).use(['jquery','form','table','layer','dtree'],function(){ var $=layui.jquery; var form=layui.form; var table=layui.table; var layer=layui.layer; var dtree=layui.dtree;
4.初始化下拉树
//初始化下拉树
var selectTree=dtree.renderSelect({
elem: "#deptTree",
width: "100%", // 指定树的宽度
dataStyle:"layuiStyle", //使用layui 数据风格的格式
dataFormat: "list", //配置data风格为list
response:{message:"msg",statusCode:0}, //修改response中返回数据的定义
url: "/dept/loadDeptManageLeftTreeJson" // 使用url加载(可与data加载同时存在)
});
5.添加弹窗的提交刷新下拉树以及刷新左侧部门树
//提交
$("#doSubmit").click(function(){
var data=$("#dataFrm").serialize();
$.post(url,data,function(res){
if(res.code==200){
tableIns.reload();
//刷新下拉树
selectTree.reload();
//刷新左侧的树
window.parent.left.deptTree.reload();
}
layer.msg(res.msg);
layer.close(mainIndex);
})
})
controller
package com.zhs.sys.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zhs.sys.common.DataGridView; import com.zhs.sys.common.ResultObj; import com.zhs.sys.common.TreeNode; import com.zhs.sys.domain.Dept; import com.zhs.sys.service.DeptService; import com.zhs.sys.vo.DeptVo; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.*; /** * <p> * 前端控制器 * </p> * * @author ZHS * @since 2020-03-17 */ @RestController @RequestMapping("/dept") public class DeptController { @Autowired private DeptService deptService; /** * 加载部门管理左边的部门树的json */ @RequestMapping("loadDeptManageLeftTreeJson") public DataGridView loadDeptManageLeftTreeJson(DeptVo deptVo){ List<Dept> list = deptService.list(); List<TreeNode> treeNodes = new ArrayList<>(); for (Dept dept : list) { boolean spread = dept.getOpen() == 1 ? true : false; treeNodes.add(new TreeNode(dept.getId(),dept.getPid(),dept.getTitle(),spread)); } return new DataGridView(treeNodes); } /** * 查询 */ @RequestMapping("loadAllDept") public DataGridView loadAllDept(DeptVo deptVo) { IPage<Dept> page=new Page<>(deptVo.getPage(), deptVo.getLimit()); QueryWrapper<Dept> queryWrapper=new QueryWrapper<>(); queryWrapper.like(StringUtils.isNotBlank(deptVo.getTitle()), "title", deptVo.getTitle()); queryWrapper.like(StringUtils.isNotBlank(deptVo.getAddress()), "address", deptVo.getAddress()); queryWrapper.like(StringUtils.isNotBlank(deptVo.getRemark()), "remark", deptVo.getRemark()); //判断条件 queryWrapper.eq(deptVo.getId()!=null, "id", deptVo.getId()).or().eq(deptVo.getId()!=null,"pid", deptVo.getId()); //排序 queryWrapper.orderByAsc("ordernum"); this.deptService.page(page, queryWrapper); return new DataGridView(page.getTotal(), page.getRecords()); } /** * * 加载最大排序码 */ @RequestMapping("loadDeptMaxOrderNum") public Map<String ,Object>loadDeptMaxOrderNum(){ Map<String, Object> map = new HashMap<String, Object>(); QueryWrapper<Dept> queryWrapper = new QueryWrapper<>(); queryWrapper.orderByDesc("ordernum"); List<Dept> list = deptService.list(queryWrapper); if (list.size()>0) { map.put("value",list.get(0).getOrdernum()+1); } else { map.put("value",1); } return map; } /** * 添加部门 * @param deptVo * @return */ @RequestMapping("addDept") public ResultObj addDept(DeptVo deptVo){ try { deptVo.setCreatetime(new Date()); deptService.save(deptVo); return ResultObj.ADD_SUCCESS; } catch (Exception e) { e.printStackTrace(); return ResultObj.ADD_ERROR; } } /** * 修改部门 * @param deptVo * @return */ @RequestMapping("updateDept") public ResultObj updateDept(DeptVo deptVo){ try { deptService.updateById(deptVo); return ResultObj.UPDATE_SUCCESS; } catch (Exception e) { e.printStackTrace(); return ResultObj.UPDATE_ERROR; } } }
修改页面的选中父级树节点
//打开修改的弹出层
function openUpdateDeptLayer(data){
mainIndex=layer.open({
type:1,
content:$("#addOrUpdateDiv"),
area:['800px','480px'],
title:'修改部门',
success:function(){
$("#dataFrm")[0].reset();
//装载新的数据
form.val("dataFrm",data);
//选中之前的父级部门 nodeId=data.pid
dtree.dataInit("deptTree",data.pid);
dtree.setSelectValue("deptTree");
url="/dept/updateDept";
}
});
}