VisitRecord2.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.crm.customermgr.customervisit.VisitRecord2', {
  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. 'crm.customermgr.customervisit.VisitRecord2','core.form.Panel','core.grid.Panel2','core.form.FileField','core.form.MultiField',
  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.ResSubmit','erp.view.core.button.AddDetail','erp.view.core.button.DeleteDetail','erp.view.core.button.Copy','erp.view.core.button.Paste','erp.view.core.button.Up',
  11. 'erp.view.core.button.Down','erp.view.core.button.UpExcel',
  12. 'core.button.TurnCustomer','core.button.Flow','core.button.DownLoad','core.button.Scan','common.datalist.Toolbar',
  13. 'core.trigger.DbfindTrigger','core.trigger.MultiDbfindTrigger','core.trigger.TextAreaTrigger','core.form.YnField','core.trigger.AutoCodeTrigger',
  14. 'crm.customermgr.customervisit.RecordDetail','crm.customermgr.customervisit.RecordDetailDet','crm.customermgr.customervisit.ProgressGrid','crm.customermgr.customervisit.InfoGrid','crm.customermgr.customervisit.ChanceDetail',
  15. 'crm.customermgr.customervisit.VisitFeedBack'
  16. ],
  17. init:function(){
  18. var me = this;
  19. me.gridLastSelected = null;
  20. this.control({
  21. 'erpSaveButton': {
  22. click: function(btn){
  23. var form = me.getForm(btn);
  24. if(Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == ''){
  25. me.BaseUtil.getRandomNumber();//自动添加编号
  26. }
  27. //保存之前的一些前台的逻辑判定
  28. this.beforeSave();
  29. }
  30. },
  31. 'erpDeleteButton' : {
  32. click: function(btn){
  33. me.FormUtil.onDelete(Ext.getCmp('vr_id').value);
  34. }
  35. },
  36. 'erpUpdateButton': {
  37. click: function(btn){
  38. //me.updateGood();
  39. this.beforeUpdate();
  40. }
  41. },
  42. 'erpAddButton': {
  43. click: function(){
  44. me.FormUtil.onAdd('addVisitRecord', '新增拜访记录 ', 'jsps/crm/customermgr/customervisit/visitRecord.jsp');
  45. }
  46. },
  47. 'erpCloseButton': {
  48. click: function(btn){
  49. me.FormUtil.beforeClose(me);
  50. }
  51. },
  52. 'erpAuditButton': {
  53. afterrender: function(btn){
  54. var status = Ext.getCmp('vr_statuscode');
  55. if(status && status.value != 'COMMITED'){
  56. btn.hide();
  57. }
  58. },
  59. click: function(btn){
  60. this.FormUtil.onAudit(Ext.getCmp('vr_id').value);
  61. }
  62. },
  63. 'erpResAuditButton': {
  64. afterrender: function(btn){
  65. var status = Ext.getCmp('vr_statuscode');
  66. if(status && status.value != 'AUDITED'){
  67. btn.hide();
  68. }
  69. },
  70. click: function(btn){
  71. this.FormUtil.onResAudit(Ext.getCmp('vr_id').value);
  72. }
  73. },
  74. 'erpSubmitButton': {
  75. afterrender: function(btn){
  76. var status = Ext.getCmp('vr_statuscode');
  77. if(status && status.value != 'ENTERING'){
  78. btn.hide();
  79. }
  80. },
  81. click: function(btn){
  82. this.FormUtil.onSubmit(Ext.getCmp('vr_id').value);
  83. }
  84. },
  85. 'erpResSubmitButton': {
  86. afterrender: function(btn){
  87. var status = Ext.getCmp('vr_statuscode');
  88. if(status && status.value != 'COMMITED'){
  89. btn.hide();
  90. }
  91. },
  92. click: function(btn){
  93. this.FormUtil.onResSubmit(Ext.getCmp('vr_id').value);
  94. }
  95. },
  96. '#vr_prjname':{
  97. change:function(field){
  98. var prjname=Ext.getCmp('vr_prjname').value;
  99. Ext.getCmp('vr_title').setValue(prjname);
  100. }
  101. },
  102. 'dbfindtrigger[name=vr_cuuu]': {
  103. /*afterrender:function(trigger){
  104. trigger.dbKey='prj_code';//dbfind表 关联表 的ID
  105. trigger.dbMessage='请先选择项目!';
  106. }*/
  107. }
  108. });
  109. },
  110. onGridItemClick2: function(selModel,record){
  111. this.onGridItemClick(selModel,record,'recordDetail');
  112. },
  113. onGridItemClick3: function(selModel,record){
  114. this.onGridItemClick(selModel,record,'recordDetailDet');
  115. },
  116. onGridItemClick4: function(selModel,record){
  117. this.onGridItemClick(selModel,record,'ProgressGrid');
  118. },
  119. onGridItemClick5: function(selModel,record){
  120. this.onGridItemClick(selModel,record,'InfoGrid');
  121. },
  122. onGridItemClick6: function(selModel,record){
  123. this.onGridItemClick(selModel,record,'ChanceDetail');
  124. },
  125. onGridItemClick7: function(selModel,record){
  126. this.onGridItemClick(selModel,record,'VisitFeedBack');
  127. },
  128. beforeSave: function(){
  129. var me = this;
  130. var form = Ext.getCmp('form');
  131. if(! me.FormUtil.checkForm()){
  132. return;
  133. }
  134. if(Ext.getCmp(form.keyField).value == null || Ext.getCmp(form.keyField).value == ''){
  135. me.FormUtil.getSeqId(form);
  136. }
  137. var detail1 = Ext.getCmp('InfoGrid');
  138. var detail2 = Ext.getCmp('VisitFeedBack');
  139. var param1 = new Array();
  140. if(detail1){
  141. param1 =me.GridUtil.getGridStore(detail1);
  142. }
  143. var param2 = new Array();
  144. if(detail2){
  145. param2 =me.GridUtil.getGridStore(detail2);
  146. }
  147. param1 = param1 == null ? [] : "[" + param1.toString().replace(/\\/g,"%") + "]";
  148. param2 = param2 == null ? [] : "[" + param2.toString().replace(/\\/g,"%") + "]";
  149. if(form.getForm().isValid()){
  150. Ext.each(form.items.items, function(item){
  151. if(item.xtype == 'numberfield'){
  152. if(item.value == null || item.value == ''){
  153. item.setValue(0);
  154. }
  155. }
  156. });
  157. var r = form.getValues();
  158. me.save(r, param1, param2);
  159. }else{
  160. me.FormUtil.checkForm();
  161. }
  162. },
  163. save: function(){
  164. var params = new Object();
  165. var r = arguments[0];
  166. Ext.each(Ext.Object.getKeys(r), function(k){//去掉页面非表单定义字段
  167. if(contains(k, 'ext-', true)){
  168. delete r[k];
  169. }
  170. });
  171. params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
  172. params.param1 = unescape(arguments[1].toString().replace(/\\/g,"%"));
  173. params.param2 = unescape(arguments[2].toString().replace(/\\/g,"%"));
  174. var me = this;
  175. var form = Ext.getCmp('form');
  176. Ext.Ajax.request({
  177. url : basePath + form.saveUrl,
  178. params : params,
  179. method : 'post',
  180. callback : function(options,success,response){
  181. var localJson = new Ext.decode(response.responseText);
  182. if(localJson.success){
  183. saveSuccess(function(){
  184. //add成功后刷新页面进入可编辑的页面
  185. var value = r[form.keyField];
  186. var formCondition = form.keyField + "IS" + value ;
  187. if(me.contains(window.location.href, '?', true)){
  188. window.location.href = window.location.href + '&formCondition=' +
  189. formCondition+'&gridCondition=vrd_vridIS'+value;
  190. } else {
  191. window.location.href = window.location.href + '?formCondition=' +
  192. formCondition+'&gridCondition=vrd_vridIS'+value;
  193. }
  194. });
  195. } else if(localJson.exceptionInfo){
  196. var str = localJson.exceptionInfo;
  197. if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){//特殊情况:操作成功,但是出现警告,允许刷新页面
  198. str = str.replace('AFTERSUCCESS', '');
  199. saveSuccess(function(){
  200. //add成功后刷新页面进入可编辑的页面
  201. var value = r[form.keyField];
  202. var formCondition = form.keyField + "IS" + value ;
  203. if(me.contains(window.location.href, '?', true)){
  204. window.location.href = window.location.href + '&formCondition=' +
  205. formCondition+'&gridCondition=vrd_vridIS'+value;
  206. } else {
  207. window.location.href = window.location.href + '?formCondition=' +
  208. formCondition+'&gridCondition=vrd_vridIS'+value;
  209. }
  210. });
  211. showError(str);
  212. } else {
  213. showError(str);
  214. return;
  215. }
  216. } else{
  217. saveFailure();//@i18n/i18n.js
  218. }
  219. }
  220. });
  221. },
  222. beforeUpdate: function(){
  223. var me = this;
  224. var form = Ext.getCmp('form');
  225. if(! me.FormUtil.checkForm()){
  226. return;
  227. }
  228. if(Ext.getCmp(form.keyField).value == null || Ext.getCmp(form.keyField).value == ''){
  229. me.FormUtil.getSeqId(form);
  230. }
  231. var detail1 = Ext.getCmp('InfoGrid');
  232. var detail2 = Ext.getCmp('VisitFeedBack');
  233. var param1 = new Array();
  234. if(detail1){
  235. param1 =me.GridUtil.getGridStore(detail1);
  236. }
  237. var param2 = new Array();
  238. if(detail2){
  239. param2 =me.GridUtil.getGridStore(detail2);
  240. }
  241. param1 = param1 == null ? [] : "[" + param1.toString().replace(/\\/g,"%") + "]";
  242. param2 = param2 == null ? [] : "[" + param2.toString().replace(/\\/g,"%") + "]";
  243. if(form.getForm().isValid()){
  244. Ext.each(form.items.items, function(item){
  245. if(item.xtype == 'numberfield'){
  246. if(item.value == null || item.value == ''){
  247. item.setValue(0);
  248. }
  249. }
  250. });
  251. var r = form.getValues();
  252. me.update(r, param1, param2);
  253. }else{
  254. me.FormUtil.checkForm();
  255. }
  256. },
  257. update:function(){
  258. var params = new Object();
  259. var r = arguments[0];
  260. Ext.each(Ext.Object.getKeys(r), function(k){//去掉页面非表单定义字段
  261. if(contains(k, 'ext-', true)){
  262. delete r[k];
  263. }
  264. });
  265. params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
  266. params.param1 = unescape(arguments[1].toString().replace(/\\/g,"%"));
  267. params.param2 = unescape(arguments[2].toString().replace(/\\/g,"%"));
  268. var me = this;
  269. var form = Ext.getCmp('form');
  270. //me.getActiveTab().setLoading(true);//loading...
  271. // console.log(params);
  272. Ext.Ajax.request({
  273. url : basePath + form.updateUrl,
  274. params : params,
  275. method : 'post',
  276. callback : function(options,success,response){
  277. //me.getActiveTab().setLoading(false);
  278. var localJson = new Ext.decode(response.responseText);
  279. if(localJson.success){
  280. saveSuccess(function(){
  281. //add成功后刷新页面进入可编辑的页面
  282. var value = r[form.keyField];
  283. var formCondition = form.keyField + "IS" + value ;
  284. if(me.contains(window.location.href, '?', true)){
  285. window.location.href = window.location.href + '&formCondition=' +
  286. formCondition;
  287. } else {
  288. window.location.href = window.location.href + '?formCondition=' +
  289. formCondition;
  290. }
  291. });
  292. } else if(localJson.exceptionInfo){
  293. var str = localJson.exceptionInfo;
  294. if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){//特殊情况:操作成功,但是出现警告,允许刷新页面
  295. str = str.replace('AFTERSUCCESS', '');
  296. saveSuccess(function(){
  297. //add成功后刷新页面进入可编辑的页面
  298. var value = r[form.keyField];
  299. var formCondition = form.keyField + "IS" + value ;
  300. if(me.contains(window.location.href, '?', true)){
  301. window.location.href = window.location.href + '&formCondition=' +
  302. formCondition;
  303. } else {
  304. window.location.href = window.location.href + '?formCondition=' +
  305. formCondition;
  306. }
  307. });
  308. showError(str);
  309. } else {
  310. showError(str);
  311. return;
  312. }
  313. } else{
  314. saveFailure();//@i18n/i18n.js
  315. }
  316. }
  317. });
  318. },
  319. updateGood:function(){
  320. var vr_good=Ext.getCmp('vr_good');
  321. if(vr_good.getValue()==vr_good.originalValue){
  322. return;
  323. }
  324. Ext.Ajax.request({
  325. url : basePath + 'crm/customermgr/updateVisitRecordGood.action',
  326. params: {id:Ext.getCmp('vr_id').value,vr_good:vr_good.getValue()},
  327. method : 'post',
  328. callback : function(options,success,response){
  329. var localJson = new Ext.decode(response.responseText);
  330. if(localJson.success){
  331. updateSuccess(function(btn){
  332. //update成功后刷新页面进入可编辑的页面
  333. window.location.reload();
  334. });
  335. } else if(localJson.exceptionInfo){
  336. var str = localJson.exceptionInfo;
  337. if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){//特殊情况:操作成功,但是出现警告,允许刷新页面
  338. str = str.replace('AFTERSUCCESS', '');
  339. updateSuccess(function(btn){
  340. //update成功后刷新页面进入可编辑的页面
  341. window.location.reload();
  342. });
  343. }
  344. showError(str);return;
  345. } else {
  346. updateFailure();
  347. }
  348. }
  349. });
  350. },
  351. contains: function(string,substr,isIgnoreCase){
  352. if(isIgnoreCase){
  353. string=string.toLowerCase();
  354. substr=substr.toLowerCase();
  355. }
  356. var startChar=substr.substring(0,1);
  357. var strLen=substr.length;
  358. for(var j=0;j<string.length-strLen+1;j++){
  359. if(string.charAt(j)==startChar){//如果匹配起始字符,开始查找
  360. if(string.substring(j,j+strLen)==substr){//如果从j开始的字符与str匹配,那ok
  361. return true;
  362. }
  363. }
  364. }
  365. return false;
  366. },
  367. getForm: function(btn){
  368. return btn.ownerCt.ownerCt;
  369. }
  370. });