LaunchContainer.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516
  1. Ext.define('erp.view.common.JProcess.LaunchContainer',{
  2. extend: 'Ext.panel.Panel',
  3. hideBorders: true,
  4. layout:'fit',
  5. alias: 'widget.erpLaunchContainer',
  6. BaseUtil:Ext.create('erp.util.BaseUtil'),
  7. FormUtil:Ext.create('erp.util.FormUtil'),
  8. initComponent : function(){
  9. this.items=this.getItems();
  10. this.callParent(arguments);
  11. },
  12. getItems:function(){
  13. var items=new Array();
  14. var me=this;
  15. this.BaseUtil.getActiveTab().setLoading(true);
  16. Ext.Ajax.request({
  17. url : basePath + "common/getAllProcessInfo.action",
  18. params:{},
  19. method : 'post',
  20. async:false,
  21. callback : function(options,success,response){
  22. Ext.create('erp.util.BaseUtil').getActiveTab().setLoading(false);
  23. var localJson = new Ext.decode(response.responseText);
  24. if(localJson.exceptionInfo){
  25. showError(localJson.exceptionInfo);return;
  26. }
  27. if(localJson.success){
  28. var classify=localJson.classify;
  29. var deploy=localJson.deploy;
  30. if(deploy['0']){
  31. items.push({
  32. xtype:'grid',
  33. title:'未分类流程',
  34. iconCls: 'main-msg',
  35. id:'grid0',
  36. tools: me.getTools(),
  37. height:300,
  38. layout:'fit',
  39. columns:me.getColumns(),
  40. store:Ext.create('Ext.data.Store', {
  41. fields :[{name:'jd_id',type:'int'},{name:'jd_processdefinitionname',type:'string'},{name:'js_formurl',type:'string'},{name:'jd_caller',type:'string'},{name:'jd_selfid',type:'int'}],
  42. data:deploy['0']
  43. })
  44. });
  45. }
  46. Ext.Array.each(classify,function(item){
  47. var data=deploy[item.JC_ID]?deploy[item.JC_ID]:[];
  48. if(data.length>0){
  49. items.push({
  50. xtype:'grid',
  51. iconCls: 'main-msg',
  52. title:'<div style="color:green;">'+item.JC_NAME+'</div>',
  53. id:'grid'+item.JC_ID,
  54. tools: me.getTools(),
  55. height:300,
  56. layout:'fit',
  57. columns:me.getColumns(),
  58. store:Ext.create('Ext.data.Store', {
  59. fields :[{name:'jd_id',type:'int'},{name:'jd_processdefinitionname',type:'string'},{name:'js_formurl',type:'string'},{name:'jd_caller',type:'string'}],
  60. data:data
  61. })
  62. });
  63. }
  64. });
  65. } else {
  66. delFailure();
  67. }
  68. }
  69. });
  70. return items;
  71. },
  72. getTools: function(){
  73. var me=this;
  74. return [{xtype:'button',
  75. tooltip:'添加流程',
  76. height:15.3,
  77. width:15.3,
  78. hidden:canAdd==1,
  79. menu: [{
  80. iconCls: 'main-msg',
  81. text: '单表',
  82. handler: function(){
  83. if(Ext.getCmp('mainwin')){
  84. Ext.getCmp('mainwin').close();
  85. }
  86. var gridCondition="fd_foid=0";
  87. var win = parent.Ext.create('Ext.window.Window',
  88. {
  89. id : 'singlewin',
  90. height : '90%',
  91. width : '90%',
  92. maximizable : true,
  93. buttonAlign : 'center',
  94. layout : 'anchor',
  95. title:'添加流程',
  96. items : [{
  97. frame : true,
  98. anchor : '100% 100%',
  99. layout : 'fit',
  100. html : '<iframe id="iframe_form" src="'+basePath+'jsps/oa/custom/customform.jsp?_noc=1'+'" height="100%" width="100%" frameborder="0" scrolling="auto"></iframe>'
  101. }]
  102. });
  103. win.show();
  104. }
  105. },{
  106. iconCls: 'main-msg',
  107. text: '主从表',
  108. handler:function(){
  109. if(Ext.getCmp('singlewin')){
  110. Ext.getCmp('singlewin').close();
  111. }
  112. var gridCondition="fd_foid=0";
  113. var win = parent.Ext.create('Ext.window.Window',
  114. {
  115. id : 'mainwin',
  116. height : '90%',
  117. width : '90%',
  118. maximizable : true,
  119. buttonAlign : 'center',
  120. layout : 'anchor',
  121. title:'添加流程',
  122. items : [{
  123. //tag : 'iframe',
  124. frame : true,
  125. anchor : '100% 100%',
  126. layout : 'fit',
  127. // html : '<iframe id="iframe_form" src="'+basePath+'jsps/ma/form.jsp?_noc=1&gridCondition='+gridCondition+'&formCondition='+formCondition+'" height="100%" width="100%" frameborder="0" scrolling="auto"></iframe>'
  128. html:'<iframe id="iframe_form" src="'+basePath+'jsps/oa/custom/multiform.jsp?_noc=1'+'" height="100%" width="100%" frameborder="0" scrolling="auto"></iframe>'
  129. }]
  130. });
  131. win.show();
  132. }
  133. }],
  134. /*handler:function(e,target,panelHeader,tool){
  135. var win = parent.Ext.create('Ext.window.Window',
  136. {
  137. id : 'win',
  138. height : 600,
  139. width : 800,
  140. maximizable : true,
  141. buttonAlign : 'center',
  142. layout : 'anchor',
  143. items : [ {
  144. //tag : 'iframe',
  145. frame : true,
  146. anchor : '100% 100%',
  147. layout : 'fit',
  148. // html : '<iframe id="iframe_form" src="'+basePath+'jsps/ma/form.jsp?_noc=1&gridCondition='+gridCondition+'&formCondition='+formCondition+'" height="100%" width="100%" frameborder="0" scrolling="auto"></iframe>'
  149. html:'<iframe id="iframe_form" src="'+basePath+'jsps/ma/form.jsp?_noc=1'+'" height="100%" width="100%" frameborder="0" scrolling="auto"></iframe>'
  150. } ]
  151. });
  152. win.show();
  153. //Ext.create('erp.util.FormUtil').onAdd('添加流程','Form',basePath+'jsps/ma/form.jsp');
  154. }**/
  155. },/*{
  156. xtype:'tool',
  157. type:'up',
  158. handler:function(e,target,panelHeader,tool){
  159. if(tool.type=='up'){
  160. tool.setType('down');
  161. panelHeader.ownerCt.collapse(Ext.Component.DIRECTION_TOP,true);
  162. }else {
  163. tool.setType('up');
  164. panelHeader.ownerCt.expand();
  165. }
  166. },
  167. },*/{
  168. xtype: 'tool',
  169. type: 'collapse',
  170. tooltip:'已发起流程',
  171. hidden:canAdd==1,
  172. handler: function(e, target, panelHeader, tool){
  173. var portlet = panelHeader.ownerCt;
  174. var select=portlet.getSelectionModel().getLastSelected();
  175. if(!select){
  176. showError('请先选择需要查看的流程!');
  177. }else {
  178. openTable(select.data.jd_processdefinitionname,"jsps/common/datalist.jsp?whoami=JProcess&urlcondition=jp_flag=1 and jp_caller='"+select.data.jd_caller+"'",select.data.jd_caller);
  179. }
  180. }
  181. },{
  182. xtype: 'tool',
  183. type: 'gear',
  184. tooltip:'流程排序',
  185. hidden:canAdd==1,
  186. handler: function(e, target, panelHeader, tool){
  187. var portlet = panelHeader.ownerCt;
  188. var jcid=portlet.id.substring(portlet.id.indexOf('grid')+4,portlet.id.length);
  189. var condition="jd_selfid="+jcid;
  190. var win = Ext.create('Ext.window.Window',
  191. {
  192. title:'流程排序',
  193. id : 'orderwin',
  194. height : '60%',
  195. width : '45%',
  196. maximizable : true,
  197. buttonAlign : 'center',
  198. layout : 'anchor',
  199. items : [{
  200. //tag : 'iframe',
  201. frame : true,
  202. anchor : '100% 100%',
  203. layout : 'fit',
  204. // html : '<iframe id="iframe_form" src="'+basePath+'jsps/ma/form.jsp?_noc=1&gridCondition='+gridCondition+'&formCondition='+formCondition+'" height="100%" width="100%" frameborder="0" scrolling="auto"></iframe>'
  205. html:'<iframe id="iframe_form" src="'+basePath+'jsps/common/editorColumn.jsp?caller=JprocessDeploy&condition='+condition+'&_noc=1'+'" height="100%" width="100%" frameborder="0" scrolling="auto"></iframe>'
  206. }],
  207. buttonAlign:'center',
  208. buttons:[{
  209. xtype:'erpSaveButton',
  210. handler:function(){
  211. var grid = Ext.getCmp('orderwin').items.items[0].body.dom.getElementsByTagName('iframe')[0].contentWindow.Ext.getCmp("editorColumnGridPanel");
  212. var data = grid.getEffectData();
  213. if(data != null){
  214. grid.setLoading(true);
  215. Ext.Ajax.request({
  216. url : basePath + 'custom/orderByJprocess.action',
  217. params: {
  218. data: Ext.encode(data)
  219. },
  220. method : 'post',
  221. callback : function(options,success,response){
  222. grid.setLoading(false);
  223. var localJson = new Ext.decode(response.responseText);
  224. if(localJson.exceptionInfo){
  225. showError(localJson.exceptionInfo);
  226. return "";
  227. }
  228. if(localJson.success){
  229. if(localJson.log){
  230. showMessage("提示", localJson.log);
  231. }
  232. Ext.Msg.alert("提示", "处理成功!", function(){
  233. win.close();
  234. me.loadNewStore(portlet,condition);
  235. });
  236. }
  237. }
  238. });
  239. }
  240. }
  241. },{
  242. xtype:'erpCloseButton',
  243. handler:function(){
  244. win.close();
  245. }
  246. }]
  247. });
  248. win.show();
  249. }
  250. },{
  251. xtype:'tool',
  252. type:'close',
  253. tooltip:'删除流程',
  254. hidden:canAdd==1,
  255. handler:function(e, target, panelHeader, tool){
  256. //me.onPortletClose(panelHeader.ownerCt);
  257. //panelHeader.ownerCt.close();
  258. var portlet = panelHeader.ownerCt;
  259. var select=portlet.getSelectionModel().getLastSelected();
  260. if(!select){
  261. showError('请先选择需要查看的流程!');
  262. }else {
  263. warnMsg('确认要删除该流程吗', function(btn){
  264. if(btn == 'yes'){
  265. me.BaseUtil.getActiveTab().setLoading(true);//loading...
  266. Ext.Ajax.request({
  267. url:basePath+'common/deleteProcessDeploy.action',
  268. params:{
  269. id:select.data.jd_id
  270. },
  271. method:'post',
  272. callback : function(options,success,response){
  273. me.BaseUtil.getActiveTab().setLoading(false);
  274. var localJson = new Ext.decode(response.responseText);
  275. if(localJson.exceptionInfo){
  276. showError(localJson.exceptionInfo);return;
  277. }
  278. if(localJson.success){
  279. delSuccess(function(){
  280. me.loadNewStore(portlet,"jd_selfid="+select.data.jd_selfid);
  281. });//@i18n/i18n.js
  282. } else {
  283. delFailure();
  284. }
  285. }
  286. });
  287. }
  288. });
  289. }
  290. }
  291. }];
  292. },
  293. onPortletClose: function(portlet) {
  294. this.showMsg('"' + portlet.title + '" 已关闭!');
  295. },
  296. showMsg: function(msg) {
  297. var el = Ext.get('app-msg'),
  298. msgId = Ext.id();
  299. this.msgId = msgId;
  300. el.update(msg).show();
  301. Ext.defer(this.clearMsg, 3000, this, [msgId]);
  302. },
  303. clearMsg: function(msgId) {
  304. if (msgId === this.msgId) {
  305. Ext.get('app-msg').hide();
  306. }
  307. },
  308. loadNewStore:function(grid,condition){
  309. var me = this;
  310. grid.setLoading(true);//loading...
  311. Ext.Ajax.request({//拿到grid的columns
  312. url : basePath + "common/getProcessInfoByCondition.action",
  313. params: {
  314. condition:condition
  315. },
  316. method : 'post',
  317. callback : function(options,success,response){
  318. grid.setLoading(false);
  319. var res = new Ext.decode(response.responseText);
  320. if(res.exceptionInfo){
  321. showError(res.exceptionInfo);return;
  322. }
  323. var data = res.data;
  324. if(!data || data.length == 0){
  325. grid.store.removeAll();
  326. me.add10EmptyItems(grid);
  327. } else {
  328. grid.store.loadData(data);
  329. }
  330. //自定义event
  331. grid.addEvents({
  332. storeloaded: true
  333. });
  334. grid.fireEvent('storeloaded', grid, data);
  335. }
  336. });
  337. },
  338. getColumns:function(){
  339. var me=this;
  340. if(canAdd!=1){
  341. return [{dataIndex:'jd_id',width:0},{dataIndex:'jd_processdefinitionname',renderer:open,header:'流程名称',width:150,flex:1},{xtype:'actioncolumn',width:50,items:[{
  342. icon: basePath+'/resource/images/icon/detail.png', // Use a URL in the icon config
  343. tooltip: '查看列表',
  344. style: {
  345. marginLeft: '2px'
  346. },
  347. handler: function(grid, rowIndex, colIndex) {
  348. var rec = grid.getStore().getAt(rowIndex);
  349. //根据caller查找列表的配置
  350. Ext.Ajax.request({
  351. url:basePath+'/custom/IfDatalist.action',
  352. params:{
  353. caller:rec.data.jd_caller
  354. },
  355. method:'post',
  356. callback : function(options,success,response){
  357. var rs = new Ext.decode(response.responseText);
  358. if(rs.exceptionInfo){
  359. warnMsg('该单据未配置相关列表,是否配置列表?', function(btn){
  360. if(btn == 'yes'){
  361. me.BaseUtil.getActiveTab().setLoading(true);//loading...
  362. var type=me.FormUtil.contains(rec.data.js_formurl,'single',true)?'single':'multi';
  363. Ext.Ajax.request({
  364. url:basePath+'/custom/ToDatalistByForm.action',
  365. params:{
  366. caller:rec.data.jd_caller,
  367. type:type
  368. },
  369. method:'post',
  370. callback : function(options,success,response){
  371. me.BaseUtil.getActiveTab().setLoading(false);
  372. var localJson = new Ext.decode(response.responseText);
  373. if(localJson.exceptionInfo){
  374. showError(localJson.exceptionInfo);return;
  375. }
  376. if(localJson.success){
  377. Ext.Msg.alert('提示','配置成功!',function(){
  378. openTable(rec.data.jd_processdefinitionname,"jsps/common/datalist.jsp?whoami="+rec.data.jd_caller,rec.data.jd_caller);
  379. });
  380. } else {
  381. delFailure();
  382. }
  383. }
  384. });
  385. }
  386. });
  387. }
  388. if(rs.success){
  389. openTable(rec.data.jd_processdefinitionname,"jsps/common/datalist.jsp?whoami="+rec.data.jd_caller,rec.data.jd_caller);
  390. }
  391. }
  392. });
  393. }
  394. },{
  395. icon: basePath+'/resource/images/icon/execute.png',
  396. tooltip: '查看流程',
  397. style: {
  398. marginLeft: '2px',
  399. width:0,
  400. },
  401. handler: function(grid, rowIndex, colIndex) {
  402. var select= grid.getStore().getAt(rowIndex);;
  403. var formCondition="jd_idIS"+select.data.jd_id;
  404. openTable(select.data.jd_processdefinitionname,"jsps/common/jprocessDeploy.jsp?formCondition="+formCondition,select.data.jd_caller);
  405. // window.open();
  406. }
  407. },{
  408. icon: basePath+'/resource/images/icon/trash.png',
  409. tooltip: '删除流程',
  410. style: {
  411. marginLeft: '2px'
  412. },
  413. handler: function(grid, rowIndex, colIndex) {
  414. var select= grid.getStore().getAt(rowIndex);;
  415. warnMsg('确认要删除该流程吗', function(btn){
  416. if(btn == 'yes'){
  417. me.BaseUtil.getActiveTab().setLoading(true);//loading...
  418. Ext.Ajax.request({
  419. url:basePath+'common/deleteProcessDeploy.action',
  420. params:{
  421. id:select.data.jd_id
  422. },
  423. method:'post',
  424. callback : function(options,success,response){
  425. me.BaseUtil.getActiveTab().setLoading(false);
  426. var localJson = new Ext.decode(response.responseText);
  427. if(localJson.exceptionInfo){
  428. showError(localJson.exceptionInfo);return;
  429. }
  430. if(localJson.success){
  431. delSuccess(function(){
  432. me.loadNewStore(grid,"jd_selfid="+select.data.jd_selfid);
  433. });//@i18n/i18n.js
  434. } else {
  435. delFailure();
  436. }
  437. }
  438. });
  439. }
  440. });
  441. }
  442. }]},{dataIndex:'js_formurl',width:0},{dataIndex:'jd_caller',width:0},{dataIndex:'jd_selfid',width:0}];
  443. }else {
  444. return [{dataIndex:'jd_id',width:0},{dataIndex:'jd_processdefinitionname',renderer:open,header:'流程名称',width:150,flex:1},{xtype:'actioncolumn',width:50,items:[{
  445. icon: basePath+'/resource/images/icon/detail.png', // Use a URL in the icon config
  446. tooltip: '查看列表',
  447. style: {
  448. marginLeft: '2px'
  449. },
  450. handler: function(grid, rowIndex, colIndex) {
  451. var rec = grid.getStore().getAt(rowIndex);
  452. //根据caller查找列表的配置
  453. Ext.Ajax.request({
  454. url:basePath+'/custom/IfDatalist.action',
  455. params:{
  456. caller:rec.data.jd_caller
  457. },
  458. method:'post',
  459. callback : function(options,success,response){
  460. var rs = new Ext.decode(response.responseText);
  461. if(rs.exceptionInfo){
  462. warnMsg('该单据未配置相关列表,是否配置列表?', function(btn){
  463. if(btn == 'yes'){
  464. me.BaseUtil.getActiveTab().setLoading(true);//loading...
  465. var type=me.FormUtil.contains(rec.data.js_formurl,'single',true)?'single':'multi';
  466. Ext.Ajax.request({
  467. url:basePath+'/custom/ToDatalistByForm.action',
  468. params:{
  469. caller:rec.data.jd_caller,
  470. type:type
  471. },
  472. method:'post',
  473. callback : function(options,success,response){
  474. me.BaseUtil.getActiveTab().setLoading(false);
  475. var localJson = new Ext.decode(response.responseText);
  476. if(localJson.exceptionInfo){
  477. showError(localJson.exceptionInfo);return;
  478. }
  479. if(localJson.success){
  480. Ext.Msg.alert('提示','配置成功!',function(){
  481. openTable(rec.data.jd_processdefinitionname,"jsps/common/datalist.jsp?whoami="+rec.data.jd_caller,rec.data.jd_caller);
  482. });
  483. } else {
  484. delFailure();
  485. }
  486. }
  487. });
  488. }
  489. });
  490. }
  491. if(rs.success){
  492. openTable(rec.data.jd_processdefinitionname,"jsps/common/datalist.jsp?whoami="+rec.data.jd_caller,rec.data.jd_caller);
  493. }
  494. }
  495. });
  496. }
  497. }]},{dataIndex:'js_formurl',width:0},{dataIndex:'jd_caller',width:0},{dataIndex:'jd_selfid',width:0}];
  498. }
  499. }
  500. });