pddPrintBill.js 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801
  1. var printPageUrl = "";
  2. var billOrderList = [];
  3. var IsPrintOrderList = [];
  4. var orderCount = 0;
  5. var errorMsg = "";
  6. let isConnected = false;
  7. function doConnect() {
  8. const service_status = $(".service_status")
  9. socket = new WebSocket('ws://127.0.0.1:5000');//菜鸟ws://127.0.0.1:13528, 13888抖音打印组件, //拼多多打印组件ws://127.0.0.1:5000;wss://127.0.0.1:18653 //京东 ws为9113;wss为9114
  10. socket.onerror = function (e) {
  11. service_status.text('打印服务状态:未连接');
  12. isConnected = false;
  13. }
  14. // 打开Socket
  15. socket.onopen = function (event) {
  16. service_status.text('打印服务状态:已连接');
  17. isConnected = true;
  18. // 监听消息
  19. socket.onmessage = function (event) {
  20. console.log('Client received a message', event);
  21. var response = JSON.parse(event.data);
  22. if (response.cmd == 'getPrinters') {
  23. getPrintersHandler(response);//处理打印机列表
  24. } else if (response.cmd == 'setPrinterConfig') {
  25. printConfigHandler(response);
  26. }
  27. };
  28. // 监听Socket的关闭
  29. socket.onclose = function (event) {
  30. console.log('Client notified socket has closed', event);
  31. };
  32. };
  33. }
  34. function doGetPrinters() {
  35. var request = getRequestObject("getPrinters");
  36. socket.send(JSON.stringify(request));
  37. }
  38. function doSetPrintConfig(pName) {
  39. var request = getRequestObject("setPrinterConfig");
  40. request.printer = {};
  41. request.printer.name = pName;
  42. request.printer.needBottomLogo = false;
  43. request.printer.autoOrientation = false;
  44. request.printer.needTopLogo = false;
  45. request.printer.orientation = 0;//纵向
  46. //request.printer.horizontalOffset = 0.2;
  47. //request.printer.verticalOffset = 0.3;
  48. request.printer.autoPageSize = false;
  49. //request.printer.paperSize.width = 55;
  50. //request.printer.paperSize.height = 95;
  51. request.printer.paperSize = {};
  52. request.printer.paperSize.width = 75;
  53. request.printer.paperSize.height = 128;
  54. request.printer.orientation = 0;
  55. request.printer.autoOrientation = true;
  56. socket.send(JSON.stringify(request));
  57. }
  58. function printConfigHandler(res) {
  59. console.log("xxxxx", res);
  60. }
  61. /***
  62. *
  63. * 获取请求的UUID,指定长度和进制,如
  64. * getUUID(8, 2) //"01001010" 8 character (base=2)
  65. * getUUID(8, 10) // "47473046" 8 character ID (base=10)
  66. * getUUID(8, 16) // "098F4D35"。 8 character ID (base=16)
  67. *
  68. */
  69. function getUUID(len, radix) {
  70. var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
  71. var uuid = [], i;
  72. radix = radix || chars.length;
  73. if (len) {
  74. for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix];
  75. } else {
  76. var r;
  77. uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
  78. uuid[14] = '4';
  79. for (i = 0; i < 36; i++) {
  80. if (!uuid[i]) {
  81. r = 0 | Math.random() * 16;
  82. uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
  83. }
  84. }
  85. }
  86. return uuid.join('');
  87. }
  88. /***
  89. * 构造request对象
  90. */
  91. function getRequestObject(cmd) {
  92. var request = new Object();
  93. request.requestID = getUUID(8, 16);
  94. request.version = "1.0";
  95. request.cmd = cmd;
  96. return request;
  97. }
  98. /***
  99. * 获取自定义区数据以及模板URL
  100. * waybillNO 电子面单号
  101. */
  102. function getCustomAreaData(waybillNO) {
  103. //获取waybill对应的自定义区的JSON object,此处的ajaxGet函数是伪代码
  104. var jsonObject = ajaxGet(waybillNO);
  105. var ret = new Object();
  106. ret.templateURL = jsonObject.content.templateURL;
  107. ret.data = jsonObject.content.data;
  108. return ret;
  109. }
  110. /***
  111. * 获取电子面单Json 数据
  112. * waybillNO 电子面单号
  113. */
  114. function getWaybillJson(waybillNO) {
  115. //获取waybill对应的json object,此处的ajaxGet函数是伪代码
  116. var jsonObject = ajaxGet(waybillNO);
  117. return jsonObject;
  118. }
  119. /**
  120. * 弹窗模式配置打印机
  121. * */
  122. //var request = getRequestObject("printerConfig");
  123. //webSocket.send(JSON.stringify(request));
  124. /**
  125. * 打印电子面单
  126. * printer 指定要使用那台打印机
  127. * waybillArray 要打印的电子面单的数组
  128. */
  129. function doPrint(data, sellerMemo) {
  130. var nJsonData = JSON.parse(data);
  131. var docuData = nJsonData.waybillCloudPrintResponseList[0];
  132. var printStr = docuData.printData;
  133. printStr = printStr.replace(/\\/g, "");
  134. var printData = JSON.parse(printStr);
  135. console.log(printData);
  136. var request = getRequestObject("print");
  137. request.task = new Object();
  138. request.task.taskID = getUUID(8, 10);
  139. request.task.preview = false;
  140. request.task.printer = mini.get("txtBillPrinter_CN").getText();
  141. var documents = new Array();
  142. var doc = new Object();
  143. doc.documentID = docuData.waybillCode;
  144. var content = new Array();
  145. var obj = {};
  146. obj.templateURL = mini.get("txtBillModel_CN").getValue();
  147. var selfData = {};
  148. selfData.recipient = printData.data.recipient;
  149. selfData.routingInfo = printData.data.routingInfo;
  150. selfData.sender = printData.data.sender;
  151. selfData.shippingOption = printData.data.recipient.shippingOption;
  152. selfData.waybillCode = docuData.waybillCode;
  153. selfData.packageInfo = printData.data.packageInfo;
  154. //selfData.item_name = "我是你要的商品芭比娃娃。。。";
  155. obj.data = selfData
  156. content.push(obj);
  157. var Obj2 = {};
  158. Obj2.data = {};
  159. Obj2.data.value = "";
  160. //Obj2.templateURL = "http://cloudprint.cainiao.com/template/customArea/440439";
  161. Obj2.templateURL = printPageUrl + "/waybillPrintPage.aspx?value=" + sellerMemo;
  162. content.push(Obj2);
  163. doc.contents = content;
  164. documents.push(doc);
  165. request.task.documents = documents;
  166. socket.send(JSON.stringify(request));
  167. }
  168. function doPrintSF(iData, sellerMemo) {
  169. var mainDataStr = iData.data;
  170. mainDataStr = mainDataStr.replace(/\\/g, "");
  171. //mainDataStr = mainDataStr.replace(/n/g, "");
  172. var mainData = JSON.parse(mainDataStr);
  173. var docData = mainData.data[0]
  174. console.log("SFSFSFSF", docData);
  175. var request = getRequestObject("print");
  176. request.task = new Object();
  177. request.task.taskID = getUUID(8, 10);
  178. request.task.preview = false;
  179. request.task.printer = mini.get("txtBillPrinter").getText();
  180. var documents = new Array();
  181. var doc = new Object();
  182. doc.documentID = docData.waybillCode;
  183. var content = new Array();
  184. var obj = {};
  185. //obj.templateURL = docData.templateURL;
  186. //var selfData = {};
  187. //selfData.recipient = docData.printData.receiverInfo;
  188. ////selfData.routingInfo =
  189. //selfData.sender = docData.printData.deliverInfo;
  190. ////selfData.shippingOption = deliverInfo;
  191. //selfData.waybillCode = docData.waybillCode;
  192. //selfData.packageInfo = printData.data.packageInfo;
  193. //selfData.item_name = "我是你要的商品芭比娃娃。。。";
  194. obj.templateURL = docData.templateURL;
  195. obj.data = docData.printData;
  196. content.push(obj);
  197. var Obj2 = {};
  198. Obj2.data = {};
  199. Obj2.data.value = "";
  200. //Obj2.templateURL = "http://cloudprint.cainiao.com/template/customArea/440439";
  201. Obj2.templateURL = printPageUrl + "/waybillPrintPage2.aspx?value=" + sellerMemo;
  202. content.push(Obj2);
  203. doc.contents = content;
  204. documents.push(doc);
  205. request.task.documents = documents;
  206. socket.send(JSON.stringify(request));
  207. }
  208. function doPrintEn(data, sellerMemo) {
  209. var nJsonData = JSON.parse(data);
  210. var docuData = nJsonData.response.data.content[0];
  211. //var printStr = docuData.printData;
  212. //printStr = printStr.replace(/\\/g, "");
  213. //var printData = JSON.parse(printStr);
  214. //console.log(printData);
  215. var request = getRequestObject("print");
  216. request.task = new Object();
  217. request.task.taskID = getUUID(8, 10);
  218. request.task.preview = false;
  219. request.task.printer = mini.get("txtBillPrinter").getText();
  220. var documents = new Array();
  221. var doc = new Object();
  222. doc.documentID = docuData.waybillCode;
  223. var content = new Array();
  224. //var obj = {};
  225. //obj.templateURL = mini.get("txtBillModel").getValue();
  226. //var selfData = {};
  227. //selfData.recipient = printData.data.recipient;
  228. //selfData.routingInfo = printData.data.routingInfo;
  229. //selfData.sender = printData.data.sender;
  230. //selfData.shippingOption = printData.data.recipient.shippingOption;
  231. //selfData.waybillCode = docuData.waybillCode;
  232. //selfData.packageInfo = printData.data.packageInfo;
  233. //selfData.item_name = "我是你要的商品芭比娃娃。。。";
  234. //obj.data = selfData
  235. content.push(docuData.props);
  236. console.log("doPrintEn", sellerMemo);
  237. let result_str = "";
  238. for (let i = 0; i < sellerMemo.length; i++) {
  239. if (i % 20 === 0 && i != 0) {
  240. result_str += "\n";
  241. }
  242. result_str += sellerMemo[i];
  243. }
  244. var Obj2 = {};
  245. Obj2.data = {};
  246. Obj2.data.list = [];
  247. var objsmall = new Object();
  248. objsmall.text = result_str;
  249. //objsmall.value = "";
  250. Obj2.data.list.push(objsmall);
  251. Obj2.data.text = result_str;
  252. Obj2.templateURL = printPageUrl + "/PDDXMLFile.xml";
  253. content.push(Obj2);
  254. doc.contents = content;
  255. documents.push(doc);
  256. request.task.documents = documents;
  257. socket.send(JSON.stringify(request));
  258. }
  259. //function doPrint(data) {
  260. // var docuData = data.cainiao_waybill_ii_get_response.modules.waybill_cloud_print_response[0];
  261. // var printStr = docuData.print_data;
  262. // printStr = printStr.replace(/\\/g, "");
  263. // var printData = JSON.parse(printStr);
  264. // console.log(printData);
  265. // var request = getRequestObject("print");
  266. // request.task = new Object();
  267. // request.task.taskID = getUUID(8, 10);
  268. // request.task.preview = false;
  269. // request.task.printer = mini.get("txtBillPrinter").getText();
  270. // var documents = new Array();
  271. // var doc = new Object();
  272. // doc.documentID = docuData.waybill_code;
  273. // var content = new Array();
  274. // var obj = {};
  275. // obj.templateURL = mini.get("txtBillModel").getValue();
  276. // var selfData = {};
  277. // selfData.recipient = printData.data.recipient;
  278. // selfData.routingInfo = printData.data.routingInfo;
  279. // selfData.sender = printData.data.sender;
  280. // selfData.shippingOption = printData.data.recipient.shippingOption;
  281. // selfData.waybillCode = docuData.waybill_code;
  282. // selfData.packageInfo = printData.data.packageInfo;
  283. // selfData.item_name = "我是你要的商品芭比娃娃。。。";
  284. // obj.data = selfData
  285. // content.push(obj);
  286. // var Obj2 = {};
  287. // Obj2.data = {};
  288. // Obj2.data.item_name = "我是你要的商品芭比娃娃";
  289. // content.push(Obj2);
  290. // doc.contents = content;
  291. // documents.push(doc);
  292. // request.task.documents = documents;
  293. // socket.send(JSON.stringify(request));
  294. //}
  295. function getPrintersHandler(jsonData) {
  296. console.log("xxxx", jsonData);
  297. if (jsonData.printers != undefined && jsonData.printers.length > 0) {
  298. mini.get("txtBillPrinter").setData(jsonData.printers);
  299. mini.get("txtBillPrinter_CN").setData(jsonData.printers);
  300. }
  301. }
  302. //打开弹窗
  303. function waybillFn() {
  304. var rec = grid.getSelecteds();
  305. if (rec != undefined && rec != "" && rec.length > 0) {
  306. if (!isConnected) {
  307. return mini.alert("打印机未连接")
  308. }
  309. //edit_id = rec.tid;
  310. var offline_str = "";
  311. for (var item of rec) {
  312. if (item.IsOffLineOrder == 1) {
  313. offline_str += item.ctid;
  314. offline_str += ",";
  315. }
  316. }
  317. if (offline_str.length > 0) {
  318. mini.alert("选中订单中有线下单:" + offline_str + "线下单请使用“菜鸟打单");
  319. return;
  320. }
  321. mini.get("waybill_win").show();
  322. $("#win_btns").show();
  323. $("#qr_input").hide();
  324. $("#waybill_win").find("input").val("");
  325. doGetPrinters();
  326. var wb_cpname = localStorage.getItem("waybill_cpname");
  327. var wb_cpcode = localStorage.getItem("waybill_cpcode");
  328. //var wb_tempid = localStorage.getItem("waybill_tempid");
  329. //var wb_temptext = localStorage.getItem("waybill_temptext");
  330. var wb_printer = localStorage.getItem("waybill_printer");
  331. if (wb_cpcode != undefined && wb_cpcode != null) {
  332. mini.get("txtBillCom").setValue(wb_cpcode);
  333. //mini.get("txtBillModel").setValue(wb_tempid);
  334. //mini.get("txtBillModel").setText(wb_temptext);
  335. mini.get("txtBillPrinter").setText(wb_printer);
  336. mini.get("txtBillPrinter").setValue(wb_printer);
  337. doSetPrintConfig(wb_printer);
  338. }
  339. }
  340. else {
  341. mini.alert("请选中一行记录!");
  342. }
  343. }
  344. function QRwaybillFn() {
  345. if (!isConnected) {
  346. return mini.alert("打印机未连接")
  347. }
  348. mini.get("waybill_win").show();
  349. $("#waybill_win").find("input").val("");
  350. $("#win_btns").hide();
  351. $("#qr_input").show();
  352. doGetPrinters();
  353. var wb_cpname = localStorage.getItem("waybill_cpname");
  354. var wb_cpcode = localStorage.getItem("waybill_cpcode");
  355. var wb_printer = localStorage.getItem("waybill_printer");
  356. if (wb_cpcode != undefined && wb_cpcode != null) {
  357. mini.get("txtBillCom").setValue(wb_cpcode);
  358. mini.get("txtBillPrinter").setText(wb_printer);
  359. mini.get("txtBillPrinter").setValue(wb_printer);
  360. doSetPrintConfig(wb_printer);
  361. }
  362. }
  363. function onBillComChanged(e) {
  364. var rec = e.selected;
  365. console.log(rec);
  366. var id = rec.id;
  367. var name = rec.name;
  368. //mini.get("txtBillModel").setValue("");
  369. //var url = "../handler/sync.ashx?t=get_waybill_model&pid=" + id
  370. //mini.get("txtBillModel").setUrl(url);
  371. //var printTem = localStorage.getItem("waybill_templates");
  372. //console.log("printem", printTem);
  373. //if (printTem != undefined && printTem != "") {
  374. // printTem = JSON.parse(printTem);
  375. //}
  376. //console.log("printTemplate", printTem);
  377. //var cname = name.split("-")[0];
  378. //var tempList = printTem.response.data.content;
  379. //var needList = [];
  380. //if (tempList.length > 0) {
  381. // for (var tp of tempList) {
  382. // if (tp.name.indexOf(cname) != -1) {
  383. // needList.push(tp);
  384. // }
  385. // }
  386. //}
  387. //mini.get("txtBillModel").setData(needList);
  388. }
  389. function onBillPrinterChanged(e) {
  390. doSetPrintConfig(mini.get("txtBillPrinter").getText());
  391. }
  392. function saveWaybillFn() {
  393. //var url = "http://d3.diansan.com/d3/open/print/express/index.html?waybillCodeList=YT5608493119031&templateId=1&requestId=1909374336748825642&sourceType=THIRD_ORDER";
  394. //openWaiWin("打印面单", url, 900, 700, null);
  395. //return;
  396. mini.get("id_saveWaybillBtn").disable();
  397. //mini.get("id_sysWaybillBtn").disable();
  398. IsPrintOrderList = [];
  399. billOrderList = [];
  400. billOrderList = grid.getSelecteds();
  401. orderCount = billOrderList.length;
  402. errorMsg = "";
  403. if (billOrderList.length <= 0) return;
  404. console.log(billOrderList);
  405. progressShow("电子面单打印中...进度:1");
  406. sendPrintData(0);
  407. }
  408. function sendPrintData(iTag) {
  409. if (iTag >= orderCount) {
  410. //console.log("return" + billOrderList.length);
  411. grid.reload();
  412. mini.get("id_saveWaybillBtn").enable();
  413. //mini.get("id_sysWaybillBtn").enable();
  414. return;
  415. }
  416. let vend_list = supperIds == null ? [] : supperIds.split(",");
  417. //console.log("start" + billOrderList.length);
  418. var item = billOrderList[iTag];
  419. let suppiers = ["97", "98"];
  420. let intersection = vend_list.length == 0 ? [] : suppiers.filter(function (v) { return vend_list.indexOf(v) > -1 });
  421. if (intersection.length > 0) {
  422. checkOrderSplit(item, iTag)
  423. } else {
  424. if (item.SplitTag.length > 0) {
  425. isHaveOtherOrder(item.ctid, item, iTag, item.tid);
  426. }
  427. else {
  428. doRealGetPrintData(item, iTag);
  429. }
  430. }
  431. }
  432. function doRealGetPrintData(item, iTag, isTogether = 0) {
  433. var ctid = item.ctid;
  434. var cpcode = mini.get("txtBillCom").getValue();
  435. var cpname = mini.get("txtBillCom").getText();
  436. //var tempId = mini.get("txtBillModel").getValue();
  437. if (cpcode == "") {
  438. alert("快递公司和模板不能为空!");
  439. return;
  440. }
  441. var parms = new Object();
  442. parms.ctid = ctid;
  443. parms.cpcode = cpcode;
  444. parms.cpname = cpname;
  445. parms.together = isTogether;
  446. $("#progressShowDiv").html("电子面单打印中...进度:" + (iTag + 1));
  447. postAjaxSync("set_erp_printwaybill", parms, function (data) {
  448. //console.log("back" + billOrderList.length);
  449. console.log("电子面单返回data", data);
  450. if (data.restype == 0) {
  451. errorMsg += item.ctid;
  452. errorMsg += data.data;
  453. errorMsg += ",";
  454. }
  455. else if (data.restype == 1) {
  456. if (cpcode == "SFFQ-LY") {
  457. doPrintSF(data, item.seller_memo);
  458. }
  459. else
  460. doPrintEn(data.data, item.seller_memo);
  461. }
  462. if (iTag < orderCount - 1) {
  463. //console.log("another" + billOrderList.length);
  464. sendPrintData(iTag + 1);
  465. }
  466. else {
  467. localStorage.setItem("waybill_cpcode", cpcode);
  468. localStorage.setItem("waybill_cpname", cpname);
  469. localStorage.setItem("waybill_printer", mini.get("txtBillPrinter").getText());
  470. grid.reload();
  471. mini.get("id_saveWaybillBtn").enable();
  472. //mini.get("id_sysWaybillBtn").enable();
  473. mini.get("waybill_win").hide();
  474. progressHide();
  475. if (errorMsg != "") {
  476. mini.alert(errorMsg);
  477. }
  478. //console.log("end" + billOrderList.length);
  479. }
  480. });
  481. }
  482. function isHaveOtherOrder(ctid, item, iTag, tid) {
  483. for (var ltid of IsPrintOrderList) {
  484. if (ltid == tid) {
  485. sendPrintData(iTag + 1);
  486. return;
  487. }
  488. }
  489. postAjax("get_erp_sameorders", "ctid=" + ctid, function (data) {
  490. if (data.data > 1) {
  491. mini.showMessageBox({
  492. title: "提示!",
  493. width: 500, //宽度
  494. height: 200, //高度
  495. iconCls: "mini-messagebox-question",
  496. buttons: ["继续打单", "合并打单", "取消打印"],
  497. message: "请注意:该订单有相同发货地址,共 " + data.data + " 单!",
  498. callback: function (action) {
  499. if (action == "继续打单") {
  500. doRealGetPrintData(item, iTag);
  501. }
  502. else if (action == "合并打单") {
  503. IsPrintOrderList.push(tid);
  504. doRealGetPrintData(item, iTag, 1);
  505. }
  506. else if (action == "取消打印") {
  507. mini.get("id_saveWaybillBtn").enable();
  508. return;
  509. }
  510. }
  511. });
  512. return;
  513. }
  514. else {
  515. doRealGetPrintData(item, iTag);
  516. }
  517. });
  518. }
  519. function cancelWaybillFn() {
  520. mini.get("waybill_win").hide();
  521. }
  522. function checkOrderSplit(item, iTag) {
  523. let ctid = item.ctid;
  524. postAjaxSync("check_erp_sameorders", { ctid }, function (data) {
  525. if (data.data) {
  526. let mome = "";
  527. let tableHtml = "";
  528. let isNumber = false;
  529. if (data.data.length > 0) {
  530. for (let i = 0; i < data.data.length; i++) {
  531. let item = data.data[i];
  532. let sf = "";
  533. let stateStr = "";
  534. if (item.IsSF == 1) {
  535. sf = "顺丰寄付";
  536. } else if (item.IsSF == 2) {
  537. sf = "顺丰到付"
  538. }
  539. if (item.dstate == 0) {
  540. stateStr = "生产中";
  541. } else if (item.dstate == 1) {
  542. stateStr = "此件";
  543. mome = item.seller_memo;
  544. } else if (item.dstate == 2) {
  545. stateStr = "等待中";
  546. isNumber = true;
  547. }
  548. tableHtml += `<tr>
  549. <td>${item.ctid}</td>
  550. <td>${sf}</td>
  551. <td style="width:600px">${item.seller_memo}</td>
  552. <td>${item.OtherMemo}</td>
  553. <td>${stateStr}</td>
  554. <td>${item.dnumber}</td>
  555. </tr>`;
  556. }
  557. let html = `<div style="font-size: 20px;row-gap: 10px;display: flex;flex-direction: column;">
  558. <div>请注意:该订单有需要合包的拆单,共${data.data.length}单!</div>
  559. <div>${mome}</div>
  560. <table border="1">
  561. <tr>
  562. <th>订单编号</th>
  563. <th>是否顺丰</th>
  564. <th style="width:600px">备注</th>
  565. <th style="width:150px">额外备注</th>
  566. <th>状态</th>
  567. <th>编号</th>
  568. </tr>
  569. ${tableHtml}
  570. </table>
  571. </div>
  572. <style>.mini-messagebox-content td{font-size:14px;padding: 5px;}.mini-panel-body{overflow-y: scroll !important;}</style>`;
  573. mini.showMessageBox({
  574. title: "合包提示!",
  575. iconCls: "mini-messagebox-question",
  576. maxWidth: 1200,
  577. maxHeight: 500,
  578. buttons: ["合并打单", isNumber ? "同号等待" : "取号等待", "取消打印"],
  579. html,
  580. callback: function (action) {
  581. if (action == "合并打单") {
  582. doRealGetPrintData(item, iTag, 2);
  583. }
  584. else if (action == "取消打印") {
  585. mini.get("id_saveWaybillBtn").enable();
  586. return;
  587. } else if (action == "取号等待" || action == "同号等待") {
  588. postAjaxSync("get_mark_number", { ctid }, function (result) {
  589. let htmls = `<span style = "color:red;font-size:60px;display:flex;justify-content: center;">${result.markNumber}</span>`;
  590. mini.showMessageBox({
  591. title: "打单取号!",
  592. iconCls: "mini-messagebox-question",
  593. buttons: ["确定"],
  594. html: htmls,
  595. callback: function (action1) {
  596. sendPrintData(iTag + 1);
  597. }
  598. })
  599. })
  600. }
  601. }
  602. })
  603. } else {
  604. doRealGetPrintData(item, iTag);
  605. }
  606. }
  607. progressHide();
  608. mini.get("id_saveWaybillBtn").enable();
  609. })
  610. }
  611. //菜鸟物流云打印--------------------------------------------------------------------------------------------=======================================
  612. function CNwaybillFn() {
  613. var rec = grid.getSelected();
  614. if (rec != undefined && rec != "") {
  615. edit_id = rec.tid;
  616. mini.get("waybill_win_CN").show();
  617. $("#waybill_win_CN").find("input").val("");
  618. doGetPrinters();
  619. var wb_cpname = localStorage.getItem("waybill_cpname_CN");
  620. var wb_cpcode = localStorage.getItem("waybill_cpcode_CN");
  621. var wb_tempurl = localStorage.getItem("waybill_tempurl_CN");
  622. var wb_temptext = localStorage.getItem("waybill_temptext_CN");
  623. var wb_printer = localStorage.getItem("waybill_printer_CN");
  624. if (wb_cpcode != undefined && wb_cpcode != null) {
  625. mini.get("txtBillCom_CN").setValue(wb_cpcode);
  626. mini.get("txtBillModel_CN").setValue(wb_tempurl);
  627. mini.get("txtBillModel_CN").setText(wb_temptext);
  628. mini.get("txtBillPrinter_CN").setText(wb_printer);
  629. mini.get("txtBillPrinter_CN").setValue(wb_printer);
  630. doSetPrintConfig(wb_printer);
  631. }
  632. }
  633. else {
  634. mini.alert("请选中一行记录!");
  635. }
  636. }
  637. function CNonBillComChanged(e) {
  638. var rec = e.selected;
  639. console.log(rec);
  640. var cpCode = rec.cpCode;
  641. var id = cpCode.split("_")[1];
  642. mini.get("txtBillModel_CN").setValue("");
  643. var url = "../handler/sync.ashx?t=get_waybill_model&pid=" + id
  644. mini.get("txtBillModel_CN").setUrl(url);
  645. }
  646. function CNonBillPrinterChanged(e) {
  647. doSetPrintConfig(mini.get("txtBillPrinter_CN").getText());
  648. }
  649. function CNsaveWaybillFn() {
  650. billOrderList = [];
  651. billOrderList = grid.getSelecteds();
  652. orderCount = billOrderList.length;
  653. errorMsg = "";
  654. if (billOrderList.length <= 0) return;
  655. progressShow("电子面单打印中...进度:1");
  656. sendPrintDataEN(0);
  657. }
  658. function sendPrintDataEN(iTag) {
  659. if (iTag >= orderCount) {
  660. //console.log("return" + billOrderList.length);
  661. grid.reload();
  662. return;
  663. }
  664. var rec = billOrderList[iTag];
  665. var ctid = rec.ctid;
  666. var cpcode = mini.get("txtBillCom_CN").getValue();
  667. var cpname = mini.get("txtBillCom_CN").getText();
  668. var tempUrl = mini.get("txtBillModel_CN").getValue();
  669. if (cpcode == "" || tempUrl == "") {
  670. alert("快递公司和模板不能为空!");
  671. return;
  672. }
  673. var parms = new Object();
  674. parms.ctid = ctid;
  675. parms.cpcode = cpcode;
  676. parms.cpname = cpname;
  677. parms.tempurl = tempUrl;
  678. $("#progressShowDiv").html("电子面单打印中...进度:" + (iTag + 1));
  679. postAjaxSync("set_erp_printwaybill_cn", parms, function (data) {
  680. console.log("set_erp_printwaybill_cn", data);
  681. if (data.restype == 0) {
  682. errorMsg += rec.ctid;
  683. errorMsg += data.data;
  684. errorMsg += ",";
  685. }
  686. else
  687. doPrint(data.data, rec.seller_memo);
  688. if (iTag < orderCount - 1) {
  689. sendPrintDataEN(iTag + 1);
  690. }
  691. else {
  692. localStorage.setItem("waybill_cpcode_CN", cpcode);
  693. localStorage.setItem("waybill_cpname_CN", cpname);
  694. localStorage.setItem("waybill_tempurl_CN", tempUrl);
  695. localStorage.setItem("waybill_temptext_CN", mini.get("txtBillModel_CN").getText());
  696. localStorage.setItem("waybill_printer_CN", mini.get("txtBillPrinter_CN").getText());
  697. grid.reload();
  698. progressHide();
  699. mini.get("waybill_win_CN").hide();
  700. if (errorMsg.length > 0) {
  701. mini.alert(errorMsg);
  702. }
  703. }
  704. });
  705. }
  706. function CNcancelWaybillFn() {
  707. mini.get("waybill_win_CN").hide();
  708. }
  709. window.onload = function () {
  710. $("body").keydown(function (event) {
  711. if (event.keyCode == 13) {
  712. let value = $("#qr_code").val();
  713. if (value.length > 0) {
  714. $("#qr_code").val("");
  715. let parms = { 'ctid': value };
  716. postAjaxSync("get_erp_qr_waitdeliverylist", parms, function (data) {
  717. if (data?.data?.length >= 1) {
  718. let item = data?.data[0];
  719. if (item.OrderState > 6) {
  720. if (!confirm("已发货是否继续打印?")) return;
  721. }
  722. if (item.type != 'PDD') {
  723. return mini.alert("只能打印拼多多订单")
  724. }
  725. QRprint(item)
  726. $("#qr_print_result").append(`<div>${value}</div>`)
  727. }
  728. })
  729. }
  730. }
  731. })
  732. }
  733. function QRprint(item) {
  734. billOrderList = [];
  735. billOrderList.push(item)
  736. progressShow("电子面单打印中...进度:1");
  737. sendPrintData(0);
  738. }