知与行后台管理端

UserBehavior.jsx 3.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. import React, { Component, useState, useEffect } from 'react';
  2. import EChart from '../../../components/EchartsTest/EChart';
  3. import request from '../../../utils/request';
  4. import apis from '../../../services/apis';
  5. import moment from 'moment';
  6. import router from 'umi/router';
  7. import 'echarts/lib/component/dataZoom'
  8. import { Table, Select, Row, Col, Menu, Dropdown, Button, Icon, message } from 'antd';
  9. import BuildSelect from '../../../components/SelectButton/BuildSelect'
  10. const { Option } = Select;
  11. const formatDate = (start, end) => {
  12. const startDate = moment(start).format('YYYY-MM-DDT00:00:00.000') + 'Z'
  13. const endDate = moment(end).format('YYYY-MM-DDT23:59:59.999') + 'Z'
  14. return { startDate, endDate }
  15. }
  16. const UserBehavior = (props) => {
  17. // console.log(props,'11111111')
  18. const [data, setData] = useState({ records: [] })
  19. const [datas, setDatas] = useState({ records: [] })
  20. //柱图
  21. useEffect(() => {
  22. getUserBehaviorSummary(formatDate(props.startDate, props.endDate))
  23. getUserBehaviorProfile(formatDate(props.startDate, props.endDate))
  24. }, [props.startDate, props.endDate])
  25. function getUserBehaviorSummary(params) {
  26. request({
  27. ...apis.indexEcharts.userBehavior.summary,
  28. params
  29. }).then((data) => {
  30. setData(data || {})
  31. // props.onReData(data)
  32. // console.log(data || {}, '2134')
  33. })
  34. }
  35. // showDetail (row) {
  36. // this.detailData = []
  37. // this.dialogVisible = true
  38. // this.getUserBehaviorProfile().then((data) => {
  39. // this.detailData = data
  40. // })
  41. function getUserBehaviorProfile (row) {
  42. setData([])
  43. request({
  44. ...apis.indexEcharts.userBehavior.profile,
  45. params:{ event: row.event, personId: row.personId }
  46. }).then((data) => {
  47. setData(data )
  48. // props.onReData(data)
  49. // console.log(data , '22354234')
  50. })
  51. }
  52. const seriesMaker = (data.selectUserBehavior || []).reduce((series, item) => {
  53. let { date, activityCount, activity } = item
  54. date = moment(date).format('YYYY-MM-DD')
  55. if (!activityCount) activityCount = 0
  56. // 使用对象, 可以去重
  57. series[`${activity}`] = (series[`${activity}`] || []).concat([[ date, activityCount ]])
  58. return series;
  59. }, {})
  60. const dataZoom=props.dataZoom?[
  61. {
  62. type: 'inside',
  63. start: 0,
  64. end: 100
  65. },
  66. {
  67. type: 'slider',
  68. start: 0,
  69. end: 100
  70. },
  71. ] : undefined
  72. const options = {
  73. title: {
  74. text: '用户行为',
  75. subtext: '最近7天',
  76. },
  77. icon: "rect",
  78. legend: {
  79. show: true, zlevel: 10 ,
  80. itemGap:100,
  81. // data:[{
  82. // // name:'',
  83. // icon: 'rect',
  84. // }]
  85. },
  86. color: ['#F12B3E', '#FE929C', '#647CE1', '#A2B9FF', '#FF844F', '#FFBB9D'],
  87. tooltip: {
  88. trigger: 'axis'
  89. },
  90. xAxis: { type: 'category' },
  91. yAxis: {},
  92. dataZoom,
  93. series: Object.keys(seriesMaker).map(x => {
  94. return {
  95. type: 'line',
  96. name: x,
  97. data: seriesMaker[x],
  98. }
  99. }),
  100. }
  101. function handleBuildingChange (e) {
  102. getUserBehaviorSummary({ buildingId: e })
  103. }
  104. const style = {
  105. width: '100%',
  106. height: '400px',
  107. }
  108. return (
  109. <>
  110. <div>
  111. {/* onSuccess={(e) => onTabledatas(e)} */}
  112. <BuildSelect slot='action' onChange={(e=>handleBuildingChange(e))}></BuildSelect>
  113. <EChart options={options} style={style} />
  114. </div>
  115. </>
  116. )
  117. }
  118. export default UserBehavior;