TreePanel.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. Ext.define('saas.view.sys.power.TreePanel', {
  2. extend: 'Ext.tree.Panel',
  3. xtype: 'sys-power-treepanel',
  4. dataUrl:'/api/account/role/list',
  5. deleteUrl:'/api/account/role/delete/',
  6. focusable:false,
  7. initComponent: function () {
  8. var me = this;
  9. me.store = Ext.create('Ext.data.TreeStore', {
  10. fields : ['name', 'id', 'description','code'],
  11. autoLoad:false,
  12. root : {
  13. text : 'Root',
  14. id : 0,
  15. expanded : true
  16. }
  17. }),
  18. me.columns =[{
  19. xtype: 'treecolumn',
  20. dataIndex: 'text',
  21. flex: 1
  22. }, {
  23. xtype: 'actioncolumn',
  24. width: 28,
  25. iconCls: 'x-hidden icon x-fa fa-plus',
  26. getClass: function(v, meta, rec) {
  27. if(rec.get('code')=='ROLE_ADMIN'){
  28. return 'x-hidden icon x-fa fa-key';
  29. }else if(rec.get('leaf')){
  30. return 'x-hidden icon x-fa fa-pencil';
  31. }else{
  32. return 'x-hidden icon x-fa fa-plus';
  33. }
  34. },
  35. handler: function(treeview, rowIdx, colIdx, e) {
  36. var record = treeview.store.data.getAt(rowIdx);
  37. me.addItem(record);
  38. }
  39. }, {
  40. xtype: 'actioncolumn',
  41. width: 36,
  42. iconCls: 'x-hidden icon x-fa fa-trash-o',
  43. getClass: function(v, meta, rec) {
  44. if(rec.get('code')=='ROLE_ADMIN'){
  45. return '';
  46. }else if(rec.get('leaf')){
  47. return 'x-hidden icon x-fa fa-trash-o';
  48. }else {
  49. return '';
  50. }
  51. },
  52. handler: function(treeview, rowIdx, colIdx, e) {
  53. var record = treeview.store.data.getAt(rowIdx);
  54. me.deleteItem(record);
  55. }
  56. }];
  57. me.setTree();
  58. me.callParent(arguments);
  59. },
  60. listeners: {
  61. itemmouseenter: function(th, record, item, index, e, eOpts) {
  62. var imgs = item.getElementsByClassName('icon x-fa');
  63. Ext.Array.each(imgs, function(img) {
  64. img.classList.remove('x-hidden');
  65. });
  66. },
  67. itemmouseleave: function(th, record, item, index, e, eOpts) {
  68. var imgs = item.getElementsByClassName('icon x-fa');
  69. Ext.Array.each(imgs, function(img) {
  70. img.classList.add('x-hidden');
  71. });
  72. },
  73. itemclick:function(view,record,index,d,e){
  74. if(!record.get('leaf')){
  75. return;
  76. }
  77. var classList = e.target.classList;
  78. var clickIcon = false;
  79. Ext.Array.each(classList, function(item) {
  80. if(item.indexOf('x-action-col')>-1){
  81. clickIcon = true;
  82. }
  83. });
  84. if(clickIcon){return;}
  85. //加载右边的grid
  86. var id = record.get('id');
  87. if(id&&id!=0){
  88. var grid = view.ownerCt.ownerCt.query('power-grid')[0];
  89. grid.initId = id;
  90. grid.store.load();
  91. }
  92. }
  93. },
  94. getData:function(){
  95. var me = this;
  96. var data = [];
  97. Ext.Ajax.request({
  98. url: me.dataUrl,
  99. params: '',
  100. method: 'GET',
  101. async:false,
  102. success: function(response, opts) {
  103. var _data = Ext.decode(response.responseText);
  104. if(_data&&_data.data){
  105. _data = _data.data;
  106. for (let index = 0; index < _data.length; index++) {
  107. var o = {
  108. code:_data[index].code,
  109. id: _data[index].id,
  110. text: _data[index].name,
  111. name:_data[index].name,
  112. description:_data[index].description,
  113. leaf:true,
  114. iconCls: 'x-fa fa-user',
  115. }
  116. data.push(o);
  117. }
  118. }
  119. },
  120. failure: function(response, opts) {}
  121. });
  122. return data;
  123. },
  124. setTree:function(){
  125. var me = this;
  126. var data = me.getData();
  127. me.getStore().setRootNode({
  128. text: '角色列表',
  129. id: '0',
  130. iconCls: 'x-fa fa-list',
  131. expanded: true,
  132. children: data
  133. });
  134. },
  135. addItem:function(rec){
  136. var me=this;
  137. var isleaf = rec.get('leaf');
  138. var record = isleaf?rec:null;
  139. var view = this.ownerCt.getController().getView();
  140. this.dialog = view.add({
  141. xtype: 'sys-power-window',
  142. bind: {
  143. title: (record?'修改':'新增')+'角色'
  144. },
  145. _parent:this,
  146. record:record,
  147. session: true,
  148. });
  149. this.dialog.show();
  150. },
  151. deleteItem:function(rec){
  152. if(rec&&(rec.get('code')=='ROLE_ADMIN'||!rec.get('leaf'))){
  153. return;
  154. }
  155. var me = this;
  156. saas.util.BaseUtil.deleteWarn('确定要删除该角色?',function(btn){
  157. if(btn == 'yes'){
  158. me.setLoading(true);
  159. saas.util.BaseUtil.request({
  160. url: me.deleteUrl + rec.get('id'),
  161. params: '',
  162. method: 'POST'
  163. })
  164. .then(function(localJson) {
  165. me.setLoading(false);
  166. if(localJson.success){
  167. saas.util.BaseUtil.showSuccessToast('删除成功');
  168. me.setTree();
  169. }
  170. })
  171. .catch(function(res) {
  172. me.setLoading(false);
  173. console.error(res);
  174. saas.util.BaseUtil.showErrorToast('删除失败: ' + res.message);
  175. });
  176. }
  177. });
  178. }
  179. });