這里定義資源,是包括頁面鏈接和頁面上的各個功能按鈕,因為web系統都是以http請求作為資源的。所以SysResource里面有一個資源類型字段,1模塊,2操作。這樣就可以全部控制系統的所有請求。
資源管理界面不同于用戶管理界面,是一個樹狀形式展示的列表,如下圖所示:
資源管理圖.png
1、TreeTable
引用對應的js和css
引用對應的js和css.png
生成treetable列表的java代碼
/**
* 模塊列表,遞歸生成,用于顯示treeGrid
*
* @return
*/
public List<SysResource> list() {
List<SysResource> list = sysResourceDao.listByType(1);//獲取所有模塊
List<SysResource> listRet = new ArrayList<>();
listRet = createModuleList(list, listRet, 1);
return listRet;
}
private List<SysResource> createModuleList(List<SysResource> list, List<SysResource> listRet, int parentId) {
for (SysResource sysModule : list) {
if (sysModule.getParentId() == parentId) {
listRet.add(sysModule);
if (sysModule.getCnt() > 0) {
listRet = createModuleList(list, listRet, sysModule.getId());
}
}
}
return listRet;
}
這一塊要用到遞歸,逐層列出來,比較簡單。
頁面部分生成treeTable
$("#treeTable").treeTable({
expandLevel : 3
});
頁面加載完直接調用上述方法即可。
2、新增或修改界面,選擇模塊的上級節點
在新增和修改模塊界面,需要選擇上級節點,這里就點擊選擇按鈕,彈出對話框,對話框里是模塊樹,選擇對應的節點即可,如下圖所示:
選擇模塊的上級節點.png
引用對應的js和css
選擇Ztree.png
這里用的是Ztree,并加入了BootStrap的樣式。
Ztree初始化的js代碼
var zTree;
var setting = {
data: {
simpleData: {
enable: true,
idKey: "id",
pIdKey: "pId",
rootPId: ""
}
}
};
var zNodes = [${ztree}];
jQuery(document).ready(function () {
var t = $("#tree");
t = $.fn.zTree.init(t, setting, zNodes);
var zTree = $.fn.zTree.getZTreeObj("tree");
});
function getSelected() {
var treeObj = $.fn.zTree.getZTreeObj("tree");
var nodes = treeObj.getSelectedNodes();
if (nodes.length > 0) {
$("#parentId").val(nodes[0].id);
$("#parentName").val(nodes[0].name);
$('#basic').modal('hide');
}
else return;
}
這里面并不復雜,需要從controller里面獲取Ztree對應數據${ztree}
生成Ztree數據的java代碼
/**
* 生成Ztree的樹節點,新增模塊時使用,只有模塊上下級
*
* @return
*/
public String createZtreeByModule() {
List<SysResource> listModule = sysResourceDao.listByType(1);// 模塊列表
StringBuilder sb = new StringBuilder();
for (SysResource sysModule : listModule) {
if (sysModule.getParentId() != 0) {
sb.append("{id : \"" + sysModule.getId() + "\",pId :\"" + sysModule.getParentId() + "\",name :\"" + sysModule.getName() + "\",open : false");
sb.append("},");
}
}
return StringUtil.subTract(sb.toString());
}