ProjectPlan.js 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.plm.project.ProjectPlan', {
  3. extend: 'Ext.app.Controller',
  4. FormUtil: Ext.create('erp.util.FormUtil'),
  5. GridUtil: Ext.create('erp.util.GridUtil'),
  6. BaseUtil: Ext.create('erp.util.BaseUtil'),
  7. views:[
  8. 'plm.project.ProjectPlan','core.form.Panel','core.button.ExportTemplate','core.grid.Panel2','core.grid.Panel5',
  9. 'core.button.Add','core.button.Submit','core.button.Audit','core.button.Save','core.button.Close','core.button.Print',
  10. 'core.button.ResSubmit','core.button.Update','core.button.Delete','core.button.ResAudit',
  11. 'core.trigger.TextAreaTrigger','core.trigger.DbfindTrigger','core.button.TurnProjectReview'
  12. ],
  13. init:function(){
  14. var me=this;
  15. this.control({
  16. 'erpSaveButton': {
  17. click: function(btn){
  18. this.save(btn);
  19. }
  20. },
  21. 'erpCloseButton': {
  22. afterrender:function(btn){
  23. if(Ext.getCmp('prjplan_ptid').getValue()!=0){
  24. Ext.getCmp('prjplan_prjid').hide();
  25. }else Ext.getCmp('prjplan_ptid').hide();
  26. Ext.getCmp('prjplan_description').setHeight(350);
  27. var statuscode=Ext.getCmp('prjplan_statuscode').getValue();
  28. if(statuscode!='ENTERING'){
  29. var grids = Ext.ComponentQuery.query('gridpanel');
  30. Ext.Array.each(grids,function(grid){
  31. grid.setReadOnly(true);
  32. });
  33. }
  34. },
  35. click: function(btn){
  36. this.FormUtil.beforeClose(this);
  37. }
  38. },
  39. 'erpUpdateButton': {
  40. click: function(btn){
  41. this.FormUtil.onUpdate(this);
  42. },
  43. afterrender:function(btn){
  44. var statuscode=Ext.getCmp('prjplan_statuscode').getValue();
  45. if(statuscode!='ENTERING'){
  46. btn.hide();
  47. }
  48. }
  49. },
  50. 'erpDeleteButton': {
  51. click: function(btn){
  52. this.FormUtil.onDelete({prj_id: Number(Ext.getCmp('prjplan_id').value)});
  53. },
  54. afterrender:function(btn){
  55. var statuscode=Ext.getCmp('prjplan_statuscode').getValue();
  56. if(statuscode!='ENTERING'){
  57. btn.hide();
  58. }
  59. }
  60. },
  61. 'erpSubmitButton':{
  62. click:function(btn){
  63. this.FormUtil.onSubmit(Ext.getCmp('prjplan_id').getValue());
  64. },
  65. afterrender:function(btn){
  66. var statuscode=Ext.getCmp('prjplan_statuscode').getValue();
  67. if(statuscode!='ENTERING'){
  68. btn.hide();
  69. }
  70. }
  71. },
  72. 'erpResSubmitButton':{
  73. click:function(btn){
  74. this.FormUtil.onResSubmit(Ext.getCmp('prjplan_id').getValue());
  75. },
  76. afterrender:function(btn){
  77. var statuscode=Ext.getCmp('prjplan_statuscode').getValue();
  78. if(statuscode!='COMMITED'){
  79. btn.hide();
  80. }
  81. }
  82. },
  83. 'erpAuditButton':{
  84. click:function(btn){
  85. this.FormUtil.onAudit(Ext.getCmp('prjplan_id').getValue());
  86. },
  87. afterrender:function(btn){
  88. var statuscode=Ext.getCmp('prjplan_statuscode').getValue();
  89. if(statuscode!='COMMITED'){
  90. btn.hide();
  91. }
  92. }
  93. },
  94. 'erpResAuditButton':{
  95. click:function(btn){
  96. this.FormUtil.onResAudit(Ext.getCmp('prjplan_id').getValue());
  97. },
  98. afterrender:function(btn){
  99. var statuscode=Ext.getCmp('prjplan_statuscode').getValue();
  100. if(statuscode!='AUDITED'){
  101. btn.hide();
  102. }
  103. }
  104. },
  105. 'erpExportTemplateButton': {
  106. click: function(btn){
  107. if(!this.pressed){
  108. Ext.getCmp('prjplan_ptid').show();
  109. Ext.getCmp('prjplan_prjid').setValue(0);
  110. Ext.getCmp('prjplan_prjid').hide();
  111. Ext.getCmp('prjplan_organiger').addCls('x-form-search-trigger');
  112. this.pressed=true;
  113. }else{
  114. Ext.getCmp('prjplan_ptid').hide();
  115. Ext.getCmp('prjplan_ptid').setValue(0);
  116. Ext.getCmp('prjplan_prjid').show();
  117. Ext.getCmp('prjplan_organiger').removeCls('x-form-search-trigger');
  118. this.pressed=false;
  119. }
  120. }
  121. },
  122. 'erpTurnProjectReviewButton':{
  123. afterrender:function(btn){
  124. var statuscode=Ext.getCmp('prjplan_statuscode').getValue();
  125. if(statuscode!='AUDITED'){
  126. btn.hide();
  127. }
  128. },
  129. click:function(btn){
  130. var form=me.getForm(btn);
  131. var id=Ext.getCmp('prjplan_id').getValue();
  132. Ext.Ajax.request({
  133. method:'POST',
  134. url:basePath+form.turnReviewItemUrl,
  135. params:{
  136. id:id
  137. },
  138. callback : function(options,success,response){
  139. var rs = new Ext.decode(response.responseText);
  140. if(rs.exceptionInfo){
  141. showError(rs.exceptionInfo);return;
  142. }
  143. if(rs.success){
  144. Ext.Msg.alert('提示','转评审成功!单号为:'+rs.code,function(){
  145. window.location.reload();
  146. });
  147. }
  148. }
  149. });
  150. }
  151. },
  152. 'dbfindtrigger[name=prjplan_organiger]':{
  153. beforerender:function(dbfindtrigger){
  154. }
  155. },
  156. 'hidden[name=prjplan_id]':{
  157. afterrender:function(field){
  158. if(field.value){
  159. var grid=Ext.getCmp('team');
  160. var param={
  161. caller:grid.caller,
  162. condition:grid.mainField+"="+field.value
  163. };
  164. me.GridUtil.loadNewStore(grid,param);
  165. }
  166. }
  167. },
  168. 'dbfindtrigger[name=prjplan_prjid]':{
  169. afterrender:function(dbfindtrigger){
  170. dbfindtrigger.dbBaseCondition="prj_statuscode IS 'AUDITED'";
  171. },
  172. }
  173. });
  174. },
  175. getForm: function(btn){
  176. return btn.ownerCt.ownerCt;
  177. },
  178. save: function(btn){
  179. var me = this;
  180. if(Ext.getCmp('prjplan_code').value == null || Ext.getCmp('prjplan_code').value == ''){
  181. me.BaseUtil.getRandomNumber();
  182. }
  183. var mm = me.FormUtil;
  184. var form = Ext.getCmp('form');
  185. if(! mm.checkForm()){
  186. return;
  187. }
  188. if(form.keyField){
  189. if(Ext.getCmp(form.keyField).value == null || Ext.getCmp(form.keyField).value == ''){
  190. mm.getSeqId(form);
  191. }
  192. }
  193. var grids = Ext.ComponentQuery.query('gridpanel');
  194. var arg=new Array();
  195. if(grids.length > 0){
  196. for(var i=0;i<grids.length;i++){
  197. var param = me.GridUtil.getGridStore(grids[i]);
  198. if(grids[i].necessaryField.length > 0 && (param == null || param == '')){
  199. arg.push([]);
  200. } else {
  201. arg.push(param);
  202. }
  203. }
  204. me.onSave(arg[0],arg[1]);
  205. }else {
  206. me.onSave([]);
  207. }
  208. },
  209. onSave:function(param,param1){
  210. var me = this;
  211. var form = Ext.getCmp('form');
  212. param = param == null ? [] : "[" + param.toString() + "]";
  213. param1 = param1 == null ? [] : "[" + param1.toString() + "]";
  214. if(form.getForm().isValid()){
  215. //form里面数据
  216. Ext.each(form.items.items, function(item){
  217. if(item.xtype == 'numberfield'){
  218. //number类型赋默认值,不然sql无法执行
  219. if(item.value == null || item.value == ''){
  220. item.setValue(0);
  221. }
  222. }
  223. });
  224. var r = form.getValues();
  225. //去除ignore字段
  226. var keys = Ext.Object.getKeys(r), f;
  227. var reg = /[!@#$%^&*()'":,\/?]/;
  228. Ext.each(keys, function(k){
  229. f = form.down('#' + k);
  230. if(f && f.logic == 'ignore') {
  231. delete r[k];
  232. }
  233. //codeField值强制大写,自动过滤特殊字符
  234. if(k == form.codeField && !Ext.isEmpty(r[k])) {
  235. r[k] = r[k].trim().toUpperCase().replace(reg, '');
  236. }
  237. });
  238. if(!me.FormUtil.contains(form.saveUrl, '?caller=', true)){
  239. form.saveUrl = form.saveUrl + "?caller=" + caller;
  240. }
  241. me.FormUtil.save(r,param,param1);
  242. }else{
  243. me.FormUtil.checkForm();
  244. }
  245. }
  246. });