diff --git a/.env b/.env index 7a40b39..de133cd 100644 --- a/.env +++ b/.env @@ -1 +1 @@ -REACT_APP_WS_URL=192.168.1.146:8080/ws +REACT_APP_WS_URL=127.0.0.1:8080/ws diff --git a/package.json b/package.json index 3b92eaf..34c06cd 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "outline", "version": "0.1.0", "private": true, - "proxy": "http://192.168.1.146:8080", + "proxy": "http://127.0.0.1:8080", "dependencies": { "@babel/core": "^7.16.0", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", diff --git a/src/components/SideMenu.tsx b/src/components/SideMenu.tsx index a4156f5..b758a90 100644 --- a/src/components/SideMenu.tsx +++ b/src/components/SideMenu.tsx @@ -36,24 +36,24 @@ const items: MenuItem[] = [ label: '轨形配置' }] }, - { - key: "task", - label: "任务管理", - icon: , - children: [{ - key: '/task/list', - label: '任务列表' - }] - }, - { - key: "system", - label: "系统设置", - icon: , - children: [{ - key: '/system', - label: '系统设置' - }] - }, + // { + // key: "task", + // label: "任务管理", + // icon: , + // children: [{ + // key: '/task/list', + // label: '任务列表' + // }] + // }, + // { + // key: "system", + // label: "系统设置", + // icon: , + // children: [{ + // key: '/system', + // label: '系统设置' + // }] + // }, ]; export default function SideMenu() { diff --git a/src/pages/measure/components/MeasureAction.tsx b/src/pages/measure/components/MeasureAction.tsx index 2971dc8..c69dd0c 100644 --- a/src/pages/measure/components/MeasureAction.tsx +++ b/src/pages/measure/components/MeasureAction.tsx @@ -1,15 +1,14 @@ import React, { useState, useEffect, useRef, useCallback, useMemo } from "react"; -import { Button, Checkbox, CheckboxProps, Drawer, message, Switch } from "antd"; +import { Button, Checkbox, CheckboxProps, Drawer, message, Select, Switch } from "antd"; import { useNavigate } from "react-router"; import { fetchAnalysisReport, - saveMeasurement, startMeasurement, } from "../../../services/measure/analysis"; -import { getBaseRecordPointSetByCode } from "../../../services/track/trackShape" +import { getBaseRecordPointSetByCode, gx_list } from "../../../services/track/trackShape" import { createWebSocket, sharedWsUrl } from "../../../services/socket"; import { switchMeasureAfterSave } from "../../../store/features/contextSlice"; -import { AnalysisReport } from "../../../services/measure/type"; +import { AnalysisReport, trackItem } from "../../../services/measure/type"; import { MeasureState, TaskState, TrackRecordSig } from "../../../services/wsTypes"; import { useAppDispatch, useAppSelector } from "../../../utils/hooks"; import Gr_round from "../../../assets/green_round.svg"; @@ -40,15 +39,11 @@ export default function MeasureAction() { // showMark的备份,记录showMark最近一次的值 const [angleMarkBackup, setAngleMarkBackup] = useState(true); const afterSave = useAppSelector(store => store.context.newMeasureAfterSave); - // const [angles, setAngles] = useState([]); - // const [taskStatus, setTaskStatus] = useState("IDLE"); const [startBtnText, setStartBtnText] = useState("开始测量"); const [measurementFinished, setMeasurementFinished] = useState(false); // 【分析】之后,会得到分析报告 const [analysisReport, setAnalysisReport] = useState(null); - // const [showAnalysisTable, setShowAnalysisTable] = useState(false); - // const [taskStatusName, setTaskStatusName] = useState(""); // 初始状态列表 const initialStatusList = useMemo( @@ -282,7 +277,6 @@ export default function MeasureAction() { // 处理点数据消息 const handlePointReport = (pointData: TrackRecordSig["data"]) => { - console.log(`pointData === ${pointData.x},${pointData.y}`); if (!isLeftFinished.current) { leftPoints.current.push(pointData); canvasRef.current?.setMeasurementDataLeft([...leftPoints.current]); @@ -307,7 +301,13 @@ export default function MeasureAction() { /** ----------------------- 页面加载获取基础图形数据 ----------------------- **/ useEffect(() => { - getBaseRecordPointSetByCode(GX_CODE).then(res => { + queryBasePoints(GX_CODE) + //获取轨型 + getTrackDataList() + }, []); + + const queryBasePoints = (gxCode:string) => { + getBaseRecordPointSetByCode(gxCode).then(res => { if (res.success) { const benchmarkShapes = JSON.parse(res.data.points) as BenchmarkShape[]; if (canvasRef.current) { @@ -316,7 +316,36 @@ export default function MeasureAction() { } } }); - }, []); + } + + /********************************轨型数据************************************* */ + const [trackList, setTrackList] = useState([]) + const [defaultTrackValue, setDefaultTrackValue] = useState() + const getTrackDataList = () => { + gx_list().then(res => { + if(res.data && res.data.length){ + let resData:trackItem[] = res.data; + let list:trackItem[] = [] + resData.map(item => { + if(item.points){ + list.push(item) + } + }) + setTrackList(list) + } + }) + } + + useEffect(()=>{ + if(trackList && trackList.length){ + setDefaultTrackValue(trackList[0].code) + } + },[trackList]) + + + const onTrackChange = (value: string) => { + queryBasePoints(value) + } const onExport = () => {}; /** ----------------------- 渲染 ----------------------- **/ @@ -325,7 +354,19 @@ export default function MeasureAction() { {/* 左侧区域:包含开关区域和测量画布 */} + + ({ + label: item.name, + value: item.code, + }))} + > {/* navigate("../config", { replace: true })}> diff --git a/src/pages/measure/components/MeasureDetail.tsx b/src/pages/measure/components/MeasureDetail.tsx index 1c38d75..a033e7f 100644 --- a/src/pages/measure/components/MeasureDetail.tsx +++ b/src/pages/measure/components/MeasureDetail.tsx @@ -349,7 +349,7 @@ export default function MeasureDetail() { } const [name, setName] = useState() - const [lineName, setLineName] = useState() + const [dataSource, setDataSource] = useState() let searchParams:SearchParams = { pageNum, pageSize, @@ -361,7 +361,7 @@ export default function MeasureDetail() { pageSize, pageNum: 1, name, - lineName + dataSource } getDetailDataList(searchParams) } @@ -380,6 +380,25 @@ export default function MeasureDetail() { setAnalysisReport({}) setIsModalOpen(false) } + + + useEffect(() => { + const intervalId = setInterval(() => { + if (percent < 100) { + const randomIncrement = Math.floor(Math.random() * 3) + 1; + const newProgress = Math.min(percent + randomIncrement, 100); + setPercent(newProgress); + } else { + clearInterval(intervalId); + } + }, 1000); + if(percent >= 90){ + clearInterval(intervalId); + } + return () => { + clearInterval(intervalId); + }; +}, [isModaUploadlOpen,percent]); return ( @@ -503,11 +522,12 @@ export default function MeasureDetail() { 上传 - setName(e.target.value)} style={{ width: 200 }}/> + setName(e.target.value)} style={{ width: 200 }}/> ({ label: item.value, value: item.key, diff --git a/src/pages/system/Setting.tsx b/src/pages/system/Setting.tsx index 84e0bc5..1754767 100644 --- a/src/pages/system/Setting.tsx +++ b/src/pages/system/Setting.tsx @@ -1,3 +1,100 @@ +import { useState, useEffect } from 'react'; +import type { CascaderProps } from 'antd'; +import { Button, Cascader, Input } from 'antd'; +import { getOrgListService } from '../../services/ktj/org'; +import { options, OrgItem } from '../../services/ktjTypes'; +import { GwdItem, orgCascaderType, systemItem } from './types'; +import { sysSet } from '../../services/user/system'; export default function Setting(){ - return 123 + useEffect(()=>{ + queryRailData() + querySettingData() + },[]) + + const [systemList, setSystemList] = useState([]) + const [accountInfo, setAccountInfo] = useState({}) + function querySettingData(){ + sysSet({}, "GET").then(res=>{ + setSystemList(res.data) + let data:systemItem[] = res.data; + let accountInfo:systemItem = {} + data.map(item => { + if(item.code === 'UPLOAD_USERNAME'){ + accountInfo = { + name: item.name, + code: item.code, + value: item.value + } + } + }) + console.log('accountInfo---', accountInfo) + setAccountInfo(accountInfo) + }) + } + + useEffect(()=>{ + + }, [accountInfo]) + + //获取铁路局数据 + const [KTJOrgList, setKTJOrgList] = useState([]); + function queryRailData(){ + getOrgListService().then((res) => { + if (res && res.data) { + let resData: OrgItem[] = res.data; + let data = convertToCascaderData(resData) + setKTJOrgList(data) + } + }).catch((e) => {}); + } + + function onOrgChange(value:string[]){ + console.log('value===', value) + if(value && value.length) + sysSet({code:"ORG",name:"org",value:JSON.stringify(value)}, "PUT").then(res=>{ + console.log('res===', res) + }) + } + + function onSaveAccount(){ + sysSet({code:"UPLOAD_USERNAME", name:accountInfo.name,value:accountInfo.value}, "PUT").then(res=>{ + console.log('res===', res) + }) + } + + function convertToCascaderData(data:OrgItem[]) { + return data.map(item => { + const newItem:orgCascaderType = { + value: item.key, + label: item.value, + }; + if (item.gwdDicList && item.gwdDicList.length > 0) { + newItem.children = item.gwdDicList.map(gwdItem => { + const newGwdItem:GwdItem = { + value: gwdItem.key, + label: gwdItem.value, + }; + if (gwdItem.railDicList && gwdItem.railDicList.length > 0) { + newGwdItem.children = gwdItem.railDicList.map(railItem => ({ + value: railItem.key, + label: railItem.value || railItem.input + })); + } + return newGwdItem; + }); + } + return newItem; + }); + } + + return + + 铁路局: + + {accountInfo.name}: + {setAccountInfo({...accountInfo, value:e.target.value})}} className='w-[300px]'> + 保存 + + + } \ No newline at end of file diff --git a/src/pages/system/types.ts b/src/pages/system/types.ts new file mode 100644 index 0000000..abfc809 --- /dev/null +++ b/src/pages/system/types.ts @@ -0,0 +1,22 @@ +export type child = { + value: string; + label: string; +} + +export type GwdItem = { + value: string; + label: string; + children?: child[] +} + +export type orgCascaderType = { + value: string; + label: string; + children?: child[] +} + +export type systemItem = { + code?: string; + name?: string; + value?: string; +} \ No newline at end of file diff --git a/src/services/measure/type.ts b/src/services/measure/type.ts index 16a772e..c905e33 100644 --- a/src/services/measure/type.ts +++ b/src/services/measure/type.ts @@ -99,7 +99,7 @@ export type SearchParams = { pageSize:number; pageNum: number; name?: string; - lineName?: string; + dataSource?: string; } //保存测量数据 @@ -118,4 +118,11 @@ export type reportParams = { "lineClassify": string; "stationCode": string; "mileage": string; +} + +//轨型 +export type trackItem = { + name: string; + code: string; + points: string; } \ No newline at end of file diff --git a/src/services/user/system.ts b/src/services/user/system.ts index 6065e81..3bd362e 100644 --- a/src/services/user/system.ts +++ b/src/services/user/system.ts @@ -1,8 +1,10 @@ import httpRequest, { BaseResponse } from "../httpRequest"; -export function sysSet(params: { name:string, value: string }) { +export function sysSet(params:{code?: string, name?: string, value?: string}, type: "GET" | "POST" | "PATCH" | "PUT" | "DELETE" = "GET"): Promise { return httpRequest({ - url: "/api/sysSet", - params, - method: "PUT", + url: "/api/sysSet/", + params: { + ...params, + }, + method: type }); -} +} \ No newline at end of file