@@ -47,7 +47,8 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'jstree'], function (
4747 { field : 'state' , checkbox : true , } ,
4848 { field : 'id' , title : 'ID' } ,
4949 { field : 'pid' , title : __ ( 'Parent' ) } ,
50- { field : 'name' , title : __ ( 'Name' ) , align : 'left' , formatter :function ( value , row , index ) {
50+ {
51+ field : 'name' , title : __ ( 'Name' ) , align : 'left' , formatter : function ( value , row , index ) {
5152 return value . toString ( ) . replace ( / ( & | & a m p ; ) n b s p ; / g, ' ' ) ;
5253 }
5354 } ,
@@ -79,14 +80,17 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'jstree'], function (
7980 } ,
8081 api : {
8182 bindevent : function ( ) {
83+ var treeview = $ ( "#treeview" ) ;
84+
85+ // 表单提交前设定规则集合
8286 Form . api . bindevent ( $ ( "form[role=form]" ) , null , null , function ( ) {
83- if ( $ ( "# treeview" ) . length > 0 ) {
84- var r = $ ( "# treeview" ) . jstree ( "get_all_checked" ) ;
87+ if ( treeview . length > 0 ) {
88+ var r = treeview . jstree ( "get_all_checked" ) ;
8589 $ ( "input[name='row[rules]']" ) . val ( r . join ( ',' ) ) ;
8690 }
8791 return true ;
8892 } ) ;
89- //渲染权限节点树
93+
9094 //变更级别后需要重建节点树
9195 $ ( document ) . on ( "change" , "select[name='row[pid]']" , function ( ) {
9296 var pid = $ ( this ) . data ( "pid" ) ;
@@ -96,37 +100,21 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'jstree'], function (
96100 Backend . api . toastr . error ( __ ( 'Can not change the parent to self' ) ) ;
97101 return false ;
98102 }
99- $ . ajax ( {
100- url : "auth/group/roletree" ,
101- type : 'post' ,
102- dataType : 'json' ,
103- data : { id : id , pid : $ ( this ) . val ( ) } ,
104- success : function ( ret ) {
105- if ( ret . hasOwnProperty ( "code" ) ) {
106- var data = ret . hasOwnProperty ( "data" ) && ret . data != "" ? ret . data : "" ;
107- if ( ret . code === 1 ) {
108- //销毁已有的节点树
109- $ ( "#treeview" ) . jstree ( "destroy" ) ;
110- Controller . api . rendertree ( data ) ;
111- } else {
112- Backend . api . toastr . error ( ret . msg ) ;
113- }
114- }
115- } , error : function ( e ) {
116- Backend . api . toastr . error ( e . message ) ;
117- }
118- } ) ;
103+ treeview . jstree ( true ) . refresh ( false ) ;
119104 } ) ;
105+
120106 //全选和展开
121107 $ ( document ) . on ( "click" , "#checkall" , function ( ) {
122- $ ( "# treeview" ) . jstree ( $ ( this ) . prop ( "checked" ) ? "check_all" : "uncheck_all" ) ;
108+ treeview . jstree ( $ ( this ) . prop ( "checked" ) ? "check_all" : "uncheck_all" ) ;
123109 } ) ;
124110 $ ( document ) . on ( "click" , "#expandall" , function ( ) {
125- $ ( "# treeview" ) . jstree ( $ ( this ) . prop ( "checked" ) ? "open_all" : "close_all" ) ;
111+ treeview . jstree ( $ ( this ) . prop ( "checked" ) ? "open_all" : "close_all" ) ;
126112 } ) ;
127- $ ( "select[name='row[pid]']" ) . trigger ( "change" ) ;
113+
114+ //首次渲染
115+ Controller . api . rendertree ( ) ;
128116 } ,
129- rendertree : function ( content ) {
117+ rendertree : function ( ) {
130118 $ ( "#treeview" )
131119 . on ( 'redraw.jstree' , function ( e ) {
132120 $ ( ".layer-footer" ) . attr ( "domrefresh" , Math . random ( ) ) ;
@@ -150,7 +138,32 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'jstree'], function (
150138 "plugins" : [ "checkbox" , "types" ] ,
151139 "core" : {
152140 'check_callback' : true ,
153- "data" : content
141+ 'strings' : {
142+ 'Loading ...' : __ ( 'Loading' )
143+ } ,
144+ "data" : function ( obj , callback ) {
145+ var pidObj = $ ( "select[name='row[pid]']" ) ;
146+ $ . ajax ( {
147+ url : "auth/group/roletree" ,
148+ type : 'post' ,
149+ dataType : 'json' ,
150+ data : { id : pidObj . data ( 'id' ) , pid : pidObj . val ( ) } ,
151+ success : function ( ret ) {
152+ if ( ret . hasOwnProperty ( "code" ) ) {
153+ var data = ret . hasOwnProperty ( "data" ) && ret . data != "" ? ret . data : "" ;
154+ if ( ret . code === 1 ) {
155+ callback ( data ) ;
156+ } else {
157+ Backend . api . toastr . error ( ret . msg ) ;
158+ callback ( [ ] ) ;
159+ }
160+ }
161+ } , error : function ( e ) {
162+ Backend . api . toastr . error ( e . message ) ;
163+ callback ( [ ] ) ;
164+ }
165+ } ) ;
166+ }
154167 }
155168 } ) ;
156169 }
0 commit comments