ContentTable.jsx 7.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  1. import React, { Component, useState, useEffect } from 'react';
  2. import { Card, Table, Button } from 'antd';
  3. import EChart from '../../../../components/EchartsTest/EChart';
  4. import request from '../../../../utils/request';
  5. import apis from '../../../../services/apis';
  6. import moment from 'moment';
  7. import router from 'umi/router';
  8. import Navigate from '@/components/Navigate';
  9. import AuthButton from '@/components/AuthButton';
  10. const ContentTable = props => {
  11. const { params } = props;
  12. const [data, setData] = useState({ records: [] });
  13. const formatDate = (start, end) => {
  14. const startDate = moment(start).format('YYYY-MM-DDT00:00:00.000') + 'Z';
  15. const endDate = moment(end).format('YYYY-MM-DDT23:59:59.999') + 'Z';
  16. return { startDate, endDate };
  17. };
  18. useEffect(() => {
  19. getTableList({
  20. ...params,
  21. });
  22. }, [params]);
  23. function getTableList(params) {
  24. request({
  25. ...apis.activityDataStatis.activityDetailTableData,
  26. params: {
  27. ...params,
  28. },
  29. })
  30. .then(data => {
  31. console.log(data);
  32. setData(data);
  33. // this.setState({ tableData: data.records, total: data.total });
  34. })
  35. .catch();
  36. }
  37. const toSharePersonNum = rowData => () => {
  38. // const startDate = moment().subtract(dateType, 'day').toDate()
  39. // const endDate = new Date()
  40. if (rowData) {
  41. router.push({
  42. pathname: '/statistics/activity/sharePersonNum',
  43. query: {
  44. startDate: params.startDate,
  45. endDate: params.endDate,
  46. activityId: rowData.activityId,
  47. activityType: rowData.activityType,
  48. activityName: rowData.activityName,
  49. },
  50. });
  51. return;
  52. }
  53. };
  54. const toShareNum = rowData => () => {
  55. // const startDate = moment().subtract(dateType, 'day').toDate()
  56. // const endDate = new Date()
  57. if (rowData) {
  58. router.push({
  59. pathname: '/statistics/activity/shareNum',
  60. query: {
  61. startDate: params.startDate,
  62. endDate: params.endDate,
  63. activityId: rowData.activityId,
  64. activityType: rowData.activityType,
  65. activityName: rowData.activityName,
  66. },
  67. });
  68. return;
  69. }
  70. };
  71. const toAddRegistNum = rowData => () => {
  72. // const startDate = moment().subtract(dateType, 'day').toDate()
  73. // const endDate = new Date()
  74. // console.log(rowData, 'rowData')
  75. if (rowData) {
  76. router.push({
  77. pathname: '/statistics/activity/addRegistNum',
  78. query: {
  79. startDate: params.startDate,
  80. endDate: params.endDate,
  81. activityId: rowData.activityId,
  82. activityType: rowData.activityType,
  83. activityName: rowData.activityName,
  84. },
  85. });
  86. return;
  87. }
  88. };
  89. const toAddVisitPersonNum = rowData => () => {
  90. if (rowData) {
  91. router.push({
  92. pathname: '/statistics/activity/visitPersonNum',
  93. query: {
  94. startDate: params.startDate,
  95. endDate: params.endDate,
  96. activityId: rowData.activityId,
  97. activityType: rowData.activityType,
  98. activityName: rowData.activityName,
  99. },
  100. });
  101. return;
  102. }
  103. };
  104. const toAddVisitNum = rowData => () => {
  105. if (rowData) {
  106. router.push({
  107. pathname: '/statistics/activity/visitNum',
  108. query: {
  109. startDate: params.startDate,
  110. endDate: params.endDate,
  111. activityId: rowData.activityId,
  112. activityType: rowData.activityType,
  113. activityName: rowData.activityName,
  114. },
  115. });
  116. return;
  117. }
  118. };
  119. const toDetail = rowData => {
  120. if (rowData) {
  121. router.push({
  122. pathname: '/statistics/activity/detail',
  123. query: {
  124. startDate: params.startDate,
  125. endDate: params.endDate,
  126. targetId: rowData.activityId,
  127. targetType: rowData.activityType,
  128. targetName: rowData.activityName,
  129. buildingId: '',
  130. },
  131. });
  132. return
  133. }
  134. }
  135. let columns = [
  136. {
  137. title: '活动类型',
  138. dataIndex: 'activityType',
  139. key: 'activityType',
  140. render: (text, records) => {
  141. if (records.activityType === 'live') {
  142. return '直播活动';
  143. }
  144. if (records.activityType === 'look') {
  145. return '一键带看';
  146. }
  147. if (records.activityType === 'house') {
  148. return '团房活动';
  149. }
  150. if (records.activityType === 'dymic') {
  151. return '报名活动';
  152. }
  153. },
  154. },
  155. {
  156. title: '活动名称',
  157. dataIndex: 'activityName',
  158. key: 'activityName',
  159. },
  160. {
  161. title: '访问人数',
  162. dataIndex: 'visitPersonNum',
  163. key: 'visitPersonNum',
  164. sorter: true,
  165. render: (text, record) => (
  166. <Navigate onClick={toAddVisitPersonNum(record)}>{record.visitPersonNum}</Navigate>
  167. ),
  168. },
  169. {
  170. title: '访问次数',
  171. dataIndex: 'visitNum',
  172. key: 'visitNum',
  173. sorter: true,
  174. render: (text, record) => (
  175. <Navigate onClick={toAddVisitNum(record)}>{record.visitNum}</Navigate>
  176. // <a style={{ color: '#66B3FF' }} onClick={toAddVisitNum(record)}><span>{record.visitNum}</span></a>
  177. ),
  178. },
  179. {
  180. title: '新增注册用户',
  181. dataIndex: 'addRegistNum',
  182. key: 'addRegistNum',
  183. sorter: true,
  184. render: (text, record) => (
  185. <Navigate onClick={toAddRegistNum(record)}>{record.addRegistNum}</Navigate>
  186. // <a style={{ color: '#66B3FF' }} onClick={toAddRegistNum(record)}><span>{record.addRegistNum}</span></a>
  187. ),
  188. },
  189. {
  190. title: '分享人数',
  191. dataIndex: 'sharePersonNum',
  192. key: 'sharePersonNum',
  193. sorter: true,
  194. render: (text, record) => (
  195. <Navigate onClick={toSharePersonNum(record)}>{record.sharePersonNum}</Navigate>
  196. ),
  197. },
  198. {
  199. title: '分享次数',
  200. dataIndex: 'shareNum',
  201. key: 'shareNum',
  202. sorter: true,
  203. render: (text, record) => <Navigate onClick={toShareNum(record)}>{record.shareNum}</Navigate>,
  204. },
  205. {
  206. title: '详情',
  207. align: 'center',
  208. render: (text, record) => (
  209. <a style={{ color: '#FF4A4A' }} onClick={() => toDetail(record)}>
  210. 查看
  211. </a>
  212. ),
  213. },
  214. ];
  215. // const toAddVisitNum = record => {
  216. // router.push({
  217. // pathname: '/activity/SignupActivity/registrationRecord',
  218. // query: {
  219. // dynamicId: record.dynamicId,
  220. // },
  221. // });
  222. // };
  223. //排序
  224. const handleTableChange = (pagination, filters, sorter) => {
  225. getTableList({
  226. ...params,
  227. pageNum: pagination.current,
  228. pageSize: pagination.pageSize,
  229. sort: sorter.order,
  230. colKey: sorter.columnKey
  231. });
  232. };
  233. const exportActivityStats = () => {
  234. request({ ...apis.activityDataStatis.activityDetailTableDataExport, params: params })
  235. .then(data => {
  236. if (!data) {
  237. return;
  238. }
  239. const url = window.URL.createObjectURL(new Blob([data]));
  240. const link = document.createElement('a');
  241. link.style.display = 'none';
  242. link.href = url;
  243. link.setAttribute('download', '活动统计.xlsx');
  244. document.body.append(link);
  245. link.click();
  246. })
  247. .catch();
  248. };
  249. return (
  250. <Card>
  251. <div style={{ textAlign: 'right' }}>
  252. <AuthButton name="admin.staisttics.activity.export" noRight={null}>
  253. <Button
  254. type="primary"
  255. style={{ float: 'right', margin: '20px 0', zIndex: 1 }}
  256. onClick={exportActivityStats}
  257. >
  258. 导出
  259. </Button>
  260. </AuthButton>
  261. </div>
  262. <Table
  263. columns={columns}
  264. dataSource={data?.records}
  265. key="dynamicId"
  266. pagination={{ current: data?.current, pageSize: 10, total: data?.total }}
  267. onChange={handleTableChange}
  268. ></Table>
  269. </Card>
  270. );
  271. };
  272. export default ContentTable;