service.java
public List<Menu> listAllMenuPage(PageData pd) throws Exception{
List<Menu> NewList = new ArrayList<Menu>();
Integer page = Integer.parseInt((String) pd.get("page"));
Integer rows = Integer.parseInt((String) pd.get("limit"));
if(StringUtils.isBlank(pd.getString("page"))){
page = 1;
}
if(StringUtils.isBlank(pd.getString("limit"))){
rows = 10;
}
Integer nowpage = (page - 1) * rows;
PageData pdResult = new PageData();
pdResult.put("erows", rows);
pdResult.put("ebeginIndex",nowpage);
List<Menu> Plist= (List<Menu>) dao.findForList("com.ctvit.mapper.MenuMapper.findMenuPagelist", pdResult);
for(int i=0;i<Plist.size();i++){
Menu childmenu=Plist.get(i);
int childnenuid=childmenu.getMenuId();
PageData pad=new PageData();
pad.put("parentId", childnenuid);
List<Menu> Sublist= (List<Menu>) dao.findForList("com.ctvit.mapper.MenuMapper.findMenuchildByParentid", pad);
childmenu.setSubMenu(Sublist);
NewList.add(childmenu);
}
return NewList;
}
Html
<script>
layui.use(['form'], function(){
form = layui.form;
});
layui.use(['laypage'], function () {
var laypage = layui.laypage
, layer = layui.layer;
var epage = 1;
var epagesize=3;
$.ajax({
url: '[[${springMacroRequestContext.contextPath}]]/MenuManage/listmenu.do',
type: 'post',
dataType: 'json',
async: false,
data: {page: epage, limit: epagesize},
success: function (rs) {
setHtml(rs);
pages(rs.total);
}
})
function setHtml(rs){
console.log(rs);
var row = rs.rows;
var total = rs.total;
console.log(rs);
var html = "";
for (var i = 0; i < row.length; i++) {
html += ' <tr cate-id=' + row[i].menuId + ' fid=0 >' +
'<td><input type="checkbox" name="" lay-skin="primary"> </td><td>' + row[i].menuId + '</td><td><i class="layui-icon x-show" status="true"></i>' + row[i].menuName +
'</td> <td>' + row[i].menuUrl +
'</td><td>' + row[i].sort + '</td>'
+ ' <td class="td-manage"><button class="layui-btn layui-btn layui-btn-xs" onclick="xadmin.open(\'编辑\',\'menu-edit.html?menuId=' + row[i].menuId + '\')" ><i class="layui-icon"></i>编辑</button>'
+ ' <button class="layui-btn layui-btn-warm layui-btn-xs" onclick="xadmin.open(\'添加子菜单\',\'/api/MenuManage/menu-edit.html\')" ><i class="layui-icon"></i>添加子栏目</button>'
+ '<button class="layui-btn-danger layui-btn layui-btn-xs" onclick="delmenu(this,' + row[i].menuId + ')" href="javascript:;" ><i class="layui-icon"></i>删除</button></td></tr>'
var submenu = row[i].subMenu;
if (submenu.length > 0) {
for (var j = 0; j < submenu.length; j++) {
html += '<tr cate-id=' + submenu[j].menuId + ' fid=' + submenu[j].parentId +
' ><td><input type="checkbox" name="" lay-skin="primary"></td><td>' + submenu[j].menuId +
'</td> <td> ├' + submenu[j].menuName +
'</td> <td>' + submenu[j].menuUrl +
'</td><td>' + submenu[j].sort + '</td><td class="td-manage">'
+ ' <button class="layui-btn layui-btn layui-btn-xs" onclick="xadmin.open(\'编辑\',\'menu-edit.html?menuId=' + submenu[j].menuId + '\')" ><i class="layui-icon"></i>编辑</button>'
+ ' <button class="layui-btn-danger layui-btn layui-btn-xs" onclick="delmenu(this,' + submenu[j].menuId + ')" href="javascript:;" ><i class="layui-icon"></i>删除</button>'
+ ' </td> </tr>'
}
}
}
$(".x-cate").html(html);
shou()
}
//--------------------------------分页组件渲染
function pages(count) {
laypage.render({
elem: 'demo7'
, count: count
, theme: '#009688'
//, layout: ['prev', 'page', 'next']
,layout: ['count', 'prev', 'page', 'next', 'limit', 'refresh', 'skip']
, limit:epagesize
, limits:[5,10,15]
, jump: function (obj, first) {
if (!first) {
$.post('[[${springMacroRequestContext.contextPath}]]/MenuManage/listmenu.do'
, { page: obj.curr, limit: obj.limit}
, function (result) {
//res = result.data;
setHtml(result);
});
}
}
})
}
} //yuanlaiend
)
//列表结束处理
// 分类展开收起的分类的逻辑
function shou() {
$("tbody.x-cate tr[fid!='0']").hide();
// 栏目多级显示效果
$('.x-show').click(function () {
if ($(this).attr('status') == 'true') {
$(this).html('');
$(this).attr('status', 'false');
cateId = $(this).parents('tr').attr('cate-id');
$("tbody tr[fid=" + cateId + "]").show();
} else {
cateIds = [];
$(this).html('');
$(this).attr('status', 'true');
cateId = $(this).parents('tr').attr('cate-id');
getCateId(cateId);
for (var i in cateIds) {
$("tbody tr[cate-id=" + cateIds[i] + "]").hide().find('.x-show').html('').attr('status', 'true');
}
}
})
}
var cateIds = [];
function getCateId(cateId) {
$("tbody tr[fid="+cateId+"]").each(function(index, el) {
id = $(el).attr('cate-id');
cateIds.push(id);
getCateId(id);
});
}
</script>
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 自定义通信协议——实现零拷贝文件传输
· Brainfly: 用 C# 类型系统构建 Brainfuck 编译器
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· DeepSeek 全面指南,95% 的人都不知道的9个技巧(建议收藏)
· 自定义Ollama安装路径
· 本地部署DeepSeek
· 快速入门 DeepSeek-R1 大模型
· DeepSeekV3+Roo Code,智能编码好助手