GridPanel.js 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360
  1. Ext.define('erp.view.oa.myProcess.jprocessMonitoring.GridPanel',{
  2. extend: 'Ext.grid.Panel',
  3. alias: 'widget.erpJProcessMonitoringGridPanel',
  4. id: 'grid',
  5. emptyText : '无数据',
  6. columnLines : true,
  7. autoScroll : true,
  8. FormUtil: Ext.create('erp.util.FormUtil'),
  9. GridUtil: Ext.create('erp.util.GridUtil'),
  10. plugins: [Ext.create('Ext.ux.grid.GridHeaderFilters')],
  11. BaseUtil: Ext.create('erp.util.BaseUtil'),
  12. store: Ext.create('Ext.data.Store', {
  13. fields: [{
  14. name:'id',
  15. type:'string'
  16. },{
  17. name:'name',
  18. type:'string'
  19. },{
  20. name:'form',
  21. type:'string'
  22. },{
  23. name:'nodeName',
  24. type:'string'
  25. },{
  26. name:'launcherId',
  27. type:'string'
  28. },{
  29. name:'launcherName',
  30. type:'string'
  31. },{
  32. name:'launchTime',
  33. type:'date'
  34. },{
  35. name:'stayMinutes',
  36. type:'string'
  37. },{
  38. name:'nodeDealMan',
  39. type:'string'
  40. },{
  41. name:'nodeId',
  42. type:'string'
  43. },{
  44. name:'status',
  45. type:'string'
  46. }]
  47. }),
  48. iconCls: 'icon-grid',
  49. frame: true,
  50. bodyStyle:'background-color:#f1f1f1;',
  51. features: [Ext.create('Ext.grid.feature.Grouping',{
  52. groupHeaderTpl: '{name} ({rows.length} 封)'
  53. })],
  54. selModel: Ext.create('Ext.selection.CheckboxModel',{
  55. }),
  56. dockedItems: [{
  57. id : 'paging',
  58. xtype: 'erpMailPaging',
  59. dock: 'bottom',
  60. displayInfo: true
  61. }],
  62. columns: [{
  63. text: '流程ID号',
  64. width: 80,
  65. dataIndex: 'jp_id'
  66. },{
  67. text: '流程名称',
  68. width: 160,
  69. dataIndex: 'jp_name'
  70. },{
  71. text: '流程单据',
  72. width: 160,
  73. dataIndex: 'jp_form'
  74. },{
  75. text: '当前步骤',
  76. width: 80,
  77. dataIndex: 'jp_nodeName'
  78. },{
  79. text: '发起人ID',
  80. width: 80,
  81. dataIndex: 'jp_launcherId'
  82. },{
  83. text: '发起人',
  84. width: 80,
  85. dataIndex: 'jp_launcherName'
  86. },{
  87. text: '发起时间',
  88. width: 120,
  89. dataIndex: 'jp_launchTime',
  90. renderer: function(val, meta, record){
  91. return Ext.util.Format.date(new Date(val),'Y-m-d H:i:s');
  92. }
  93. },{
  94. text: '停留分钟',
  95. width: 80,
  96. dataIndex: 'jp_stayMinutes'
  97. },{
  98. text: '当前办理人',
  99. width: 90,
  100. dataIndex: 'jp_nodeDealMan'
  101. },{
  102. text: '节点编号',
  103. width: 100,
  104. dataIndex: 'jp_nodeId'
  105. },{
  106. text: '流程状态',
  107. width: 100,
  108. dataIndex: 'jp_status'
  109. }],
  110. tbar: [{
  111. iconCls: 'group-delete',
  112. text: $I18N.common.button.erpDeleteButton,
  113. handler: function(btn){
  114. var selectItem = Ext.getCmp('grid').selModel.selected.items;
  115. if (selectItem.length == 0) {
  116. showError("请先选中要删除的流程");return;
  117. } else {
  118. var ids = new Array();
  119. Ext.each(selectItem, function(item, index){
  120. ids[index] = item.data.jp_id;
  121. // alert(ids[index]);
  122. });
  123. Ext.Ajax.request({//拿到grid的columns
  124. url : basePath + 'oa/myprocess/delete.action',
  125. params: {
  126. ids : ids.join(',')
  127. },
  128. method : 'post',
  129. async: false,
  130. callback : function(options, success, response){
  131. parent.Ext.getCmp("content-panel").getActiveTab().setLoading(false);
  132. var res = new Ext.decode(response.responseText);
  133. if(res.exceptionInfo){
  134. showError(res.exceptionInfo);return;
  135. }
  136. if(res.success){
  137. alert(' 删除成功!');
  138. }
  139. }
  140. });
  141. url = "oa/myprocess/getJProcessList.action";
  142. // url = "oa/myprocess/getMyList.action";
  143. btn.ownerCt.ownerCt.getGroupData();
  144. }
  145. }
  146. },{
  147. iconCls: 'x-button-icon-print',
  148. text: $I18N.common.button.erpPrintButton,
  149. id: 'print',
  150. handler: function(btn){
  151. Ext.Msg.alert("提示",Ext.htmlDecode("<table width='240' border='1' id='tab1' cellspacing='2' cellpadding='4'><tr><td>简单的html表格<input type='button' value='按钮'></td></tr></table>"));
  152. }
  153. },{
  154. iconCls: 'x-button-icon-print',
  155. text: '催办',
  156. id: 'fast',
  157. handler: function(btn){
  158. Ext.getCmp('grid').reminder();
  159. }
  160. },{
  161. iconCls: 'x-button-icon-print',
  162. text: '控制',
  163. id: 'control',
  164. handler: function(btn){
  165. Ext.getCmp('grid').controlStep();
  166. }
  167. }],
  168. initComponent : function(){
  169. this.callParent(arguments);
  170. url = "oa/myprocess/getJProcessList.action";
  171. // url = "oa/myprocess/getMyList.action";
  172. this.getGroupData(page, pageSize);
  173. },
  174. listeners: {//滚动条有时候没反应,添加此监听器
  175. scrollershow: function(scroller) {
  176. if (scroller && scroller.scrollEl) {
  177. scroller.clearManagedListeners();
  178. scroller.mon(scroller.scrollEl, 'scroll', scroller.onElScroll, scroller);
  179. }
  180. }
  181. },
  182. getGroupData: function(page, pageSize){
  183. var me = this;
  184. if(!page){
  185. page = 1;
  186. }
  187. if(!pageSize){
  188. pageSize = 15;
  189. }
  190. parent.Ext.getCmp("content-panel").getActiveTab().setLoading(true);//loading...
  191. Ext.Ajax.request({//拿到grid的columns
  192. url : basePath + url,
  193. params: {
  194. page: page,
  195. pageSize: pageSize
  196. },
  197. method : 'post',
  198. async: false,
  199. callback : function(options, success, response){
  200. // console.log(response);
  201. parent.Ext.getCmp("content-panel").getActiveTab().setLoading(false);
  202. var res = new Ext.decode(response.responseText);
  203. if(res.exceptionInfo){
  204. showError(res.exceptionInfo);return;
  205. }
  206. if(res.error){
  207. showError(res.error);return;
  208. }
  209. if(!res.jprocesslist){
  210. return;
  211. } else {
  212. // console.log(res.jprocesslist);
  213. dataCount = res.count;
  214. me.store.loadData(res.jprocesslist);
  215. }
  216. }
  217. });
  218. },
  219. updateWindow: function(id){
  220. var win = new Ext.window.Window({
  221. id : 'win2',
  222. title: "修改日程",
  223. height: "90%",
  224. width: "80%",
  225. maximizable : false,
  226. buttonAlign : 'left',
  227. layout : 'anchor',
  228. items: [{
  229. tag : 'iframe',
  230. frame : true,
  231. anchor : '100% 100%',
  232. layout : 'fit',
  233. html : '<iframe id="iframe_' + id + '" src="' + basePath + 'jsps/common/commonpage.jsp?whoami=Agenda&formCondition=ag_idIS' + id + '&gridCondition=" height="100%" width="100%" frameborder="0" scrolling="yes"></iframe>'
  234. }]
  235. });
  236. win.show();
  237. },
  238. controlStep:function(){
  239. var grid = Ext.getCmp('grid');
  240. var selModel= grid.getSelectionModel().selected.items;
  241. if(selModel.length<1){
  242. alert("请选择一个节点!");
  243. return;
  244. }else{
  245. var status = selModel[0].data['jp_status'];
  246. if(status=='已审批'){
  247. alert('该流程已经完成审批,不能回退!');
  248. }else{
  249. var nodeId = selModel[0].data['jp_nodeId'];
  250. var hgrid = Ext.create('erp.view.oa.myProcess.jprocessMonitoring.HistoryNodeGrid',{
  251. nodeId:nodeId
  252. });
  253. //在这里回退;
  254. historyWin = Ext.create('Ext.window.Window', {
  255. title: '请选择要退回的节点',
  256. height: grid.getHeight(),
  257. width: grid.getWidth(),
  258. layout: 'auto',
  259. items: [hgrid],
  260. closeAction:'destroy',
  261. buttonAlign:'center',
  262. buttons:[{text:'确定', handler:function(){
  263. grid.confirmBack(hgrid,historyWin);
  264. }},{text:'取消',handler:function(){
  265. historyWin.close();
  266. }}]
  267. });
  268. historyWin.show();
  269. }
  270. }
  271. },
  272. confirmBack:function(){
  273. // 确定回退的节点;
  274. var grid = arguments[0];
  275. var win = arguments[1];
  276. var selModel= grid.getSelectionModel().selected.items;
  277. if(selModel.length<1){
  278. alert("请至少选择一个节点!");
  279. return;
  280. }
  281. var processInstanceId = selModel[0].data['jn_processInstanceId'];
  282. var jnodeId = selModel[0].data['jn_id'];
  283. //现在回退吧;
  284. var mb = new Ext.window.MessageBox();
  285. mb.wait('正在回退','请稍候……');
  286. Ext.Ajax.request({
  287. url: basePath + 'common/backToLastNode.action',
  288. params: {
  289. jnodeId: jnodeId,
  290. processInstanceId:processInstanceId
  291. },
  292. callback: function(options,success,response){
  293. var text = response.responseText;
  294. jsonData = Ext.decode(text);
  295. if(jsonData.success){
  296. alert("回退成功 !");
  297. mb.close();
  298. win.close();
  299. }else{
  300. if(jsonData.exceptionInfo){
  301. showError(jsonData.exceptionInfo);
  302. }
  303. mb.close();
  304. win.close();
  305. }
  306. }
  307. });
  308. },
  309. reminder:function(){
  310. //var main = Ext.ComponentQuery.query('#content-panel')[0];
  311. var main = parent.Ext.getCmp('content-panel');
  312. var panel = parent.Ext.getCmp("pagingPealse");
  313. if(!panel){
  314. var url = "jsps/oa/info/pagingRelease.jsp";
  315. panel = {
  316. id:'pagingPealse',
  317. title : '寻呼发布',
  318. tag : 'iframe',
  319. tabConfig: {tooltip:"寻呼发布"},
  320. frame : true,
  321. border : false,
  322. layout : 'fit',
  323. bodyPadding: 0,
  324. iconCls : 'x-tree-icon-tab-tab',
  325. html : '<iframe id="iframe_pagingPealse " src="' + basePath + url + '" height="100%" width="100%" frameborder="0" style="border-width: 0px;" scrolling="auto"></iframe>',
  326. closable : true,
  327. listeners : {
  328. close : function(){
  329. // var main = parent.Ext.ComponentQuery.query('#content-panel')[0];
  330. main.setActiveTab(Ext.getCmp("HomePage"));
  331. }
  332. }
  333. };
  334. main.add(panel);
  335. main.setActiveTab("pagingPealse");
  336. } else{
  337. main.setActiveTab(panel);
  338. }
  339. }
  340. });