對(duì)于系統(tǒng)來說,一個(gè)好的角色架構(gòu)是灰常重要的,但是頁面該怎么展示,以及修改配置權(quán)限更方便呢?我個(gè)人覺得應(yīng)該是使用樹形結(jié)構(gòu)來展示我們的角色層疊更貼切,
所以我花了一天的時(shí)候研究了下jquery的ztree是怎么樣玩的(哈哈,因?yàn)閭€(gè)人比較愚鈍,所以花的時(shí)間有點(diǎn)多)
下面先上點(diǎn)效果圖
這樣的做法基本可以管理簡(jiǎn)單的樹形模式,下面我來帖些代碼
- <!DOCTYPE html>
- <HTML>
- <HEAD>
- <TITLE>角色控制面板</TITLE>
- <meta http-equiv="content-type" content="text/html; charset=UTF-8">
- <style type="text/css">
- .ztree li span.button.add {margin-left:2px; margin-right: -1px; background-position:-144px 0; vertical-align:top; *vertical-align:middle}
- </style>
- <link rel="stylesheet" href="/static/plugin/zTree_v3/css/zTreeStyle/zTreeStyle.css" type="text/css">
- <script type="text/javascript" src="/static/plugin/zTree_v3/js/jquery-1.4.4.min.js"></script>
- <script type="text/javascript" src="/static/plugin/zTree_v3/js/jquery.ztree.core-3.5.js"></script>
- <script type="text/javascript" src="/static/plugin/zTree_v3/js/jquery.ztree.excheck-3.5.js"></script>
- <script type="text/javascript" src="/static/plugin/zTree_v3/js/jquery.ztree.exedit-3.5.js"></script>
- <SCRIPT type="text/javascript">
- var setting = {
- view: {
- addHoverDom: addHoverDom,
- removeHoverDom: removeHoverDom,
- selectedMulti: false,
- showIcon: true
- },
- edit: {
- enable: true,
- editNameSelectAll: true,
- showRemoveBtn: showRemoveBtn,
- showRenameBtn: true
- },
- data: {
- simpleData: {
- enable: true
- }
- },
- callback: {
- beforeDrag: beforeDrag,
- beforeEditName: beforeEditName,
- beforeRemove: beforeRemove,
- beforeRename: beforeRename,
- onRemove: onRemove
- }
- };
-
- function beforeDrag(treeId, treeNodes) {
- return false;
- }
-
- function beforeEditName(treeId, treeNode) {
- var zTree = $.fn.zTree.getZTreeObj("treeDemo");
- zTree.selectNode(treeNode);
- if(confirm("是否進(jìn)入簡(jiǎn)單編輯狀態(tài)?")){
- return true;
- }else{
- $("#formRoleId").val(treeNode.id);
- $("#formRoleRsv").val(treeNode.rsv_);
- $("#formRoleName").val(treeNode.name);
- $("#formRoleContent").val(treeNode.content);
- }
- return false;
- }
-
- function beforeRemove(treeId, treeNode) {
- var zTree = $.fn.zTree.getZTreeObj("treeDemo");
- zTree.selectNode(treeNode);
- return confirm("確認(rèn)刪除 [" + treeNode.name + "]?");
- }
-
- function onRemove(e, treeId, treeNode) {
- $.post('/cms/authority/removeById.do', 'id='+treeNode.id+'&rsv_='+treeNode.rsv_, function(result){
- var json = toJson(result);
- if(!json.success){
- alert(json.message);
- }
- });
- }
-
- function beforeRename(treeId, treeNode, newName, isCancel) {
- if (newName.length == 0) {
- alert("內(nèi)容不能為空.");
- var zTree = $.fn.zTree.getZTreeObj("treeDemo");
- setTimeout(function(){zTree.editName(treeNode)}, 10);
- return false;
- }
- if(treeNode.name == newName){
- return true;
- }
- $.post('/cms/authority/modify.do', 'id='+treeNode.id+'&rsv_='+treeNode.rsv_+'&name='+newName, function(result){
- var json = toJson(result);
- if(!json.success){
- alert(json.message);
- return false;
- }
- });
- return true;
- }
-
- function showRemoveBtn(treeId, treeNode) {
- return !treeNode.isParent;
- }
-
- function addHoverDom(treeId, treeNode) {
- var sObj = $("#" + treeNode.tId + "_span");
- if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0) return;
- var addStr = "<span class='button add' id='addBtn_" + treeNode.tId
- + "' title='add' onfocus='this.blur();'></span>";
- sObj.after(addStr);
- var btn = $("#addBtn_"+treeNode.tId);
- if (btn) btn.bind("click", function(){
- var zTree = $.fn.zTree.getZTreeObj("treeDemo");
- var f = confirm("確定要添加新角色?");
- if(!f){
- return false;
- }
- $.post('/cms/authority/save.do', 'parent.id='+treeNode.id+'&name=新角色', function(result){
- var json = toJson(result);
- if(json.success){
- zTree.addNodes(treeNode, toJson(json.value));
- }else{
- alert(json.message);
- }
- });
- return false;
- });
- };
-
- function removeHoverDom(treeId, treeNode) {
- $("#addBtn_"+treeNode.tId).unbind().remove();
- };
-
- function toJson(obj){
- try{
- return eval('('+obj+')');
- }catch(e){
- return [{success:false,message:'請(qǐng)求返回?cái)?shù)據(jù)異常!'}];
- }
- }
-
- $(document).ready(function(){
- $.post('/cms/authority/find4tree.do', '', function(result){
- $.fn.zTree.init($("#treeDemo"), setting, toJson(result));
- });
- });
-
- function submitForm(){
- $.post('/cms/authority/modify.do', $('#submitForm').serialize(), function(result){
- var json = toJson(result);
- if(json.success){
- var zTree = $.fn.zTree.getZTreeObj('treeDemo');
- var newNode = zTree.getNodeByParam("id", $('#formRoleId').val());
- newNode.name = $('#formRoleName').val();
- newNode.content = $('#formRoleContent').val();
- zTree.updateNode(newNode);
- resetForm();
- }
- alert(json.message);
- });
- }
-
- function resetForm(){
- $("#formRoleId").val('');
- $("#formRoleRsv").val('');
- $("#formRoleName").val('');
- $("#formRoleContent").val('');
- }
-
- </SCRIPT>
- </HEAD>
-
- <BODY>
- <h2>角色控制面板</h2>
- <div>
- <ul id="treeDemo" class="ztree"></ul>
- </div>
- <hr />
- <div>
- <h3>修改明細(xì)</h3>
- <form action="#" id="submitForm" method="post">
- <input type="hidden" name="id" id="formRoleId" />
- <input type="hidden" id="formRolePId" />
- <input type="hidden" name="rsv_" id="formRoleRsv" />
- 角色名稱: <input type="text" name="name" id="formRoleName" /><br />
- 角色內(nèi)容: <input type="text" name="content" id="formRoleContent" /><br />
- <input type="button" value="submit" onclick="submitForm();" /> <input type="button" value="reset" onclick="resetForm();" />
- </form>
- </div>
- </BODY>
- </HTML>
幸好ztree的api還是比較不錯(cuò)的,用起來挺順手,除了add節(jié)點(diǎn)那個(gè)事件比較別扭,其他的還算可以,基本看了我上面代碼應(yīng)用的事件,基本的功能點(diǎn)都覆蓋到了,一般的項(xiàng)目也就是用到哪幾個(gè)功能而已,其他訂制的需要自己研究,基本的新增修改流程就是addNodes,updateNode方法
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。