PreRec.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.fa.ars.PreRec', {
  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','fa.ars.PreRec','core.grid.Panel2','core.toolbar.Toolbar', 'core.form.SeparNumber',
  9. 'core.button.Save','core.button.Add','core.button.Close','core.button.Delete','core.button.Submit','core.button.ResAudit',
  10. 'core.button.Audit','core.button.ResSubmit','core.button.Post','core.button.ResPost','core.button.Update','core.button.DeleteDetail',
  11. 'core.trigger.DbfindTrigger','core.trigger.TextAreaTrigger','core.form.YnField','core.button.ResAccounted','core.button.AssMain','core.button.Accounted','core.button.StrikeBalance',
  12. 'core.trigger.CateTreeDbfindTrigger','core.trigger.HrOrgTreeDbfindTrigger','core.button.Print','core.button.AssDetail','core.button.GetSumAmount'
  13. ],
  14. init:function(){
  15. var me = this;
  16. me.gridLastSelected = null;
  17. this.control({
  18. 'erpGridPanel2': {
  19. itemclick:function(selModel, record){
  20. me.onGridItemClick(selModel, record);
  21. var btn = Ext.getCmp('assdetail');
  22. var ass = record.data['ca_asstype'];
  23. if(!Ext.isEmpty(ass)){
  24. btn.setDisabled(false);
  25. } else {
  26. btn.setDisabled(true);
  27. }
  28. }
  29. },
  30. 'erpGetSumAmountButton':{
  31. click: function(btn){
  32. var grid = Ext.getCmp("grid"),items = grid.store.data.items;
  33. var detailamount1 = 0;
  34. Ext.each(items,function(item,index){
  35. if(!me.GridUtil.isBlank(grid,item.data)) {
  36. detailamount1 = detailamount1 + Number(item.data['prd_nowbalance']);
  37. }
  38. });
  39. Ext.getCmp("pr_amount").setValue(detailamount1);
  40. Ext.getCmp("pr_cmamount").setValue(detailamount1);
  41. }
  42. },
  43. 'erpAssMainButton':{
  44. afterrender:function(btn){
  45. if(Ext.getCmp('ca_asstype').getValue()==null||Ext.getCmp('ca_asstype').getValue()==""){
  46. btn.setDisabled(true);
  47. }else{
  48. btn.setDisabled(false);
  49. }
  50. }
  51. },
  52. 'erpSaveButton': {
  53. click: function(btn){
  54. var form = me.getForm(btn);
  55. if(Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == ''){
  56. /*Ext.getCmp(form.codeField).setValue(me.BaseUtil.getRandomNumber());*///自动添加编号
  57. me.BaseUtil.getRandomNumber();
  58. }
  59. me.getJsamount();
  60. //保存之前的一些前台的逻辑判定
  61. this.beforeSaveAccountRegister();
  62. }
  63. },
  64. 'erpDeleteDetailButton': {
  65. afterrender: function(btn){
  66. //辅助核算
  67. btn.ownerCt.add({
  68. xtype:'erpAssDetailButton',
  69. disabled:true
  70. });
  71. }
  72. },
  73. 'erpDeleteButton' : {
  74. click: function(btn){
  75. me.FormUtil.onDelete(Ext.getCmp('pr_id').value);
  76. }
  77. },
  78. 'erpPostButton' : {
  79. afterrender: function(btn){
  80. var status = Ext.getCmp(me.getForm(btn).statusCode);
  81. if(status && status.value == 'UNPOST'){
  82. btn.show();
  83. }else{
  84. btn.hide();
  85. }
  86. },
  87. click: function(btn){
  88. var amount = Number(Ext.getCmp('pr_amount').getValue());
  89. var cmamount =Number(Ext.getCmp('pr_cmamount').getValue());
  90. var cmcurrency = Ext.getCmp('pr_cmcurrency').getValue();
  91. var cmrate = Number(Ext.getCmp('pr_cmrate').getValue());
  92. var currency = Ext.getCmp('pr_currency').getValue();
  93. if(amount != 0 && cmamount != 0){
  94. if(Ext.Number.toFixed(cmrate, 8)!= Ext.Number.toFixed(cmamount/amount, 8)){
  95. showError('冲账汇率不正确,不能过账!');
  96. return;
  97. }
  98. }
  99. if(currency == cmcurrency){
  100. if(cmrate != 1){
  101. showError('币别相同,冲账汇率不等于1,不能过账!');
  102. return;
  103. }
  104. }
  105. if(currency != cmcurrency){
  106. if(cmrate == 1){
  107. showError('币别不相同,冲账汇率等于1,不能过账!');
  108. return;
  109. }
  110. }
  111. me.FormUtil.onPost(Ext.getCmp('pr_id').value);
  112. }
  113. },
  114. 'erpResPostButton' : {
  115. afterrender: function(btn){
  116. var status = Ext.getCmp(me.getForm(btn).statusCode);
  117. if(status && status.value == 'POSTED'){
  118. btn.show();
  119. }else{
  120. btn.hide();
  121. }
  122. },
  123. click: function(btn){
  124. me.FormUtil.onResPost(Ext.getCmp('pr_id').value);
  125. }
  126. },
  127. 'erpUpdateButton': {
  128. click: function(btn){
  129. me.getJsamount();
  130. me.beforeUpdate();
  131. }
  132. },
  133. 'erpAddButton': {
  134. click: function(){
  135. var form = Ext.getCmp('form');
  136. var title = '新增';
  137. if(form){
  138. if(form.title){
  139. title = title+form.title;
  140. }
  141. }
  142. me.FormUtil.onAdd('addPreRec', title, 'jsps/fa/ars/preRec.jsp?whoami='+caller);
  143. }
  144. },
  145. 'erpCloseButton': {
  146. click: function(btn){
  147. me.FormUtil.beforeClose(me);
  148. }
  149. },
  150. 'erpSubmitButton': {
  151. afterrender: function(btn){
  152. var auditStatus = Ext.getCmp(me.getForm(btn).auditStatusCode);
  153. if(auditStatus && auditStatus.value != 'ENTERING'){
  154. btn.hide();
  155. }
  156. },
  157. click: function(btn){
  158. var amount = Number(Ext.getCmp('pr_amount').getValue());
  159. var cmamount =Number(Ext.getCmp('pr_cmamount').getValue());
  160. var cmcurrency = Ext.getCmp('pr_cmcurrency').getValue();
  161. var cmrate = Number(Ext.getCmp('pr_cmrate').getValue());
  162. var currency = Ext.getCmp('pr_currency').getValue();
  163. if(amount != 0 && cmamount != 0){
  164. if(Ext.Number.toFixed(cmrate, 8)!= Ext.Number.toFixed(cmamount/amount, 8)){
  165. showError('冲账汇率不正确,不能提交!');
  166. return;
  167. }
  168. }
  169. if(currency == cmcurrency){
  170. if(cmrate != 1){
  171. showError('币别相同,冲账汇率不等于1,不能提交!');
  172. return;
  173. }
  174. }
  175. if(currency != cmcurrency){
  176. if(cmrate == 1){
  177. showError('币别不相同,冲账汇率等于1,不能提交!');
  178. return;
  179. }
  180. }
  181. me.onSubmit(Ext.getCmp('pr_id').value);
  182. }
  183. },
  184. 'erpResSubmitButton': {
  185. afterrender: function(btn){
  186. var auditStatus = Ext.getCmp(me.getForm(btn).auditStatusCode);
  187. if(auditStatus && auditStatus.value != 'COMMITED'){
  188. btn.hide();
  189. }
  190. },
  191. click: function(btn){
  192. me.FormUtil.onResSubmit(Ext.getCmp('pr_id').value);
  193. }
  194. },
  195. 'erpAuditButton': {
  196. afterrender: function(btn){
  197. var auditStatus = Ext.getCmp(me.getForm(btn).auditStatusCode);
  198. if(auditStatus && auditStatus.value != 'COMMITED'){
  199. btn.hide();
  200. }
  201. },
  202. click: function(btn){
  203. me.FormUtil.onAudit(Ext.getCmp('pr_id').value);
  204. }
  205. },
  206. 'erpResAuditButton': {
  207. afterrender: function(btn){
  208. var auditStatus = Ext.getCmp(me.getForm(btn).auditStatusCode);
  209. if(auditStatus && auditStatus.value != 'AUDITED'){
  210. btn.hide();
  211. }
  212. },
  213. click: function(btn){
  214. me.FormUtil.onResAudit(Ext.getCmp('pr_id').value);
  215. }
  216. },
  217. 'erpPrintButton': {
  218. click: function(btn){
  219. me.FormUtil.onPrint(Ext.getCmp('pr_id').value);
  220. }
  221. },
  222. 'textfield[name=pr_amount]':{
  223. change: me.changeCmamount
  224. },
  225. 'textfield[name=pr_cmrate]':{
  226. change: me.changeCmamount
  227. },
  228. 'cateTreeDbfindTrigger[name=pr_accountcode]':{
  229. aftertrigger:function(trigger, data){
  230. Ext.getCmp('pr_accountname').setValue(data[0].raw.data.ca_name);
  231. var asstype = data[0].raw.data.ca_asstype;
  232. var btn = Ext.getCmp("assmainbutton");
  233. if(Ext.isEmpty(asstype)){
  234. btn.setDisabled(true);
  235. }else{
  236. btn.setDisabled(false);
  237. }
  238. }
  239. },
  240. 'field[name=prd_ordercode]': {
  241. aftertrigger: function(){
  242. var grid = Ext.getCmp('grid');
  243. var record = grid.selModel.lastSelected;
  244. var data = record.data['prd_orderamount']-record.data['sa_prepayamount'];
  245. record.set('prd_nowbalance', data);
  246. },
  247. afterrender: function(t){
  248. t.gridKey="pr_custcode";
  249. t.mappinggirdKey="sa_custcode";
  250. t.gridErrorMessage="请先选择客户";
  251. }
  252. },
  253. 'textfield[name=pr_amount]':{
  254. change: function(){
  255. me.changeCmrateOrCmamount();
  256. }
  257. },
  258. 'textfield[name=pr_cmrate]':{
  259. change: function(){
  260. me.changeCmrateOrCmamount();
  261. }
  262. },
  263. 'textfield[name=pr_cmamount]':{
  264. change: function(){
  265. me.changeCmrateOrCmamount();
  266. }
  267. }/*,
  268. 'dbfindtrigger[name=pr_custcode]':{
  269. //pr_beginlast
  270. beforetrigger:function(t){
  271. if(caller =='PreRec!Ars!DEPR'){
  272. var dateField = Ext.getCmp('pr_date');
  273. var dateStr = dateField.rawValue; // 2013-03-19
  274. var s=dateStr.split('-');
  275. var config =''; //得到的月份其次 格式为 201303
  276. Ext.each(s,function(i,index){
  277. config=config+i+'';
  278. });
  279. if(config.length>6){
  280. config=config.substring(0,6);
  281. }
  282. // t.findConfig = " cu_code in (select distinct cm_custcode from custmonth where cm_yearmonth<='"+config+"' and cm_beginlast >0)";
  283. t.findConfig = " ca_prepayamount>0 and cu_auditstatuscode='AUDITED' group by cu_id,cu_code,cu_name,cu_sellerid,cu_sellername ";
  284. }
  285. }
  286. }*/
  287. });
  288. },
  289. changeCmrateOrCmamount: function () {
  290. var me = this;
  291. if(Ext.getCmp('pr_cmrate').readOnly){
  292. me.changeCmrate();
  293. }else{
  294. me.changeCmamount();
  295. }
  296. },
  297. changeCmrate:function () {
  298. if(Ext.getCmp('pr_cmamount')&&Ext.getCmp('pr_amount')&&Ext.getCmp('pr_cmrate')){
  299. var cmamount = Ext.getCmp('pr_cmamount').getValue();;
  300. var amount = Ext.getCmp('pr_amount').getValue();
  301. var rate = Number(cmamount/amount);
  302. rate = Ext.Number.toFixed(rate,8);
  303. Ext.getCmp('pr_cmrate').setValue(rate);
  304. }
  305. },
  306. //计算冲账金额 = 预收金额*冲账汇率
  307. changeCmamount:function(){
  308. if(Ext.getCmp('pr_amount')&&Ext.getCmp('pr_cmrate')){
  309. var pramount = Ext.getCmp('pr_amount').getValue();
  310. var prcmrate = Ext.getCmp('pr_cmrate').getValue();
  311. if(!Ext.isNumber(pramount)){
  312. pramount = Ext.Number.from(pramount,0);
  313. }
  314. if(!Ext.isNumber(prcmrate)){
  315. prcmrate = Ext.Number.from(prcmrate,0);
  316. }
  317. var cmamount = pramount*prcmrate;
  318. Ext.getCmp('pr_cmamount').setValue(Ext.util.Format.number(cmamount,'0.00'));
  319. }
  320. },
  321. onGridItemClick: function(selModel, record){//grid行选择
  322. this.gridLastSelected = record;
  323. var grid = Ext.getCmp('grid');
  324. if(record.data[grid.necessaryField] == null || record.data[grid.necessaryField] == ''){
  325. this.gridLastSelected.findable = true;//空数据可以在输入完code,并移开光标后,自动调出该条数据
  326. } else {
  327. this.gridLastSelected.findable = false;
  328. }
  329. this.GridUtil.onGridItemClick(selModel, record);
  330. },
  331. getForm: function(btn){
  332. return btn.ownerCt.ownerCt;
  333. },
  334. beforeSaveAccountRegister: function(){
  335. var me = this;
  336. var grid = Ext.getCmp('grid');
  337. var items = grid.store.data.items;
  338. var bool = true;
  339. var warnStr='';
  340. Ext.each(items,function(item,index){
  341. if(item.dirty && item.data[grid.necessaryField] != null && item.data[grid.necessaryField] != ''){
  342. var orderamount =item.data['prd_orderamount']; //订单金额
  343. var havebalance = item.data['sa_prepayamount']; //已预收金额prd_havebalance
  344. var nowbalance = item.data['prd_nowbalance']; //本次预收额
  345. //订单金额>=已预收金额+本次预收额
  346. //此种情况不能进行保存
  347. if(havebalance+nowbalance>orderamount){
  348. var i = index+1;
  349. if(warnStr ==''||warnStr.length<=0){
  350. warnStr = warnStr +i;
  351. }else{
  352. warnStr = warnStr +','+i;
  353. }
  354. bool = false;
  355. }
  356. }
  357. });
  358. if(bool){
  359. me.beforeSave(this);
  360. }else{
  361. if(warnStr != ''||warnStr.length>0){
  362. showError('明细表第'+warnStr+'行 已预收金额与本次预收额的合计超过订单金额,不能保存');return;
  363. }
  364. }
  365. },
  366. getJsamount: function(){
  367. var grid = Ext.getCmp('grid');
  368. var items = grid.store.data.items;
  369. var jsamount = 0;
  370. var detailcount = 0;
  371. var cateamount = 0;
  372. Ext.each(items,function(item,index){
  373. if(item.data['prd_catecode']!=null&&item.data['prd_catecode']!=""){
  374. cateamount = cateamount + Number(item.data['prd_nowbalance']);
  375. }
  376. });
  377. Ext.getCmp('pr_jsamount').setValue(Ext.Number.from(Ext.getCmp('pr_cmamount').getValue())-cateamount);
  378. },
  379. beforeSave:function(){
  380. var me = this;
  381. var form = Ext.getCmp('form');
  382. if(! me.FormUtil.checkForm()){
  383. return;
  384. }
  385. if(Ext.getCmp(form.keyField).value == null || Ext.getCmp(form.keyField).value == ''){
  386. me.FormUtil.getSeqId(form);
  387. }
  388. var detail = Ext.getCmp('grid');
  389. var param2 = new Array();
  390. var param3 = new Array();
  391. if(Ext.getCmp('assdetail')){
  392. Ext.each(Ext.Object.getKeys(Ext.getCmp('assdetail').cacheStoreGrid), function(key){
  393. Ext.each(Ext.getCmp('assdetail').cacheStoreGrid[key], function(d){
  394. d['dass_condid'] = key;
  395. param2.push(d);
  396. });
  397. });
  398. }
  399. if(Ext.getCmp('assmainbutton')){
  400. Ext.each(Ext.Object.getKeys(Ext.getCmp('assmainbutton').cacheStoreForm), function(key){
  401. Ext.each(Ext.getCmp('assmainbutton').cacheStoreForm[key], function(d){
  402. d['ass_conid'] = key;
  403. param3.push(d);
  404. });
  405. });
  406. }
  407. Ext.each(detail.store.data.items, function(item){
  408. if(item.data.prd_id == null || item.data.prd_id == 0){
  409. item.data.prd_id = -item.index;
  410. }
  411. });
  412. var param1 = me.GridUtil.getGridStore(detail);
  413. if(detail.necessaryField.length > 0 && (param1.length == 0)){
  414. showError($I18N.common.grid.emptyDetail);
  415. return;
  416. }
  417. me.onSave(form, param1, param2,param3);
  418. },
  419. onSave: function(form, param1, param2,param3) {
  420. var me = this;
  421. param1 = param1 == null ? [] : "[" + param1.toString().replace(/\\/g,"%") + "]";
  422. param2 = param2 == null ? [] : Ext.encode(param2).replace(/\\/g,"%");
  423. param3 = param3 == null ? [] : Ext.encode(param3).replace(/\\/g,"%");
  424. if(form.getForm().isValid()){
  425. Ext.each(form.items.items, function(item){
  426. if(item.xtype == 'numberfield'){
  427. if(item.value == null || item.value == ''){
  428. item.setValue(0);
  429. }
  430. }
  431. });
  432. var r = form.getValues();
  433. form.getForm().getFields().each(function(){
  434. if(this.logic == 'ignore') {
  435. delete r[this.name];
  436. }
  437. });
  438. me.FormUtil.save(r, param1, param2,param3);
  439. }else{
  440. me.FormUtil.checkForm();
  441. }
  442. },
  443. beforeUpdate: function(){
  444. var me = this;
  445. var form = Ext.getCmp('form');
  446. if(! me.FormUtil.checkForm()){
  447. return;
  448. }
  449. var detail = Ext.getCmp('grid');
  450. Ext.each(detail.store.data.items, function(item){
  451. if(item.data.prd_id == null || item.data.prd_id == 0){
  452. item.data.prd_id = -item.index;
  453. }
  454. });
  455. var param1 = me.GridUtil.getGridStore(detail);
  456. var param2 = new Array();
  457. var param3 = new Array();
  458. if(Ext.getCmp('assdetail')){
  459. Ext.each(Ext.Object.getKeys(Ext.getCmp('assdetail').cacheStoreGrid), function(key){
  460. Ext.each(Ext.getCmp('assdetail').cacheStoreGrid[key], function(d){
  461. d['dass_condid'] = key;
  462. param2.push(d);
  463. });
  464. });
  465. }
  466. if(Ext.getCmp('assmainbutton')){
  467. Ext.each(Ext.Object.getKeys(Ext.getCmp('assmainbutton').cacheStoreForm), function(key){
  468. Ext.each(Ext.getCmp('assmainbutton').cacheStoreForm[key], function(d){
  469. d['ass_conid'] = key;
  470. param3.push(d);
  471. });
  472. });
  473. }
  474. if(me.FormUtil.checkFormDirty(form) == '' && detail.necessaryField.length > 0 && (param1.length == 0)
  475. && param2.length == 0&& param3.length == 0){
  476. showError($I18N.common.grid.emptyDetail);
  477. return;
  478. } else {
  479. param1 = param1 == null ? [] : "[" + param1.toString().replace(/\\/g,"%") + "]";
  480. param2 = param2 == null ? [] : Ext.encode(param2).replace(/\\/g,"%");
  481. param3 = param3 == null ? [] : Ext.encode(param3).replace(/\\/g,"%");
  482. if(form.getForm().isValid()){
  483. Ext.each(form.items.items, function(item){
  484. if(item.xtype == 'numberfield'){
  485. if(item.value == null || item.value == ''){
  486. item.setValue(0);
  487. }
  488. }
  489. });
  490. var r = form.getValues();
  491. form.getForm().getFields().each(function(){
  492. if(this.logic == 'ignore') {
  493. delete r[this.name];
  494. }
  495. });
  496. me.FormUtil.update(r, param1, param2,param3);
  497. }else{
  498. me.FormUtil.checkForm();
  499. }
  500. }
  501. },
  502. //提交时的相关操作开始
  503. checkFormDirty: function(){
  504. var form = Ext.getCmp('form');
  505. var s = '';
  506. form.getForm().getFields().each(function (item,index,length){
  507. var value = item.value == null ? "" : item.value;
  508. item.originalValue = item.originalValue == null ? "" : item.originalValue;
  509. if(item.originalValue.toString() != value.toString()){//isDirty、wasDirty、dirty一直都是true,没办法判断,所以直接用item.originalValue,原理是一样的
  510. var label = item.fieldLabel || item.ownerCt.fieldLabel ||
  511. item.boxLabel || item.ownerCt.title;//针对fieldContainer、radio、fieldset等
  512. if(label){
  513. s = s + '&nbsp;' + label.replace(/&nbsp;/g,'');
  514. }
  515. }
  516. });
  517. return (s == '') ? s : ('表单字段(<font color=green>'+s+'</font>)已修改');
  518. },
  519. onSubmit: function(id){
  520. var me = this;
  521. var form = Ext.getCmp('form');
  522. if(form && form.getForm().isValid()){
  523. var s = me.checkFormDirty(form);
  524. var grids = Ext.ComponentQuery.query('gridpanel');
  525. if(grids.length > 0){//check所有grid是否已修改
  526. var param = grids[0].GridUtil.getAllGridStore(grids[0]);
  527. // if(grids[0].necessaryField.length > 0 && (param == null || param == '')){
  528. // showError("明细表还未添加数据,无法提交!");
  529. // return;
  530. // }
  531. Ext.each(grids, function(grid, index){
  532. if(grid.GridUtil){
  533. var msg = grid.GridUtil.checkGridDirty(grid);
  534. if(msg.length > 0){
  535. s = s + '<br/>' + grid.GridUtil.checkGridDirty(grid);
  536. }
  537. }
  538. });
  539. }
  540. if(s == '' || s == '<br/>'){
  541. me.submit(id);
  542. } else {
  543. Ext.MessageBox.show({
  544. title:'保存修改?',
  545. msg: '该单据已被修改:<br/>' + s + '<br/>提交前要先保存吗?',
  546. buttons: Ext.Msg.YESNOCANCEL,
  547. icon: Ext.Msg.WARNING,
  548. fn: function(btn){
  549. if(btn == 'yes'){
  550. me.beforeUpdate(form);
  551. } else if(btn == 'no'){
  552. } else {
  553. return;
  554. }
  555. }
  556. });
  557. }
  558. } else {
  559. me.checkForm();
  560. }
  561. },
  562. contains: function(string,substr,isIgnoreCase){
  563. if(isIgnoreCase){
  564. string=string.toLowerCase();
  565. substr=substr.toLowerCase();
  566. }
  567. var startChar=substr.substring(0,1);
  568. var strLen=substr.length;
  569. for(var j=0;j<string.length-strLen+1;j++){
  570. if(string.charAt(j)==startChar){//如果匹配起始字符,开始查找
  571. if(string.substring(j,j+strLen)==substr){//如果从j开始的字符与str匹配,那ok
  572. return true;
  573. }
  574. }
  575. }
  576. return false;
  577. },
  578. getActiveTab: function(){
  579. var tab = null;
  580. if(Ext.getCmp("content-panel")){
  581. tab = Ext.getCmp("content-panel").getActiveTab();
  582. }
  583. if(!tab && parent.Ext.getCmp("content-panel"))
  584. tab = parent.Ext.getCmp("content-panel").getActiveTab();
  585. if(!tab && parent.parent.Ext.getCmp("content-panel"))
  586. tab = parent.parent.Ext.getCmp("content-panel").getActiveTab();
  587. if(!tab){
  588. var win = parent.Ext.ComponentQuery.query('window');
  589. if(win.length > 0){
  590. tab = win[win.length-1];
  591. }
  592. }
  593. return tab;
  594. },
  595. submit: function(id){
  596. var me = this;
  597. var form = Ext.getCmp('form');
  598. if(!me.contains(form.submitUrl, '?caller=', true)){
  599. form.submitUrl = form.submitUrl + "?caller=" + caller;
  600. }
  601. me.getActiveTab().setLoading(true);//loading...
  602. Ext.Ajax.request({
  603. url : basePath + form.submitUrl,
  604. params: {
  605. id: id
  606. },
  607. method : 'post',
  608. callback : function(options,success,response){
  609. me.getActiveTab().setLoading(false);
  610. var localJson = new Ext.decode(response.responseText);
  611. if(localJson.success){
  612. //submit成功后刷新页面进入可编辑的页面
  613. submitSuccess(function(){
  614. window.location.href = window.location.href;
  615. });
  616. } else {
  617. if(localJson.exceptionInfo){
  618. var str = localJson.exceptionInfo;
  619. if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){//特殊情况:操作成功,但是出现警告,允许刷新页面
  620. str = str.replace('AFTERSUCCESS', '');
  621. submitSuccess(function(){
  622. var url = window.location.href;
  623. var formCondition = form.keyField + "IS" + id;
  624. var gridCondition = '';
  625. var grid = Ext.getCmp('grid');
  626. if(grid && grid.mainField){
  627. gridCondition = grid.mainField + "IS" + id;
  628. }
  629. if(me.contains(url, 'formCondition', true)){
  630. url = url.replace('formCondition', 1);
  631. url = url.replace('gridCondition', 1);
  632. }
  633. if(me.contains(url, '?', true)){
  634. url = url + '&formCondition=' +
  635. formCondition + '&gridCondition=' + gridCondition;
  636. } else {
  637. url = url + '?formCondition=' +
  638. formCondition + '&gridCondition=' + gridCondition;
  639. }
  640. window.location.href = url;
  641. });
  642. }
  643. showMessage("提示", str);return;
  644. }
  645. }
  646. }
  647. });
  648. }
  649. //提交时的相关操作结束
  650. // beforeUpdate: function(){
  651. // var grid = Ext.getCmp('grid');
  652. // Ext.Array.each(grid.store.data.items, function(item){
  653. // item.set('prd_prid',Ext.getCmp('pr_id').value);
  654. // });
  655. // //采购价格不能为0
  656. // var grid = Ext.getCmp('grid');
  657. // var items = grid.store.data.items;
  658. // var bool = true;
  659. // var warnStr='';
  660. // Ext.each(items,function(item,index){
  661. // if(item.dirty && item.data[grid.necessaryField] != null && item.data[grid.necessaryField] != ''){
  662. // var orderamount =item.data['prd_orderamount']; //订单金额
  663. // var havebalance = item.data['sa_prepayamount']; //已预收金额
  664. // var nowbalance = item.data['prd_nowbalance']; //本次预收额
  665. // //订单金额>=已预收金额+本次预收额
  666. //
  667. // //此种情况不能进行保存
  668. // if(havebalance+nowbalance>orderamount){
  669. // var i = index+1;
  670. // if(warnStr ==''||warnStr.length<=0){
  671. // warnStr = warnStr +i;
  672. // }else{
  673. // warnStr = warnStr +','+i;
  674. // }
  675. // bool = false;
  676. // }
  677. // }
  678. //
  679. // });
  680. //
  681. // if(bool){
  682. // this.FormUtil.onUpdate(this);
  683. // }else{
  684. // if(warnStr != ''||warnStr.length>0){
  685. // showError('明细表第'+warnStr+'行 已预收金额与本次预收额的合计超过订单金额,不能保存');return;
  686. // }
  687. // }
  688. //
  689. // }
  690. });