basicInfomationOfTheLine.jsx 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. import {Button, Select, Table} from "antd";
  2. import {useEffect, useState} from "react";
  3. import ModalHooks from "./components/modal.jsx";
  4. import "./basicInfomationOfTheLine.scss";
  5. import axios from "@/utils/axios.js";
  6. import DeleteButton from "@/components/delete.jsx";
  7. import {useSelector} from "react-redux";
  8. import {findDictValue} from "@/utils/getDict.js";
  9. const {Column} = Table;
  10. export default function BasicInfomationOfTheLine() {
  11. // 页面数据
  12. const [data, setData] = useState([]);
  13. // 是否展示弹框
  14. const [isModalOpen, setIsModalOpen] = useState(false);
  15. // 一行的数据
  16. const [row, setRow] = useState({});
  17. // 设置下拉框绑定的值
  18. const [val, setVal] = useState('')
  19. // 获取store的数据
  20. const dictData = useSelector((state) => state.counter.dictData);
  21. // 新增用户页面
  22. function addUser() {
  23. setRow([]);
  24. setIsModalOpen(true);
  25. }
  26. // 关闭页面
  27. function closeModal() {
  28. setIsModalOpen(false);
  29. getData()
  30. }
  31. // 点击修改的回调
  32. function modify(data) {
  33. setRow(data);
  34. setIsModalOpen(true);
  35. }
  36. // 线路下拉框
  37. const [option, setOption] = useState([])
  38. // 线路数据
  39. const [lineList, setLineList] = useState([])
  40. /**
  41. * 线路数据请求
  42. * @returns {Promise<void>}
  43. */
  44. async function getLineData() {
  45. let {data} = await axios.get("/busLine/getList", {params: {hasModel: 1}})
  46. setLineList(data)
  47. let option = data.map(item => {
  48. return {
  49. label: item.lineName,
  50. value: item.lineId,
  51. }
  52. })
  53. // 默认查询第一个
  54. if (!val) {
  55. setVal(option[0].value)
  56. // console.log(option[0])
  57. }
  58. setOption(option)
  59. }
  60. // 获取数据
  61. async function getData() {
  62. if (!val) return
  63. let {data} = await axios.get("/lineOperate/getBusLineDetail", {params: {lineId: val}});
  64. if (!data) {
  65. setData([]);
  66. return
  67. }
  68. setData([data]);
  69. }
  70. // 设置线路名称
  71. function setText(text) {
  72. let it = option.find((item) => item.value === text)?.label
  73. return it
  74. }
  75. /**
  76. * 设置下拉框值并重新搜索
  77. * @param value 数据值
  78. */
  79. function changeSelect(value) {
  80. setVal(value)
  81. }
  82. useEffect(() => {
  83. async function request() {
  84. await getLineData()
  85. await getData()
  86. }
  87. request()
  88. }, [val])
  89. return (
  90. <div className="basicin">
  91. <div className="top">
  92. <div className="slect">
  93. <Select options={option} style={{width: '100px'}} value={val} onChange={changeSelect}></Select>
  94. </div>
  95. <div className="button">
  96. <Button type="primary" onClick={addUser} disabled={data.length}>
  97. 新增线路基本情况
  98. </Button>
  99. </div>
  100. </div>
  101. <Table
  102. dataSource={data}
  103. bordered={true}
  104. rowKey="id"
  105. pagination={false}
  106. scroll={{y: 900}}
  107. >
  108. <Column title="线路名称" dataIndex="lineId" key="id" render={(text) => (
  109. setText(text)
  110. )
  111. }></Column>
  112. <Column title="类型" dataIndex="type" key="id" render={(text) =>
  113. text === 1 ? '主线公交' : '干线公交'
  114. }/>
  115. <Column title="线路类型" dataIndex="lineType" key="id" render={(text) =>
  116. findDictValue(dictData, text)
  117. }/>
  118. <Column title="上行起点站" dataIndex="upStartStation" key="id"/>
  119. <Column title="上行终点站" dataIndex="upEndStation" key="id"/>
  120. <Column title="下行起点站" dataIndex="downStartStation" key="id"/>
  121. <Column title="下行终点站" dataIndex="downEndStation" key="id"/>
  122. <Column
  123. title="操作"
  124. width="170px"
  125. dataIndex="id"
  126. key="id"
  127. render={(text, record) => (
  128. <div className="btn">
  129. <Button type="primary" onClick={() => modify(record)}>
  130. 修改
  131. </Button>
  132. <DeleteButton url='/lineOperateEdit/delBusLineDetail' id={text}
  133. getData={getData}></DeleteButton>
  134. </div>
  135. )}
  136. />
  137. </Table>
  138. <ModalHooks
  139. isModalOpen={isModalOpen}
  140. closeModal={closeModal}
  141. row={row}
  142. option={option}
  143. lineList={lineList}
  144. val={val}
  145. ></ModalHooks>
  146. </div>
  147. );
  148. }