UserSetting.js 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. Ext.define('erp.view.user.UserSetting',{
  2. extend:'Ext.window.Window',
  3. alias:'widget.usersetting',
  4. id:'usersetting',
  5. title:'用户设置',
  6. layout:'border',
  7. width:'60%',
  8. height:'75%',
  9. modal:true ,
  10. maximizable:true,
  11. initComponent:function(){
  12. var me = this;
  13. me.items = [{
  14. xtype:'grid',
  15. id:'userSettingGrid',
  16. region:'center',
  17. flex:1,
  18. columns:[{
  19. header:'用户名',
  20. dataIndex:'name',
  21. width:120,
  22. editor:{
  23. xtype:'textfield'
  24. }
  25. },{
  26. header:'密码',
  27. dataIndex:'password',
  28. width:150,
  29. flex:1,
  30. editor:{
  31. xtype:'textfield'
  32. }
  33. },{
  34. header:'类型',
  35. dataIndex:'role',
  36. width:100,
  37. renderer:function(val){
  38. if(val=='Default'){
  39. return '普通用户';
  40. }else if(val=='Admin'){
  41. return '<font color="red">管理员</font>';
  42. }
  43. return val;
  44. },
  45. editor:{
  46. xtype:'combo',
  47. editable:false,
  48. store:Ext.create('Ext.data.Store',{
  49. fields:['name','value'],
  50. data:[{
  51. name:'普通用户',
  52. value:'Default'
  53. },{
  54. name:'管理员',
  55. value:'Admin'
  56. }]
  57. }),
  58. valueField:'value',
  59. displayField:'name',
  60. queryMode:'local',
  61. }
  62. }],
  63. store:Ext.data.StoreManager.lookup('user'),
  64. plugins: [
  65. Ext.create('Ext.grid.plugin.CellEditing', {
  66. clicksToEdit: 2
  67. })
  68. ],
  69. listeners:{
  70. afterrender:function(grid){
  71. grid.store.load(function(record, e, success) {
  72. if(!success) {
  73. Ext.Msg.alert('失败', '权限不足!');
  74. }
  75. grid.getSelectionModel().select(0);
  76. });
  77. },
  78. select:function(grid, record, index, eOpts ){
  79. var userboardgrid = Ext.getCmp('userboardgrid');
  80. userboardgrid.setDisabled(false);
  81. if(record.get('role')=='Admin'){
  82. userboardgrid.getSelectionModel().selectAll(); //管理员默认全勾选
  83. userboardgrid.setDisabled(true);
  84. return;
  85. }
  86. var panelCodes = record.get('panelCodes');
  87. var selRec = new Array();
  88. Ext.Array.each(userboardgrid.store.data.items,function(item){
  89. if(panelCodes.indexOf(item.get('code')) != -1){
  90. selRec.push(item);
  91. }
  92. });
  93. userboardgrid.getSelectionModel().select(selRec);
  94. }
  95. },
  96. tbar:[{
  97. text:'新增',
  98. handler:function(){
  99. me.addUser();
  100. }
  101. },{
  102. text:'删除',
  103. handler:function(){
  104. me.deleteUser();
  105. }
  106. },{
  107. text:'保存',
  108. handler:function(){
  109. me.save();
  110. }
  111. }, '->', {
  112. xtype:'triggerfield',
  113. id:'userfilterbox',
  114. fieldLabel: '',
  115. triggerCls: "selecter",
  116. overCls: '',
  117. hideTrigger : false,
  118. emptyText: '输入用户名关键字查找',
  119. editable: true,
  120. onTriggerClick : function(){
  121. this.doFilter();
  122. },
  123. listeners: {
  124. specialkey : function(field, e) {
  125. if (e.getKey() == Ext.EventObject.ENTER) {
  126. this.doFilter();
  127. }
  128. }
  129. },
  130. doFilter: function(){
  131. var grid = Ext.getCmp('userSettingGrid');
  132. grid.userFilter(this.value);
  133. }
  134. }],
  135. userFilter: function(userName) {
  136. var grid = this;
  137. if(!userName) {
  138. grid.getStore().clearFilter();
  139. return;
  140. }
  141. grid.getStore().filterBy(function(record, id) {
  142. if(record.get('name').indexOf(userName) != -1) {
  143. return true;
  144. }else {
  145. return false;
  146. }
  147. });
  148. }
  149. },{
  150. xtype:'grid',
  151. id:'userboardgrid',
  152. region:'east',
  153. flex:1,
  154. selectedPanelCodes: [],
  155. columns:[{
  156. header:'名称',
  157. dataIndex:'name',
  158. flex:1
  159. },{
  160. header:'CODE',
  161. hidden:true,
  162. dataIndex:'code'
  163. }],
  164. tbar:[{
  165. xtype:'tbtext',
  166. text:'<span style="font-size:13px;font-weight:bold">面板</font>',
  167. height:24,
  168. style:'line-height:24px'
  169. }],
  170. store: Ext.create('erp.store.desktopboard').load(),
  171. selModel: Ext.create('Ext.selection.CheckboxModel'),
  172. listeners:{
  173. select:function(grid, record, index, eOpts ){
  174. var grid = Ext.getCmp('userboardgrid');
  175. grid.selectedPanelCodes.push(record.get('code'));
  176. },
  177. deselect:function( e, record, index, eOpts ){
  178. var grid = Ext.getCmp('userboardgrid');
  179. grid.selectedPanelCodes.splice(grid.selectedPanelCodes.indexOf(record.get('code')), 1);
  180. }
  181. },
  182. getSelectedPanels: function() {
  183. return this.selectedPanelCodes;
  184. }
  185. }];
  186. this.callParent(arguments);
  187. },
  188. addUser:function(){
  189. var me = this;
  190. var grid = me.getGrid();
  191. var bol = me.checkGridDirty(grid);
  192. if(bol){
  193. Ext.Msg.alert('提示','请先保存当前操作!');
  194. }else{
  195. grid.store.insert(0,{
  196. code:'',
  197. name:'',
  198. password:'111111',
  199. role:'Default'
  200. });
  201. grid.getSelectionModel().select(0);
  202. }
  203. },
  204. checkGridDirty:function(grid){
  205. var bol = false;
  206. Ext.Array.each(grid.store.data.items,function(item){
  207. if(item.dirty||!item.get('code')){
  208. bol = true;
  209. return false;
  210. }
  211. });
  212. return bol;
  213. },
  214. deleteUser:function(){
  215. var me = this;
  216. var grid = me.getGrid();
  217. var record = grid.getSelectionModel().getSelection()[0];
  218. var userboardgrid = Ext.getCmp('userboardgrid');
  219. if(record.get('code')){
  220. Ext.Msg.confirm('提示','是否确定删除该用户',function(btn){
  221. if(btn=='yes'){
  222. var el = me.getEl();
  223. el.mask('删除中...');
  224. Ext.Ajax.request({
  225. url:'user/delete/'+record.get('code'),
  226. method:'POST',
  227. callback:function(options,success,response){
  228. el.unmask();
  229. var res = Ext.decode(response.responseText);
  230. if(typeof(res.success)!=='undefined'&&res.success==false){
  231. Ext.Msg.alert('提示','删除失败,原因:'+res.message);
  232. }else{
  233. Ext.Msg.alert('提示','删除成功!');
  234. grid.store.reload();
  235. userboardgrid.getSelectionModel().deselectAll();
  236. }
  237. }
  238. });
  239. }
  240. });
  241. }else{
  242. grid.store.remove(record);
  243. }
  244. },
  245. save:function(){
  246. var me = this;
  247. var grid = me.getGrid();
  248. var userboardgrid = Ext.getCmp('userboardgrid');
  249. var record = grid.getSelectionModel().getSelection()[0];
  250. if(record){
  251. var selectedPanels = userboardgrid.getSelectedPanels();
  252. var values = record.data;
  253. values.panelCodes = selectedPanels;
  254. var type;
  255. if(!record.get('code')){
  256. type = 'save';
  257. delete values.code;
  258. }else{
  259. type = 'updatePart';
  260. }
  261. var el = me.getEl();
  262. el.mask('保存中...');
  263. Ext.Ajax.request({
  264. url:'user/'+type,
  265. method:'POST',
  266. params:{
  267. json:Ext.encode(values)
  268. },
  269. callback:function(options,success,response){
  270. el.unmask();
  271. var res = Ext.decode(response.responseText);
  272. if(typeof(res.success)!=='undefined'&&res.success==false){
  273. Ext.Msg.alert('提示','保存失败,原因:'+res.message);
  274. }else{
  275. Ext.Msg.alert('提示','保存成功!');
  276. grid.store.reload();
  277. var code;
  278. if(type=='updatePart'||type=='update'){
  279. code = record.get('code');
  280. }else{
  281. code = res.code;
  282. }
  283. userboardgrid.getSelectionModel().deselectAll();
  284. Ext.defer(function(){
  285. me.reSelect(grid,code);
  286. },300);
  287. }
  288. }
  289. });
  290. }else{
  291. Ext.Msg.alert('提示','未选中用户!');
  292. }
  293. },
  294. reSelect:function(grid,code){
  295. var record;
  296. Ext.Array.each(grid.store.data.items,function(item){
  297. if(item.get('code')==code){
  298. record = item;
  299. return false;
  300. }
  301. });
  302. grid.getSelectionModel().select(record);
  303. },
  304. getGrid:function(){
  305. return Ext.getCmp('userSettingGrid');
  306. },
  307. getSelectedBoardCodes:function(userboardgrid){
  308. var sel = new Array();
  309. var selPoints = userboardgrid.getSelectionModel().getSelection();
  310. Ext.Array.each(selPoints,function(point){
  311. sel.push(point.get('code'));
  312. });
  313. return sel;
  314. }
  315. });