Browse Source

添加轨形管理

feature/rail
LiLongLong 5 months ago
parent
commit
3f4682a312
  1. 2
      .env
  2. 2
      package.json
  3. 3
      src/components/SideMenu.tsx
  4. 2
      src/index.tsx
  5. 6
      src/pages/measure/components/Detail.tsx
  6. 101
      src/pages/measure/components/MeasureDetail.tsx
  7. 2
      src/pages/rail/railConfig.tsx

2
.env

@ -1 +1 @@
REACT_APP_WS_URL=192.168.1.200:8080/ws
REACT_APP_WS_URL=192.168.1.201:8080/ws

2
package.json

@ -2,7 +2,7 @@
"name": "outline", "name": "outline",
"version": "0.1.0", "version": "0.1.0",
"private": true, "private": true,
"proxy": "http://192.168.1.200:8080",
"proxy": "http://192.168.1.201:8080",
"dependencies": { "dependencies": {
"@babel/core": "^7.16.0", "@babel/core": "^7.16.0",
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3",

3
src/components/SideMenu.tsx

@ -39,8 +39,9 @@ const items: MenuItem[] = [
export default function SideMenu() { export default function SideMenu() {
const navigate = useNavigate(); const navigate = useNavigate();
const location = useLocation(); const location = useLocation();
console.log('location.pathname.indexOf("/measure/detail")---', location.pathname.indexOf("/measure/detail"))
const key = const key =
location.pathname === "/measure/detail"
location.pathname.indexOf("/measure/detail")>-1
? "/measure/detail" ? "/measure/detail"
: location.pathname.startsWith("/measure") : location.pathname.startsWith("/measure")
? "/measure/config" ? "/measure/config"

2
src/index.tsx

@ -39,7 +39,7 @@ const router = createBrowserRouter([
element: <MeasureDetail/>, element: <MeasureDetail/>,
children:[ children:[
{ {
path: "detail/:id",
path: ":id",
element: <DetailInfo/>, element: <DetailInfo/>,
} }
] ]

6
src/pages/measure/components/Detail.tsx

@ -1,9 +1,9 @@
import {getDetailList, delDetail, getDetail, getPointByUuid} from '../../../services/measure/analysis'
import { getDetail, getPointByUuid} from '../../../services/measure/analysis'
import { useState, useEffect, useRef } from 'react' import { useState, useEffect, useRef } from 'react'
import {message } from 'antd'; import {message } from 'antd';
import { useNavigate, useParams } from 'react-router-dom'; import { useNavigate, useParams } from 'react-router-dom';
import type { AnalysisReport, DetailTable, } from "../../../services/measure/type";
import type { AnalysisReport } from "../../../services/measure/type";
import { AnalysisData, BenchmarkShape, MeasurementCanvasRef } from './konva/MeasurementCanvas'; import { AnalysisData, BenchmarkShape, MeasurementCanvasRef } from './konva/MeasurementCanvas';
import MeasurementCanvas from "./konva/MeasurementCanvas"; import MeasurementCanvas from "./konva/MeasurementCanvas";
import { import {
@ -12,10 +12,10 @@ import {
} from "../../../services/measure/analysis"; } from "../../../services/measure/analysis";
export default function MeasureDetail() { export default function MeasureDetail() {
const {id} = useParams() const {id} = useParams()
const navigate = useNavigate();
const [measureId, setMeasureId] = useState<number>(Number(id)) const [measureId, setMeasureId] = useState<number>(Number(id))
useEffect(()=>{ useEffect(()=>{
console.error('detail--------')
onShowDetail(measureId) onShowDetail(measureId)
}, []) }, [])

101
src/pages/measure/components/MeasureDetail.tsx

@ -6,6 +6,7 @@ import type { AnalysisReport, AnalysisResults, DetailTable, SearchParams } from
import { ExclamationCircleFilled } from '@ant-design/icons'; import { ExclamationCircleFilled } from '@ant-design/icons';
import { AnalysisData, BenchmarkShape, MeasurementCanvasRef } from './konva/MeasurementCanvas'; import { AnalysisData, BenchmarkShape, MeasurementCanvasRef } from './konva/MeasurementCanvas';
import MeasurementCanvas from "./konva/MeasurementCanvas"; import MeasurementCanvas from "./konva/MeasurementCanvas";
import { Outlet } from 'react-router-dom';
import { import {
getBaseRecordPointSetByCode, getBaseRecordPointSetByCode,
getReport getReport
@ -155,6 +156,7 @@ export default function MeasureDetail() {
const onShowDetail = async (item:DetailTable)=> { const onShowDetail = async (item:DetailTable)=> {
//获取基线 //获取基线
setIsModalOpen(true) setIsModalOpen(true)
// navigate(`/measure/detail/${item.id}`)
let res = await getBaseRecordPointSetByCode("6001") let res = await getBaseRecordPointSetByCode("6001")
if (res.success) { if (res.success) {
const benchmarkShapes = JSON.parse(res.data.points) as BenchmarkShape[]; const benchmarkShapes = JSON.parse(res.data.points) as BenchmarkShape[];
@ -171,7 +173,7 @@ export default function MeasureDetail() {
let resData = await getDetail({id:item.id}) let resData = await getDetail({id:item.id})
console.log('res==测量记录详情=', resData) console.log('res==测量记录详情=', resData)
if(resData){ if(resData){
navigate(`/measure/detail/${item.id}`)
// navigate(`/measure/detail/${item.id}`)
//@ts-ignore //@ts-ignore
getRecordByUuid(resData.data.uuid) getRecordByUuid(resData.data.uuid)
//@ts-ignore //@ts-ignore
@ -306,56 +308,16 @@ export default function MeasureDetail() {
return ( return (
<div> <div>
<div className="p-[15px]">
<Button
disabled={!selectRows.length}
type="primary"
onClick={onBatchDel}>
</Button>
<Input className='ml-[2rem]' placeholder="测量名称" onChange={(e)=>setName(e.target.value)} style={{ width: 200 }}/>
<Input className='ml-[2rem]' placeholder="线路名称" onChange={(e)=>setLineName(e.target.value)} style={{ width: 200 }}/>
<Button type="primary" className='ml-[2rem]' onClick={onSearch}></Button>
</div>
<div>
<Table<DetailTable>
locale={{
emptyText: '无数据',
}}
loading={loading}
rowSelection={{ type: selectionType, ...rowSelection }}
columns={columns}
rowKey="id"
dataSource={tableData && tableData.map(item => ({ ...item, key: item.name }))}
pagination={false}
scroll={{ y: 500 }}
/>
<div className="float-right mt-[10px] mr-[1rem]">
<Pagination onChange={onPageChange} current={pageNum} pageSizeOptions={[5,10,20,30]} defaultCurrent={pageNum} defaultPageSize={pageSize} total={total}/>
</div>
</div>
{isModalOpen &&
<Modal
title="测量记录详情"
open={isModalOpen}
width={{ xl: '90%'}}
style={{ top: 20 }}
closable={true}
onCancel={handleCancel}
key={String(isModalOpen)}
footer={[
<Button key="cancel" onClick={handleCancel}>
</Button>]}
>
{isModalOpen ?
<div className="pt-[5px]">
<div className="flex"> <div className="flex">
<div className="ml-[7rem]"> <div className="ml-[7rem]">
<Switch defaultChecked onChange={checked => setShowGrid(checked)} /> <Switch defaultChecked onChange={checked => setShowGrid(checked)} />
<span>线</span> <span>线</span>
</div> </div>
<div className="ml-[1rem]">
<div className="ml-[1rem] ">
<Switch <Switch
checked={showStandard} checked={showStandard}
onChange={checked => { onChange={checked => {
@ -382,7 +344,8 @@ export default function MeasureDetail() {
<span>线</span> <span>线</span>
</div> </div>
</div> </div>
<div className="flex justify-center mt-[5px]">
<div className="flex ml-[7rem] mt-[5px]">
<MeasurementCanvas <MeasurementCanvas
width={800} width={800}
height={600} height={600}
@ -401,7 +364,7 @@ export default function MeasureDetail() {
/> />
{analysisReport && {analysisReport &&
<div className=" h-[600px] ml-[1rem]">
<div className=" h-[550px] ml-[1rem]">
<header className="bg-[#e8f0ff] w-[300px] text-center text-lg font-medium py-2 text-primary border border-[#c1c6d4]"> <header className="bg-[#e8f0ff] w-[300px] text-center text-lg font-medium py-2 text-primary border border-[#c1c6d4]">
@ -425,20 +388,60 @@ export default function MeasureDetail() {
{analysisReport.railHeadWidth} {analysisReport.railHeadWidth}
</td> </td>
</tr> </tr>
{analysisReport.angleAnalysisList && analysisReport.angleAnalysisList.map((item, index) => (
{analysisReport.angleAnalysisList ? analysisReport.angleAnalysisList.map((item, index) => (
<tr key={index} style={{ height: "40px", fontSize: "18px", color: "#9E9E9E" }}> <tr key={index} style={{ height: "40px", fontSize: "18px", color: "#9E9E9E" }}>
<td style={{ padding: "8px", border: "1px solid #ccc" }}>{item.describe}</td> <td style={{ padding: "8px", border: "1px solid #ccc" }}>{item.describe}</td>
<td style={{ padding: "8px", border: "1px solid #ccc" }}>{item.distance}</td> <td style={{ padding: "8px", border: "1px solid #ccc" }}>{item.distance}</td>
</tr> </tr>
))}
))
:
<div className="h-[28rem]"></div>
}
</tbody> </tbody>
</table> </table>
</div> </div>
<div className="flex justify-center mt-[1.5rem]" >
<Button type="primary" onClick={handleCancel} className='w-[200px]'>
</Button>
</div>
</div> </div>
} }
</div> </div>
</Modal>
</div>
:
<>
<div className="p-[15px]">
<Button
disabled={!selectRows.length}
type="primary"
onClick={onBatchDel}>
</Button>
<Input className='ml-[2rem]' placeholder="测量名称" onChange={(e)=>setName(e.target.value)} style={{ width: 200 }}/>
<Input className='ml-[2rem]' placeholder="线路名称" onChange={(e)=>setLineName(e.target.value)} style={{ width: 200 }}/>
<Button type="primary" className='ml-[2rem]' onClick={onSearch}></Button>
</div>
<div>
<Table<DetailTable>
locale={{
emptyText: '无数据',
}}
loading={loading}
rowSelection={{ type: selectionType, ...rowSelection }}
columns={columns}
rowKey="id"
dataSource={tableData && tableData.map(item => ({ ...item, key: item.name }))}
pagination={false}
scroll={{ y: 500 }}
/>
<div className="float-right mt-[10px] mr-[1rem]">
<Pagination onChange={onPageChange} current={pageNum} pageSizeOptions={[5,10,20,30]} defaultCurrent={pageNum} defaultPageSize={pageSize} total={total}/>
</div>
</div>
</>
} }
</div> </div>
); );

2
src/pages/rail/railConfig.tsx

@ -6,6 +6,7 @@ export default function RailManage() {
type RailItem = { type RailItem = {
id?: number; id?: number;
name: string; name: string;
createName: string;
createTime: string, createTime: string,
updateTime: string updateTime: string
} }
@ -44,6 +45,7 @@ export default function RailManage() {
let [total, setTotal] = useState() let [total, setTotal] = useState()
let [tableData, setTableData] = useState<RailItem[]>([{ let [tableData, setTableData] = useState<RailItem[]>([{
name:'60形', name:'60形',
createName:'张三',
createTime:'2025-03-03', createTime:'2025-03-03',
updateTime:'' updateTime:''
}]) }])

Loading…
Cancel
Save