orderdtl.html 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
  6. <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
  7. <title></title>
  8. <link rel="stylesheet" type="text/css" href="../../css/api.css" />
  9. <link rel="stylesheet" type="text/css" href="../../css/weui.min.css" />
  10. <link rel="stylesheet" type="text/css" href="../../css/style.css" />
  11. <style>
  12. body{background: #f2f2f2;}
  13. .order-status{
  14. font-size: 0.26rem;
  15. width: 100%;
  16. padding: 0.21rem 0;
  17. margin-bottom: 0.17rem;
  18. }
  19. .order-postaddr{
  20. width: 100%;
  21. padding: 0.32rem 0;
  22. }
  23. #state-btn{
  24. width:100%;
  25. }
  26. .order-btn{
  27. width:100%;
  28. background:#ffffff;
  29. border-top:1px solid #e8e8e8;
  30. position:fixed;
  31. bottom:0px;
  32. }
  33. .order-btn li{
  34. float:left;
  35. width:50%;
  36. height: 0.9rem;
  37. line-height: 0.9rem;
  38. text-align:center;
  39. font-size: 0.32rem;
  40. border-right:1px solid #e8e8e8;
  41. box-sizing:border-box;
  42. }
  43. .to-pay{
  44. color:#ffffff; background:#D60E15;
  45. }
  46. .order-list {
  47. margin-bottom: 0.9rem;
  48. }
  49. .order-list-right p {
  50. font-size: 0.22rem;
  51. color: #999;
  52. /*height: 1.04rem;*/
  53. }
  54. p.font-size-18 {
  55. color: #666;
  56. height: auto;
  57. }
  58. .h5 {
  59. background: #f2f2f2;
  60. margin: 0 0 0 -0.32rem;
  61. width: 7.5rem;
  62. /*margin-top: 0.5em;*/
  63. }
  64. .service_btn{clear: both; position: relative; text-align: right; padding:0.32rem; padding-top:0; padding-right:0;}
  65. .service_btn a{ position: relative;
  66. display: inline-block;
  67. box-sizing: border-box;
  68. margin: 0;
  69. padding: 0.16rem;
  70. font-size: 0.24rem;
  71. line-height: 1.2;
  72. text-align: center;
  73. border-radius: 2px;
  74. cursor: pointer;
  75. -webkit-transition: opacity 0.2s;
  76. transition: opacity 0.2s;
  77. -webkit-appearance: none;
  78. color: #323233;
  79. background-color: #fff;
  80. border: 1px solid #ebedf0;}
  81. </style>
  82. <script>
  83. (function(w, d, m) {
  84. function r() {
  85. var t = 100,
  86. o = 750,
  87. e = d.documentElement.clientWidth || w.innerWidth,
  88. n = m.max(m.min(e, 480), 320),
  89. h = 50;
  90. 320 >= n && (h = m.floor(n / o * t * .99)),
  91. n > 320 && 362 >= n && (h = m.floor(n / o * t * 1)),
  92. n > 362 && 375 >= n && (h = m.floor(n / o * t * 1)),
  93. n > 375 && (h = m.floor(n / o * t * .97)),
  94. d.querySelector("html").style.fontSize = (e/7.5) + "px"
  95. };
  96. r();
  97. w.onresize = function() {
  98. r()
  99. }
  100. })(window, document, Math);
  101. </script>
  102. </head>
  103. <body>
  104. <div class="topbar"></div>
  105. <header class="back-header back-header-bottom">
  106. <ul>
  107. <li class="padding-20 back-btn"><img class="back-header-ico" src="../../image/nav_button_back_default.png" /></li>
  108. <li class="back-header-title">订单详情</li>
  109. <li class="more-btn"></li>
  110. </ul>
  111. </header>
  112. <section class="white-back" style="padding-top: 1.01rem;">
  113. <div id="order-status" class="order-status"></div>
  114. </section>
  115. <section class="white-back" style="margin-bottom: 0.17rem;">
  116. <div class="order-postaddr">
  117. <span id="contact-name"></span>
  118. <p id="contact-addr"></p>
  119. </div>
  120. </section>
  121. <section class="order-list white-back">
  122. </section>
  123. <div id="state-btn">
  124. </div>
  125. </body>
  126. <script type="text/javascript" src="../../script/api.js"></script>
  127. <script type="text/javascript" src="../../script/jquery.min.js"></script>
  128. <script type="text/javascript" src="../../script/jquery.tap.js"></script>
  129. <script type="text/javascript" src="../../script/imagesloaded.pkgd.min.js"></script>
  130. <script type="text/javascript">
  131. var _keyid = '';
  132. apiready = function() {
  133. _keyid = api.pageParam.keyid;
  134. setFixStatusBar();
  135. getRouteData(_keyid);
  136. // getAddrData(_keyid);
  137. api.addEventListener({
  138. name: 'resume'
  139. }, function(ret, err) {
  140. freshen_page();
  141. });
  142. api.addEventListener({
  143. name: 'viewappear'
  144. }, function(ret, err) {
  145. freshen_page();
  146. });
  147. };
  148. function freshen_page() {
  149. $("#contact-name").html('');
  150. $("#contact-addr").html('');
  151. $("#order-status").html('');
  152. $(".order-list").html('');
  153. $("#state-btn").html('');
  154. getRouteData(_keyid);
  155. }
  156. function getRouteData(_keyid) {
  157. toast_loding_show();
  158. $.ajax({
  159. url: siteurl + 'v2/order/info',
  160. data: {
  161. order_id: _keyid
  162. },
  163. headers: { "X-TOKEN": $api.getStorage("accesstoken") },
  164. dataType: 'json',
  165. type: 'post',
  166. success: function(datas) {
  167. toast_loding_hide();
  168. if (!datas.result) {
  169. api.toast({ msg: '订单信息获取失败!' });
  170. return false;
  171. }
  172. var item = datas.data;
  173. var _html = '';
  174. // $.each(datas, function(index, item) {
  175. _html += '<div class="order-list-title" state="' + item.order_state + '" keyid="' + item.order_id + '"><img src="' + siteurl + 'uploads/home/store/' + item.storeid + '/' + item.store_avatar + '"/> ' + item.store_name + '</div>';
  176. $.each(item.goods, function(index2, item2) {
  177. var arr = item2.goods_name.split(" ");
  178. var name_arr = arr[0];
  179. var size_arr = item2.goods_name.replace(name_arr, "");
  180. _html += '<div class="order-list-goods" goods_commonid="'+item2.goods_commonid+'" storeid="' + item2.store_id + '" keyid="' + item2.goods_id + '"><ul><li><img src="' + siteurl + 'uploads/home/store/goods/' + item2.goods_image.substr(0, item2.goods_image.indexOf("\_")) + '/' + item2.goods_image + '"/></li>';
  181. _html += '<li class="order-list-right"><span class="font-rem11">' + name_arr + '</span><p>' + size_arr + ' x' + item2.goods_num + '</p>';
  182. _html += '<p class="font-size-18">¥' + item2.goods_price + '</p></li>';
  183. if(item.order_state == 40 && item.evaluation_state == 0 && item2.status == 2 && item.payment_code != 'point'){
  184. _html += '<div class="service_btn"><a href="javascript:void(0);" data-goods_id="'+item2.goods_id+'">退货退款</a></div>';
  185. }
  186. if(item2.status == 3){
  187. _html += '<div class="service_btn"><a href="javascript:void(0);" data-refund_id="'+item2.or_id+'" data-goods_id="'+item2.goods_id+'">退款申请中</a></div>';
  188. }
  189. if(item2.status == 4){
  190. _html += '<div class="service_btn"><a href="javascript:void(0);" data-refund_id="'+item2.or_id+'" data-goods_id="'+item2.goods_id+'">已退款</a></div>';
  191. }
  192. _html += '</ul></div><div class="h2"></div>';
  193. });
  194. _html += '<div class="order-list-title" style="border-bottom:none;border-top: 1px solid #e8e8e8;">运费:' + item.shipping_fee + ' <span style="margin-left: 0.2rem;">合计:¥' + item.order_amount + '</span></div>';
  195. _html += '<div class="order-list-title" style="border-bottom:none;">订单编号:' + item.order_sn + '</div><div class="h5"></div>';
  196. if (item.shipping_code) {
  197. _html += '<div class="order-list-title" style="border-bottom:none;">快递单号:' + item.shipping_code + '&nbsp;&nbsp;(&nbsp;'+item.express_name +'&nbsp;)</div><div class="h5"></div>';
  198. }
  199. $("#contact-name").html(datas.data.reciver_name + " " + datas.data.reciver_info.phone);
  200. $("#contact-addr").html(datas.data.reciver_info.address);
  201. item.payment_time = item.payment_time ? item.payment_time : '未支付';
  202. item.delay_time = item.delay_time ? item.delay_time : '未发货';
  203. item.finnshed_time = item.finnshed_time ? item.finnshed_time : '未确认';
  204. _html += '<div class="order-list-title" style="border-bottom:none;">下单时间:' + item.add_time + '</div>';
  205. _html += '<div class="order-list-title" style="border-bottom:none;">支付订单:' + item.payment_time + '</div>';
  206. _html += '<div class="order-list-title" style="border-bottom:none;">商家发货:' + item.delay_time + '</div>';
  207. _html += '<div class="order-list-title" style="border-bottom:none;">确认收货:' + item.finnshed_time + '</div>';
  208. // });
  209. $(".order-list").append(_html);
  210. function_name();
  211. if (item.refund_state == 1) {
  212. $("#order-status").html("等待酒店处理退货申请");
  213. } else {
  214. $("#order-status").html(item.status);
  215. }
  216. if (item.order_state == 10) {
  217. $("#state-btn").append('<div class="order-btn"><ul><li id="order-cancel" >取消订单</li><li class="to-pay" keyid="' + item.order_id + '">去付款(¥' + item.order_amount + ')</li></ul></div>');
  218. }
  219. if (item.order_state == 20) {
  220. if (item.shipping_type == 0) {
  221. $("#state-btn").append('<div class="order-btn" id="order-cancel" ><ul><li class="o-refund" keyid="' + item.order_id + '">退款</li><li class="urge" keyid="' + item.order_id + '">催单</li></ul></div>');
  222. } else {
  223. $("#state-btn").append('<div class="order-btn" id="order-cancel" ><ul><li class="o-refund" keyid="' + item.order_id + '">退款</li><li class="contacthotel" keyid="' + item.order_id + '">联系酒店</li></ul></div>');
  224. }
  225. }
  226. if (item.order_state == 30) {
  227. $("#state-btn").append('<div class="order-btn" id="order-cancel" ><ul><li class="confirm" style="width:100%;border-right:none;">确认收货</li></ul></div>');
  228. }
  229. if (item.order_state == 40) {
  230. if (item.refund_state == 0) {
  231. if (item.evaluation_state == 0) {
  232. $("#state-btn").append('<div class="order-btn" id="order-return"><ul><li class="evaluate" style="width: 100%">去评价</li></ul></div>');
  233. } else {
  234. //$("#state-btn").append('<div class="order-btn" id="order-return"><ul><li style="width: 100%">退换货申请</li></ul></div>');
  235. }
  236. // if (item.status = '已完成') {
  237. // $("#state-btn").append('<div class="order-btn" id="order-del" ><ul><li style="width:100%;border-right:none;">删除订单</li></ul></div>');
  238. // }
  239. }
  240. if (item.refund_state == 4 && item.evaluation_state == 0) {
  241. $("#state-btn").append('<div class="order-btn" id="order-return"><ul><li class="evaluate" style="width: 100%">去评价</li></ul></div>');
  242. }
  243. if (item.refund_state == 2 || item.refund_state == 3 || item.refund_state == 4) {
  244. $("#state-btn").append('<div class="order-btn" id="order-del" ><ul><li style="width:100%;border-right:none;">删除订单</li></ul></div>');
  245. }
  246. }
  247. if (item.order_state == 0) {
  248. $("#state-btn").append('<div class="order-btn" id="order-del" ><ul><li style="width:100%;border-right:none;">删除订单</li></ul></div>');
  249. }
  250. }
  251. });
  252. }
  253. ///
  254. function getAddrData(_keyid) {
  255. $.ajax({
  256. url: rooturl + '?do=getordercommon',
  257. data: {
  258. memberid: $api.getStorage("memberid"),
  259. order_id: _keyid
  260. },
  261. dataType: 'json',
  262. type: 'post',
  263. success: function(datas) {
  264. $("#contact-name").html(datas.reciver_name + " " + datas.reciver_info.phone);
  265. $("#contact-addr").html(datas.reciver_info.address);
  266. }
  267. });
  268. }
  269. ///
  270. $("#state-btn").on("tap", ".to-pay", function() {
  271. var _keyid = $(this).attr("keyid");
  272. api.openWin({
  273. name: 'paymode',
  274. url: '../home/paymode.html',
  275. bounces: false,
  276. pageParam: {
  277. keyid: _keyid
  278. }
  279. });
  280. return false;
  281. })
  282. $("#state-btn").on("tap", ".urge", function() {
  283. var _keyid = $(this).attr("keyid");
  284. api.openWin({
  285. name: 'urge',
  286. url: './urge.html',
  287. bounces: false,
  288. pageParam: {
  289. keyid: _keyid
  290. }
  291. });
  292. return false;
  293. })
  294. $("#state-btn").on("tap", ".o-refund", function() {
  295. var _keyid = $(this).attr("keyid");
  296. api.confirm({
  297. title: '是否取消订单并退款',
  298. buttons: ['取消', '确定']
  299. }, function(ret, err) {
  300. var index = ret.buttonIndex;
  301. if (index == 2) {
  302. toast_loding_show();
  303. $.ajax({
  304. url: siteurl + 'v3/Order/refund_direct',
  305. data: {
  306. order_id: _keyid
  307. },
  308. headers: { "X-TOKEN": $api.getStorage("accesstoken") },
  309. dataType: 'json',
  310. type: 'post',
  311. success: function(datas) {
  312. toast_loding_hide();
  313. if (datas.result) {
  314. // alert(JSON.stringify(datas));
  315. api.toast({ msg: '操作成功!' });
  316. refreshData();
  317. setTimeCloseWin("orderdtl");
  318. } else {
  319. // alert(JSON.stringify(datas));
  320. errcode(datas, datas.code);
  321. }
  322. }
  323. });
  324. }
  325. })
  326. return false;
  327. })
  328. $("#state-btn").on("tap", ".contacthotel", function() {
  329. var _keyid = $(this).attr("keyid");
  330. api.openWin({
  331. name: 'contacthotel',
  332. url: './contacthotel.html',
  333. bounces: false,
  334. pageParam: {
  335. keyid: _keyid
  336. }
  337. });
  338. return false;
  339. })
  340. ////
  341. $(".order-list").on("tap", ".service_btn a", function(e) {
  342. e.stopPropagation()
  343. var goods_id = $(this).attr("data-goods_id");
  344. var refund_id = $(this).attr("data-refund_id");
  345. if(refund_id*1 > 0){
  346. api.openWin({
  347. name: 'refund_orderdtl',
  348. url: '../order/refund_orderdtl.html',
  349. bounces: false,
  350. pageParam: {
  351. goods_id: goods_id,
  352. order_id: _keyid,
  353. keyid: refund_id
  354. }
  355. });
  356. return false
  357. }
  358. api.openWin({
  359. name: 'order_return',
  360. url: './order_return.html',
  361. bounces: false,
  362. pageParam: {
  363. keyid: _keyid,
  364. goods_id: goods_id
  365. }
  366. });
  367. })
  368. $(".order-list").on("tap", ".order-list-goods", function() {
  369. var _keyid = $(this).attr("keyid");
  370. var _storeid = $(this).attr("storeid");
  371. var _goods_commonid = $(this).attr("goods_commonid");
  372. api.openWin({
  373. name: 'showgoods',
  374. url: '../home/showgoods.html',
  375. bounces: false,
  376. pageParam: {
  377. keyid: _goods_commonid,
  378. storeid: _storeid,
  379. }
  380. });
  381. return false;
  382. })
  383. ////
  384. $("#state-btn").on("tap", "#order-cancel", function() {
  385. api.confirm({
  386. title: '是否取消订单',
  387. buttons: ['取消', '确定']
  388. }, function(ret, err) {
  389. var index = ret.buttonIndex;
  390. if (index == 2) {
  391. toast_loding_show();
  392. $.ajax({
  393. url: siteurl + 'v2/order/cancel',
  394. data: {
  395. order_id: _keyid,
  396. memberid: $api.getStorage("memberid"),
  397. type: 'user'
  398. },
  399. headers: { "X-TOKEN": $api.getStorage("accesstoken") },
  400. dataType: 'json',
  401. type: 'post',
  402. success: function(datas) {
  403. toast_loding_hide();
  404. if (datas.result) {
  405. // alert(JSON.stringify(datas));
  406. api.toast({ msg: '操作成功!' });
  407. refreshData();
  408. setTimeCloseWin("orderdtl");
  409. } else {
  410. // alert(JSON.stringify(datas));
  411. errcode(datas, datas.code);
  412. }
  413. }
  414. });
  415. }
  416. })
  417. return false;
  418. })
  419. ////退款
  420. $("#state-btn").on("tap", "#order-return", function() {
  421. api.openWin({
  422. name: 'order_return',
  423. url: './order_return.html',
  424. bounces: false,
  425. pageParam: {
  426. keyid: _keyid
  427. }
  428. });
  429. return
  430. api.confirm({
  431. title: '是否申请退换货',
  432. buttons: ['取消', '确定']
  433. }, function(ret, err) {
  434. var index = ret.buttonIndex;
  435. if (index == 2) {
  436. toast_loding_show();
  437. $.ajax({
  438. url: siteurl + 'v2/order/refund',
  439. data: {
  440. order_id: _keyid,
  441. memberid: $api.getStorage("memberid"),
  442. type: 'user'
  443. },
  444. headers: { "X-TOKEN": $api.getStorage("accesstoken") },
  445. dataType: 'json',
  446. type: 'post',
  447. success: function(datas) {
  448. toast_loding_hide();
  449. if (datas.result) {
  450. api.toast({
  451. msg: '您的退换货申请已经提交,商户客服人员会尽快联系您!',
  452. duration: 3000,
  453. location: 'middle'
  454. });
  455. refreshData();
  456. setTimeout(function() { api.closeWin({ name: "orderdtl" }); }, 2500);
  457. } else {
  458. errcode(datas, datas.code);
  459. }
  460. }
  461. });
  462. }
  463. })
  464. return false;
  465. })
  466. $("#state-btn").on("tap", ".confirm", function() {
  467. api.confirm({
  468. title: '是否确认收货',
  469. buttons: ['取消', '确定']
  470. }, function(ret, err) {
  471. var index = ret.buttonIndex;
  472. if (index == 2) {
  473. $.ajax({
  474. url: siteurl + 'v2/order/confirm',//'?do=orderconfirm',
  475. data: {
  476. memberid: $api.getStorage("memberid"),
  477. order_id: _keyid
  478. },
  479. headers: { "X-TOKEN": $api.getStorage("accesstoken") },
  480. dataType: 'json',
  481. type: 'post',
  482. success: function(datas) {
  483. if (datas.result) {
  484. api.toast({ msg: '操作成功!' });
  485. refreshData();
  486. setTimeCloseWin("orderdtl");
  487. } else {
  488. errcode(datas, datas.code);
  489. }
  490. }
  491. });
  492. }
  493. })
  494. return false;
  495. })
  496. $("#state-btn").on("tap", ".evaluate", function() {
  497. api.openWin({
  498. name: 'evaluate',
  499. url: './evaluate.html',
  500. bounces: false,
  501. pageParam: {
  502. keyid: _keyid
  503. }
  504. });
  505. return false;
  506. })
  507. $("#state-btn").on("tap", "#order-del", function() {
  508. api.confirm({
  509. title: '是否要删除订单',
  510. buttons: ['取消', '确定']
  511. }, function(ret, err) {
  512. var index = ret.buttonIndex;
  513. if (index == 2) {
  514. $.ajax({
  515. url: siteurl + 'v2/order/drop',//'?do=orderdel',
  516. data: {
  517. order_id: _keyid,
  518. memberid: $api.getStorage("memberid")
  519. },
  520. headers: { "X-TOKEN": $api.getStorage("accesstoken") },
  521. dataType: 'json',
  522. type: 'post',
  523. success: function(datas) {
  524. if (datas.result) {
  525. api.toast({ msg: '操作成功!' });
  526. refreshData();
  527. setTimeCloseWin("orderdtl");
  528. } else {
  529. errcode(datas, datas.code);
  530. }
  531. }
  532. });
  533. }
  534. })
  535. return false;
  536. })
  537. function refreshData() {
  538. api.execScript({
  539. name: 'index',
  540. frameName: 'frame2',
  541. script: 'getRouteData();'
  542. });
  543. }
  544. </script>
  545. </html>