SelPrintTemplate.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339
  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'){
  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. if(caller =='ProdIO!PurcInBarPrint' || caller == 'ProdIO!PurcInObxPrint'){
  46. data["bi_piid"] = window.parent.Ext.getCmp("bi_piid").value;
  47. data["bi_pdno"] = window.parent.Ext.getCmp("bi_pdno").value;
  48. params.caller = window.parent.parent.caller;
  49. }else if(caller == 'BarSProfit!BarPrint' || caller == 'BarSProfit!ObxPrint'){
  50. data["bdd_bsdid"] = window.parent.Ext.getCmp("bsd_id").value;
  51. params.caller = window.parent.parent.caller;
  52. }else if(caller == 'BarStockPrint'){
  53. data["bs_id"] = window.parent.Ext.getCmp("bs_id").value;
  54. params.caller = window.parent.caller;
  55. }
  56. params.printStore = unescape(escape(Ext.JSON.encode(data)));
  57. var r = new Object();
  58. r["template"] = Ext.getCmp("template").value;
  59. params.printForm = unescape(escape(Ext.JSON.encode(r)));
  60. params.lps_caller = caller;
  61. Ext.Ajax.request({//获取打印数据
  62. url : basePath + "common/barcode/PrintAll.action",
  63. params :params,
  64. method : 'post',
  65. callback : function(opt, s, res){
  66. var r = new Ext.decode(res.responseText);
  67. if(r && r.exceptionInfo){
  68. window.parent.showError(r.exceptionInfo);return;
  69. }else if(r.data.length>0){
  70. var printData = r.data;
  71. if(printData != null){
  72. me.printViewLabel(printData);
  73. }
  74. }
  75. }
  76. });
  77. }
  78. },
  79. 'button[id=barPrint]':{//打印
  80. click :function (btn){
  81. var LODOP = getLodop(document.getElementById('LODOP_OB'),document.getElementById('LODOP_EM'));
  82. if(caller == 'ProdIO!PurcInBarPrint' ||caller == 'BarSProfit!BarPrint'||caller == 'PdaBarcodePrint'){
  83. if(me.getSelData()){
  84. me.getPrintData(function(data){
  85. var printData = data;
  86. if( printData != null){
  87. me.printLabel(printData);
  88. }
  89. });
  90. return ;
  91. }else{
  92. if(caller =='PdaBarcodePrint'){
  93. window.parent.showError("没有勾选需要打印的行,请勾选!");
  94. return;
  95. }
  96. window.parent.showError("没有勾选需要打印的行,将全部打印!");
  97. }
  98. }
  99. var params = new Object();
  100. if(Ext.getCmp("template").value == "" || Ext.getCmp("template").value == null){
  101. window.parent.showError("请选择打印模板");
  102. return ;
  103. }
  104. var data = new Object();
  105. if(caller =='ProdIO!PurcInBarPrint' || caller == 'ProdIO!PurcInObxPrint'){
  106. data["bi_piid"] = window.parent.Ext.getCmp("bi_piid").value;
  107. data["bi_pdno"] = window.parent.Ext.getCmp("bi_pdno").value;
  108. params.caller = window.parent.parent.caller;
  109. }else if(caller == 'BarSProfit!BarPrint' || caller == 'BarSProfit!ObxPrint'){
  110. data["bdd_bsdid"] = window.parent.Ext.getCmp("bsd_id").value;
  111. params.caller = window.parent.parent.caller;
  112. }else if(caller == 'BarStockPrint'){
  113. data["bs_id"] = window.parent.Ext.getCmp("bs_id").value;
  114. params.caller = window.parent.caller;
  115. }
  116. params.printStore = unescape(escape(Ext.JSON.encode(data)));
  117. var form = Ext.getCmp("printLabelForm");
  118. var r = new Object();
  119. Ext.each(form.items.items, function(item){
  120. if(item.value != null && item.value != ''){
  121. r[item.id]=item.value;
  122. }
  123. });
  124. params.printForm = unescape(escape(Ext.JSON.encode(r)));
  125. params.lps_caller = caller;
  126. params.caller = window.parent.parent.caller;
  127. Ext.Ajax.request({
  128. url : basePath + "common/barcode/PrintAll.action",
  129. params :params,
  130. method : 'post',
  131. callback : function(options, success, response) {
  132. var res = new Ext.decode(response.responseText);
  133. if (res.exceptionInfo != null) {
  134. window.parent.showError(res.exceptionInfo);
  135. return;
  136. }else if(res.data.length>0){
  137. var printData = res.data;
  138. me.printLabel(printData);
  139. }
  140. }
  141. });
  142. }
  143. }
  144. });
  145. },
  146. getForm: function(btn){
  147. return btn.ownerCt.ownerCt;
  148. },
  149. getSelData :function(){//判断是否勾选了需要操作的数据
  150. if(caller =='PdaBarcodePrint'){
  151. var grid =window.parent.Ext.getCmp("batchDealGridPanel");
  152. var bool = false;
  153. if( grid.selModel.getCount() == 0 ){
  154. return false;
  155. }
  156. return true;
  157. }else if( caller == 'BarSProfit!BarPrint'){
  158. var grid =window.parent.Ext.getCmp("barStockCodeGridPanel");
  159. var bool = false;
  160. if( grid.selModel.getCount() == 0 ){
  161. return false;
  162. }
  163. return true;
  164. }else {
  165. var grid =window.parent.Ext.getCmp("setBarcodeGridPanel");
  166. var bool = false;
  167. if( grid.selModel.getCount() == 0 ){
  168. return false;
  169. }
  170. return true;
  171. }
  172. },
  173. getPrintAction :function(params,callback){
  174. Ext.Ajax.request({
  175. url : basePath + "common/barcode/Print.action",
  176. params : params,
  177. method : 'post',
  178. callback : function(opt, s, res){
  179. var r = new Ext.decode(res.responseText);
  180. if(r && r.exceptionInfo){
  181. window.parent.showError(r.exceptionInfo);return;
  182. } else if(r.data){
  183. callback && callback.call(null, r.data);
  184. }else{
  185. return;
  186. }
  187. }
  188. });
  189. },
  190. getPrintData : function(callback) {
  191. var form = Ext.getCmp("printLabelForm");
  192. var r = new Object();
  193. Ext.each(form.items.items, function(item) {
  194. if (item.value != null && item.value != '') {
  195. r[item.id] = item.value;
  196. }
  197. });
  198. var grid ;
  199. if(caller =='PdaBarcodePrint'){
  200. grid =window.parent.Ext.getCmp("batchDealGridPanel");
  201. }else if(caller == 'BarSProfit!BarPrint'){
  202. grid = window.parent.Ext.getCmp("barStockCodeGridPanel");
  203. }else {
  204. grid = window.parent.Ext.getCmp("setBarcodeGridPanel");
  205. }
  206. var items = grid.selModel.getSelection();
  207. Ext.each(items, function(item, index) {
  208. if (this.data[grid.keyField] != null&& this.data[grid.keyField] != ''
  209. && this.data[grid.keyField] != '0'&& this.data[grid.keyField] != 0) {
  210. item.index = this.data[grid.keyField];
  211. grid.multiselected.push(item);
  212. }
  213. });
  214. var records = Ext.Array.unique(grid.multiselected);
  215. if (records.length > 0) {
  216. var params = new Object();
  217. if(caller =='PdaBarcodePrint'){
  218. params.caller = window.parent.caller;
  219. }else{
  220. params.caller = window.parent.parent.caller;
  221. }
  222. params.lps_caller = caller;
  223. params.printForm = unescape(escape(Ext.JSON.encode(r)));
  224. var bool = false;
  225. var data = new Array();
  226. Ext.each(records, function(record, index) {
  227. if ((grid.keyField && this.data[grid.keyField] != null&& this.data[grid.keyField] != ''
  228. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0)) {
  229. bool = true;
  230. var o = new Object();
  231. if (grid.keyField) {
  232. o[grid.keyField] = record.data[grid.keyField];
  233. }
  234. data.push(o);
  235. }
  236. });
  237. params.gridStore = unescape(escape(Ext.JSON.encode(data)));
  238. this.getPrintAction(params, callback);
  239. }
  240. },
  241. updatePrintStatus : function(params){
  242. Ext.Ajax.request({//更新打印状态
  243. url : basePath + "common/barcode/updatePrintStatus.action",
  244. params :params,
  245. method : 'post',
  246. callback : function(opt, s, res){
  247. var r = new Ext.decode(res.responseText);
  248. if(r && r.exceptionInfo){
  249. showError(r.exceptionInfo);return;
  250. }else{
  251. var grid =window.parent.Ext.getCmp("setBarcodeGridPanel");
  252. var gridCondition = window.parent.gridCondition;
  253. gridCondition = (gridCondition == null) ? "" : gridCondition.replace(/IS/g,"=");
  254. grid.GridUtil.loadNewStore(grid,{caller:window.parent.caller,condition:gridCondition});
  255. }
  256. }
  257. });
  258. },
  259. printViewLabel:function (printData){
  260. var params = new Object();
  261. var ids = new Array();
  262. Ext.each(printData, function(record, index){
  263. LODOP.NewPage();
  264. Ext.each(record['store'],function(data,index){
  265. LODOP.SET_PRINT_STYLE("FontSize",data['LP_SIZE']);
  266. if(data['LP_VALUETYPE'] == 'barcode'){
  267. 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']);
  268. LODOP.SET_PRINT_STYLEA(0,"ShowBarText",data['LP_IFSHOWNOTE']);
  269. LODOP.SET_PRINT_STYLEA(0,"AlignJustify",data['LP_NOTEALIGNJUSTIFY']);
  270. LODOP.SET_PRINT_STYLEA(0,"Bold",1);
  271. }else if(data['LP_VALUETYPE'] == 'text'){
  272. LODOP.SET_PRINT_STYLE("FontName",data['LP_FONT']);
  273. LODOP.ADD_PRINT_TEXT(data['LP_TOPRATE']+"mm",data['LP_LEFTRATE']+"mm",data['LP_WIDTH']+"mm",data['LP_HEIGHT']+"mm",data['value']);
  274. }
  275. });
  276. if(caller == 'ProdIO!PurcInBarPrint'){
  277. var o = new Object();
  278. o['bi_id'] = record['bi_id'];
  279. ids.push(o);
  280. }
  281. });
  282. var pagesize = printData[0]['store'][0]['LA_PAGESIZE'];//获取标签的大小
  283. var strs= new Array(); //定义一数组
  284. strs=pagesize.split("*"); //字符分割
  285. LODOP.SET_PREVIEW_WINDOW(0,0,0,0,0,"");
  286. LODOP.SET_SHOW_MODE("HIDE_SBUTTIN_PREVIEW",1);
  287. LODOP.SET_PRINT_PAGESIZE(1, strs[0]*10, strs[1]*10, "");
  288. var times = LODOP.PREVIEW();//打印预览
  289. if(caller == 'ProdIO!PurcInBarPrint'){
  290. if(times > 0){//点击了打印预览内的打印按钮
  291. params.ids = unescape(escape(Ext.JSON.encode(ids)));
  292. params.caller = window.parent.caller;
  293. this.updatePrintStatus(params);
  294. }
  295. }
  296. },
  297. printLabel:function(printStore){
  298. var LODOP = getLodop(document.getElementById('LODOP_OB'),document.getElementById('LODOP_EM'));
  299. var selectOrNot = LODOP.SELECT_PRINTER();//选择打印机,未-1就是取消,如果是其他数字就是设置打印机序号
  300. if (selectOrNot != -1) {
  301. LODOP.PRINT_INIT("标签打印");//设定纸张大小
  302. var pagesize = printStore[0]['store'][0]['LA_PAGESIZE'];//获取标签的大小
  303. var strs= new Array(); //定义一数组
  304. strs=pagesize.split("*"); //字符分割
  305. LODOP.SET_PRINT_PAGESIZE(1, strs[0]*10, strs[1]*10, "");
  306. var params = new Object();
  307. var ids = new Array();
  308. Ext.each(printStore, function(record, index) {
  309. //LODOP.NewPage();
  310. Ext.each(record['store'], function(data, index) {
  311. LODOP.SET_PRINT_STYLE("FontSize", data['LP_SIZE']);
  312. LODOP.SET_PRINT_STYLE("FontName",data['LP_FONT']);
  313. if (data['LP_VALUETYPE'] == 'barcode') {
  314. 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']);
  315. LODOP.SET_PRINT_STYLEA(0,"ShowBarText", data['LP_IFSHOWNOTE']);
  316. LODOP.SET_PRINT_STYLEA(0,"AlignJustify", data['LP_NOTEALIGNJUSTIFY']);
  317. LODOP.SET_PRINT_STYLEA(0,"Bold",1);
  318. //“ShowBarText” :(一维)条码的码值是否显示 0/1
  319. //“AlignJustify”:设置“text文本”是否两端对齐或“barcode条码文字”靠齐方式
  320. //设置“barcode条码文字”时,0-两端对齐(默认) 1-左靠齐 2-居中 3-右靠齐
  321. } else if (data['LP_VALUETYPE'] == 'text') {
  322. LODOP.ADD_PRINT_TEXT(data['LP_TOPRATE']+"mm",data['LP_LEFTRATE']+"mm",data['LP_WIDTH']+"mm",data['LP_HEIGHT']+"mm", data['value']);
  323. }
  324. });
  325. var o = new Object();
  326. o['bi_id'] = record['bi_id'];
  327. ids.push(o);
  328. LODOP.SET_PRINT_STYLEA(0,"NotOnlyHighPrecision",true);//设置打印的精度
  329. LODOP.PRINT();
  330. });
  331. if(caller =='ProdIO!PurcInBarPrint'){
  332. params.ids = unescape(escape(Ext.JSON.encode(ids)));
  333. params.caller = window.parent.parent.caller;
  334. this.updatePrintStatus(params);
  335. }
  336. }
  337. }
  338. });