lineFlowRanking.jsx 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import {Button, Table,} from "antd";
  2. import {useEffect, useState} from "react";
  3. import ModalHooks from "./components/modal.jsx";
  4. import "./lineFlowRanking.scss";
  5. import axios from "@/utils/axios.js";
  6. const {Column} = Table;
  7. export default function LineFlowRanking() {
  8. // 页面数据
  9. const [data, setData] = useState([]);
  10. // 是否展示弹框
  11. const [isModalOpen, setIsModalOpen] = useState(false);
  12. const [row, setRow] = useState([]);
  13. // 请求回来的数据
  14. const [resData, setResData] = useState({})
  15. // 关闭页面
  16. function closeModal() {
  17. setIsModalOpen(false);
  18. getData()
  19. }
  20. /**
  21. * 子组件传过来的值
  22. * @param str 数据
  23. */
  24. async function submitValue(str) {
  25. const reqData = JSON.parse(JSON.stringify(resData))
  26. reqData.lineFlowRanking = str
  27. let {code} = await axios.post('/homePageEdit/editBusStatistics', reqData)
  28. if (code === 200) {
  29. closeModal()
  30. }
  31. }
  32. // 点击修改的回调
  33. function modify() {
  34. setRow(data);
  35. setIsModalOpen(true);
  36. }
  37. // 设置单元格合并问题
  38. function setRowspan(_, index) {
  39. if (index === 0) {
  40. return {
  41. rowSpan: data.length,
  42. }
  43. } else {
  44. return {
  45. rowSpan: 0,
  46. }
  47. }
  48. }
  49. // 获取数据
  50. async function getData() {
  51. let {data} = await axios.get("/homePage/getBusStatistics");
  52. setResData(data)
  53. setData(JSON.parse(data.lineFlowRanking));
  54. }
  55. useEffect(() => {
  56. getData();
  57. }, []);
  58. return (
  59. <div className="lineFlowRanking">
  60. <Table
  61. dataSource={data}
  62. pagination={false}
  63. scroll={{y: 700}}
  64. bordered={true}
  65. rowKey="id"
  66. >
  67. <Column title="占比次数" dataIndex="name"/>
  68. <Column title="数值" dataIndex="value"/>
  69. <Column
  70. title="操作"
  71. width="170px"
  72. dataIndex="id"
  73. key="id"
  74. onCell={setRowspan}
  75. render={(text, record) => (
  76. <div className="btn">
  77. <Button type="primary" onClick={() => modify()}>
  78. 修改
  79. </Button>
  80. </div>
  81. )}
  82. />
  83. </Table>
  84. <ModalHooks
  85. isModalOpen={isModalOpen}
  86. closeModal={closeModal}
  87. submitValue={submitValue}
  88. row={row}
  89. ></ModalHooks>
  90. </div>
  91. );
  92. }