order.html 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. {extend name="base"/}
  2. {block name="resources"}
  3. <style>
  4. .ns-card-head-right {
  5. display: flex;
  6. align-items: center;
  7. }
  8. .ns-card-head-right .layui-form-item {
  9. margin-bottom: 0;
  10. }
  11. .current-time, .ns-flow-time-today {
  12. margin-left: 10px;
  13. line-height: 34px;
  14. }
  15. /* 基本信息 */
  16. .ns-basic {
  17. display: flex;
  18. }
  19. .ns-basic .ns-table-tuwen-box {
  20. width: 30%;
  21. border-right: 1px solid #EEEEEE;
  22. padding: 10px 20px;
  23. }
  24. .ns-basic-count {
  25. font-size: 20px;
  26. font-weight: 600;
  27. }
  28. </style>
  29. {/block}
  30. {block name="main"}
  31. <div class="layui-card ns-card-common ns-card-brief">
  32. <div class="layui-card-header">
  33. <span class="ns-card-title">交易概况</span>
  34. <div class="ns-card-head-right layui-form">
  35. <div class="layui-form-item">
  36. <div class="layui-input-block ns-len-small">
  37. <select name="date" lay-filter="date">
  38. <option value="0">今日实时</option>
  39. <option value="1">近7天</option>
  40. <option value="2">近30天</option>
  41. </select>
  42. </div>
  43. </div>
  44. <div class="ns-flow-time">
  45. <div class="ns-flow-time-today"></div>
  46. </div>
  47. </div>
  48. </div>
  49. <div class="layui-card-body ns-basic">
  50. <div class="ns-table-tuwen-box">
  51. <div class="ns-img-box">
  52. <img src="ADMIN_IMG/stat/order_money.png">
  53. </div>
  54. <div class="ns-font-box">
  55. <p class="ns-text-color-dark-gray">订单金额</p>
  56. <p class="ns-basic-count" id="orderTotal">0</p>
  57. </div>
  58. </div>
  59. <div class="ns-table-tuwen-box">
  60. <div class="ns-img-box">
  61. <img src="ADMIN_IMG/stat/order_num.png">
  62. </div>
  63. <div class="ns-font-box">
  64. <p class="ns-text-color-dark-gray">订单数</p>
  65. <p class="ns-basic-count" id="orderPayCount">0</p>
  66. </div>
  67. </div>
  68. <div class="ns-table-tuwen-box">
  69. <div class="ns-img-box">
  70. <img src="ADMIN_IMG/stat/goods_order.png">
  71. </div>
  72. <div class="ns-font-box">
  73. <p class="ns-text-color-dark-gray">订单商品数</p>
  74. <p class="ns-basic-count" id="goodsPayCount">0</p>
  75. </div>
  76. </div>
  77. </div>
  78. </div>
  79. <div class="layui-card ns-card-common ns-card-brief">
  80. <div class="layui-card-header">
  81. <span class="ns-card-title">交易趋势分析</span>
  82. <div class="ns-card-head-right layui-form">
  83. <div class="layui-form-item">
  84. <div class="layui-input-block ns-len-small">
  85. <select name="date" lay-filter="date_chart">
  86. <option value="1">近7天</option>
  87. <option value="2">近30天</option>
  88. </select>
  89. </div>
  90. </div>
  91. <span class="current-time"></span>
  92. </div>
  93. </div>
  94. <div class="layui-card-body">
  95. <div id="main" style="width: 100%; height: 400px;"></div>
  96. </div>
  97. </div>
  98. {/block}
  99. {block name="script"}
  100. <script src="SHOP_JS/echarts.min.js"></script>
  101. <script>
  102. $(function() {
  103. getOrderStat(0);
  104. getOrderStatChart(1);
  105. });
  106. layui.use(['form'], function() {
  107. var form = layui.form;
  108. /**
  109. * 监听下拉框
  110. */
  111. form.on('select(date)', function(data) {
  112. getOrderStat(data.value);
  113. });
  114. /**
  115. * 图表监听下拉框
  116. */
  117. form.on('select(date_chart)', function(data) {
  118. getOrderStatChart(data.value);
  119. });
  120. });
  121. //获取店铺统计
  122. function getOrderStat(date_type){
  123. $.ajax({
  124. dataType: 'JSON',
  125. type: 'POST',
  126. url: ns.url("admin/stat/order"),
  127. data: {
  128. date_type: date_type
  129. },
  130. success: function(res){
  131. console.log(res);
  132. if (res.code == 0) {
  133. $("#orderTotal").html(res.data.order_total);
  134. $("#orderPayCount").html(res.data.order_pay_count);
  135. $("#goodsPayCount").html(res.data.goods_pay_count);
  136. $(".ns-flow-time-today").html(res.data.time_range);
  137. }else{
  138. layer.msg(res.message);
  139. }
  140. }
  141. });
  142. }
  143. //获取店铺统计图表
  144. function getOrderStatChart(date_type){
  145. $.ajax({
  146. dataType: 'JSON',
  147. type: 'POST',
  148. url: ns.url("admin/stat/getorderstatlist"),
  149. data: {
  150. date_type: date_type
  151. },
  152. success: function(res){
  153. console.log(res);
  154. option.xAxis.data = res.time;
  155. option.series[0].data = res.order_total;
  156. option.series[1].data = res.order_pay_count;
  157. option.series[2].data = res.goods_pay_count;
  158. $(".current-time").html(res.time_range);
  159. myChart.setOption(option);
  160. }
  161. });
  162. }
  163. // 基于准备好的dom,初始化echarts实例
  164. var myChart = echarts.init(document.getElementById('main'));
  165. // 指定图表的配置项和数据
  166. option = {
  167. tooltip: {
  168. trigger: 'axis'
  169. },
  170. legend: {
  171. data: ['订单金额', '订单数', '订单商品数']
  172. },
  173. xAxis: {
  174. type: 'category',
  175. boundaryGap: false,
  176. data: []
  177. },
  178. yAxis: {
  179. type: 'value',
  180. axisLabel: {
  181. formatter: '{value} '
  182. }
  183. },
  184. series: [{
  185. name: '订单金额',
  186. type: 'line',
  187. data: [],
  188. },
  189. {
  190. name: '订单数',
  191. type: 'line',
  192. data: [],
  193. },
  194. {
  195. name: '订单商品数',
  196. type: 'line',
  197. data: [],
  198. }
  199. ]
  200. };
  201. // 使用刚指定的配置项和数据显示图表。
  202. myChart.setOption(option);
  203. </script>
  204. {/block}