member.html 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  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-mid">
  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/member_num.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="memberCount">0</p>
  57. </div>
  58. </div>
  59. </div>
  60. </div>
  61. <div class="layui-card ns-card-common ns-card-brief">
  62. <div class="layui-card-header">
  63. <span class="ns-card-title">会员趋势分析</span>
  64. <div class="ns-card-head-right layui-form">
  65. <div class="layui-form-item">
  66. <div class="layui-input-block ns-len-mid">
  67. <select name="date" lay-filter="date_chart">
  68. <option value="1">近7天</option>
  69. <option value="2">近30天</option>
  70. </select>
  71. </div>
  72. </div>
  73. <span class="current-time"></span>
  74. </div>
  75. </div>
  76. <div class="layui-card-body">
  77. <div id="main" style="width: 100%; height: 400px;"></div>
  78. </div>
  79. </div>
  80. {/block}
  81. {block name="script"}
  82. <script src="SHOP_JS/echarts.min.js"></script>
  83. <script>
  84. $(function() {
  85. getMemberStat(0);
  86. getMemberStatChart(1);
  87. });
  88. layui.use(['form'], function() {
  89. var form = layui.form;
  90. /**
  91. * 监听下拉框
  92. */
  93. form.on('select(date)', function(data) {
  94. getMemberStat(data.value);
  95. });
  96. /**
  97. * 图表监听下拉框
  98. */
  99. form.on('select(date_chart)', function(data) {
  100. getMemberStatChart(data.value);
  101. });
  102. });
  103. //获取店铺统计
  104. function getMemberStat(date_type){
  105. $.ajax({
  106. dataType: 'JSON',
  107. type: 'POST',
  108. url: ns.url("admin/stat/member"),
  109. data: {
  110. date_type: date_type
  111. },
  112. success: function(res){
  113. console.log(res);
  114. if (res.code == 0) {
  115. $("#memberCount").html(res.data.member_count);
  116. $(".ns-flow-time-today").html(res.data.time_range);
  117. }else{
  118. layer.msg(res.message);
  119. }
  120. }
  121. });
  122. }
  123. //获取店铺统计图表
  124. function getMemberStatChart(date_type){
  125. $.ajax({
  126. dataType: 'JSON',
  127. type: 'POST',
  128. url: ns.url("admin/stat/getmemberstatlist"),
  129. data: {
  130. date_type: date_type
  131. },
  132. success: function(res){
  133. console.log(res);
  134. option.xAxis.data = res.time;
  135. option.series[0].data = res.member_count;
  136. $(".current-time").html(res.time_range);
  137. myChart.setOption(option);
  138. }
  139. });
  140. }
  141. // 基于准备好的dom,初始化echarts实例
  142. var myChart = echarts.init(document.getElementById('main'));
  143. // 指定图表的配置项和数据
  144. option = {
  145. tooltip: {
  146. trigger: 'axis'
  147. },
  148. legend: {
  149. data: ['会员数']
  150. },
  151. xAxis: {
  152. type: 'category',
  153. boundaryGap: false,
  154. data: []
  155. },
  156. yAxis: {
  157. type: 'value',
  158. axisLabel: {
  159. formatter: '{value} 人'
  160. }
  161. },
  162. series: [{
  163. name: '会员数',
  164. type: 'line',
  165. data: [],
  166. },
  167. ]
  168. };
  169. // 使用刚指定的配置项和数据显示图表。
  170. myChart.setOption(option);
  171. </script>
  172. {/block}