Form.js 16 KB

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