MaterialLackForNotify.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.common.BatchDeal', {
  3. extend: 'Ext.app.Controller',
  4. requires: ['erp.util.FormUtil', 'erp.util.GridUtil', 'erp.util.BaseUtil', 'erp.util.RenderUtil'],
  5. views:[
  6. 'common.batchDeal.Viewport','common.batchDeal.Form','common.batchDeal.GridPanel',
  7. 'core.trigger.DbfindTrigger','core.form.FtField','core.form.FtFindField','core.form.ConDateField',
  8. 'core.trigger.TextAreaTrigger','core.form.YnField', 'core.form.MonthDateField','core.form.ConMonthDateField',
  9. 'core.grid.YnColumn'
  10. ],
  11. init:function(){
  12. var me = this;
  13. me.resized = false;
  14. this.control({
  15. 'erpBatchDealFormPanel': {
  16. alladded: function(form){
  17. var grid = Ext.getCmp('batchDealGridPanel');
  18. me.resize(form, grid);
  19. }
  20. },
  21. 'erpBatchDealGridPanel': {
  22. afterrender: function(grid){
  23. var form = Ext.getCmp('dealform');
  24. me.resize(form, grid);
  25. }
  26. },
  27. 'erpVastDealButton': {
  28. click: function(btn){
  29. me.vastDeal(btn.ownerCt.ownerCt.dealUrl);
  30. }
  31. },
  32. 'erpVastAnalyseButton': {
  33. click: function(btn){
  34. me.vastDeal(btn.ownerCt.ownerCt.dealUrl);
  35. }
  36. },
  37. 'erpVastPrintButton': {
  38. click: function(btn){
  39. me.vastDeal(btn.ownerCt.ownerCt.dealUrl);
  40. }
  41. },
  42. 'erpVastAllotButton':{
  43. click:function(btn){
  44. me.vastDeal(btn.ownerCt.ownerCt.dealUrl);
  45. }
  46. },
  47. 'erpEndCRMButton':{
  48. click:function(btn){
  49. me.vastDeal('crm/chanceTurnEnd.action');
  50. }
  51. },
  52. 'monthdatefield': {
  53. afterrender: function(f) {
  54. var type = '', con = null;
  55. if(f.name == 'vo_yearmonth' && caller == 'Voucher!Audit!Deal') {
  56. type = 'MONTH-A';
  57. con = Ext.getCmp('condatefield');
  58. } else if(f.name == 'vo_yearmonth' && caller == 'Voucher!ResAudit!Deal') {
  59. type = 'MONTH-A';
  60. con = Ext.getCmp('condatefield');
  61. }
  62. if(type != '') {
  63. this.getCurrentMonth(f, type, con);
  64. }
  65. }
  66. }
  67. });
  68. },
  69. resize: function(form, grid){
  70. if(!this.resized && form && grid && form.items.items.length > 0){
  71. var height = window.innerHeight;
  72. if(Ext.isIE){
  73. height = screen.height*0.75;
  74. }
  75. var cw = 0;
  76. Ext.each(form.items.items, function(){
  77. if(!this.hidden && this.xtype != 'hidden') {
  78. cw += this.columnWidth;
  79. }
  80. });
  81. cw = Math.ceil(cw);
  82. if(cw == 0){
  83. cw = 5;
  84. } else if(cw > 2 && cw <= 5){
  85. cw -= 1;
  86. } else if(cw > 5 && cw < 8){
  87. cw = 4;
  88. }
  89. cw = Math.min(cw, 5);
  90. form.setHeight(height*cw/10 + 10);
  91. grid.setHeight(height*(10 - cw)/10 - 10);
  92. this.resized = true;
  93. }
  94. },
  95. countGrid: function(){
  96. //重新计算合计栏值
  97. var grid = Ext.getCmp('batchDealGridPanel');
  98. Ext.each(grid.columns, function(column){
  99. if(column.summary){
  100. var sum = 0;
  101. Ext.each(grid.store.data.items, function(item){
  102. if(item.value != null && item.value != ''){
  103. sum += Number(item.value);
  104. }
  105. });
  106. Ext.getCmp(column.dataIndex + '_sum').setText(column.text + '(sum):' + sum);
  107. } else if(column.average) {
  108. var average = 0;
  109. Ext.each(grid.store.data.items, function(item){
  110. if(item.value != null && item.value != ''){
  111. average += Number(item.value);
  112. }
  113. });
  114. average = average/grid.store.data.items.length;
  115. Ext.getCmp(column.dataIndex + '_average').setText(column.text + '(average):' + average);
  116. } else if(column.count) {
  117. var count = 0;
  118. Ext.each(grid.store.data.items, function(item){
  119. if(item.value != null && item.value != ''){
  120. count++;
  121. }
  122. });
  123. Ext.getCmp(column.dataIndex + '_count').setText(column.text + '(count):' + count);
  124. }
  125. });
  126. },
  127. vastDeal: function(url){
  128. var grid = Ext.getCmp('batchDealGridPanel');
  129. var items = grid.selModel.getSelection();
  130. Ext.each(items, function(item, index){
  131. if(this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  132. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0){
  133. item.index = this.data[grid.keyField];
  134. grid.multiselected.push(item);
  135. }
  136. });
  137. var form = Ext.getCmp('dealform');
  138. var records = Ext.Array.unique(grid.multiselected);
  139. if(records.length > 0){
  140. if('common/form/vastPost.action' == url) {
  141. this.vastPost(grid, records, url);
  142. return;
  143. }
  144. var params = new Object();
  145. params.id=new Array();
  146. params.caller = caller;
  147. var data = new Array();
  148. var bool = false;
  149. Ext.each(records, function(record, index){
  150. var f = form.fo_detailMainKeyField;
  151. if((grid.keyField && this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  152. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0)
  153. ||(f && this.data[f] != null && this.data[f] != ''
  154. && this.data[f] != '0' && this.data[f] != 0)){
  155. bool = true;
  156. var o = new Object();
  157. if(grid.keyField){
  158. o[grid.keyField] = record.data[grid.keyField];
  159. } else {
  160. params.id[index] = record.data[form.fo_detailMainKeyField];
  161. }
  162. if(grid.toField){
  163. Ext.each(grid.toField, function(f, index){
  164. var v = Ext.getCmp(f).value;
  165. if(v != null && v.toString().trim() != '' && v.toString().trim() != 'null'){
  166. o[f] = v;
  167. }
  168. });
  169. }
  170. if(grid.necessaryFields){
  171. Ext.each(grid.necessaryFields, function(f, index){
  172. var v = record.data[f];
  173. if(Ext.isDate(v)){
  174. v = Ext.Date.toString(v);
  175. }
  176. o[f] = v;
  177. });
  178. }
  179. data.push(o);
  180. }
  181. });
  182. if(bool){
  183. params.data = unescape(Ext.JSON.encode(data).replace(/\\/g,"%"));;
  184. var main = parent.Ext.getCmp("content-panel");
  185. main.getActiveTab().setLoading(true);//loading...
  186. Ext.Ajax.request({
  187. url : basePath + url,
  188. params: params,
  189. method : 'post',
  190. timeout: 6000000,
  191. callback : function(options,success,response){
  192. main.getActiveTab().setLoading(false);
  193. var localJson = new Ext.decode(response.responseText);
  194. if(localJson.exceptionInfo){
  195. var str = localJson.exceptionInfo;
  196. if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){
  197. str = str.replace('AFTERSUCCESS', '');
  198. grid.multiselected = new Array();
  199. Ext.getCmp('dealform').onQuery();
  200. }
  201. showError(str);return;
  202. }
  203. if(localJson.success){
  204. if(localJson.log){
  205. showMessage("提示", localJson.log);
  206. }
  207. Ext.Msg.alert("提示", "处理成功!", function(){
  208. grid.multiselected = new Array();
  209. Ext.getCmp('dealform').onQuery();
  210. });
  211. }
  212. }
  213. });
  214. } else {
  215. showError("没有需要处理的数据!");
  216. }
  217. }
  218. },
  219. getCurrentMonth: function(f, type, con) {
  220. Ext.Ajax.request({
  221. url: basePath + 'fa/getMonth.action',
  222. params: {
  223. type: type
  224. },
  225. callback: function(opt, s, r) {
  226. var rs = Ext.decode(r.responseText);
  227. if(rs.data) {
  228. f.setValue(rs.data.PD_DETNO);
  229. if(con != null) {
  230. con.setMonthValue(rs.data.PD_DETNO);
  231. }
  232. }
  233. }
  234. });
  235. },
  236. vastPost: function(grid, records, url) {
  237. var me = this, win = Ext.getCmp('win-post');
  238. grid._postrecords = records;
  239. if(!win) {
  240. win = Ext.create('Ext.Window', {
  241. id: 'win-post',
  242. width: '70%',
  243. height: '60%',
  244. modal: true,
  245. layout: 'anchor',
  246. items: [{
  247. xtype: 'form',
  248. anchor: '100% 100%',
  249. bodyStyle: 'background: #f1f1f1;',
  250. layout: 'column',
  251. defaults: {
  252. xtype: 'checkbox',
  253. margin: '2 10 2 10',
  254. columnWidth: .33
  255. },
  256. items: [{
  257. xtype: 'displayfield',
  258. fieldLabel: '当前账套',
  259. id: 'ma_name'
  260. },{
  261. xtype: 'displayfield',
  262. fieldLabel: '账套描述',
  263. margin: '2 10 30 10',
  264. id: 'ma_function',
  265. },{
  266. xtype: 'displayfield',
  267. fieldLabel: '目标账套',
  268. columnWidth: 1
  269. },{
  270. boxLabel: '全选',
  271. columnWidth: 1,
  272. listeners: {
  273. change: function(f) {
  274. var form = f.up('form');
  275. form.getForm().getFields().each(function(a){
  276. if(a.xtype == 'checkbox' && a.id != f.id) {
  277. a.setValue(f.value);
  278. }
  279. });
  280. }
  281. }
  282. }]
  283. }],
  284. buttonAlign: 'center',
  285. buttons: [{
  286. text: $I18N.common.button.erpConfirmButton,
  287. cls: 'x-btn-blue',
  288. handler: function(btn) {
  289. var w = btn.ownerCt.ownerCt, form = w.down('form'),
  290. from = form.down('#ma_name').value,
  291. items = form.query('checkbox[checked=true]'),
  292. data = new Array();
  293. Ext.each(items, function(item){
  294. if (item.ma_name)
  295. data.push(item.ma_name);
  296. });
  297. if(data.length > 0)
  298. me.post(w, grid, url, from, data.join(','));
  299. }
  300. },{
  301. text: $I18N.common.button.erpCloseButton,
  302. cls: 'x-btn-blue',
  303. handler: function(btn) {
  304. btn.ownerCt.ownerCt.hide();
  305. }
  306. }]
  307. });
  308. this.getMasters(win);
  309. }
  310. win.show();
  311. },
  312. post: function(w, grid, url, from, to) {
  313. var records = grid._postrecords;
  314. w.setLoading(true);
  315. var d = new Array(), f = grid.keyField;
  316. Ext.each(records, function(r) {
  317. d.push(r.get(f));
  318. });
  319. Ext.Ajax.request({
  320. url: basePath + url,
  321. params: {
  322. caller: caller,
  323. data: d.join(','),
  324. to: to
  325. },
  326. callback: function(opt, s, r) {
  327. w.setLoading(false);
  328. if(s) {
  329. var rs = Ext.decode(r.responseText);
  330. if(rs.data) {
  331. showMessage('提示', rs.data);
  332. } else {
  333. alert('抛转成功!');
  334. }
  335. grid.multiselected = new Array();
  336. grid._postrecords = null;
  337. Ext.getCmp('dealform').onQuery();
  338. w.hide();
  339. }
  340. }
  341. });
  342. },
  343. /**
  344. * 加载系统所有账套
  345. */
  346. getMasters: function(win){
  347. Ext.Ajax.request({
  348. url: basePath + 'common/getMasters.action',
  349. method: 'get',
  350. callback: function(opt, s, res){
  351. var r = Ext.decode(res.responseText), c = r.currentMaster;
  352. if(r.masters){
  353. var form = win.down('form'), items = new Array();
  354. for(var i in r.masters) {
  355. var d = r.masters[i];
  356. if(d.ma_name != c) {
  357. if(d.ma_type == 3) {
  358. var o = {boxLabel: d.ma_name + '(' + d.ma_function + ')', ma_name: d.ma_name};
  359. items.push(o);
  360. }
  361. } else {
  362. form.down('#ma_name').setValue(c);
  363. form.down('#ma_function').setValue(d.ma_function);
  364. }
  365. }
  366. form.add(items);
  367. }
  368. }
  369. });
  370. }
  371. });