order.html 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. {extend name="base" /}
  2. {block name="title"}MyOrders{/block}
  3. {block name="styles"}
  4. <link rel="stylesheet" href="/assets/index/css/order.css?t=10">
  5. {/block}
  6. {block name="mainArea"}
  7. <section class="pageContainer">
  8. <div class="pageMain">
  9. <!-- 页面菜单 -->
  10. <div class="navContainer" id="userNavContainer">
  11. <a href="/index/index/index.html">
  12. <nav class="navItem">
  13. <div class="navItemFlex">
  14. <img src="/assets/index/asstes/icon/hm.png" alt="">
  15. <h2 class="navTitle">Home</h2>
  16. </div>
  17. </nav>
  18. </a>
  19. <nav class="navItem">
  20. <div class="navItemFlex">
  21. <img src="/assets/index/asstes/icon/order.png" alt="">
  22. <h2 class="navTitle">My orders</h2>
  23. </div>
  24. <div class="sunNavBox">
  25. <a href="#">
  26. <nav class="sunNavItem orderNavItem" id="unpaid" data-type="payment">
  27. <h3 class="sunNavTitle">Unpaid</h3>
  28. </nav>
  29. </a>
  30. <a href="#">
  31. <nav class="sunNavItem orderNavItem" id="treat" data-type="delivery">
  32. <h3 class="sunNavTitle">To be shipped</h3>
  33. </nav>
  34. </a>
  35. <a href="#">
  36. <nav class="sunNavItem orderNavItem" data-type="received">
  37. <h3 class="sunNavTitle">Shipped</h3>
  38. </nav>
  39. </a>
  40. <a href="#">
  41. <nav class="sunNavItem orderNavItem" data-type="comment">
  42. <h3 class="sunNavTitle">Received</h3>
  43. </nav>
  44. </a>
  45. </div>
  46. </nav>
  47. <a href="/index/user/myScores.html">
  48. <nav class="navItem">
  49. <div class="navItemFlex">
  50. <img src="/assets/index/asstes/icon/jf.png" alt="">
  51. <h2 class="navTitle">My points</h2>
  52. </div>
  53. </nav>
  54. </a>
  55. </div>
  56. <div class="pageConten">
  57. <div class="orderContainer" id="orderContainer">
  58. <!-- <div class="orderItem">
  59. <div class="orderImg">
  60. <img src="https://www.buranshao.com/Content/Img/iqos3duo.jpg" alt="">
  61. </div>
  62. <div class="orderInfo">
  63. <h2 class="orderTitle">#某某电子烟</h2>
  64. <p class="orderTime">创建时间:2019-07-03 12:00:00</p>
  65. </div>
  66. </div> -->
  67. </div>
  68. <div id="loadingIndicator">loading...</div>
  69. </div>
  70. </div>
  71. </section>
  72. {/block}
  73. {block name="scriptSrc"}
  74. <script src="/assets/index/js/jquery-1.12.0.js"></script>
  75. <script src="/assets/index/js/flexible.js"></script>
  76. <script src="/assets/index/js/public.js?t=11"></script>
  77. <script src="/assets/index/js/swiper.js?t=6"></script>
  78. <script src="/assets/index/js/jquery.lazyload.js"></script>
  79. <script>
  80. $(document).ready(function () {
  81. //触屏事件 || 点击事件
  82. const tap = "ontouchstart" in window ? "touchstart" : "click";
  83. //页码
  84. let page = 1;
  85. //页数
  86. let itemsPerPage = 20;
  87. //加载中
  88. let isLoading = false;
  89. //订单类型
  90. let orderType = ""
  91. //初始化菜单选中状态
  92. function initNavState() {
  93. const url = window.location.href;
  94. const searchParams = new URLSearchParams(new URL(url).search);
  95. orderType = searchParams.get("orderType");
  96. // 初始加载第一页数据
  97. loadData(orderType);
  98. //订单中心菜单列表
  99. const orderNavItemList = $(".orderNavItem")
  100. //是否存在匹配项
  101. let exist = false
  102. if (orderNavItemList) {
  103. orderNavItemList.each(function (index, element) {
  104. const type = $(this).attr('data-type');
  105. if (type === orderType) {
  106. $(this).addClass("active")
  107. exist = true
  108. }
  109. })
  110. }
  111. //如果未匹配中默认选中待发货
  112. if (!exist) {
  113. $('#treat').addClass("active")
  114. }
  115. }
  116. // 加载数据函数
  117. function loadData(orderType) {
  118. if (isLoading) {
  119. return;
  120. }
  121. isLoading = true;
  122. // 显示加载指示器
  123. $('#loadingIndicator').show();
  124. //调试后记得去除这段代码
  125. if (!orderType) {
  126. orderType = "delivery"
  127. }
  128. $.ajax({
  129. url: '/index/order/list?dataType=' + orderType,
  130. type: 'GET',
  131. data: {
  132. page: page,
  133. per_page: itemsPerPage
  134. },
  135. success: function (response) {
  136. // 处理成功响应
  137. const data = response.data.list.data;
  138. console.log('.xxx', data)
  139. // 在页面中添加数据
  140. const container = $('#orderContainer');
  141. data.forEach(function (item) {
  142. console.log(item)
  143. container.append(`
  144. <div class="orderItem" data-id="${item.order_id}">
  145. <div class="orderImg">
  146. <img src="${item.goods[0].goods_image}" alt="">
  147. </div>
  148. <div class="orderInfo">
  149. <h2 class="orderTitle">${item.goods[0].goods_name}(${item.order_no})</h2>
  150. <p class="orderTime">Created at:${item.create_time}</p>
  151. </div>
  152. </div>`);
  153. });
  154. // 更新当前页数
  155. page++;
  156. // 隐藏加载指示器
  157. $('#loadingIndicator').hide();
  158. isLoading = false;
  159. //事件委托给父级
  160. container.on(tap, '.orderItem', function () {
  161. const id = $(this).attr('data-id');
  162. window.location.href = `/index/user/orderDetails.html?orderId=${id}&orderType=${orderType}`
  163. });
  164. },
  165. error: function () {
  166. // 处理错误情况
  167. console.log('请求数据失败');
  168. // 隐藏加载指示器
  169. $('#loadingIndicator').hide();
  170. isLoading = false;
  171. }
  172. });
  173. }
  174. //菜单切换
  175. $(".orderNavItem").on(tap, function () {
  176. const type = $(this).attr('data-type');
  177. window.location.replace(`/index/user/order.html?orderType=${type}`)
  178. });
  179. //订单点击进入详情
  180. $(".orderItem").on(tap, function () {
  181. const id = $(this).attr('id');
  182. window.location.href = `/index/user/orderDetails.html?orderId=${id}&orderType=${orderType}`
  183. });
  184. // 监听页面滚动事件
  185. $(window).on('scroll', function () {
  186. const scrollBottom = $(window).height() + $(window).scrollTop();
  187. if (scrollBottom + 20 >= $(document).height()) {
  188. loadData();
  189. }
  190. });
  191. initNavState()
  192. })
  193. </script>
  194. {/block}