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