receiptCheck.js 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545
  1. $(function () {
  2. let shippingStatus = getQueryString("shippingStatus");
  3. let payStatus = getQueryString("payStatus");
  4. let orderStatus = getQueryString("orderStatus");
  5. let orderType = getQueryString("orderType");
  6. let url = '../order/offilineOrderList?1';
  7. if (shippingStatus) {
  8. url += '&shippingStatus=' + shippingStatus;
  9. }
  10. if (payStatus) {
  11. url += '&payStatus=' + payStatus;
  12. }
  13. if (orderStatus) {
  14. url += '&orderStatus=' + orderStatus;
  15. }
  16. if (orderType) {
  17. url += '&orderType=' + orderType;
  18. }
  19. $("#jqGrid").jqGrid({
  20. url: url,
  21. datatype: "json",
  22. colModel: [
  23. {label: 'id', name: 'id', index: 'id', key: true, hidden: true},
  24. {label: '小票号', name: 'pickUpCodeSn', index: 'pick_up_code_sn', align: 'center',width: 120},
  25. {label: '订单号', name: 'orderSn', index: 'order_sn', align: 'center',width: 120},
  26. {label: '门店地址', name: 'storeName', index: 'storeName', align: 'center',width: 150},
  27. {label: '操作店员', name: 'userName', index: 'userName', align: 'center',width: 80},
  28. {
  29. label: '订单状态', name: 'orderStatus', index: 'order_status', align: 'center',width: 180,
  30. formatter: function (value) {
  31. if (value == '0') {
  32. return '订单创建成功等待付款';
  33. } else if (value == '100') {
  34. return '订单付款中';
  35. } else if (value == '101') {
  36. return '订单已取消';
  37. } else if (value == '102') {
  38. return '订单已删除';
  39. } else if (value == '201') {
  40. return '订单已付款';
  41. } else if (value == '300') {
  42. return '订单已发货';
  43. } else if (value == '301') {
  44. return '用户确认收货';
  45. } else if (value == '401') {
  46. return '没有发货,退款';
  47. } else if (value == '402') {
  48. return '已收货,退款退货';
  49. }
  50. return value;
  51. }
  52. },
  53. {label: '订单总价', name: 'orderPrice', index: 'order_price',align: 'center', width: 80},
  54. {
  55. label: '下单时间', name: 'addTime', index: 'add_time', width: 140,align: 'center',
  56. formatter: function (value) {
  57. return transDate(value, 'yyyy-MM-dd hh:mm:ss');
  58. }
  59. },
  60. {
  61. label: '付款时间', name: 'payTime', index: 'pay_time', width: 140, align: 'center',
  62. formatter: function (value) {
  63. return transDate(value, 'yyyy-MM-dd hh:mm:ss');
  64. }
  65. }
  66. ],
  67. viewrecords: true,
  68. height: 675,
  69. rowNum: 10,
  70. rowList: [10, 30, 50],
  71. rownumbers: true,
  72. rownumWidth: 25,
  73. autowidth: true,
  74. shrinkToFit: false,
  75. autoScroll: true, //开启水平滚动条
  76. width: 1500,
  77. pager: "#jqGridPager",
  78. jsonReader: {
  79. root: "page.list",
  80. page: "page.currPage",
  81. total: "page.totalPage",
  82. records: "page.totalCount"
  83. },
  84. prmNames: {
  85. page: "page",
  86. rows: "limit",
  87. order: "order"
  88. },
  89. gridComplete: function () {
  90. $("#jqGrid").closest(".ui-jqgrid-bdiv").css({"overflow-x": "scroll"});
  91. }
  92. });
  93. });
  94. let vm = new Vue({
  95. el: '#rrapp',
  96. data: {
  97. showDiv: 1, // 1查询 2编辑 3发货 4选择骑手 5退款
  98. title: null,
  99. order: {},
  100. shippings: [],
  101. q: {
  102. orderSn: '',
  103. orderStatus: '',
  104. orderType: '',
  105. pickUpCodeSn: ''
  106. },
  107. refundMoney: 0,
  108. shipping: {},
  109. logisticsInfo: {
  110. tracesList: [],
  111. logisticCode: '',
  112. shipperCode: ''
  113. },
  114. macros: [],
  115. orderProcessRecordEntity: {},
  116. orderGoodsList: [],
  117. payRecordList:[]
  118. },
  119. methods: {
  120. query: function () {
  121. vm.reload(1);
  122. },
  123. getMacro: function () {
  124. $.get("../sys/macro/queryMacrosByValue?value=goodsBizType", function (r) {
  125. vm.macros = r.list;
  126. });
  127. },
  128. shippingChange: function (opt) {
  129. vm.order.shippingName = opt.label;
  130. vm.order.shippingCode = opt.value;
  131. },
  132. saveOrUpdate: function (event) {
  133. $.ajax({
  134. type: "POST",
  135. url: '../order/sendGoods',
  136. contentType: "application/json",
  137. data: JSON.stringify(vm.order),
  138. success: function (r) {
  139. if (r.code === 0) {
  140. alert('操作成功', function (index) {
  141. vm.reload();
  142. });
  143. } else {
  144. alert(r.msg);
  145. }
  146. }
  147. });
  148. },
  149. reload: function (event) {
  150. vm.showDiv = 1;
  151. let page = event;
  152. if (event != 1) {
  153. page = $("#jqGrid").jqGrid('getGridParam', 'page');
  154. }
  155. $("#jqGrid").jqGrid('setGridParam', {
  156. postData: {
  157. 'orderSn': vm.q.orderSn,
  158. 'orderStatus': vm.q.orderStatus,
  159. 'orderType': vm.q.orderType,
  160. 'pickUpCodeSn': vm.q.pickUpCodeSn
  161. },
  162. page: page
  163. }).trigger("reloadGrid");
  164. },
  165. reloadSearch: function () {
  166. vm.q = {
  167. orderSn: '',
  168. orderStatus: '',
  169. orderType: '',
  170. pickUpCodeSn: ''
  171. };
  172. vm.reload(1);
  173. },
  174. lookDetail: function (rowId) { //第三步:定义编辑操作
  175. vm.showDiv = 2;
  176. vm.title = "订单详情";
  177. $.get("../order/offlineInfos/" + rowId, function (r) {
  178. vm.order = r.order;
  179. vm.orderGoodsList = r.order.orderGoodsEntityList;
  180. vm.payRecordList = r.order.payRecordList;
  181. });
  182. vm.getMacro();
  183. },
  184. printDetail: function (rowId) {
  185. confirm('确定连接打票机打印出票?', function () {
  186. $.ajax({
  187. type: "POST",
  188. url: "../order/printMsg",
  189. contentType: "application/json",
  190. data: JSON.stringify(rowId),
  191. success: function (r) {
  192. if (r.ticket != null) {
  193. // printArea(r.ticket);
  194. var content = getPrintContent(r.ticket);
  195. printArea(content);
  196. alert('打印小票完成');
  197. }else{
  198. alert("打印小票失败");
  199. }
  200. }
  201. });
  202. })
  203. },
  204. confirm: function (event) {
  205. let id = getSelectedRow();
  206. if (id == null) {
  207. return;
  208. }
  209. var rowData = $("#jqGrid").jqGrid('getRowData', id);
  210. if(rowData.orderStatus == '订单已付款'){
  211. alert('该订单已支付');
  212. }else if(rowData.orderStatus == '订单已取消'){
  213. alert('该订单已取消');
  214. }else if(rowData.orderStatus == '订单已删除'){
  215. alert('该订单已删除');
  216. }else {
  217. confirm('确定付款?', function () {
  218. $.ajax({
  219. type: "POST",
  220. url: "../order/confirmPay",
  221. contentType: "application/json",
  222. data: JSON.stringify(id),
  223. dataType: "json",
  224. success: function (r) {
  225. if (r.code == 0) {
  226. alert('操作成功', function (index) {
  227. $("#jqGrid").trigger("reloadGrid");
  228. });
  229. } else {
  230. alert(r.msg);
  231. }
  232. }
  233. });
  234. });
  235. }
  236. },
  237. showInputAuthCode: function (event) {
  238. let id = getSelectedRow();
  239. if (id == null) {
  240. return;
  241. }
  242. var rowData = $("#jqGrid").jqGrid('getRowData', id);
  243. if(rowData.orderStatus == '订单已付款'){
  244. alert('该订单已支付');
  245. }else if(rowData.orderStatus == '订单已取消'){
  246. alert('该订单已取消');
  247. }else if(rowData.orderStatus == '订单已删除'){
  248. alert('该订单已删除');
  249. }else{
  250. var layer_index = layer.prompt({title: '请输入微信付款码',
  251. formType: 3, //隐藏用户输入内容
  252. // 这个是确定按钮的事件
  253. "success":function(layero,index){
  254. // 键盘事件,判断回车
  255. $("input.layui-layer-input").on('keydown',function(e){
  256. if (e.which == 13) {
  257. var authCode = $(this).val();
  258. if (authCode == null || authCode == "") {
  259. iview.Message.error("请输入微信付款码");
  260. return;
  261. }
  262. layer.close(layer_index);
  263. var msg_index = layer.msg('支付中', {
  264. icon: 16
  265. ,shade: 0.01
  266. });
  267. wxPay(authCode,id,msg_index);
  268. }
  269. });
  270. },
  271. // 点击确定按钮事件
  272. yes : function(index,layero){
  273. // 取输入框数据
  274. var authCode =$(document.getElementsByClassName('layui-layer-input')[0]).val();
  275. if (authCode == null || authCode == "") {
  276. iview.Message.error("请输入微信付款码");
  277. return;
  278. }
  279. layer.close(layer_index);
  280. var msg_index = layer.msg('支付中', {
  281. icon: 16,
  282. shade: 0.01
  283. });
  284. wxPay(authCode,id,msg_index);
  285. }
  286. });
  287. }
  288. // layer.prompt({title: '请输入微信付款码', formType: 3}, function(pass, index){
  289. // var authCode= pass;
  290. // if (authCode == null || authCode == "") {
  291. // iview.Message.error("请输入微信付款码");
  292. // return;
  293. // }
  294. //
  295. // $.ajax({
  296. // type: "POST",
  297. // url: '../order/wxMicropayPay',
  298. // data: {auth_code: authCode, id: id},
  299. // success: function (r) {
  300. // if (r.code === 0) {
  301. // alert('支付成功', function (index) {
  302. // vm.reload();
  303. // });
  304. // } else {
  305. // alert(r.msg);
  306. // }
  307. // }
  308. // });
  309. //
  310. // layer.close(index);
  311. // });
  312. },
  313. refundUpdate: function (rowId) {
  314. let params = {};
  315. params.orderId = rowId;
  316. confirm("确认退款吗?",function () {
  317. $.ajax({
  318. type: "POST",
  319. url: '../order/offilineRefund',
  320. data: params,
  321. success: function (r) {
  322. if (r.code === 0) {
  323. alert('退款成功', function (index) {
  324. vm.reload();
  325. });
  326. } else {
  327. alert(r.msg);
  328. }
  329. }
  330. });
  331. })
  332. },
  333. shippingBind: function (event) {
  334. let orderId = vm.order.id;
  335. $.ajax({
  336. type: "POST",
  337. url: '../order/shippingBind',
  338. data: {orderId: orderId, shippingCode: vm.shipping},
  339. success: function (r) {
  340. if (r.code === 0) {
  341. alert('操作成功', function (index) {
  342. vm.reload();
  343. });
  344. } else {
  345. alert(r.msg);
  346. }
  347. }
  348. });
  349. },
  350. refund: function (rowId) {
  351. vm.showDiv = 5;
  352. vm.refundMoney = 0;
  353. Ajax.request({
  354. url: "../order/info/" + rowId,
  355. async: true,
  356. successCallback: function (r) {
  357. vm.order = r.order;
  358. vm.refundMoney = r.order.actualPrice;
  359. }
  360. });
  361. },
  362. cancelUpdate: function (rowId) {
  363. let params = {};
  364. params.orderId = rowId;
  365. confirm("是否取消订单?",function(){
  366. $.ajax({
  367. type: "POST",
  368. url: '../order/cancel',
  369. data: params,
  370. success: function (r) {
  371. if (r.code === 0) {
  372. alert('取消成功', function (index) {
  373. vm.reload();
  374. });
  375. } else {
  376. alert(r.msg);
  377. }
  378. }
  379. });
  380. });
  381. }
  382. },
  383. created: function () {
  384. $.get("../shipping/queryAll", function (r) {
  385. vm.shippings = r.list;
  386. });
  387. }
  388. });
  389. function getPrintContent(ticket) {
  390. var content = "<div style=\"width: 250px;font-family: 微软雅黑;font-size: 8px;\">";
  391. //小票头
  392. content += "<div style=\"text-align: center;width: 100%;font-weight:bold;font-size: 13px;\">";
  393. content += ticket.ticketHead.title;
  394. content += "</div>";
  395. // content += "<div style=\"width: 100%;\">";
  396. // content += "会员:" + ticket.ticketHead.memberId;
  397. // content += "</div>";
  398. content += "<div style=\"width: 100%;\">";
  399. content += "订单号:" + ticket.ticketHead.orderId;
  400. content += "</div>";
  401. content += "<div style=\"width: 100%;\">";
  402. content += "交易时间:" + ticket.ticketHead.tradeTime;
  403. content += "</div>";
  404. content += "<div style=\"width: 100%;overflow:hidden;white-space: nowrap;\">--------------------------------------------------</div>";
  405. //商品信息
  406. content += "<table style=\"width: 100%;\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
  407. content += "<tr>";
  408. content += "<td style=\"width: 50%;text-align: left;font-size: 10px;font-weight: bold;\">商品名称</td>";
  409. content += "<td style=\"width: 17%;text-align: right;font-size: 10px;font-weight: bold;\">单价</td>";
  410. content += "<td style=\"width: 15%;text-align: right;font-size: 10px;font-weight: bold;\">数量</td>";
  411. content += "<td style=\"width: 18%;text-align: right;font-size: 10px;font-weight: bold;\">小计</td>";
  412. content += "</tr>";
  413. content += "</table>";
  414. content += "<div style=\"width: 100%;overflow:hidden;white-space: nowrap;\">--------------------------------------------------</div>";
  415. content += "<table style=\"width: 100%;\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
  416. for (var i=0;i< ticket.goods.length;i++){
  417. content += "<tr>";
  418. content += "<td style=\"width: 50%;text-align: left;font-size: 8px;padding-top: 8px;\">";
  419. content += "<table style=\"width: 100%;\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
  420. content += "<tr>";
  421. content += "<td style=\"text-align: left;font-size: 8px;vertical-align:top;\">#</td>";
  422. content += "<td style=\"text-align: left;font-size: 8px;\">" + ticket.goods[i].gname + "</td>";
  423. content += "</tr>";
  424. content += "</table>";
  425. content += "</td>";
  426. content += "<td style=\"width: 17%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].uprice + "</td>";
  427. content += "<td style=\"width: 15%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].num + "</td>";
  428. content += "<td style=\"width: 18%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].subtotal + "元</td>";
  429. content += "</tr>";
  430. }
  431. content += "</table>";
  432. content += "<div style=\"width: 100%;overflow:hidden;white-space: nowrap;\">--------------------------------------------------</div>";
  433. //收银信息
  434. content += "<div style=\"width: 100%;\">";
  435. content += "<span style=\"float: left;width: 50%;text-align: left;\">商品合计:</span>";
  436. content += "<span style=\"float: left;width: 17%;text-align: left;\">" + ticket.cashInfo.goodsTotal + "件</span>";
  437. content += "<span style=\"float: right;width: 33%;text-align: right;\">" + ticket.cashInfo.total + "元</span>";
  438. content += "</div>";
  439. content += "<div style=\"width: 100%;\">";
  440. content += "<span style=\"float: left;width: 50%;text-align: left;\">实收:</span>";
  441. content += "<span style=\"float: right;width: 50%;text-align: right;\">" + ticket.cashInfo.receipts + "元</span>";
  442. content += "</div>";
  443. content += "<div style=\"width: 100%;\">";
  444. content += "<span style=\"float: left;width: 50%;text-align: left;\">找零:</span>";
  445. content += "<span style=\"float: right;width: 50%;text-align: right;\">" + ticket.cashInfo.oddChange + "元</span>";
  446. content += "</div>";
  447. content += "<div style=\"width: 100%;\">";
  448. content += "<span style=\"float: left;width: 50%;text-align: left;\">优惠券:</span>";
  449. content += "<span style=\"float: right;width: 50%;text-align: right;\">" + ticket.cashInfo.coupon + "元</span>";
  450. content += "</div>";
  451. content += "<div style=\"width: 100%;\">";
  452. content += "<span style=\"float: left;width: 50%;text-align: left;\">运费:</span>";
  453. content += "<span style=\"float: right;width: 50%;text-align: right;\">" + ticket.cashInfo.freight + "元</span>";
  454. content += "</div>";
  455. content += "<div style=\"width: 100%;\">";
  456. content += "<span style=\"float: left;width: 50%;text-align: left;\">支付渠道:</span>";
  457. content += "<span style=\"float: right;width: 50%;text-align: right;\">" + ticket.cashInfo.paymentMode + "</span>";
  458. content += "</div>";
  459. content += "<div style=\"width: 100%;overflow:hidden;white-space: nowrap;\">--------------------------------------------------</div>";
  460. //海关清单信息
  461. content += "<div style=\"width: 100%;\">";
  462. content += "订单号:" + ticket.cusListing.orderId;
  463. content += "</div>";
  464. // content += "<div style=\"width: 100%;\">";
  465. // content += "始发地:" + ticket.cusListing.originAddress;
  466. // content += "</div>";
  467. // content += "<div style=\"width: 100%;\">";
  468. // content += "交货地:" + ticket.cusListing.deliveryAddress;
  469. // content += "</div>";
  470. content += "<div style=\"width: 100%;overflow:hidden;white-space: nowrap;\">--------------------------------------------------</div>";
  471. content += "<div style=\"width: 100%;\">";
  472. content += ticket.ticketFoot.summary;
  473. content += "</div>";
  474. content += "<div style=\"width: 100%;\">";
  475. content += "客服电话:" + ticket.ticketFoot.serviceTel;
  476. content += "</div>";
  477. content += "<div style=\"width: 100%;\">";
  478. content += "网址:" + ticket.ticketFoot.url1;
  479. content += "</div>";
  480. content += "<div style=\"width: 100%;\">";
  481. content += ticket.ticketFoot.welcome;
  482. content += "</div>";
  483. return content;
  484. }
  485. function wxPay(authCode,id,msg_index){
  486. $.ajax({
  487. type: "POST",
  488. url: '../order/wxMicropayPay',
  489. data: {auth_code: authCode, id: id},
  490. success: function (r) {
  491. layer.close(msg_index);
  492. if (r.code === 0) {
  493. alert('支付成功', function (index) {
  494. vm.reload();
  495. });
  496. } else {
  497. alert(r.msg);
  498. }
  499. }
  500. });
  501. }
  502. var printAreaCount = 0;
  503. function printArea(content) {
  504. var idPrefix = "printArea_";
  505. removePrintArea(idPrefix + printAreaCount);
  506. printAreaCount++;
  507. var iframeId = idPrefix + printAreaCount;
  508. var iframeStyle = 'position:absolute;width:0px;height:0px;left:-500px;top:-500px;';
  509. iframe = document.createElement('IFRAME');
  510. $(iframe).attr({
  511. style: iframeStyle,
  512. id: iframeId
  513. });
  514. document.body.appendChild(iframe);
  515. var doc = iframe.contentWindow.document;
  516. doc.open();
  517. //$(document).find("link").filter(function () {
  518. //return $(this).attr("rel").toLowerCase() == "stylesheet";
  519. //}).each(
  520. //function () {
  521. //doc.write('<link type="text/css" rel="stylesheet" href="'
  522. //+ $(this).attr("href") + '" >');
  523. //});
  524. doc.write('<div class="">' + content
  525. + '</div>');
  526. doc.close();
  527. var frameWindow = iframe.contentWindow;
  528. frameWindow.close();
  529. frameWindow.focus();
  530. frameWindow.print();
  531. }
  532. var removePrintArea = function (id) {
  533. $("iframe#" + id).remove();
  534. };