ProjectScheme.js 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.plm.project.ProjectScheme', {
  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. 'core.form.Panel','plm.project.ProjectScheme',
  9. 'core.button.Save','core.button.Add','core.button.Submit','core.button.Print','core.button.Upload','core.button.ResAudit',
  10. 'core.button.Audit','core.button.Close','core.button.Delete','core.button.Update','core.button.DeleteDetail','core.button.ResSubmit',
  11. 'core.form.CheckBoxGroup','core.trigger.DbfindTrigger','core.form.MultiField','core.toolbar.Toolbar','core.form.FileField',
  12. 'core.trigger.TextAreaTrigger','core.form.YnField','core.form.SpecialContainField','core.grid.ItemGrid','core.form.CheckBoxGroupEndwithS'
  13. ],
  14. init:function(){
  15. var me = this;
  16. this.control({
  17. 'erpSaveButton': {
  18. click: function(btn){
  19. var form = me.getForm(btn);
  20. if(Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == ''){
  21. me.BaseUtil.getRandomNumber();//自动添加编号
  22. }
  23. this.FormUtil.beforeSave(this);
  24. }
  25. },
  26. 'erpDeleteButton' : {
  27. afterrender: function(btn){
  28. var status = Ext.getCmp('pe_statuscode');
  29. if(status && status.value != 'ENTERING'){
  30. btn.hide();
  31. }
  32. },
  33. click: function(btn){
  34. me.FormUtil.onDelete(Ext.getCmp('pe_id').value);
  35. }
  36. },
  37. 'erpUpdateButton': {
  38. afterrender: function(btn){
  39. var status = Ext.getCmp('pe_statuscode');
  40. if(status && status.value != 'ENTERING'){
  41. btn.hide();
  42. }
  43. },
  44. click: function(btn){
  45. //me.FormUtil.onUpdate(this);
  46. me.onUpdate(this);
  47. }
  48. },
  49. 'erpAddButton': {
  50. click: function(){
  51. me.FormUtil.onAdd('addProjectEvaluation', '新增项目方案库', 'jsps/plm/project/projectScheme.jsp?whoami=ProjectScheme');
  52. }
  53. },
  54. 'erpCloseButton': {
  55. click: function(btn){
  56. me.FormUtil.beforeClose(me);
  57. }
  58. },
  59. 'erpSubmitButton': {
  60. afterrender: function(btn){
  61. var status = Ext.getCmp('pe_statuscode');
  62. if(status && status.value != 'ENTERING'){
  63. btn.hide();
  64. }
  65. },
  66. click: function(btn){
  67. me.FormUtil.onSubmit(Ext.getCmp('pe_id').value);
  68. }
  69. },
  70. 'erpResSubmitButton': {
  71. afterrender: function(btn){
  72. var status = Ext.getCmp('pe_statuscode');
  73. if(status && status.value != 'COMMITED'){
  74. btn.hide();
  75. }
  76. },
  77. click: function(btn){
  78. me.FormUtil.onResSubmit(Ext.getCmp('pe_id').value);
  79. }
  80. },
  81. 'erpAuditButton': {
  82. afterrender: function(btn){
  83. var status = Ext.getCmp('pe_statuscode');
  84. if(status && status.value != 'COMMITED'){
  85. btn.hide();
  86. }
  87. },
  88. click: function(btn){
  89. me.FormUtil.onAudit(Ext.getCmp('pe_id').value);
  90. }
  91. },
  92. 'erpResAuditButton': {
  93. afterrender: function(btn){
  94. var status = Ext.getCmp('pe_statuscode');
  95. if(status && status.value != 'AUDITED'){
  96. btn.hide();
  97. }
  98. },
  99. click: function(btn){
  100. me.FormUtil.onResAudit(Ext.getCmp('pe_id').value);
  101. }
  102. }
  103. });
  104. },
  105. getForm: function(btn){
  106. return btn.ownerCt.ownerCt;
  107. },
  108. onUpdate: function(me){
  109. var mm = this;
  110. var form = Ext.getCmp('form');
  111. var s2 = '';
  112. var grids = Ext.ComponentQuery.query('gridpanel');
  113. var removea = new Array();
  114. Ext.each(grids,function(g,index){
  115. if(g.xtype=='itemgrid'){
  116. g.updateValue();
  117. removea.push(g);
  118. }
  119. });
  120. Ext.each(removea,function(r,index){
  121. Ext.Array.remove(grids,r);
  122. });
  123. if(grids.length > 0){//check所有grid是否已修改
  124. Ext.each(grids, function(grid, index){
  125. if(grid.GridUtil){
  126. var msg = grid.GridUtil.checkGridDirty(grid);
  127. if(msg.length > 0){
  128. s2 = s2 + '<br/>' + grid.GridUtil.checkGridDirty(grid);
  129. }
  130. }
  131. });
  132. }
  133. if(form && form.getForm().isValid()){
  134. //form里面数据
  135. var r = form.getValues(false, true);
  136. //去除ignore字段
  137. var keys = Ext.Object.getKeys(r), f;
  138. Ext.each(keys, function(k){
  139. f = form.down('#' + k);
  140. if(f && f.logic == 'ignore') {
  141. delete r[k];
  142. }
  143. });
  144. if(!mm.FormUtil.contains(form.updateUrl, '?caller=', true)){
  145. form.updateUrl = form.updateUrl + "?caller=" + caller;
  146. }
  147. var params = [];
  148. if(grids.length > 0){
  149. var param = grids[0].GridUtil.getGridStore();
  150. if(grids[0].necessaryField.length > 0 && (param == null || param == '')){
  151. warnMsg('明细表还未添加数据,是否继续?', function(btn){
  152. if(btn == 'yes'){
  153. params = unescape("[" + param.toString().replace(/\\/g,"%") + "]");
  154. } else {
  155. return;
  156. }
  157. });
  158. } else {
  159. params = unescape("[" + param.toString().replace(/\\/g,"%") + "]");
  160. }
  161. }
  162. mm.update(r, params);
  163. }else{
  164. mm.checkForm(form);
  165. }
  166. },
  167. update: function(){
  168. var me = this, params = new Object();
  169. var r = arguments[0];
  170. Ext.each(Ext.Object.getKeys(r), function(k){//去掉页面非表单定义字段
  171. if(contains(k, 'ext-', true)){
  172. delete r[k];
  173. }
  174. });
  175. params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
  176. params.param = unescape(arguments[1].toString().replace(/\\/g,"%"));
  177. for(var i=2; i<arguments.length; i++) { //兼容多参数
  178. params['param' + i] = unescape(arguments[i].toString().replace(/\\/g,"%"));
  179. }
  180. var form = Ext.getCmp('form');
  181. me.FormUtil.setLoading(true);//loading...
  182. Ext.Ajax.request({
  183. url : basePath + form.updateUrl,
  184. params: params,
  185. method : 'post',
  186. callback : function(options,success,response){
  187. me.FormUtil.setLoading(false);
  188. var localJson = new Ext.decode(response.responseText);
  189. if(localJson.success){
  190. showMessage('提示', '保存成功!', 1000);
  191. //update成功后刷新页面进入可编辑的页面
  192. var u = String(window.location.href);
  193. if (u.indexOf('formCondition') == -1) {
  194. var value = r[form.keyField];
  195. var formCondition = form.keyField + "IS" + value ;
  196. var gridCondition = '';
  197. var grid = Ext.getCmp('grid');
  198. if(grid && grid.mainField){
  199. gridCondition = grid.mainField + "IS" + value;
  200. }
  201. if(me.FormUtil.contains(window.location.href, '?', true)){
  202. window.location.href = window.location.href + '&formCondition=' +
  203. formCondition + '&gridCondition=' + gridCondition;
  204. } else {
  205. window.location.href = window.location.href + '?formCondition=' +
  206. formCondition + '&gridCondition=' + gridCondition;
  207. }
  208. } else {
  209. window.location.reload();
  210. }
  211. } else if(localJson.exceptionInfo){
  212. var str = localJson.exceptionInfo;
  213. if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){//特殊情况:操作成功,但是出现警告,允许刷新页面
  214. str = str.replace('AFTERSUCCESS', '');
  215. //update成功后刷新页面进入可编辑的页面
  216. var u = String(window.location.href);
  217. if (u.indexOf('formCondition') == -1) {
  218. var value = r[form.keyField];
  219. var formCondition = form.keyField + "IS" + value ;
  220. var gridCondition = '';
  221. var grid = Ext.getCmp('grid');
  222. if(grid && grid.mainField){
  223. gridCondition = grid.mainField + "IS" + value;
  224. }
  225. if(me.FormUtil.contains(window.location.href, '?', true)){
  226. window.location.href = window.location.href + '&formCondition=' +
  227. formCondition + '&gridCondition=' + gridCondition;
  228. } else {
  229. window.location.href = window.location.href + '?formCondition=' +
  230. formCondition + '&gridCondition=' + gridCondition;
  231. }
  232. } else {
  233. window.location.reload();
  234. }
  235. }
  236. showError(str);return;
  237. } else {
  238. updateFailure();
  239. }
  240. }
  241. });
  242. }
  243. });