Form.js 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518
  1. Ext.define('erp.view.common.batchPrint.Form',{
  2. extend: 'Ext.form.Panel',
  3. alias: 'widget.erpBatchPrintFormPanel',
  4. id: 'printform',
  5. source:'',
  6. region: 'north',
  7. frame : true,
  8. header: false,//不显示title
  9. layout : 'column',
  10. autoScroll : true,
  11. defaultType : 'textfield',
  12. labelSeparator : ':',
  13. buttonAlign : 'center',
  14. fieldDefaults : {
  15. fieldStyle : "background:#FFFAFA;color:#515151;",
  16. labelAlign : "right",
  17. blankText : $I18N.common.form.blankText
  18. },
  19. FormUtil: Ext.create('erp.util.FormUtil'),
  20. tbar: [{
  21. name: 'query',
  22. text: $I18N.common.button.erpQueryButton,
  23. iconCls: 'x-button-icon-query',
  24. cls: 'x-btn-gray',
  25. handler: function(){
  26. var grid = Ext.getCmp('batchPrintGridPanel');
  27. var form = Ext.getCmp('printform');
  28. var gridParam = {caller: caller, condition: form.getCondition(), start: 1, end: 1000};
  29. form.beforeQuery(caller, gridParam.condition);//执行查询前逻辑
  30. grid.GridUtil.loadNewStore(grid, gridParam);
  31. }
  32. }, '->', {
  33. name: 'batchPrint',
  34. text: $I18N.common.button.erpVastPrintButton,
  35. iconCls: 'x-button-icon-print',
  36. cls: 'x-btn-gray',
  37. handler:function(btn){
  38. var me = this,
  39. form = btn.ownerCt.ownerCt, grid = form.ownerCt.down('grid');
  40. var keyField = form.fo_keyField;
  41. var items = grid.getMultiSelected();
  42. var ids =new Array();
  43. var length = items.length;
  44. var idStr ='';
  45. Ext.each(items,function(item,index){
  46. if(length!=index+1){
  47. //idStr = idStr+'[[['+item.data[keyField]+']]],';
  48. idStr = idStr+item.data[keyField]+',';
  49. }else{
  50. idStr = idStr+item.data[keyField];
  51. }
  52. // var id =item.data[keyField];
  53. // ids.push(id);
  54. });
  55. var title = form.title;
  56. var reportName="";
  57. var condition="";
  58. var todate='';
  59. var dateFW='';
  60. var fromdate='';
  61. var enddate='';
  62. if (title=='销售变更单打印'){
  63. reportName="SaleChange_Batch";
  64. condition='{SaleChange.sc_id}in[ '+idStr+' ]';
  65. }else if(title=="出货通知单打印"){
  66. reportName="SendNotify_batch";
  67. condition='{SendNotify.sn_id}in[ '+idStr+' ]';
  68. }else if(title=="出货单打印"){
  69. reportName="sendlist_yessale_batch";
  70. condition='{ProdInout.pi_id}in[ '+idStr+' ]';
  71. }else if(title=="请购单打印"){
  72. reportName="application_batch";
  73. condition='{application.ap_id}in[ '+idStr+' ]';
  74. }
  75. else if(title=="采购变更单打印"){
  76. reportName="PURCChange_batch";
  77. condition='{PurchaseChange.pc_id}in[ '+idStr+' ]';
  78. }else if(title=="采购收料单打印"){
  79. reportName="VerifyApply_batch";
  80. condition='{VerifyApply.va_id}in[ '+idStr+' ]';
  81. }else if(title=="估价单打印"){
  82. reportName="sale_gj_batch";
  83. condition='{evaluation.ev_id}in[ '+idStr+' ]';
  84. }else if(title=="报价单打印"){
  85. reportName="QUOTLIST_batch";
  86. condition='{Quotation.qu_id}in[ '+idStr+' ]';
  87. }else if(title=="销售订单评审表打印"){
  88. reportName="SaleForecastAudit1_batch";
  89. condition='{SaleForecast.sf_id}in[ '+idStr+' ]';
  90. }else if(title=="借货出货单打印"){
  91. reportName="jhch";
  92. condition='{ProdInout.pi_id}in[ '+idStr+' ]';
  93. }else if(title=="销售退货单打印"){
  94. reportName="retulist_batch";
  95. condition='{ProdInout.pi_id}in[ '+idStr+' ]';
  96. }else if(title=="采购物料明细表"){
  97. reportName="ProductBuy";
  98. condition='{Purchase.pu_id}in[ '+idStr+' ]';
  99. }else if(title=="收料明细打印"){
  100. reportName="VerifyApplyDetail";
  101. condition='{verifyapply.va_id}in[ '+idStr+' ]';
  102. }else if(title=="采购退料单打印"){
  103. reportName="piolist_yt_batch";
  104. condition='{ProdInout.pi_id}in[ '+idStr+' ]';
  105. }else if(title=="采购退货清单打印"){
  106. reportName="piolistytList";
  107. condition='{ProdInout.pi_id}in[ '+idStr+' ]';
  108. }else if(title=="采购退货清单打印"){
  109. reportName="piolistytList";
  110. condition='{ProdInout.pi_id}in[ '+idStr+' ]';
  111. }else if(title=="采购单批量打印"){
  112. reportName="PURCLIST_Batch";
  113. condition='{purchase.pu_id}in[ '+idStr+' ]';
  114. }else if(title=="未审核采购单打印"){
  115. reportName="PURCLIST_Batch";
  116. condition='{purchase.pu_id}in[ '+idStr+' ]';
  117. }else if(title=="采购单打印(英文版)"){
  118. reportName="PURCLIST_ENGLISH";
  119. condition='{purchase.pu_id}in[ '+idStr+' ]';
  120. }else if(title=="采购预测单打印"){
  121. reportName="PurchaseYC_Batch";
  122. condition='{PurchaseForecast.pf_id}in[ '+idStr+' ]';
  123. }else if(title=="委外加工单资料打印"){
  124. reportName="MAKEWW_Batch";
  125. condition='{make.ma_id}in[ '+idStr+' ]';
  126. }else if(title=="委外领料单打印"){
  127. reportName="PIOLISTMWW_Batch";
  128. condition='{ProdInout.pi_id}in[ '+idStr+' ]';
  129. }else if(title=="委外退料单打印"){
  130. reportName="EXPLIST_yt_Batch";
  131. condition='{ProdInout.pi_id}in[ '+idStr+' ]';
  132. }else if(title=="委外补料单打印"){
  133. reportName="Expiolist_Batch";
  134. condition='{ProdInout.pi_id}in[ '+idStr+' ]';
  135. }else if(title=="委外报废单打印"){
  136. reportName="MakeScrapWW_Batch";
  137. condition='{ProdInout.pi_id}in[ '+idStr+' ]';
  138. }else if(title=="制造单资料打印"){
  139. reportName="MakeList";
  140. condition='{make.ma_id}in[ '+idStr+' ]';
  141. }else if(title=="生产领料单打印"){
  142. reportName="PIOLISTM_Batch";
  143. condition='{ProdInout.pi_id}in[ '+idStr+' ]';
  144. }else if(title=="采购退货单打印"){
  145. reportName="PIOLISTM_Back";
  146. condition='{ProdInout.pi_id}in[ '+idStr+' ]';
  147. }else if(title=="生产补料单打印"){
  148. reportName="PIOLIST_bl_Batch";
  149. condition='{ProdInout.pi_id}in[ '+idStr+' ]';
  150. }else if(title=="生产报废单打印"){
  151. reportName="MakeScrap_Batch";
  152. condition='{make.ma_id}in[ '+idStr+' ]';
  153. }else if(title=="完工入库单打印"){
  154. reportName="finish_Batch";
  155. condition='{ProdInout.pi_id}in[ '+idStr+' ]';
  156. }else if(title=="拆件完工入库单打印"){
  157. reportName="chaijian_Batch";
  158. condition='{ProdInout.pi_id}in[ '+idStr+' ]';
  159. }else if(title=="工单备料单批量打印"){
  160. reportName="fybl_n_huasl";
  161. condition='{MA_MAKEMATERIAL_VIEW.ma_id}in[ '+idStr+' ]';
  162. }else if(title=="费用比例报销单批量打印"){
  163. reportName="MakeUsagePrebymake_batch";
  164. condition='{CUSTOMTABLE.CT_ID}in[ '+idStr+' ]';
  165. }else if(title=="BOM多级展开"){
  166. reportName="bomLevel3";
  167. var boid = Ext.getCmp('bo_id').value;
  168. //var kind=Ext.getCmp('bo_remark').value;
  169. condition='{MA_BOMSTRUCT_VIEW.bs_topbomid}='+ boid;
  170. /*+' and '+' (isnull({BomDetail.bd_usestatus}) or {BomDetail.bd_usestatus}<>'+"'DISABLE')";
  171. if(kind=="原材料"){
  172. condition+=' and '+'{BomStruct.bs_sonbomid}='+"0";
  173. }
  174. if(kind=="半成品"){
  175. condition+=' and '+'(isnull({product.pr_manutype}) or {product.pr_manutype}<>'+"'PURCHASE'"+') and '+'{BomStruct.bs_sonbomid}>'+"0";
  176. }*/
  177. }else if(title=="物料综合查询"){
  178. reportName="ProductBalance";
  179. var prodcode = Ext.getCmp('pr_code').getValue();
  180. if(prodcode!=""){
  181. condition='{Product.pr_code}='+"'"+prodcode+"'";
  182. }
  183. }else if(title=="FQC检验报告打印"){
  184. reportName="verifyMake_Batch";
  185. condition='{QUA_VerifyApplyDetail.ve_id}in[ '+idStr+' ]';
  186. console.log(condition);
  187. }else if(title=="凭证批量打印"){
  188. reportName="vouclist_rmb";
  189. condition='{voucher.vo_id}in[ '+idStr+' ]';
  190. console.log(condition);
  191. }else if(title=="采购验收单批量打印"){
  192. reportName="acclist_batch";
  193. condition='{ProdInout.pi_id}in[ '+idStr+' ]';
  194. console.log(condition);
  195. }else if(title=="费用批量打印"){
  196. reportName="AccountRegZW_batch";
  197. condition='{FeePlease.fp_id}in[ '+idStr+' ]';
  198. console.log(condition);
  199. }else if(title=="费用批量打印(无备注)"){
  200. reportName="AccountRegZW_batch_no";
  201. condition='{FeePlease.fp_id}in[ '+idStr+' ]';
  202. console.log(condition);
  203. }else if(title=="IQC/FQC批量打印"){
  204. console.log(title);
  205. reportName="verifyMake_batch";
  206. condition='{QUA_VerifyApplyDetail.ve_id}in[ '+idStr+' ]';
  207. console.log(condition);
  208. }else if(title=='拨出单批量打印'){
  209. console.log(title);
  210. reportName='piolist_bcbatch';
  211. condition='{prodinout_makematerialout_VIEW.pi_id}in[ '+idStr+' ]';
  212. console.log(condition);
  213. }else if(title=='委外领料单批量打印'){
  214. console.log(title);
  215. reportName='piolist_wwbatch';
  216. condition='{prodinout_common_view.pi_id}in[ '+idStr+' ]';
  217. console.log(condition);
  218. }else if(title=='盘点底稿批量打印'){
  219. reportName='StockTaking_Batch';
  220. condition='{StockTaking.st_id}in[ '+idStr+' ]';
  221. }
  222. if(title == '出货单标签批量打印'){//
  223. condition='{ProdInout.pi_id}in[ '+idStr+' ]';
  224. if(items.length == 0){
  225. showError("请勾选需要打印标签的出货单!");
  226. return ;
  227. }
  228. //没有指定标签格式时,
  229. var labelcode = Ext.getCmp("lps_code");
  230. if(labelcode && (labelcode.value == null || labelcode.value == "") || !labelcode){
  231. //检查勾选的出货单是否有不同的默认标签格式
  232. form.getCustLabelCode(idStr,function(data){
  233. if(data != null){
  234. form.getPrintUrl(data.LPS_CALLER,data.LPS_LABELURL,title,condition,todate,dateFW,fromdate,enddate,form,idStr);
  235. }
  236. });
  237. }else{
  238. //如果有指定“标签格式”,以选择的为准调取这一格式对应的报表,否则取客户默认的标签格式
  239. warnMsg("按照指定的标签格式打印?", function(btn){
  240. if(btn == 'yes'){
  241. //打印
  242. form.getPrintCaller(labelcode.value,function(data){
  243. if(data != null){
  244. form.getPrintUrl(data.LPS_CALLER,data.LPS_LABELURL,title,condition,todate,dateFW,fromdate,enddate,form,idStr);
  245. }
  246. });
  247. }
  248. });
  249. }
  250. }else{//直接打印
  251. form.getPrintUrl(caller,reportName,title,condition,todate,dateFW,fromdate,enddate,form,idStr);
  252. }
  253. //reportName="rpts/"+reportName+'.rpt';
  254. //=======================================================
  255. }
  256. },'-',{
  257. name: 'export',
  258. text: $I18N.common.button.erpExportButton,
  259. iconCls: 'x-button-icon-submit',
  260. cls: 'x-btn-gray',
  261. handler: function(btn){
  262. var form = btn.ownerCt.ownerCt,
  263. grid = Ext.getCmp('batchPrintGridPanel');
  264. var cond = form.getCondition();
  265. if(Ext.isEmpty(cond)) {
  266. cond = '1=1';
  267. }
  268. grid.BaseUtil.createExcel(caller, 'detailgrid', cond);
  269. }
  270. },'-',{
  271. text: $I18N.common.button.erpCloseButton,
  272. iconCls: 'x-button-icon-close',
  273. cls: 'x-btn-gray',
  274. handler: function(){
  275. var main = parent.Ext.getCmp("content-panel");
  276. main.getActiveTab().close();
  277. }
  278. }],
  279. initComponent : function(){
  280. var source = getUrlParam('source');//从url解析参数
  281. this.source=source;
  282. var urlcondition = getUrlParam('condition');//从url解析参数
  283. urlcondition = (urlcondition == null) ? "" : urlcondition.replace(/IS/g,"=");
  284. var param = {caller: caller, condition: urlcondition};
  285. this.FormUtil.getItemsAndButtons(this, 'common/singleFormItems.action', param);
  286. this.callParent(arguments);
  287. this.addKeyBoardEvents();
  288. },
  289. getCondition: function(){
  290. var grid = Ext.getCmp('batchPrintGridPanel');
  291. var form = Ext.getCmp('printform');
  292. var condition = grid.defaultCondition || '';
  293. Ext.each(form.items.items, function(f){
  294. if(f.logic != null && f.logic != ''){
  295. if(f.xtype == 'checkbox' && f.value == true){
  296. if(condition == ''){
  297. condition += f.logic;
  298. } else {
  299. condition += ' AND ' + f.logic;
  300. }
  301. } else if(f.xtype == 'datefield' && f.value != null){
  302. var v = Ext.Date.format(new Date(f.value), 'Y-m-d');
  303. if(condition == ''){
  304. condition += f.logic + "=to_date('" + v + "', 'yyyy-MM-dd')";
  305. } else {
  306. condition += ' AND ' + f.logic + "=to_date('" + v + "', 'yyyy-MM-dd')";
  307. }
  308. } else if(f.xtype == 'datetimefield' && f.value != null){
  309. var v = Ext.Date.format(new Date(f.value), 'Y-m-d H:i:s');
  310. if(condition == ''){
  311. condition += f.logic + "=to_date('" + v + "', 'yyyy-MM-dd HH24:mi:ss')";
  312. } else {
  313. condition += ' AND ' + f.logic + "=to_date('" + v + "', 'yyyy-MM-dd HH24:mi:ss')";
  314. }
  315. } else if((f.xtype == 'numberfield' || f.xtype == 'monthdatefield') && f.value != null && f.value != ''){
  316. if(condition == ''){
  317. condition += f.logic + '=' + f.value;
  318. } else {
  319. condition += ' AND ' + f.logic + '=' + f.value;
  320. }
  321. } else if(f.xtype == 'combo' && f.value == '$ALL'){
  322. if(f.store.data.length > 1) {
  323. if(condition == ''){
  324. condition += '(';
  325. } else {
  326. condition += ' AND (';
  327. }
  328. var _a = '';
  329. f.store.each(function(d, idx){
  330. if(d.data.value != '$ALL') {
  331. if(_a == ''){
  332. _a += f.logic + "='" + d.data.value + "'";
  333. } else {
  334. _a += ' OR ' + f.logic + "='" + d.data.value + "'";
  335. }
  336. }
  337. });
  338. condition += _a + ')';
  339. }
  340. } else {
  341. if(contains(f.logic, 'to:', true)){
  342. if(!grid.toField){
  343. grid.toField = new Array();
  344. }
  345. grid.toField.push(f.logic.split(':')[1]);
  346. } else {
  347. if(!Ext.isEmpty(f.value)){
  348. if(contains(f.value.toString(), 'BETWEEN', true) && contains(f.value.toString(), 'AND', true)){
  349. if(condition == ''){
  350. condition += f.logic + " " + f.value;
  351. } else {
  352. condition += ' AND (' + f.logic + " " + f.value + ")";
  353. }
  354. } else if(contains(f.value.toString(), '||', true)){
  355. var str = '';
  356. Ext.each(f.value.split('||'), function(v){
  357. if(v != null && v != ''){
  358. if(str == ''){
  359. str += f.logic + "='" + v + "'";
  360. } else {
  361. str += ' OR ' + f.logic + "='" + v + "'";
  362. }
  363. }
  364. });
  365. if(condition == ''){
  366. condition += "(" + str + ")";
  367. } else {
  368. condition += ' AND (' + str + ")";
  369. }
  370. } else if(f.value.toString().charAt(0) == '!'){
  371. if(condition == ''){
  372. condition += 'nvl(' + f.logic + ",' ')<>'" + f.value.substr(1) + "'";
  373. } else {
  374. condition += ' AND (nvl(' + f.logic + ",' ')<>'" + f.value.substr(1) + "')";
  375. }
  376. } else {
  377. if(!Ext.isNumber(f.value) && f.value.indexOf('%') >= 0) {
  378. if(condition == ''){
  379. condition += f.logic + " like '" + f.value + "'";
  380. } else {
  381. condition += ' AND (' + f.logic + " like '" + f.value + "')";
  382. }
  383. } else {
  384. if(condition == ''){
  385. condition += f.logic + "='" + f.value + "'";
  386. } else {
  387. condition += ' AND (' + f.logic + "='" + f.value + "')";
  388. }
  389. }
  390. }
  391. }
  392. }
  393. }
  394. }
  395. });
  396. return condition;
  397. },
  398. /**
  399. * 监听一些事件
  400. * <br>
  401. * Ctrl+Alt+S 单据配置维护
  402. * Ctrl+Alt+P 参数、逻辑配置维护
  403. */
  404. addKeyBoardEvents: function(){
  405. var me = this;
  406. Ext.EventManager.addListener(document.body, 'keydown', function(e){
  407. if(e.altKey && e.ctrlKey) {
  408. if(e.keyCode == Ext.EventObject.S) {
  409. var url = "jsps/ma/form.jsp?formCondition=fo_idIS" + me.fo_id + "&gridCondition=fd_foidIS" + me.fo_id,
  410. forms = Ext.ComponentQuery.query('form'),
  411. grids = Ext.ComponentQuery.query('gridpanel'),
  412. formSet = [], gridSet = [];
  413. if(forms.length > 0) {
  414. Ext.Array.each(forms, function(f){
  415. f.fo_id && (formSet.push(f.fo_id));
  416. });
  417. }
  418. if(grids.length > 0) {
  419. Ext.Array.each(grids, function(g){
  420. if(g.xtype.indexOf('erpBatchPrintGridPanel') > -1)
  421. gridSet.push(window.caller);
  422. else if(g.caller)
  423. gridSet.push(g.caller);
  424. });
  425. }
  426. if(formSet.length > 0 || gridSet.length > 0) {
  427. url = "jsps/ma/multiform.jsp?formParam=" + formSet.join(',') + '&gridParam=' + gridSet.join(',');
  428. }
  429. me.FormUtil.onAdd('form' + caller, 'Form配置维护(' + caller + ')', url);
  430. } else if(e.keyCode == Ext.EventObject.P) {
  431. me.FormUtil.onAdd('configs-' + caller, '逻辑配置维护(' + caller + ')', "jsps/ma/logic/config.jsp?whoami=" + caller);
  432. }
  433. }
  434. });
  435. },
  436. beforeQuery: function(call, cond) {
  437. Ext.Ajax.request({
  438. url: basePath + 'common/form/beforeQuery.action',
  439. params: {
  440. caller: call,
  441. condition: cond
  442. },
  443. async: false,
  444. callback: function(opt, s, r) {
  445. var rs = Ext.decode(r.responseText);
  446. if(rs.exceptionInfo) {
  447. showError(rs.exceptionInfo);
  448. }
  449. }
  450. });
  451. },
  452. getPrintCaller:function(code,callback){
  453. Ext.Ajax.request({
  454. url : basePath + "pm/mes/getPrintCaller.action",
  455. params : {
  456. caller:caller,
  457. code :code
  458. },
  459. method : 'post',
  460. callback : function(opt, s, res){
  461. var r = new Ext.decode(res.responseText);
  462. if(r && r.exceptionInfo){
  463. showError(r.exceptionInfo);return;
  464. } else if(r.data){
  465. callback && callback.call(null, r.data);
  466. }else{
  467. return;
  468. }
  469. }
  470. });
  471. },
  472. getPrintUrl:function(caller,reportName,title,condition,todate,dateFW,fromdate,enddate,form,idStr){
  473. console.log(idStr);
  474. Ext.Ajax.request({
  475. url : basePath + 'common/enterprise/getprinturl.action?caller=' + caller,
  476. callback: function(opt, s, r) {
  477. var re = Ext.decode(r.responseText);
  478. thisreport=re.reportname;
  479. if(re.defaultcondition!=null &&re.defaultcondition!=''){
  480. condition=re.defaultcondition.replace(/@IDS/g, idStr);
  481. }
  482. //===========================================
  483. var whichsystem = re.whichsystem;
  484. var urladdress = "";
  485. var rpname = re.reportName;
  486. if(Ext.isEmpty(rpname) || rpname == "null"){
  487. urladdress = re.printurl;
  488. } else if(rpname.indexOf(thisreport) > 0){
  489. urladdress = re.ErpPrintLargeData;
  490. } else{
  491. urladdress = re.printurl;
  492. }
  493. if(thisreport==""||thisreport==null||thisreport=='null'){
  494. thisreport=reportName;
  495. }
  496. //form.FormUtil.batchPrint(idStr,reportName,condition,title,todate,dateFW,fromdate,enddate,urladdress,whichsystem);
  497. form.FormUtil.batchPrint(idStr,thisreport,condition,title,todate,dateFW,fromdate,enddate,urladdress,whichsystem);
  498. //在这里传条件和报表名字
  499. }
  500. });
  501. },
  502. getCustLabelCode:function(condition,callback){
  503. Ext.Ajax.request({
  504. url : basePath + 'scm/customer/getCustLabelCode.action',
  505. params : {
  506. condition :condition
  507. },
  508. callback: function(opt, s, r) {
  509. var r = Ext.decode(r.responseText);
  510. if(r && r.exceptionInfo){
  511. showError(r.exceptionInfo);return;
  512. }else if(r.data){
  513. callback && callback.call(null, r.data);
  514. }
  515. }
  516. });
  517. }
  518. });