user_order.tmpl 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. <div class="router-bar-user-order-view" id="router-user-order">
  2. <div class="order-tags">
  3. <div class="tag-list">
  4. <div class="tag-item tag-item-select" data-value="">全部</div>
  5. <div class="tag-item" data-value="0">待支付</div>
  6. <div class="tag-item" data-value="1">待发货</div>
  7. <div class="tag-item" data-value="2">已发货</div>
  8. <div class="tag-item" data-value="3">订单完成</div>
  9. </div>
  10. <!-- <div class="tag-bottom-line"></div>-->
  11. </div>
  12. <div class="order-content">
  13. <!--没有数据时显示-->
  14. <div class="order-empty" id="order-empty" style="display: none;">
  15. <img class="empty-image" src="/api/static/image/bar/not-order.png">
  16. <div class="empty-text">暂无订单</div>
  17. </div>
  18. <!--有数据时显示-->
  19. <div class="order-list" id="order-list">
  20. <div class="order-item">
  21. <div class="order-item-header">
  22. <div class="order-item-header-time">201912121212121212</div>
  23. <div class="order-item-header-status">待支付</div>
  24. </div>
  25. <div class="order-item-body">
  26. <div class="order-item-body-img">
  27. <img/>
  28. </div>
  29. <div class="order-item-body-info">
  30. <div class="order-item-body-info-title">
  31. <div class="order-item-body-info-title-name">商品名称</div>
  32. <div class="order-item-body-info-title-price">¥100</div>
  33. </div>
  34. <div class="order-item-body-info-desc">
  35. <div class="order-item-body-info-desc-text">商品sku名称</div>
  36. <div class="order-item-body-info-desc-count">X1</div>
  37. </div>
  38. </div>
  39. </div>
  40. <div class="order-item-footer">
  41. <div class="order-item-footer-orderid">
  42. <div class="footer-orderid-title">订单号</div>
  43. <div class="footer-orderid-info">
  44. <div class="footer-orderid-id">2033333</div>
  45. <div class="footer-orderid-copy">复制</div>
  46. </div>
  47. </div>
  48. <div class="order-item-footer-settlement">
  49. <div class="footer-settlement-left">实付</div>
  50. <div class="footer-settlement-price">¥2</div>
  51. </div>
  52. <div class="order-item-footer-btns">
  53. <div class="footer-btns-cancel">取消订单</div>
  54. <div class="footer-btns-pay">去支付</div>
  55. </div>
  56. </div>
  57. </div>
  58. </div>
  59. </div>
  60. </div>
  61. <script>
  62. let tagItems = document.querySelectorAll('.router-bar-user-order-view .tag-item');
  63. function initUserOrder() {
  64. for (let i = 0; i < tagItems.length; i++) {
  65. tagItems[i].addEventListener('click', function () {
  66. tagItems.forEach(item => {
  67. if (item !== this) {
  68. item.classList.remove('tag-item-select')
  69. } else {
  70. orderTypeClick(item.dataset)
  71. item.classList.add('tag-item-select')
  72. }
  73. })
  74. })
  75. }
  76. }
  77. function orderTypeClick(orderId) {
  78. orderType = orderId
  79. if (!orderId){
  80. orderType = ""
  81. }
  82. console.log(orderType)
  83. getOrderList()
  84. }
  85. function getOrderList() {
  86. getOrderList2()
  87. }
  88. function getOrderList2() {
  89. let url = "/api/order/list"
  90. fetch(url, {
  91. method: 'POST',
  92. headers: {
  93. "auth-sign": localStorage.getItem("token"),
  94. 'Content-Type': 'application/json'
  95. }
  96. }).then(response => {
  97. if (!response.ok) {
  98. throw new Error('Network response was not ok ' + response.statusText);
  99. }
  100. return response.json();
  101. }).then(data => {
  102. if (data.code == 200) {
  103. let orderListEle = document.getElementById("order-list");
  104. orderListEle.innerHTML = ''
  105. orderListEle.style.display = 'none'
  106. let orderEmptyEle = document.getElementById("order-empty");
  107. orderEmptyEle.style.display = ''
  108. if (data.data.length === 0) {
  109. } else {
  110. let orderListEle = document.getElementById("order-list");
  111. orderListEle.innerHTML = ''
  112. orderListEle.style.display = ""
  113. let orderEmptyEle = document.getElementById("order-empty");
  114. orderEmptyEle.style.display = 'none'
  115. data.data.vos.forEach(item => {
  116. console.log(123331,item.order.state, orderType)
  117. if (orderType == "" || item.order.state === orderType) {
  118. let orderItem = generateOrderHTML(item);
  119. orderListEle.appendChild(orderItem);
  120. }
  121. })
  122. }
  123. } else {
  124. console.log(data.msg)
  125. }
  126. }).catch(error => {
  127. console.error('There has been a problem with your fetch operation:', error);
  128. });
  129. }
  130. function generateOrderHTML(data) {
  131. function formatDate(isoString) {
  132. const date = new Date(isoString);
  133. // 获取年、月、日、小时、分钟、秒
  134. const year = date.getFullYear();
  135. const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始,需加1
  136. const day = String(date.getDate()).padStart(2, '0');
  137. const hours = String(date.getHours()).padStart(2, '0');
  138. const minutes = String(date.getMinutes()).padStart(2, '0');
  139. const seconds = String(date.getSeconds()).padStart(2, '0');
  140. // 拼接成所需的格式
  141. return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
  142. }
  143. const orderItem = document.createElement('div');
  144. orderItem.className = 'order-item';
  145. const header = document.createElement('div');
  146. header.className = 'order-item-header';
  147. const time = document.createElement('div');
  148. time.className = 'order-item-header-time';
  149. time.textContent = formatDate(data.order.createTime)
  150. const status = document.createElement('div');
  151. status.className = 'order-item-header-status';
  152. let stateString = ""
  153. switch (data.order.state) {
  154. case "":
  155. stateString = "订单关闭"
  156. break;
  157. case "0":
  158. stateString = "待支付"
  159. break;
  160. case "1":
  161. stateString = "待发货"
  162. break;
  163. case "2":
  164. stateString = "已收货"
  165. break;
  166. case "3":
  167. stateString = "订单完成"
  168. break
  169. default:
  170. stateString = "订单异常"
  171. }
  172. status.textContent = stateString;
  173. header.appendChild(time);
  174. header.appendChild(status);
  175. orderItem.appendChild(header);
  176. const body = document.createElement('div');
  177. body.className = 'order-item-body';
  178. const img = document.createElement('div');
  179. img.className = 'order-item-body-img';
  180. const htmlImageElement = document.createElement("img");
  181. let imageUrl = data.sku.skuImage ? data.sku.skuImage : "/api/static/image/def_image.png"
  182. htmlImageElement.src = imageUrl;
  183. img.appendChild(htmlImageElement)
  184. // img.style.backgroundImage = `url('${data.sku.skuImage}')`;
  185. const info = document.createElement('div');
  186. info.className = 'order-item-body-info';
  187. const title = document.createElement('div');
  188. title.className = 'order-item-body-info-title';
  189. const name = document.createElement('div');
  190. name.className = 'order-item-body-info-title-name';
  191. name.textContent = data.order.orderName;
  192. const price = document.createElement('div');
  193. price.className = 'order-item-body-info-title-price';
  194. price.textContent = `¥${data.order.price}`;
  195. title.appendChild(name);
  196. title.appendChild(price);
  197. const desc = document.createElement('div');
  198. desc.className = 'order-item-body-info-desc';
  199. const descText = document.createElement('div');
  200. descText.className = 'order-item-body-info-desc-text';
  201. descText.textContent = data.sku.skuName || data.order.orderName;
  202. const descCount = document.createElement('div');
  203. descCount.className = 'order-item-body-info-desc-count';
  204. descCount.textContent = `X${data.order.count}`;
  205. desc.appendChild(descText);
  206. desc.appendChild(descCount);
  207. info.appendChild(title);
  208. info.appendChild(desc);
  209. body.appendChild(img);
  210. body.appendChild(info);
  211. orderItem.appendChild(body);
  212. const footer = document.createElement('div');
  213. footer.className = 'order-item-footer';
  214. const orderIdDiv = document.createElement('div');
  215. orderIdDiv.className = 'order-item-footer-orderid';
  216. const footerOrderTitle = document.createElement('div');
  217. footerOrderTitle.className = 'footer-orderid-title';
  218. footerOrderTitle.innerText = "订单号"
  219. const footerOrderInfo = document.createElement('div');
  220. footerOrderInfo.className = 'footer-orderid-info';
  221. const footerOrderId = document.createElement('div');
  222. footerOrderId.className = 'footer-orderid-id';
  223. footerOrderId.textContent = `${data.order.id}`;
  224. const footerOrderCopy = document.createElement('div');
  225. footerOrderCopy.className = 'footer-orderid-copy';
  226. footerOrderCopy.textContent = '复制';
  227. footerOrderCopy.onclick = function () {
  228. copyToClipboard(data.order.id);
  229. };
  230. footerOrderInfo.appendChild(footerOrderId);
  231. footerOrderInfo.appendChild(footerOrderCopy);
  232. orderIdDiv.appendChild(footerOrderTitle);
  233. orderIdDiv.appendChild(footerOrderInfo);
  234. const settlement = document.createElement('div');
  235. settlement.className = 'order-item-footer-settlement';
  236. const settlementLeft = document.createElement('div');
  237. settlementLeft.className = 'footer-settlement-left';
  238. settlementLeft.textContent = '实付款';
  239. const settlementPrice = document.createElement('div');
  240. settlementPrice.className = 'footer-settlement-price';
  241. settlementPrice.textContent = `¥${data.order.totalPrice}`;
  242. settlement.appendChild(settlementLeft);
  243. settlement.appendChild(settlementPrice);
  244. const btns = document.createElement('div');
  245. btns.className = 'order-item-footer-btns';
  246. const btnCancel = document.createElement('div');
  247. btnCancel.className = 'footer-btns-cancel';
  248. btnCancel.textContent = '取消订单';
  249. btnCancel.onclick = function () {
  250. cancelOrder(data.order.id);
  251. };
  252. const btnPay = document.createElement('div');
  253. btnPay.className = 'footer-btns-pay';
  254. btnPay.textContent = '去支付';
  255. btnPay.onclick = function () {
  256. payOrder(data.order.id);
  257. };
  258. btns.appendChild(btnCancel);
  259. btns.appendChild(btnPay);
  260. footer.appendChild(orderIdDiv);
  261. footer.appendChild(settlement);
  262. footer.appendChild(btns);
  263. orderItem.appendChild(footer);
  264. return orderItem;
  265. }
  266. function copyToClipboard(text) {
  267. navigator.clipboard.writeText(text).then(function () {
  268. alert('订单号已复制到剪贴板');
  269. }, function () {
  270. alert('复制失败');
  271. });
  272. }
  273. function cancelOrder(orderId) {
  274. console.log(`取消订单: ${orderId}`);
  275. // 在这里实现取消订单的逻辑
  276. }
  277. function payOrder(orderId) {
  278. console.log(`去支付订单: ${orderId}`);
  279. // 在这里实现支付订单的逻辑
  280. }
  281. initUserOrder()
  282. </script>