pddPrintBill.js 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832
  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. let printIng = false;
  393. function saveWaybillFn() {
  394. //var url = "http://d3.diansan.com/d3/open/print/express/index.html?waybillCodeList=YT5608493119031&templateId=1&requestId=1909374336748825642&sourceType=THIRD_ORDER";
  395. //openWaiWin("打印面单", url, 900, 700, null);
  396. //return;
  397. if (printIng) {
  398. return;
  399. }
  400. mini.get("id_saveWaybillBtn").disable();
  401. //mini.get("id_sysWaybillBtn").disable();
  402. IsPrintOrderList = [];
  403. billOrderList = [];
  404. billOrderList = grid.getSelecteds();
  405. orderCount = billOrderList.length;
  406. errorMsg = "";
  407. if (billOrderList.length <= 0) return;
  408. console.log(billOrderList);
  409. progressShow("电子面单打印中...进度:1");
  410. printIng = true;
  411. sendPrintData(0);
  412. }
  413. function sendPrintData(iTag) {
  414. if (iTag >= orderCount) {
  415. //console.log("return" + billOrderList.length);
  416. grid.reload();
  417. mini.get("id_saveWaybillBtn").enable();
  418. //mini.get("id_sysWaybillBtn").enable();
  419. return;
  420. }
  421. let vend_list = supperIds == null ? [] : supperIds.split(",");
  422. //console.log("start" + billOrderList.length);
  423. var item = billOrderList[iTag];
  424. let suppiers = [];
  425. let intersection = vend_list.length == 0 ? [] : suppiers.filter(function (v) { return vend_list.indexOf(v) > -1 });
  426. if (intersection.length == 0) {
  427. checkOrderSplit(item, iTag)
  428. } else {
  429. if (item.SplitTag.length > 0) {
  430. isHaveOtherOrder(item.ctid, item, iTag, item.tid);
  431. }
  432. else {
  433. doRealGetPrintData(item, iTag);
  434. }
  435. }
  436. }
  437. function doRealGetPrintData(item, iTag, isTogether = 0, ctids = "") {
  438. var ctid = item.ctid;
  439. var cpcode = mini.get("txtBillCom").getValue();
  440. var cpname = mini.get("txtBillCom").getText();
  441. //var tempId = mini.get("txtBillModel").getValue();
  442. if (cpcode == "") {
  443. alert("快递公司和模板不能为空!");
  444. return;
  445. }
  446. var parms = new Object();
  447. parms.ctid = ctid;
  448. parms.cpcode = cpcode;
  449. parms.cpname = cpname;
  450. parms.together = isTogether;
  451. parms.ctids = ctids;
  452. parms.printType = printType;
  453. $("#progressShowDiv").html("电子面单打印中...进度:" + (iTag + 1));
  454. postAjaxSync("set_erp_printwaybill", parms, function (data) {
  455. //console.log("back" + billOrderList.length);
  456. console.log("电子面单返回data", data);
  457. if (data.restype == 0) {
  458. errorMsg += item.ctid;
  459. errorMsg += data.data;
  460. errorMsg += ",";
  461. }
  462. else if (data.restype == 1) {
  463. if (data.errorMsg != "") {
  464. mini.showTips({
  465. content: data.errorMsg,
  466. state: "danger",
  467. x: "Center",
  468. y: "Center",
  469. timeout: 2000
  470. });
  471. }
  472. if (cpcode == "SFFQ-LY") {
  473. doPrintSF(data, item.seller_memo);
  474. }
  475. else
  476. doPrintEn(data.data, item.seller_memo);
  477. }
  478. if (iTag < orderCount - 1) {
  479. //console.log("another" + billOrderList.length);
  480. sendPrintData(iTag + 1);
  481. }
  482. else {
  483. localStorage.setItem("waybill_cpcode", cpcode);
  484. localStorage.setItem("waybill_cpname", cpname);
  485. localStorage.setItem("waybill_printer", mini.get("txtBillPrinter").getText());
  486. grid.reload();
  487. mini.get("id_saveWaybillBtn").enable();
  488. //mini.get("id_sysWaybillBtn").enable();
  489. mini.get("waybill_win").hide();
  490. progressHide();
  491. printIng = false;
  492. if (errorMsg != "") {
  493. mini.alert(errorMsg);
  494. }
  495. //console.log("end" + billOrderList.length);
  496. }
  497. });
  498. }
  499. function isHaveOtherOrder(ctid, item, iTag, tid) {
  500. for (var ltid of IsPrintOrderList) {
  501. if (ltid == tid) {
  502. sendPrintData(iTag + 1);
  503. return;
  504. }
  505. }
  506. postAjax("get_erp_sameorders", "ctid=" + ctid, function (data) {
  507. if (data.data > 1) {
  508. mini.showMessageBox({
  509. title: "提示!",
  510. width: 500, //宽度
  511. height: 200, //高度
  512. iconCls: "mini-messagebox-question",
  513. buttons: ["继续打单", "合并打单", "取消打印"],
  514. message: "请注意:该订单有相同发货地址,共 " + data.data + " 单!",
  515. callback: function (action) {
  516. if (action == "继续打单") {
  517. doRealGetPrintData(item, iTag);
  518. }
  519. else if (action == "合并打单") {
  520. IsPrintOrderList.push(tid);
  521. doRealGetPrintData(item, iTag, 1);
  522. }
  523. else if (action == "取消打印") {
  524. mini.get("id_saveWaybillBtn").enable();
  525. return;
  526. }
  527. }
  528. });
  529. return;
  530. }
  531. else {
  532. doRealGetPrintData(item, iTag);
  533. }
  534. });
  535. }
  536. function cancelWaybillFn() {
  537. mini.get("waybill_win").hide();
  538. }
  539. function checkOrderSplit(item, iTag) {
  540. let ctid = item.ctid;
  541. postAjaxSync("check_erp_sameorders", { ctid }, function (data) {
  542. if (data.data) {
  543. let mome = "";
  544. let tableHtml = "";
  545. let isNumber = false;
  546. let islast = true;
  547. if (data.data.length > 0) {
  548. for (let i = 0; i < data.data.length; i++) {
  549. let item = data.data[i];
  550. let sf = "";
  551. let stateStr = "";
  552. let ischeck = true;
  553. let isRead = false;
  554. if (item.IsSF == 1) {
  555. sf = "顺丰寄付";
  556. } else if (item.IsSF == 2) {
  557. sf = "顺丰到付"
  558. }
  559. if (item.dstate == 0) {
  560. stateStr = "生产中";
  561. } else if (item.dstate == 1) {
  562. stateStr = "此件";
  563. mome = item.seller_memo;
  564. } else if (item.dstate == 2) {
  565. stateStr = "等待中";
  566. isNumber = true;
  567. }
  568. if (item.default == 1) {
  569. isRead = true;
  570. }
  571. let inputCheck = `<input type="checkbox" name="ctids" value="${item.ctid}" ${ischeck ? "checked" : ""} ${isRead ? "onclick='return false;'" : ""}/>`;
  572. tableHtml += `<tr>
  573. <td>${inputCheck}</td>
  574. <td>${item.ctid}</td>
  575. <td>${sf}</td>
  576. <td style="width:600px">${item.seller_memo}</td>
  577. <td>${item.OtherMemo}</td>
  578. <td>${stateStr}</td>
  579. <td>${item.dnumber}</td>
  580. </tr>`;
  581. }
  582. let html = `<div style="font-size: 20px;row-gap: 10px;display: flex;flex-direction: column;">
  583. <div>请注意:该订单有需要合包的拆单,共${data.data.length}单!</div>
  584. <div>${mome}</div>
  585. <table border="1">
  586. <tr>
  587. <th></th>
  588. <th>订单编号</th>
  589. <th>是否顺丰</th>
  590. <th style="width:600px">备注</th>
  591. <th style="width:150px">额外备注</th>
  592. <th>状态</th>
  593. <th>编号</th>
  594. </tr>
  595. ${tableHtml}
  596. </table>
  597. </div>
  598. <style>.mini-messagebox-content td{font-size:14px;padding: 5px;}.mini-panel-body{overflow-y: scroll !important;}</style>`;
  599. let btns = ["合并打单", isNumber ? "同号等待" : "取号等待", "取消打印"];
  600. mini.showMessageBox({
  601. title: "合包提示!",
  602. iconCls: "mini-messagebox-question",
  603. maxWidth: 1200,
  604. maxHeight: 500,
  605. buttons: btns,
  606. html,
  607. callback: function (action) {
  608. if (action == "合并打单") {
  609. let ctids_list = [];
  610. $("input[name='ctids']:checked").each(function () {
  611. ctids_list.push($(this).val());
  612. });
  613. doRealGetPrintData(item, iTag, 2, ctids_list.join(","));
  614. }
  615. else if (action == "取消打印") {
  616. mini.get("id_saveWaybillBtn").enable();
  617. return;
  618. } else if (action == "取号等待" || action == "同号等待") {
  619. postAjaxSync("get_mark_number", { ctid }, function (result) {
  620. let htmls = `<span style = "color:red;font-size:60px;display:flex;justify-content: center;">${result.markNumber}</span>`;
  621. mini.showMessageBox({
  622. title: "打单取号!",
  623. iconCls: "mini-messagebox-question",
  624. buttons: ["确定"],
  625. html: htmls,
  626. callback: function (action1) {
  627. sendPrintData(iTag + 1);
  628. }
  629. })
  630. })
  631. }
  632. }
  633. })
  634. } else {
  635. doRealGetPrintData(item, iTag);
  636. }
  637. }
  638. progressHide();
  639. printIng = false;
  640. mini.get("id_saveWaybillBtn").enable();
  641. })
  642. }
  643. //菜鸟物流云打印--------------------------------------------------------------------------------------------=======================================
  644. function CNwaybillFn() {
  645. var rec = grid.getSelected();
  646. if (rec != undefined && rec != "") {
  647. edit_id = rec.tid;
  648. mini.get("waybill_win_CN").show();
  649. $("#waybill_win_CN").find("input").val("");
  650. doGetPrinters();
  651. var wb_cpname = localStorage.getItem("waybill_cpname_CN");
  652. var wb_cpcode = localStorage.getItem("waybill_cpcode_CN");
  653. var wb_tempurl = localStorage.getItem("waybill_tempurl_CN");
  654. var wb_temptext = localStorage.getItem("waybill_temptext_CN");
  655. var wb_printer = localStorage.getItem("waybill_printer_CN");
  656. if (wb_cpcode != undefined && wb_cpcode != null) {
  657. mini.get("txtBillCom_CN").setValue(wb_cpcode);
  658. mini.get("txtBillModel_CN").setValue(wb_tempurl);
  659. mini.get("txtBillModel_CN").setText(wb_temptext);
  660. mini.get("txtBillPrinter_CN").setText(wb_printer);
  661. mini.get("txtBillPrinter_CN").setValue(wb_printer);
  662. doSetPrintConfig(wb_printer);
  663. }
  664. }
  665. else {
  666. mini.alert("请选中一行记录!");
  667. }
  668. }
  669. function CNonBillComChanged(e) {
  670. var rec = e.selected;
  671. console.log(rec);
  672. var cpCode = rec.cpCode;
  673. var id = cpCode.split("_")[1];
  674. mini.get("txtBillModel_CN").setValue("");
  675. var url = "../handler/sync.ashx?t=get_waybill_model&pid=" + id
  676. mini.get("txtBillModel_CN").setUrl(url);
  677. }
  678. function CNonBillPrinterChanged(e) {
  679. doSetPrintConfig(mini.get("txtBillPrinter_CN").getText());
  680. }
  681. function CNsaveWaybillFn() {
  682. billOrderList = [];
  683. billOrderList = grid.getSelecteds();
  684. orderCount = billOrderList.length;
  685. errorMsg = "";
  686. if (billOrderList.length <= 0) return;
  687. progressShow("电子面单打印中...进度:1");
  688. sendPrintDataEN(0);
  689. }
  690. function sendPrintDataEN(iTag) {
  691. if (iTag >= orderCount) {
  692. //console.log("return" + billOrderList.length);
  693. grid.reload();
  694. return;
  695. }
  696. var rec = billOrderList[iTag];
  697. var ctid = rec.ctid;
  698. var cpcode = mini.get("txtBillCom_CN").getValue();
  699. var cpname = mini.get("txtBillCom_CN").getText();
  700. var tempUrl = mini.get("txtBillModel_CN").getValue();
  701. if (cpcode == "" || tempUrl == "") {
  702. alert("快递公司和模板不能为空!");
  703. return;
  704. }
  705. var parms = new Object();
  706. parms.ctid = ctid;
  707. parms.cpcode = cpcode;
  708. parms.cpname = cpname;
  709. parms.tempurl = tempUrl;
  710. $("#progressShowDiv").html("电子面单打印中...进度:" + (iTag + 1));
  711. postAjaxSync("set_erp_printwaybill_cn", parms, function (data) {
  712. console.log("set_erp_printwaybill_cn", data);
  713. if (data.restype == 0) {
  714. errorMsg += rec.ctid;
  715. errorMsg += data.data;
  716. errorMsg += ",";
  717. }
  718. else
  719. doPrint(data.data, rec.seller_memo);
  720. if (iTag < orderCount - 1) {
  721. sendPrintDataEN(iTag + 1);
  722. }
  723. else {
  724. localStorage.setItem("waybill_cpcode_CN", cpcode);
  725. localStorage.setItem("waybill_cpname_CN", cpname);
  726. localStorage.setItem("waybill_tempurl_CN", tempUrl);
  727. localStorage.setItem("waybill_temptext_CN", mini.get("txtBillModel_CN").getText());
  728. localStorage.setItem("waybill_printer_CN", mini.get("txtBillPrinter_CN").getText());
  729. grid.reload();
  730. progressHide();
  731. printIng = false;
  732. mini.get("waybill_win_CN").hide();
  733. if (errorMsg.length > 0) {
  734. mini.alert(errorMsg);
  735. }
  736. }
  737. });
  738. }
  739. function CNcancelWaybillFn() {
  740. mini.get("waybill_win_CN").hide();
  741. }
  742. window.onload = function () {
  743. $("body").keydown(function (event) {
  744. if (event.keyCode == 13) {
  745. let value = $("#qr_code").val();
  746. if (value.length > 0) {
  747. $("#qr_code").val("");
  748. let parms = { 'ctid': value };
  749. postAjaxSync("get_erp_qr_waitdeliverylist", parms, function (data) {
  750. if (data?.data?.length >= 1) {
  751. let item = data?.data[0];
  752. if (item.OrderState > 6) {
  753. if (!confirm("已发货是否继续打印?")) return;
  754. }
  755. if (item.type != 'PDD') {
  756. return mini.alert("只能打印拼多多订单")
  757. }
  758. QRprint(item)
  759. $("#qr_print_result").append(`<div>${value}</div>`)
  760. }
  761. })
  762. }
  763. }
  764. })
  765. }
  766. function QRprint(item) {
  767. billOrderList = [];
  768. billOrderList.push(item)
  769. progressShow("电子面单打印中...进度:1");
  770. sendPrintData(0);
  771. }