admin.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571
  1. /**
  2. * Admin.js
  3. * 用户管理界面
  4. * emial: hanzhengyi@chinausky.com
  5. * create: 2018-12-12
  6. */
  7. Ext.Loader.setConfig({
  8. enabled: true
  9. });
  10. Ext.Loader.setPath('Ext.ux', '../../res/extjs/examples/ux');
  11. Ext.require([
  12. 'Ext.grid.*',
  13. 'Ext.data.*',
  14. 'Ext.ux.RowExpander',
  15. 'Ext.selection.CheckboxModel'
  16. ]);
  17. var sm = Ext.create('Ext.selection.CheckboxModel');
  18. Ext.define('Admin',{
  19. extend: 'Ext.data.Model',
  20. fields: [
  21. { name:'I_ORDER_IDX', type:'int' },
  22. { name:'UQ_ADMIN_ID', type:'string' },
  23. { name:'V_ADMIN_NAME', type:'string' },
  24. { name:'V_LOGINNAME', type:'string' },
  25. { name:'V_PASSWORD', type:'string' },
  26. { name:'E_STATUS', type:'string' },
  27. { name:'I_VERSION', type:'int' },
  28. { name:'D_STORETIME', type:'string' }
  29. ]
  30. });
  31. Ext.onReady(function(){
  32. var baseUrl = document.getElementById('basePath').value;
  33. var theme = document.getElementById('theme').value;
  34. var chkIcon = '<img src="'+baseUrl+'res/img/common/check.gif"/>'
  35. var unchkIcon = '<img src="'+baseUrl+'res/img/common/uncheck.gif"/>'
  36. var countPerPage = 20;
  37. var maxHeight = 10000;
  38. var chkBoolean = function(flag) {
  39. if(flag)
  40. return chkIcon;
  41. return unchkIcon;
  42. }
  43. var clear_append_form = function (){
  44. Ext.getCmp('fa_V_ADMIN_NAME').setValue("");
  45. Ext.getCmp('fa_V_LOGINNAME').setValue("");
  46. Ext.getCmp('fa_V_PASSWORD').setValue("123456");
  47. Ext.getCmp('fa_T_COMMIT').setValue("新增用户");
  48. Ext.getCmp('AdminListPanel').getStore().reload();
  49. }
  50. var myStore = Ext.create('Ext.data.Store', {
  51. model: 'Admin',
  52. pageSize: countPerPage,
  53. proxy: {
  54. type: 'ajax',
  55. url: baseUrl+'iot/admin/getList',
  56. reader: {
  57. type: 'json',
  58. root: 'RESULT',
  59. totalProperty: 'totalCount'
  60. }
  61. },
  62. remoteSort: true
  63. });
  64. var AppendForm = Ext.create('Ext.form.Panel', {
  65. id: 'AdminAppendForm',
  66. labelWidth: 55,
  67. url: baseUrl+'iot/admin/append',
  68. defaultType: 'textfield',
  69. bodyPadding: 15,
  70. items: [{
  71. fieldLabel:'用户姓名',
  72. id: 'fa_V_ADMIN_NAME',
  73. name:'V_ADMIN_NAME',
  74. maxLength:20,
  75. maxLengthText:'长度不得超出{0}',
  76. anchor:'75%'
  77. },{
  78. fieldLabel:'用户登录名',
  79. id: 'fa_V_LOGINNAME',
  80. name: 'V_LOGINNAME',
  81. maxLength: 7,
  82. maxLengthText:'长度不得超出{0}',
  83. anchor:'50%'
  84. },{
  85. fieldLabel:'登录密码',
  86. id: 'fa_V_PASSWORD',
  87. name:'V_PASSWORD',
  88. maxLength: 12,
  89. maxLengthText:'长度不得超出{0}',
  90. anchor:'95%',
  91. value:'123456'
  92. },{
  93. fieldLabel:'新增用户说明',
  94. id: 'fa_T_COMMIT',
  95. name:'T_COMMIT',
  96. xtype: 'textareafield',
  97. maxLength: 250,
  98. maxLengthText:'长度不得超出{0}',
  99. anchor:'100%',
  100. value:'新增用户'
  101. },{
  102. id:'fa_queryJson',
  103. name:'queryJson',
  104. hidden:true
  105. }],
  106. buttons: [{
  107. text: '提交',
  108. iconCls:'ok_btn',
  109. handler: function() {
  110. var form = this.up('form').getForm();
  111. if (form.isValid()) {
  112. var query = new Object();
  113. query.V_ADMIN_NAME = Ext.getCmp('fa_V_ADMIN_NAME').getValue();
  114. query.V_LOGINNAME = Ext.getCmp('fa_V_LOGINNAME').getValue();
  115. query.V_PASSWORD = Ext.getCmp('fa_V_PASSWORD').getValue();
  116. query.T_COMMIT = Ext.getCmp('fa_T_COMMIT').getValue();
  117. query.V_EDITOR_ID = '00000000-000000-000000-000000';
  118. var jsonstr = Ext.JSON.encode(query);
  119. Ext.getCmp('fa_queryJson').setValue(jsonstr);
  120. form.submit({
  121. method:'post',
  122. success: function(form, action) {
  123. Ext.Msg.alert('操作成功', '新增用户已保存', function(btn,txt){
  124. clear_append_form();
  125. });
  126. },
  127. failure: function(form, action) {
  128. Ext.Msg.alert('操作失败', action.Msg , function(btn,txt){
  129. clear_append_form();
  130. });
  131. }
  132. });
  133. }
  134. }
  135. },{
  136. text: '关闭',
  137. iconCls: 'cancel_btn',
  138. handler: function() {
  139. this.up('window').hide();
  140. }
  141. }]
  142. });
  143. var appendwin = function(){
  144. Ext.create('Ext.window.Window', {
  145. title: '新增用户',
  146. height: 300,
  147. width: 400,
  148. layout: 'fit',
  149. items: AppendForm,
  150. closeAction: 'hide'
  151. }).show();
  152. }
  153. var clear_filter_form = function(){
  154. Ext.getCmp('ff_V_ADMIN_NAME').setValue("");
  155. Ext.getCmp('ff_V_LOGINNAME').setValue("");
  156. Ext.getCmp('ff_V_PASSWORD').setValue("");
  157. Ext.getCmp('ff_T_COMMIT').setValue("");
  158. }
  159. var states = Ext.create('Ext.data.Store', {
  160. fields: ['status', 'name'],
  161. data : [
  162. {"status":-1, "name":"全选"},
  163. {"status":0, "name":"无效"},
  164. {"status":1, "name":"有效"}
  165. ]
  166. });
  167. var FilterForm = Ext.create('Ext.form.Panel', {
  168. id: 'AdminFilterForm',
  169. labelWidth: 55,
  170. defaultType: 'textfield',
  171. bodyPadding: 15,
  172. items: [{
  173. fieldLabel:'用户姓名',
  174. id: 'ff_V_ADMIN_NAME',
  175. name:'V_ADMIN_NAME',
  176. maxLength:20,
  177. maxLengthText:'长度不得超出{0}',
  178. anchor:'75%'
  179. },{
  180. fieldLabel:'用户登录名',
  181. id: 'ff_V_LOGINNAME',
  182. name: 'V_LOGINNAME',
  183. maxLength: 7,
  184. maxLengthText:'长度不得超出{0}',
  185. anchor:'75%'
  186. },{
  187. id:'ff_queryJson',
  188. name:'queryJson',
  189. hidden:true
  190. }],
  191. buttons: [{
  192. text: '提交',
  193. iconCls:'ok_btn',
  194. handler: function() {
  195. var form = this.up('form').getForm();
  196. if (form.isValid()) {
  197. var query = new Object();
  198. if(Ext.getCmp('ff_V_ADMIN_NAME').getValue().length>0)
  199. query.V_ADMIN_NAME = Ext.getCmp('ff_V_ADMIN_NAME').getValue();
  200. if(Ext.getCmp('ff_V_LOGINNAME').getValue().length>0)
  201. query.V_LOGINNAME = Ext.getCmp('ff_V_LOGINNAME').getValue();
  202. var jsonstr = Ext.JSON.encode(query);
  203. myStore.getProxy().extraParams = {
  204. queryJson : jsonstr
  205. };
  206. Ext.getCmp('AdminListPageToolbar').moveFirst();
  207. clear_filter_form();
  208. this.up('window').hide();
  209. }
  210. }
  211. },{
  212. text: '关闭',
  213. iconCls: 'cancel_btn',
  214. handler: function() {
  215. this.up('window').hide();
  216. }
  217. }]
  218. });
  219. var filterwin = function() {
  220. Ext.create('Ext.window.Window',{
  221. id: 'AdminFilterWin',
  222. title: '用户筛选',
  223. height: 300,
  224. width: 400,
  225. layout: 'fit',
  226. items: FilterForm,
  227. closeAction: 'hide'
  228. }).show();
  229. }
  230. var clear_modify_form = function (){
  231. Ext.getCmp('fm_V_ADMIN_NAME').setValue("");
  232. Ext.getCmp('fm_V_LOGINNAME').setValue("");
  233. Ext.getCmp('fm_V_PASSWORD').setValue("");
  234. Ext.getCmp('fm_T_COMMIT').setValue("");
  235. Ext.getCmp('fm_E_STATUS').setValue(0);
  236. Ext.getCmp('AdminListPanel').getStore().reload();
  237. }
  238. var states1 = Ext.create('Ext.data.Store', {
  239. fields: ['status', 'name'],
  240. data : [
  241. {"status":"未激活", "name":"未激活"},
  242. {"status":"激活", "name":"激活"},
  243. {"status":"锁定", "name":"锁定"},
  244. {"status":"注销", "name":"注销"},
  245. ]
  246. });
  247. var ModifyForm = Ext.create('Ext.form.Panel', {
  248. id: 'AdminEditForm',
  249. labelWidth: 55,
  250. url: baseUrl+'iot/admin/update',
  251. defaultType: 'textfield',
  252. bodyPadding: 15,
  253. items: [{
  254. fieldLabel:'用户姓名',
  255. id: 'fm_V_ADMIN_NAME',
  256. name:'V_ADMIN_NAME',
  257. maxLength:20,
  258. maxLengthText:'长度不得超出{0}',
  259. anchor:'75%'
  260. },{
  261. fieldLabel:'用户登录名',
  262. id: 'fm_V_LOGINNAME',
  263. name: 'V_LOGINNAME',
  264. maxLength: 7,
  265. maxLengthText:'长度不得超出{0}',
  266. anchor:'75%'
  267. },{
  268. fieldLabel:'登录密码',
  269. id: 'fm_V_PASSWORD',
  270. name:'V_PASSWORD',
  271. maxLength: 250,
  272. maxLengthText:'长度不得超出{0}',
  273. anchor:'75%'
  274. },{
  275. fieldLabel:'用户状态',
  276. id:'fm_E_STATUS',
  277. name:'E_STATUS',
  278. xtype:'combo',
  279. store:states1,
  280. displayField : 'name',
  281. valueField : 'status',
  282. editable : false,
  283. maxLength: 7,
  284. maxLengthText:'长度不得超出{0}',
  285. anchor:'50%'
  286. },{
  287. fieldLabel:'修改说明',
  288. id: 'fm_T_COMMIT',
  289. name:'T_COMMIT',
  290. xtype: 'textareafield',
  291. maxLength: 250,
  292. maxLengthText:'长度不得超出{0}',
  293. anchor:'100%'
  294. },{
  295. id: 'fm_UQ_ADMIN_ID',
  296. name:'UQ_ADMIN_ID',
  297. hidden:true
  298. },{
  299. id:'fm_queryJson',
  300. name:'queryJson',
  301. hidden:true
  302. }],
  303. buttons: [{
  304. text: '修改',
  305. iconCls:'ok_btn',
  306. handler: function() {
  307. var form = this.up('form').getForm();
  308. if (form.isValid()) {
  309. var query = new Object();
  310. query.UQ_ADMIN_ID = Ext.getCmp('fm_UQ_ADMIN_ID').getValue();
  311. query.V_ADMIN_NAME = Ext.getCmp('fm_V_ADMIN_NAME').getValue();
  312. query.V_LOGINNAME = Ext.getCmp('fm_V_LOGINNAME').getValue();
  313. query.V_PASSWORD = Ext.getCmp('fm_V_PASSWORD').getValue();
  314. query.T_COMMIT = Ext.getCmp('fm_T_COMMIT').getValue();
  315. if(Ext.getCmp('fm_E_STATUS').getValue()=='未激活'){
  316. query.E_STATUS=0;
  317. }
  318. if(Ext.getCmp('fm_E_STATUS').getValue()=='激活'){
  319. query.E_STATUS=1;
  320. }
  321. if(Ext.getCmp('fm_E_STATUS').getValue()=='锁定'){
  322. query.E_STATUS=2;
  323. }
  324. if(Ext.getCmp('fm_E_STATUS').getValue()=='注销'){
  325. query.E_STATUS=3;
  326. }
  327. query.V_EDITOR_ID = '00000000-000000-000000-000000';
  328. var jsonstr = Ext.JSON.encode(query);
  329. Ext.getCmp('fm_queryJson').setValue(jsonstr);
  330. form.submit({
  331. method:'post',
  332. success: function(form, action) {
  333. Ext.Msg.alert('操作成功', '用户信息已修改', function(btn,txt){
  334. clear_modify_form();
  335. });
  336. },
  337. failure: function(form, action) {
  338. Ext.Msg.alert('操作失败', action.Msg , function(btn,txt){
  339. clear_modify_form();
  340. });
  341. }
  342. });
  343. this.up('window').hide();
  344. }
  345. }
  346. },{
  347. text: '关闭',
  348. iconCls: 'cancel_btn',
  349. handler: function() {
  350. this.up('window').hide();
  351. }
  352. }]
  353. });
  354. var modifywin = function(){
  355. Ext.create('Ext.window.Window', {
  356. title: '修改用户信息',
  357. height: 300,
  358. width: 400,
  359. layout: 'fit',
  360. items: ModifyForm,
  361. closeAction: 'hide'
  362. }).show();
  363. }
  364. var clear_delete_form = function (){
  365. Ext.getCmp('fn_V_ADMIN_NAME').setValue("");
  366. Ext.getCmp('fn_V_LOGINNAME').setValue("");
  367. Ext.getCmp('fn_V_PASSWORD').setValue("");
  368. Ext.getCmp('fn_T_COMMIT').setValue("");
  369. Ext.getCmp('fn_E_STATUS').setValue(0);
  370. Ext.getCmp('AdminListPanel').getStore().reload();
  371. }
  372. var deletewin = function() {
  373. Ext.create('Ext.window.Window', {
  374. title: '注销用户信息',
  375. height: 300,
  376. width: 400,
  377. layout: 'fit',
  378. items: DeleteForm,
  379. closeAction: 'hide'
  380. }).show();
  381. }
  382. var del_sm = function() {
  383. if(sm.getCount()==1){
  384. var selected = sm.getSelection( );
  385. var query = new Object();
  386. var list = new Array();
  387. var o = new Object();
  388. o.UQ_ADMIN_ID = selected[0].raw.UQ_ADMIN_ID;
  389. list.push(o);
  390. query.ADMIN_LIST = list;
  391. var jsonstr= Ext.JSON.encode(query);
  392. Ext.MessageBox.confirm('注销用户','是否注销 '+selected[0].raw.V_ADMIN_NAME+' 用户?',function(btn){
  393. if(btn=='yes'){
  394. Ext.Ajax.request( {
  395. timeout : 3000000,
  396. url: baseUrl+'iot/admin/delete',
  397. params : 'queryJson='+ jsonstr,
  398. success: function(resp,opts){
  399. myStore.reload();
  400. }
  401. });
  402. }
  403. },this);
  404. }else{
  405. if(sm.getCount()>1){
  406. var query = new Object();
  407. var list = new Array();
  408. for(var i=0;i<sm.getCount();i++){
  409. var selected = sm.getSelection( );
  410. var o = new Object();
  411. o.UQ_ADMIN_ID = selected[i].raw.UQ_ADMIN_ID;
  412. list.push(o);
  413. }
  414. query.ADMIN_LIST = list;
  415. var jsonstr= Ext.JSON.encode(query);
  416. Ext.MessageBox.confirm('注销用户','是否注销选中的'+sm.getCount()+' 个用户?',function(btn){
  417. if(btn=='yes'){
  418. Ext.Ajax.request( {
  419. timeout : 3000000,
  420. url: baseUrl+'iot/admin/delete',
  421. params : 'queryJson='+ jsonstr,
  422. success: function(resp,opts){
  423. myStore.reload();
  424. }
  425. });
  426. }
  427. },this);
  428. }else{
  429. Ext.Msg.alert('请先选择','至少选择一条记录,再点击注销');
  430. }
  431. }
  432. }
  433. var chk_sm = function() {
  434. if(sm.getCount()==1){
  435. modifywin();
  436. var selected = sm.getSelection( );
  437. var estatus =selected[0].raw.E_STATUS;
  438. Ext.getCmp('fm_UQ_ADMIN_ID').setValue(selected[0].raw.UQ_ADMIN_ID);
  439. Ext.getCmp('fm_V_ADMIN_NAME').setValue(selected[0].raw.V_ADMIN_NAME);
  440. Ext.getCmp('fm_V_LOGINNAME').setValue(selected[0].raw.V_LOGINNAME);
  441. Ext.getCmp('fm_V_PASSWORD').setValue(selected[0].raw.V_PASSWORD);
  442. Ext.getCmp('fm_E_STATUS').setValue(estatus);
  443. }else{
  444. Ext.Msg.alert('请先选择','请先选择一条记录,再点击修改');
  445. }
  446. }
  447. Ext.create('Ext.grid.Panel', {
  448. title: '用户信息',
  449. id: 'AdminListPanel',
  450. store: myStore,
  451. selModel: sm,
  452. columns: [
  453. { header: 'ID', dataIndex: 'UQ_ADMIN_ID',hidden:true, menuDisabled:true },
  454. { header: '序号', dataIndex: 'I_ORDER_IDX', width:40, menuDisabled:true },
  455. { header: '用户姓名', dataIndex: 'V_ADMIN_NAME', width:80, menuDisabled:true },
  456. { header: '用户登录名', dataIndex: 'V_LOGINNAME', width:80, menuDisabled:true },
  457. { header: '用户状态', dataIndex: 'E_STATUS', width:100, menuDisabled:true },
  458. { header: '保存时间', dataIndex: 'D_STORETIME',width:150, align:'center', menuDisabled:true },
  459. { header: '记录版本', dataIndex: 'I_VERSION', width:80, align:'center', menuDisabled:true },
  460. {
  461. xtype : 'actioncolumn',
  462. width:20,
  463. sortable:false,
  464. align:'center',
  465. menuDisabled:true,
  466. items:[{
  467. icon: '../../res/img/common/forum.gif',
  468. tooltip: '版本记录',
  469. handler: function(grid, rowIndex, colIndex) {
  470. var rec = grid.getStore().getAt(rowIndex);
  471. window.location = 'version.jsp?theme='+theme+'&adminId='+rec.get('UQ_ADMIN_ID');
  472. }
  473. }]
  474. }
  475. ],
  476. columnLines: true,
  477. tbar: [
  478. {
  479. xtype: 'button',
  480. iconCls:'filter_btn',
  481. text: '筛选',
  482. listeners: {
  483. click: filterwin
  484. }
  485. },'-',
  486. {xtype: 'tbfill'},'-',
  487. {
  488. xtype: 'button',
  489. iconCls:'append_btn',
  490. text: '新增',
  491. listeners: {
  492. click: appendwin
  493. }
  494. },
  495. {
  496. xtype: 'button',
  497. iconCls:'modify_btn',
  498. text: '修改',
  499. listeners: {
  500. click: chk_sm
  501. }
  502. },
  503. {
  504. xtype: 'button',
  505. iconCls:'delete_btn',
  506. text: '注销',
  507. listeners: {
  508. click: del_sm
  509. }
  510. }
  511. ],
  512. height: maxHeight,
  513. width: '100%',
  514. bbar: new Ext.PagingToolbar({
  515. store: myStore,
  516. id:'AdminListPageToolbar',
  517. displayInfo: true,
  518. pageSize: countPerPage,
  519. prependButtons: true,
  520. displayMsg : '显示第 {0}条到 {1}条记录,总共 {2}条',
  521. emptyMsg : "没有记录",
  522. firstText: '第一页',
  523. prevText: '前一页',
  524. nextText: '后一页',
  525. lastText: '最后一页',
  526. refreshText: '刷新',
  527. doRefresh:function(start){
  528. alert(start);
  529. relushDataFunction(start); // 调用函数刷新数据
  530. this.cursor = start; // 更新页签
  531. }
  532. }),
  533. frame: true,
  534. border:false,
  535. iconCls: 'icon-grid',
  536. renderTo: Ext.getBody()
  537. });
  538. myStore.reload();
  539. maxHeight = document.documentElement.clientHeight;
  540. Ext.getCmp('AdminListPanel').setHeight(maxHeight);
  541. });