ProdTraceKind.js 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.scm.product.ProdTraceKind', {
  3. extend: 'Ext.app.Controller',
  4. requires: ['erp.util.FormUtil', 'erp.util.GridUtil', 'erp.util.BaseUtil'],
  5. views:[
  6. 'core.form.Panel','scm.product.ProdTraceKind','core.grid.Panel2','core.toolbar.Toolbar','core.trigger.MultiDbfindTrigger','core.trigger.HrOrgTreeDbfindTrigger',
  7. 'core.button.Update','core.button.Close','core.trigger.DbfindTrigger','core.trigger.TextAreaTrigger','core.form.YnField', 'core.grid.YnColumn','core.trigger.AddDbfindTrigger',
  8. 'core.form.FileField','core.form.SplitTextField','core.button.End','core.button.ResEnd','core.form.CheckBoxGroup','core.button.TurnMJProject',
  9. 'core.form.MonthDateField'
  10. ],
  11. init:function(){
  12. var me = this;
  13. me.FormUtil = Ext.create('erp.util.FormUtil');
  14. me.GridUtil = Ext.create('erp.util.GridUtil');
  15. me.BaseUtil = Ext.create('erp.util.BaseUtil');
  16. this.control({
  17. 'erpFormPanel': {
  18. alladded: function(form){
  19. var grid = Ext.getCmp('grid');
  20. if(grid)
  21. me.resize(form, grid);
  22. }
  23. },
  24. 'erpGridPanel2': {
  25. itemclick: this.onGridItemClick,
  26. reconfigure: function(grid){
  27. var form = Ext.getCmp('form');
  28. if(form)
  29. me.resize(form, grid);
  30. }
  31. },
  32. 'erpUpdateButton': {
  33. click: function(btn){
  34. this.onUpdate(this);
  35. }
  36. },
  37. 'htmleditor': {
  38. afterrender: function(f){
  39. f.setHeight(500);
  40. }
  41. }
  42. });
  43. },
  44. onGridItemClick: function(selModel, record){//grid行选择
  45. this.GridUtil.onGridItemClick(selModel, record);
  46. },
  47. getForm: function(btn){
  48. return btn.ownerCt.ownerCt;
  49. },
  50. resize: function(form, grid){
  51. if(!this.resized && form && grid && form.items.items.length > 0){
  52. var height = window.innerHeight,
  53. fh = form.getEl().down('.x-panel-body>.x-column-inner').getHeight();
  54. if(Ext.isIE){
  55. height = screen.height*0.75;
  56. }
  57. form.setHeight(70 + fh);
  58. grid.setHeight(height - fh - 70);
  59. this.resized = true;
  60. }
  61. },
  62. onUpdate:function(){
  63. var form = Ext.getCmp('form'), url = form.updateUrl;
  64. var me = this, params = new Object();
  65. if(form.codeField && (Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == '')){
  66. showError('编号不能为空.');
  67. return;
  68. }
  69. var s1 = me.checkFormDirty(form);
  70. if(s1 == ''){
  71. showError('还未添加或修改数据.');
  72. return;
  73. }
  74. var r = form.getValues();
  75. params.formStore = unescape(escape(Ext.JSON.encode(r)));
  76. if(url.indexOf('caller=') == -1){
  77. url = url + "?caller=" + caller;
  78. }
  79. me.setLoading(true);//loading...
  80. Ext.Ajax.request({
  81. url : basePath + url,
  82. params: params,
  83. method : 'post',
  84. callback : function(options,success,response){
  85. me.setLoading(false);
  86. var localJson = new Ext.decode(response.responseText);
  87. if(localJson.success){
  88. showMessage('提示', '保存成功!', 1000);
  89. //update成功后刷新页面进入可编辑的页面
  90. var u = String(window.location.href);
  91. if (u.indexOf('formCondition') == -1) {
  92. var value = r[form.keyField];
  93. var formCondition = form.keyField + "IS" + value ;
  94. var gridCondition = '';
  95. var grid = Ext.getCmp('grid');
  96. if(grid && grid.mainField){
  97. gridCondition = grid.mainField + "IS" + value;
  98. }
  99. if(me.contains(window.location.href, '?', true)){
  100. window.location.href = window.location.href + '&formCondition=' +
  101. formCondition + '&gridCondition=' + gridCondition;
  102. } else {
  103. window.location.href = window.location.href + '?formCondition=' +
  104. formCondition + '&gridCondition=' + gridCondition;
  105. }
  106. } else {
  107. window.location.reload();
  108. }
  109. } else if(localJson.exceptionInfo){
  110. var str = localJson.exceptionInfo;
  111. if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){//特殊情况:操作成功,但是出现警告,允许刷新页面
  112. str = str.replace('AFTERSUCCESS', '');
  113. //update成功后刷新页面进入可编辑的页面
  114. var u = String(window.location.href);
  115. if (u.indexOf('formCondition') == -1) {
  116. var value = r[form.keyField];
  117. var formCondition = form.keyField + "IS" + value ;
  118. var gridCondition = '';
  119. var grid = Ext.getCmp('grid');
  120. if(grid && grid.mainField){
  121. gridCondition = grid.mainField + "IS" + value;
  122. }
  123. if(me.contains(window.location.href, '?', true)){
  124. window.location.href = window.location.href + '&formCondition=' +
  125. formCondition + '&gridCondition=' + gridCondition;
  126. } else {
  127. window.location.href = window.location.href + '?formCondition=' +
  128. formCondition + '&gridCondition=' + gridCondition;
  129. }
  130. } else {
  131. window.location.reload();
  132. }
  133. }
  134. showError(str);return;
  135. } else {
  136. updateFailure();
  137. }
  138. }
  139. });
  140. },
  141. checkFormDirty: function(){
  142. var form = Ext.getCmp('form');
  143. var s = '';
  144. form.getForm().getFields().each(function (item,index, length){
  145. if(item.logic!='ignore'){
  146. var value = item.value == null ? "" : item.value;
  147. if(item.xtype == 'htmleditor') {
  148. value = item.getValue();
  149. }
  150. item.originalValue = item.originalValue == null ? "" : item.originalValue;
  151. if(Ext.typeOf(item.originalValue) != 'object'){
  152. if(item.originalValue.toString() != value.toString()){//isDirty、wasDirty、dirty一直都是true,没办法判断,所以直接用item.originalValue,原理是一样的
  153. var label = item.fieldLabel || item.ownerCt.fieldLabel ||
  154. item.boxLabel || item.ownerCt.title;//针对fieldContainer、radio、fieldset等
  155. if(label){
  156. s = s + ' ' + label.replace(/ /g,'');
  157. }
  158. }
  159. }
  160. }
  161. });
  162. return (s == '') ? s : ('表单字段(<font color=green>'+s+'</font>)已修改');
  163. },
  164. setLoading : function(b) {// 原this.getActiveTab().setLoading()换成此方法,解决Window模式下无loading问题
  165. var mask = this.mask;
  166. if (!mask) {
  167. this.mask = mask = new Ext.LoadMask(Ext.getBody(), {
  168. msg : "处理中,请稍后...",
  169. msgCls : 'z-index:10000;'
  170. });
  171. }
  172. if (b)
  173. mask.show();
  174. else
  175. mask.hide();
  176. },
  177. /**
  178. * string:原始字符串
  179. * substr:子字符串
  180. * isIgnoreCase:忽略大小写
  181. */
  182. contains: function(string, substr, isIgnoreCase){
  183. if (string == null || substr == null) return false;
  184. if (isIgnoreCase === undefined || isIgnoreCase === true) {
  185. string = string.toLowerCase();
  186. substr = substr.toLowerCase();
  187. }
  188. return string.indexOf(substr) > -1;
  189. }
  190. });