classCompletionRate.jsx 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. import {Button, Table} from "antd";
  2. import {useEffect, useState} from "react";
  3. import ModalHooks from "./components/modal.jsx";
  4. import "./classCompletionRate.scss";
  5. import axios from "@/utils/axios.js";
  6. import DeleteButton from "@/components/delete.jsx";
  7. const {Column} = Table;
  8. export default function ClassCompletionRate() {
  9. // 页面数据
  10. const [data, setData] = useState([]);
  11. // 是否展示弹框
  12. const [isModalOpen, setIsModalOpen] = useState(false);
  13. const [row, setRow] = useState({});
  14. // 新增用户页面
  15. function addUser() {
  16. setRow([]);
  17. setIsModalOpen(true);
  18. }
  19. // 关闭页面
  20. function closeModal() {
  21. setIsModalOpen(false);
  22. getData()
  23. }
  24. // 点击修改的回调
  25. function modify(data) {
  26. setRow(data);
  27. setIsModalOpen(true);
  28. }
  29. // 线路下拉框
  30. const [option, setOption] = useState([])
  31. // 线路数据
  32. const [lineList, setLineList] = useState([])
  33. /**
  34. * 线路数据请求
  35. * @returns {Promise<void>}
  36. */
  37. async function getLineData() {
  38. let {data} = await await axios.get("/busLine/getList", {params: {hasModel: 1}})
  39. setLineList(data)
  40. let option = data.map(item => {
  41. return {
  42. label: item.lineName,
  43. value: item.lineId,
  44. }
  45. })
  46. setOption(option)
  47. }
  48. // 获取数据
  49. async function getData() {
  50. let {data} = await axios.get("/homePage/getClassesCompletionRate");
  51. setData(data);
  52. }
  53. // 设置线路名称
  54. function setText(text) {
  55. let it = option.find((item) => item.value === text)?.label
  56. return it
  57. }
  58. useEffect(() => {
  59. getLineData()
  60. getData();
  61. }, []);
  62. return (
  63. <div className="completion">
  64. <div className="top">
  65. <div className="button">
  66. <Button type="primary" onClick={addUser}>
  67. 添加完成率
  68. </Button>
  69. </div>
  70. </div>
  71. <Table
  72. dataSource={data}
  73. bordered={true}
  74. rowKey="id"
  75. pagination={false}
  76. scroll={{y: 900}}
  77. >
  78. <Column title="线路名称" dataIndex="lineName" key="id"></Column>
  79. <Column title="跑法" dataIndex="modelId" key="id" render={(text) =>
  80. !text ? '上行' : '下行'
  81. }/>
  82. <Column title="计划" dataIndex="planClasses" key="id"/>
  83. <Column title="实际" dataIndex="realityClasses" key="id"/>
  84. <Column title="开始站点" dataIndex="startStation" key="id"/>
  85. <Column title="结束站点" dataIndex="endStation" key="id"/>
  86. <Column title="车牌" dataIndex="licensePlate" key="id"/>
  87. <Column
  88. title="操作"
  89. width="170px"
  90. dataIndex="id"
  91. key="id"
  92. render={(text, record) => (
  93. <div className="btn">
  94. <Button type="primary" onClick={() => modify(record)}>
  95. 修改
  96. </Button>
  97. <DeleteButton url='/homePageEdit/delClassesCompletionRate' id={text}
  98. getData={getData}></DeleteButton>
  99. </div>
  100. )}
  101. />
  102. </Table>
  103. <ModalHooks
  104. isModalOpen={isModalOpen}
  105. closeModal={closeModal}
  106. row={row}
  107. option={option}
  108. lineList={lineList}
  109. ></ModalHooks>
  110. </div>
  111. );
  112. }