SelPrintTemplate.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.scm.reserve.SelPrintTemplate', {
  3. extend: 'Ext.app.Controller',
  4. FormUtil: Ext.create('erp.util.FormUtil'),
  5. BaseUtil: Ext.create('erp.util.BaseUtil'),
  6. views:[
  7. 'scm.reserve.SelPrintTemplate','scm.reserve.SelPrintTemplate',
  8. 'core.button.Confirm','core.button.Close',
  9. 'core.trigger.DbfindTrigger','core.trigger.TextAreaTrigger'
  10. ] ,
  11. init:function(){
  12. var me = this;
  13. this.control({
  14. 'erpCloseButton': {
  15. click: function(btn){
  16. Ext.getCmp('printLabelForm').close();
  17. }
  18. },
  19. 'button[id=barPrintPreview]': {//打印预览
  20. click :function (btn){
  21. LODOP = getLodop(document.getElementById('LODOP_OB'),document.getElementById('LODOP_EM'));
  22. if(caller == 'ProdIO!PurcInBarPrint' ||caller == 'BarSProfit!BarPrint'||caller == 'PdaBarcodePrint' || caller == 'VerifyAP!BarPrint'){
  23. if(me.getSelData()){
  24. me.getPrintData(function(data){
  25. var printData = data;
  26. if( printData != null){
  27. me.printViewLabel(printData);
  28. }
  29. });
  30. return;
  31. }else{
  32. if(caller =='PdaBarcodePrint'){
  33. window.parent.showError("没有勾选需要预览的行,请勾选!");
  34. return;
  35. }
  36. window.parent.showError("没有勾选需要预览的行,将预览全部");
  37. }
  38. }
  39. var params = new Object();
  40. if(Ext.getCmp("template").value == "" || Ext.getCmp("template").value == null){
  41. window.parent.showError("请选择打印模板");
  42. return ;
  43. }
  44. var data = new Object();
  45. params.caller = window.parent.parent.caller;
  46. if(caller =='ProdIO!PurcInBarPrint' || caller == 'ProdIO!PurcInObxPrint'){//出入库单,验收单,xi
  47. data["bi_piid"] = window.parent.Ext.getCmp("bi_piid").value;
  48. data["bi_pdno"] = window.parent.Ext.getCmp("bi_pdno").value;
  49. }else if(caller == 'BarSProfit!BarPrint' || caller == 'BarSProfit!ObxPrint'){//条码盘盈
  50. data["bdd_bsdid"] = window.parent.Ext.getCmp("bsd_id").value;
  51. }else if(caller == 'VerifyAP!BarPrint' || caller == 'VerifyAP!ObxPrint'){//采购收料单
  52. data["vadp_vadid"] = Ext.getCmp("vad_id").value;
  53. data["vadp_vacode"] = Ext.getCmp("vad_code").value;
  54. }else if(caller == 'BarStockPrint'){
  55. data["bs_id"] = window.parent.Ext.getCmp("bs_id").value;
  56. params.caller = window.parent.caller;
  57. }else if(caller == 'ProdIO!BarPrintAll'){//出入库单主表点击打印所有条码
  58. data['pi_id'] = window.parent.Ext.getCmp("pi_id").value;
  59. params.caller = window.parent.caller;
  60. }else if(caller == 'MakeSerialCodePrintAll'){//序列号维护打印序列号
  61. data['mc_id'] = window.parent.Ext.getCmp("mc_id").value;
  62. params.caller = window.parent.caller;
  63. }else if(caller == 'MakeSerialCombinePrintAll'){//序列号维护打印拼板号
  64. data['mc_id'] = window.parent.Ext.getCmp("mc_id").value;
  65. params.caller = window.parent.caller;
  66. }else if(caller == 'MakeSerialCodePrint'){//序列号维护补打单个序列号
  67. me.getSinglePrintData(function(data){
  68. var printData = data;
  69. if( printData != null){
  70. me.printViewLabel(printData);
  71. }
  72. });
  73. }
  74. params.printStore = unescape(escape(Ext.JSON.encode(data)));
  75. var r = new Object();
  76. r["template"] = Ext.getCmp("template").value;
  77. params.printForm = unescape(escape(Ext.JSON.encode(r)));
  78. params.lps_caller = caller;
  79. params.caller = window.parent.parent.caller;
  80. Ext.Ajax.request({//获取打印数据
  81. url : basePath + "common/barcode/PrintAll.action",
  82. params :params,
  83. method : 'post',
  84. callback : function(opt, s, res){
  85. var r = new Ext.decode(res.responseText);
  86. if(r && r.exceptionInfo){
  87. window.parent.showError(r.exceptionInfo);return;
  88. }else if(r.data.length>0){
  89. var printData = r.data;
  90. if(printData != null){
  91. me.printViewLabel(printData);
  92. }
  93. }
  94. }
  95. });
  96. }
  97. },
  98. 'button[id=barPrint]':{//打印
  99. click :function (btn){
  100. var LODOP = getLodop(document.getElementById('LODOP_OB'),document.getElementById('LODOP_EM'));
  101. if(caller == 'ProdIO!PurcInBarPrint' ||caller == 'BarSProfit!BarPrint'||caller == 'PdaBarcodePrint' ||caller == 'VerifyAP!BarPrint'){
  102. if(me.getSelData()){
  103. me.getPrintData(function(data){
  104. var printData = data;
  105. if( printData != null){
  106. me.printLabel(printData);
  107. }
  108. });
  109. return ;
  110. }else {
  111. if(caller =='PdaBarcodePrint'){
  112. window.parent.showError("没有勾选需要打印的行,请勾选!");
  113. return;
  114. }
  115. window.parent.showError("没有勾选需要打印的行,将全部打印!");
  116. }
  117. }
  118. var params = new Object();
  119. if(Ext.getCmp("template").value == "" || Ext.getCmp("template").value == null){
  120. window.parent.showError("请选择打印模板");
  121. return ;
  122. }
  123. var data = new Object();
  124. params.caller = window.parent.parent.caller;
  125. if(caller =='ProdIO!PurcInBarPrint' || caller == 'ProdIO!PurcInObxPrint'){
  126. data["bi_piid"] = window.parent.Ext.getCmp("bi_piid").value;
  127. data["bi_pdno"] = window.parent.Ext.getCmp("bi_pdno").value;
  128. }else if(caller == 'BarSProfit!BarPrint' || caller == 'BarSProfit!ObxPrint'){
  129. data["bdd_bsdid"] = window.parent.Ext.getCmp("bsd_id").value;
  130. }else if(caller == 'VerifyAP!BarPrint' || caller == 'VerifyAP!ObxPrint'){//采购收料单
  131. data["vadp_vadid"] = Ext.getCmp("vad_id").value;
  132. data["vadp_vacode"] = Ext.getCmp("vad_code").value;
  133. }else if(caller == 'BarStockPrint'){
  134. data["bs_id"] = window.parent.Ext.getCmp("bs_id").value;
  135. params.caller = window.parent.caller;
  136. }else if(caller == 'ProdIO!BarPrintAll'){//出入库单主表点击打印所有条码
  137. data['pi_id'] = window.parent.Ext.getCmp("pi_id").value;
  138. params.caller = window.parent.caller;
  139. }else if(caller == 'MakeSerialCodePrintAll'){//序列号维护打印序列号
  140. data['mc_id'] = window.parent.Ext.getCmp("mc_id").value;
  141. params.caller = window.parent.caller;
  142. }else if(caller == 'MakeSerialCombinePrintAll'){//序列号维护打印拼板号
  143. data['mc_id'] = window.parent.Ext.getCmp("mc_id").value;
  144. params.caller = window.parent.caller;
  145. }else if(caller == 'MakeSerialCodePrint'){
  146. me.getSinglePrintData(function(data){
  147. var printData = data;
  148. if( printData != null){
  149. me.printViewLabel(printData);
  150. }
  151. });
  152. }
  153. params.printStore = unescape(escape(Ext.JSON.encode(data)));
  154. var form = Ext.getCmp("printLabelForm");
  155. var r = new Object();
  156. Ext.each(form.items.items, function(item){
  157. if(item.value != null && item.value != ''){
  158. r[item.id]=item.value;
  159. }
  160. });
  161. params.printForm = unescape(escape(Ext.JSON.encode(r)));
  162. params.lps_caller = caller;
  163. params.caller = window.parent.parent.caller;
  164. Ext.Ajax.request({
  165. url : basePath + "common/barcode/PrintAll.action",
  166. params :params,
  167. method : 'post',
  168. callback : function(options, success, response) {
  169. var res = new Ext.decode(response.responseText);
  170. if (res.exceptionInfo != null) {
  171. window.parent.showError(res.exceptionInfo);
  172. return;
  173. }else if(res.data.length>0){
  174. var printData = res.data;
  175. me.printLabel(printData);
  176. }
  177. }
  178. });
  179. }
  180. }
  181. });
  182. },
  183. getForm: function(btn){
  184. return btn.ownerCt.ownerCt;
  185. },
  186. getSelData :function(){//判断是否勾选了需要操作的数据
  187. if(caller =='PdaBarcodePrint'){
  188. var grid =window.parent.Ext.getCmp("batchDealGridPanel");
  189. if( grid.selModel.getCount() == 0 ){
  190. return false;
  191. }
  192. return true;
  193. }else if( caller == 'BarSProfit!BarPrint'){
  194. var grid =window.parent.Ext.getCmp("barStockCodeGridPanel");
  195. if( grid.selModel.getCount() == 0 ){
  196. return false;
  197. }
  198. return true;
  199. }else if(caller == 'VerifyAP!BarPrint'){
  200. var grid = window.parent.Ext.getCmp('verifyApplyDetailGridPanel');
  201. if( grid.selModel.getCount() == 0 ){
  202. return false;
  203. }
  204. return true;
  205. }else {
  206. var grid =window.parent.Ext.getCmp("setBarcodeGridPanel");
  207. if( grid.selModel.getCount() == 0 ){
  208. return false;
  209. }
  210. return true;
  211. }
  212. },
  213. getPrintAction :function(params,callback){
  214. Ext.Ajax.request({
  215. url : basePath + "common/barcode/Print.action",
  216. params : params,
  217. method : 'post',
  218. callback : function(opt, s, res){
  219. var r = new Ext.decode(res.responseText);
  220. if(r && r.exceptionInfo){
  221. window.parent.showError(r.exceptionInfo);return;
  222. } else if(r.data){
  223. callback && callback.call(null, r.data);
  224. }else{
  225. return;
  226. }
  227. }
  228. });
  229. },
  230. getSinglePrintData:function(callback){
  231. var form = Ext.getCmp("printLabelForm");
  232. var r = new Object();
  233. Ext.each(form.items.items, function(item) {
  234. if (item.value != null && item.value != '') {
  235. r[item.id] = item.value;
  236. }
  237. });
  238. var params = new Object();
  239. params.caller = window.parent.caller;
  240. params.lps_caller = caller;
  241. params.printForm = unescape(escape(Ext.JSON.encode(r)));
  242. params.gridStore = unescape(escape(Ext.JSON.encode({ms_id:formCondition})));
  243. this.getPrintAction(params, callback);
  244. },
  245. getPrintData : function(callback) {
  246. var form = Ext.getCmp("printLabelForm");
  247. var r = new Object();
  248. Ext.each(form.items.items, function(item) {
  249. if (item.value != null && item.value != '') {
  250. r[item.id] = item.value;
  251. }
  252. });
  253. var grid ;
  254. if(caller =='PdaBarcodePrint'){
  255. grid =window.parent.Ext.getCmp("batchDealGridPanel");
  256. }else if(caller == 'BarSProfit!BarPrint'){
  257. grid = window.parent.Ext.getCmp("barStockCodeGridPanel");
  258. }else if(caller == 'ProdIO!PurcInBarPrint'){
  259. grid = window.parent.Ext.getCmp("setBarcodeGridPanel");
  260. }else if(caller == 'VerifyAP!BarPrint'){
  261. grid = window.parent.Ext.getCmp('verifyApplyDetailGridPanel');
  262. }
  263. var items = grid.selModel.getSelection();
  264. Ext.each(items, function(item, index) {
  265. if (this.data[grid.keyField] != null&& this.data[grid.keyField] != ''
  266. && this.data[grid.keyField] != '0'&& this.data[grid.keyField] != 0) {
  267. item.index = this.data[grid.keyField];
  268. grid.multiselected.push(item);
  269. }
  270. });
  271. var records = Ext.Array.unique(grid.multiselected);
  272. if (records.length > 0) {
  273. var params = new Object();
  274. params.caller = window.parent.parent.caller;
  275. params.lps_caller = caller;
  276. params.printForm = unescape(escape(Ext.JSON.encode(r)));
  277. var bool = false;
  278. var data = new Array();
  279. Ext.each(records, function(record, index) {
  280. if ((grid.keyField && this.data[grid.keyField] != null&& this.data[grid.keyField] != ''
  281. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0)) {
  282. bool = true;
  283. var o = new Object();
  284. if (grid.keyField) {
  285. o[grid.keyField] = record.data[grid.keyField];
  286. }
  287. data.push(o);
  288. }
  289. });
  290. params.gridStore = unescape(escape(Ext.JSON.encode(data)));
  291. this.getPrintAction(params, callback);
  292. }
  293. },
  294. updatePrintStatus : function(params,uri){
  295. Ext.Ajax.request({//更新打印状态
  296. url : basePath + uri,
  297. params :params,
  298. method : 'post',
  299. callback : function(opt, s, res){
  300. var r = new Ext.decode(res.responseText);
  301. if(r && r.exceptionInfo){
  302. showError(r.exceptionInfo);return;
  303. }else{
  304. var grid ;
  305. if(caller == 'ProdIO!PurcInBarPrint'){
  306. grid =window.parent.Ext.getCmp("setBarcodeGridPanel");
  307. }else if(caller == 'VerifyAP!BarPrint'){
  308. grid = window.parent.Ext.getCmp('verifyApplyDetailGridPanel');
  309. }
  310. var gridCondition = window.parent.gridCondition;
  311. gridCondition = (gridCondition == null) ? "" : gridCondition.replace(/IS/g,"=");
  312. grid.GridUtil.loadNewStore(grid,{caller:window.parent.caller,condition:gridCondition});
  313. }
  314. }
  315. });
  316. },
  317. printViewLabel:function (printData){//打印预览
  318. var params = new Object();
  319. var ids = new Array();
  320. Ext.each(printData, function(record, index){
  321. LODOP.NewPage();
  322. Ext.each(record['store'],function(data,index){
  323. LODOP.SET_PRINT_STYLE("FontSize",data['LP_SIZE']);
  324. if(data['LP_VALUETYPE'] == 'barcode'){
  325. LODOP.ADD_PRINT_BARCODE(data['LP_TOPRATE']+"mm",data['LP_LEFTRATE']+"mm",data['LP_WIDTH']+"mm",data['LP_HEIGHT']+"mm",data['LP_ENCODE'],data['value']);
  326. LODOP.SET_PRINT_STYLEA(0,"ShowBarText",data['LP_IFSHOWNOTE']);
  327. LODOP.SET_PRINT_STYLEA(0,"AlignJustify",data['LP_NOTEALIGNJUSTIFY']);
  328. }else if(data['LP_VALUETYPE'] == 'text'){
  329. LODOP.SET_PRINT_STYLE("FontName",data['LP_FONT']);
  330. LODOP.ADD_PRINT_TEXT(data['LP_TOPRATE']+"mm",data['LP_LEFTRATE']+"mm",data['LP_WIDTH']+"mm",data['LP_HEIGHT']+"mm",data['value']);
  331. }
  332. });
  333. var o = new Object();
  334. if(caller == 'ProdIO!PurcInBarPrint'){
  335. o['bi_id'] = record['bi_id'];
  336. ids.push(o);
  337. }else if (caller == 'VerifyAP!BarPrint'){
  338. o['vadp_id'] = record['vadp_id'];
  339. ids.push(o);
  340. }
  341. });
  342. var pagesize = printData[0]['store'][0]['LA_PAGESIZE'];//获取标签的大小
  343. var strs= new Array(); //定义一数组
  344. strs = pagesize.split("*"); //字符分割
  345. LODOP.SET_PREVIEW_WINDOW(0,0,0,0,0,"");
  346. LODOP.SET_SHOW_MODE("HIDE_SBUTTIN_PREVIEW",1);
  347. LODOP.SET_PRINT_PAGESIZE(1, strs[0]*10, strs[1]*10, "");
  348. var times = LODOP.PREVIEW();//打印预览
  349. if(caller == 'ProdIO!PurcInBarPrint' || caller == 'VerifyAP!BarPrint'){
  350. if(times > 0){//点击了打印预览内的打印按钮
  351. params.ids = unescape(escape(Ext.JSON.encode(ids)));
  352. params.caller = window.parent.caller;
  353. var uri ;
  354. if (caller == 'VerifyAP!BarPrint'){
  355. uri = "common/purchase/updatePurPrintStatus.action";
  356. }else if (caller == 'ProdIO!PurcInBarPrint'){
  357. uri = "common/barcode/updatePrintStatus.action";
  358. }
  359. this.updatePrintStatus(params,uri);
  360. }
  361. }
  362. },
  363. printLabel:function(printStore){ //打印
  364. var LODOP = getLodop(document.getElementById('LODOP_OB'),document.getElementById('LODOP_EM'));
  365. var selectOrNot = LODOP.SELECT_PRINTER();//选择打印机,未-1就是取消,如果是其他数字就是设置打印机序号
  366. if (selectOrNot != -1) {
  367. LODOP.PRINT_INIT("标签打印");//设定纸张大小
  368. var pagesize = printStore[0]['store'][0]['LA_PAGESIZE'];//获取标签的大小
  369. var strs= new Array(); //定义一数组
  370. strs=pagesize.split("*"); //字符分割
  371. LODOP.SET_PRINT_PAGESIZE(1, strs[0]*10, strs[1]*10, "");
  372. var params = new Object();
  373. var ids = new Array();
  374. Ext.each(printStore, function(record, index) {
  375. //LODOP.NewPage();
  376. Ext.each(record['store'], function(data, index) {
  377. LODOP.SET_PRINT_STYLE("FontSize", data['LP_SIZE']);
  378. LODOP.SET_PRINT_STYLE("FontName",data['LP_FONT']);
  379. if (data['LP_VALUETYPE'] == 'barcode') {
  380. LODOP.ADD_PRINT_BARCODE(data['LP_TOPRATE']+"mm",data['LP_LEFTRATE']+"mm",data['LP_WIDTH']+"mm",data['LP_HEIGHT']+"mm", data['LP_ENCODE'], data['value']);
  381. LODOP.SET_PRINT_STYLEA(0,"ShowBarText", data['LP_IFSHOWNOTE']);
  382. LODOP.SET_PRINT_STYLEA(0,"AlignJustify", data['LP_NOTEALIGNJUSTIFY']);
  383. //“ShowBarText” :(一维)条码的码值是否显示 0/1
  384. //“AlignJustify”:设置“text文本”是否两端对齐或“barcode条码文字”靠齐方式
  385. //设置“barcode条码文字”时,0-两端对齐(默认) 1-左靠齐 2-居中 3-右靠齐
  386. } else if (data['LP_VALUETYPE'] == 'text') {
  387. LODOP.ADD_PRINT_TEXT(data['LP_TOPRATE']+"mm",data['LP_LEFTRATE']+"mm",data['LP_WIDTH']+"mm",data['LP_HEIGHT']+"mm", data['value']);
  388. }
  389. });
  390. var o = new Object();
  391. if(caller =='ProdIO!PurcInBarPrint'){
  392. o['bi_id'] = record['bi_id'];
  393. ids.push(o);
  394. }else if (caller == 'VerifyAP!BarPrint'){
  395. o['vadp_id'] = record['vadp_id'];
  396. ids.push(o);
  397. }
  398. LODOP.SET_PRINT_STYLEA(0,"NotOnlyHighPrecision",true);//设置打印的精度
  399. LODOP.PRINT();
  400. });
  401. if(caller == 'ProdIO!PurcInBarPrint' || caller == 'VerifyAP!BarPrint'){
  402. params.ids = unescape(escape(Ext.JSON.encode(ids)));
  403. params.caller = window.parent.caller;
  404. var uri ;
  405. if (caller == 'VerifyAP!BarPrint'){
  406. uri = "common/purchase/updatePurPrintStatus.action";
  407. }else if (caller == 'ProdIO!PurcInBarPrint'){
  408. uri = "common/barcode/updatePrintStatus.action";
  409. }
  410. this.updatePrintStatus(params,uri);
  411. }
  412. if(caller == 'ProdIO!BarPrintAll'){
  413. params.ids = unescape(escape(Ext.JSON.encode(window.parent.Ext.getCmp("pi_id").value)));
  414. params.caller = 'ProdIO!BarPrintAll';
  415. uri = "common/barcode/updatePrintStatus.action";
  416. Ext.Ajax.request({//更新打印状态
  417. url : basePath + uri,
  418. params :params,
  419. method : 'post',
  420. callback : function(opt, s, res){
  421. var r = new Ext.decode(res.responseText);
  422. if(r && r.exceptionInfo){
  423. showError(r.exceptionInfo);return;
  424. }
  425. }
  426. });
  427. }
  428. }
  429. }
  430. });