TreePanel.js 7.4 KB

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