userStatic.html 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>用户统计</title>
  6. <meta name="renderer" content="webkit">
  7. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  8. <meta name="viewport"
  9. content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
  10. <link rel="stylesheet" href="../../static/css/font.css">
  11. <link rel="stylesheet" href="../../static/css/weadmin.css">
  12. <script src="../../static/js/axios.min.js"></script>
  13. <script src="../../static/js/vue.min.js"></script>
  14. <script src="../../config/config.js"></script>
  15. </head>
  16. <body>
  17. <div class="weadmin-nav">
  18. <span class="layui-breadcrumb">
  19. <a href="javascript:;">首页</a> <a href="javascript:;">用户分析</a>
  20. <a href="javascript:;"> <cite>用户统计</cite></a>
  21. </span>
  22. <a class="layui-btn layui-btn-sm" style="margin-top:3px;float:right"
  23. href="javascript:location.replace(location.href);"
  24. title="刷新">
  25. <i class="layui-icon layui-icon-refresh"></i>
  26. <!-- <i class="layui-icon" style="line-height:30px">&#x1002;</i> -->
  27. </a>
  28. </div>
  29. <div class="weadmin-body" id="app">
  30. <div class="layui-fluid" style="overflow: hidden;">
  31. <!--顶部查询框-->
  32. <div class="layui-row">
  33. <form class="layui-form layui-col-md12 we-search">
  34. 用户ID:
  35. <div class="layui-inline">
  36. <input class="layui-input" placeholder="请输入用户ID" name="start" v-model="questCountParams.userId"/>
  37. </div>
  38. <div class="layui-inline">
  39. <div class="layui-input-inline">
  40. <a class="layui-btn" @click="query"><i class="layui-icon"></i>查询</a>
  41. </div>
  42. </div>
  43. </form>
  44. </div>
  45. <div class="layui-row layui-col-space15">
  46. <div class="layui-col-md12">
  47. <div class="layui-card">
  48. <div class="layui-card-header">快捷统计</div>
  49. <div class="layui-card-body">
  50. <div class="layui-carousel weadmin-shortcut" lay-filter="shortcut" lay-indicator="inside"
  51. lay-arrow="none" style="width: 100%; height: 280px;">
  52. <div carousel-item="">
  53. <ul class="layui-row layui-col-space10 layui-this">
  54. <li class="layui-col-xs3">
  55. <a href="javascript:void(0);">
  56. <i class="layui-icon">{{ yesterdayRequest }}</i>
  57. <cite>昨日请求数</cite>
  58. </a>
  59. </li>
  60. <li class="layui-col-xs3">
  61. <a href="javascript:void(0);">
  62. <i class="layui-icon">{{ lastMonthRequest }}</i>
  63. <cite>当月请求数</cite>
  64. </a>
  65. </li>
  66. </ul>
  67. </div>
  68. </div>
  69. </div>
  70. </div>
  71. </div>
  72. </div>
  73. </div>
  74. <div class="layui-col-lg12 layui-collapse" style="border: none;">
  75. <div id="dayCount" style="width: 100%;height:400px;"></div>
  76. </div>
  77. </div>
  78. </body>
  79. <script type="text/javascript" src="../../lib/layui/layui.js" charset="utf-8"></script>
  80. <script src="//cdn.bootcss.com/echarts/4.0.2/echarts.min.js"></script>
  81. <script type="text/javascript">
  82. layui.extend({
  83. admin: '{/}../static/js/admin',
  84. });
  85. layui.use(['jquery', 'element', 'util', 'admin', 'carousel'], function () {
  86. var element = layui.element,
  87. $ = layui.jquery,
  88. carousel = layui.carousel,
  89. util = layui.util,
  90. admin = layui.admin;
  91. //建造实例
  92. carousel.render({
  93. elem: '.weadmin-shortcut'
  94. , width: '100%' //设置容器宽度
  95. , arrow: 'none' //始终显示箭头
  96. , trigger: 'hover'
  97. , autoplay: false
  98. });
  99. $(function () {
  100. });
  101. });
  102. </script>
  103. <script>
  104. new Vue({
  105. el: "#app",
  106. data: {
  107. yesterdayRequest: 0,
  108. yesterdayUserCount: 0,
  109. lastMonthRequest: 0,
  110. lastMonthUserCount: 0,
  111. questCountParams: {
  112. beginDate: "2019-08-01",
  113. endDate: "2019-11-01",
  114. userId: "",
  115. },
  116. questCountData: {
  117. dom: {},
  118. option: {},
  119. x: [],
  120. y_user: [],
  121. y_request: []
  122. },
  123. },
  124. methods: {
  125. /**
  126. * 获取昨天访问量
  127. */
  128. getYesterdayCount: function () {
  129. let _this = this;
  130. axios.post(app.baseUrl + "/api/log/queryUserYesterdayCount",{userId:_this.questCountParams.userId})
  131. .then(function (res) {
  132. res = res.data;
  133. if (res.flag) {
  134. let data = res.data;
  135. _this.yesterdayRequest = data.requestCount;
  136. }
  137. });
  138. },
  139. /**
  140. * 获取当月访问量和活跃用户数
  141. */
  142. getLastMonthCount: function () {
  143. let _this = this;
  144. axios.post(app.baseUrl + "/api/log/queryUserLastMonthCount",{userId:_this.questCountParams.userId})
  145. .then(function (res) {
  146. res = res.data;
  147. if (res.flag) {
  148. let data = res.data;
  149. _this.lastMonthRequest = data.request_count;
  150. }
  151. })
  152. },
  153. initAppKeyDayCount: function () {
  154. let _this = this;
  155. axios.post(app.baseUrl + "/api/log/queryUserDayCountList", this.questCountParams)
  156. .then(function (res) {
  157. res = res.data;
  158. if (res.flag) {
  159. _this.questCountData.dom = echarts.init(document.getElementById('dayCount'));
  160. let data = res.data;
  161. _this.questCountData.x = [];
  162. _this.questCountData.y_request = [];
  163. for (let i = 0; i < data.length; i++) {
  164. _this.questCountData.x.push(new Date(data[i].logDate).format('yyyy-MM-dd'));
  165. _this.questCountData.y_request.push(data[i].requestCount);
  166. }
  167. let option = {
  168. title: {
  169. text: '访问量'
  170. },
  171. tooltip: {
  172. trigger: 'axis'
  173. },
  174. legend: {
  175. data: ['访问量']
  176. },
  177. grid: {
  178. left: '3%',
  179. right: '4%',
  180. bottom: '3%',
  181. containLabel: true
  182. },
  183. toolbox: {
  184. feature: {
  185. saveAsImage: {}
  186. }
  187. },
  188. xAxis: {
  189. type: 'category',
  190. boundaryGap: false,
  191. data: _this.questCountData.x
  192. },
  193. yAxis: {
  194. type: 'value'
  195. },
  196. series: [
  197. {
  198. name: '访问量',
  199. type: 'line',
  200. stack: '总量',
  201. data: _this.questCountData.y_request
  202. }
  203. ]
  204. };
  205. _this.questCountData.option = option;
  206. _this.questCountData.dom.setOption(_this.questCountData.option);
  207. }
  208. })
  209. },
  210. query:function () {
  211. this.getYesterdayCount();
  212. this.getLastMonthCount();
  213. this.initAppKeyDayCount();
  214. }
  215. },
  216. mounted: function () {
  217. },
  218. updated: function () {
  219. }
  220. });
  221. </script>
  222. </html>