Browse Source

fix: bug修复

master
guoapeng 2 months ago
parent
commit
9fc49a17a0
  1. 7
      src/App.tsx
  2. 8
      src/index.css
  3. 81
      src/pages/Measure.tsx
  4. 4
      src/pages/Mine.tsx
  5. 65
      src/pages/Mine2.tsx
  6. 50
      src/store/features/measureSlice.ts
  7. 8
      src/utils/bridge.ts

7
src/App.tsx

@ -4,7 +4,7 @@ import { Toast } from 'antd-mobile';
import Bridge, { bridgeOb, emitBridgeEvent } from './utils/bridge'; import Bridge, { bridgeOb, emitBridgeEvent } from './utils/bridge';
import { useAppDispatch, useAppSelector } from './utils/hooks'; import { useAppDispatch, useAppSelector } from './utils/hooks';
import { addNewPoint, updateTaskState, updateMeasureFinish } from './store/features/measureSlice';
import { addNewPoint, updateTaskState, updateVersion, updateMeasureFinish } from './store/features/measureSlice';
import { import {
refreshStationList, refreshStationList,
updateBleList, updateBleList,
@ -62,6 +62,11 @@ function App() {
// 开启推送 // 开启推送
useEffect(() => { useEffect(() => {
Bridge.getVersion().then((res) => {
if (res.success) {
dispatch(updateVersion(res.data))
}
});
// if (appWebview) { // if (appWebview) {
// registerBridgeFunc(); // registerBridgeFunc();
// } else { // } else {

8
src/index.css

@ -4,7 +4,7 @@
:root { :root {
--primaryColor: #3e63cb; --primaryColor: #3e63cb;
--tabBarHeight: 50px;
--tabBarHeight: 60px;
--navBarHeight: 45px; --navBarHeight: 45px;
} }
@ -81,3 +81,9 @@ code {
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
monospace; monospace;
} }
.adm-tab-bar {
height: var(--tabBarHeight);
}
.adm-tab-bar-wrap {
height: var(--tabBarHeight);
}

81
src/pages/Measure.tsx

@ -15,7 +15,8 @@ import {
updateMeasureData, updateMeasureData,
updateTaskState, updateTaskState,
updateMeasureStatus, updateMeasureStatus,
updateMeasureFinish
updateMeasureFinish,
updateShowCalibration
} from '../store/features/measureSlice'; } from '../store/features/measureSlice';
import Bridge from '../utils/bridge'; import Bridge from '../utils/bridge';
import { selectLabeledKtjOrgs, updateRailPoints } from '../store/features/baseData'; import { selectLabeledKtjOrgs, updateRailPoints } from '../store/features/baseData';
@ -40,7 +41,7 @@ export default function Measure() {
const [railId, setRailId] = useState<(number | string | null)[]>([]); const [railId, setRailId] = useState<(number | string | null)[]>([]);
const canvasRef = useRef<MeasurementCanvasRef>(null); const canvasRef = useRef<MeasurementCanvasRef>(null);
const [railSize, setRailSize] = useState<number | string | null>(); const [railSize, setRailSize] = useState<number | string | null>();
const iconWidth = 35;
const iconWidth = 40;
const [showStandard, setShowStandard] = useState(false); const [showStandard, setShowStandard] = useState(false);
// 默认选中第一个轨型 // 默认选中第一个轨型
@ -101,9 +102,6 @@ export default function Measure() {
}, 100); }, 100);
canvasRef.current?.setMeasurementCalibrationData(measureState.measureFinishData); canvasRef.current?.setMeasurementCalibrationData(measureState.measureFinishData);
setShowMeasureFinish(true) setShowMeasureFinish(true)
} }
}, [baseState.railTypes, measureState.measureFinishData, railId]); }, [baseState.railTypes, measureState.measureFinishData, railId]);
@ -186,15 +184,16 @@ export default function Measure() {
}; };
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [showCalibration, setShowCalibration] = useState(false);
const [showMeasureFinish, setShowMeasureFinish] = useState(false); const [showMeasureFinish, setShowMeasureFinish] = useState(false);
const onCalibrationBtnClick = () => { const onCalibrationBtnClick = () => {
setLoading(true); setLoading(true);
Bridge.alignPoints({ railSize: railSize || 'GX-60' }) Bridge.alignPoints({ railSize: railSize || 'GX-60' })
.then((res) => { .then((res) => {
if (res.success) { if (res.success) {
setShowCalibration(true);
// setShowCalibration(true);
dispatch(updateShowCalibration(true))
canvasRef.current?.setMeasurementCalibrationData(res.data); canvasRef.current?.setMeasurementCalibrationData(res.data);
dispatch(updateMeasureFinish(res.data))
} else { } else {
} }
setLoading(false); setLoading(false);
@ -225,7 +224,8 @@ export default function Measure() {
const onStartClick = () => { const onStartClick = () => {
setMeasurementCanvasKey(measurementCanvasKey+1) setMeasurementCanvasKey(measurementCanvasKey+1)
setShowCalibration(false);
// setShowCalibration(false);
dispatch(updateShowCalibration(false))
setShowMeasureFinish(false) setShowMeasureFinish(false)
dispatch(updateMeasureData([])); dispatch(updateMeasureData([]));
if (!contextState.device.connected) { if (!contextState.device.connected) {
@ -410,19 +410,22 @@ export default function Measure() {
} }
//上下移动 //上下移动
const timerRef = useRef<NodeJS.Timeout | null>(null);
let timerRef = useRef<any>(null);
const handlePressStart = (type: string) => { const handlePressStart = (type: string) => {
console.log('你进行了长按操作!');
if (timerRef.current) {
return
}
timerRef.current = setInterval(() => { timerRef.current = setInterval(() => {
console.log('你进行了长按操作!');
console.log('111!');
onHandleMove(type); onHandleMove(type);
}, 500); }, 500);
console.log(timerRef.current)
}; };
const handlePressEnd = () => { const handlePressEnd = () => {
if (timerRef.current) {
clearInterval(timerRef.current); clearInterval(timerRef.current);
timerRef.current = null;
}
timerRef.current = null;
}; };
const onMoveLine = (type: string) => { const onMoveLine = (type: string) => {
@ -432,27 +435,25 @@ export default function Measure() {
const onHandleMove = (type: string) => { const onHandleMove = (type: string) => {
let list = canvasRef.current?.getMeasurementCalibrationData(); let list = canvasRef.current?.getMeasurementCalibrationData();
console.log(list)
if (list && list.length) { if (list && list.length) {
list.forEach((item) => {
const updatedList = list.map((item) => {
const mutableItem = { ...item }; // 创建副本
if (type === 'up') { if (type === 'up') {
//向上移动,原数据减y X轴不动
item.y = item.y - distance / 1000;
}
if (type === 'down') {
//向上移动,原数据加y X轴不动
item.y = item.y + distance / 1000;
}
if (type === 'left') {
//向左移动,原数据减x Y轴不动
item.x = item.x - distance / 1000;
}
if (type === 'right') {
//向右移动,原数据加x Y轴不动
item.x = item.x + distance / 1000;
mutableItem.y -= distance / 1000;
} else if (type === 'down') {
mutableItem.y += distance / 1000;
} else if (type === 'left') {
mutableItem.x -= distance / 1000;
} else if (type === 'right') {
mutableItem.x += distance / 1000;
} }
return mutableItem;
}); });
canvasRef.current?.setMeasurementCalibrationData(list);
setNewMeasureData(list);
canvasRef.current?.setMeasurementCalibrationData(updatedList);
dispatch(updateMeasureFinish(list));
setNewMeasureData(updatedList);
} }
}; };
@ -479,13 +480,17 @@ export default function Measure() {
} }
let list = canvasRef.current?.getMeasurementCalibrationData(); let list = canvasRef.current?.getMeasurementCalibrationData();
if (list && list.length) { if (list && list.length) {
list.forEach((item, index) => {
let cloneItem = rotatePoint(item, mrValue);
item.x = cloneItem.x;
item.y = cloneItem.y;
const updatedList = list.map((item) => {
const mutableItem = { ...item }; // 创建副本
let cloneItem = rotatePoint(mutableItem, mrValue);
mutableItem.x = cloneItem.x;
mutableItem.y = cloneItem.y;
return mutableItem;
}); });
canvasRef.current?.setMeasurementCalibrationData(list);
setNewMeasureData(list);
canvasRef.current?.setMeasurementCalibrationData(updatedList);
dispatch(updateMeasureFinish(list));
setNewMeasureData(updatedList);
} }
}; };
@ -537,7 +542,7 @@ export default function Measure() {
showScale={false} showScale={false}
scaleInterval={1} scaleInterval={1}
showCoordinates={false} showCoordinates={false}
showCalibration={showCalibration || showMeasureFinish}
showCalibration={measureState.showCalibration || showMeasureFinish}
ref={canvasRef} ref={canvasRef}
key={measurementCanvasKey} key={measurementCanvasKey}
/> />
@ -562,7 +567,7 @@ export default function Measure() {
<span className="text-primary underline"></span> <span className="text-primary underline"></span>
</section> </section>
{/**手动校准区 */} {/**手动校准区 */}
{showCalibration && (
{(measureState.showCalibration && measureState.measureFinishData.length>0) && (
<section className="h-10 bg-[#e3e8f5] flex justify-between items-center px-4"> <section className="h-10 bg-[#e3e8f5] flex justify-between items-center px-4">
<img <img
width={iconWidth} width={iconWidth}

4
src/pages/Mine.tsx

@ -7,10 +7,12 @@ import { Measurement } from '../services/apiTypes';
import UnuploadList from '../components/UnuploadList'; import UnuploadList from '../components/UnuploadList';
import MineSegment from '../components/MineSegment'; import MineSegment from '../components/MineSegment';
import Bridge from '../utils/bridge'; import Bridge from '../utils/bridge';
import {useAppSelector} from "../utils/hooks";
const PAGE_SIZE = 10; const PAGE_SIZE = 10;
export default function Mine() { export default function Mine() {
const [tabIndex, setTabIndex] = useState(0); const [tabIndex, setTabIndex] = useState(0);
const [uploadedList, setUploadedList] = useState<Measurement[]>([]); const [uploadedList, setUploadedList] = useState<Measurement[]>([]);
const [unuploadList, setUnuploadList] = useState<Measurement[]>([]); const [unuploadList, setUnuploadList] = useState<Measurement[]>([]);
@ -113,7 +115,9 @@ export default function Mine() {
/> />
)} )}
</main> </main>
</div> </div>
</div> </div>
); );
} }

65
src/pages/Mine2.tsx

@ -1,15 +1,27 @@
import {Dialog, List, NavBar, SpinLoading, Toast} from 'antd-mobile';
import {Dialog, Grid, List, NavBar, SpinLoading, Toast} from 'antd-mobile';
import { UnorderedListOutline, SetOutline, UploadOutline, LoopOutline } from 'antd-mobile-icons'; import { UnorderedListOutline, SetOutline, UploadOutline, LoopOutline } from 'antd-mobile-icons';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import { useAppDispatch, useAppSelector } from '../utils/hooks'; import { useAppDispatch, useAppSelector } from '../utils/hooks';
import { syncBaseData } from '../store/features/baseData'; import { syncBaseData } from '../store/features/baseData';
import {useEffect} from "react";
import Bridge from "../utils/bridge";
import {updateVersion} from "../store/features/measureSlice";
export default function Mine2() { export default function Mine2() {
const measureState = useAppSelector((state) => state.measure);
const navigate = useNavigate(); const navigate = useNavigate();
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const baseState = useAppSelector((state) => state.baseData); const baseState = useAppSelector((state) => state.baseData);
useEffect(() => {
Bridge.getVersion().then((res) => {
if (res.success) {
dispatch(updateVersion(res.data))
}
});
}, [dispatch]);
const onSync = async () => { const onSync = async () => {
const result = await Dialog.confirm({ const result = await Dialog.confirm({
content: '是否确认同步', content: '是否确认同步',
@ -61,7 +73,58 @@ export default function Mine2() {
</div> </div>
</List.Item> </List.Item>
</List> </List>
<div style={{
position: 'absolute',
bottom: '80px',
left: '50%',
transform: 'translateX(-50%)',
color: '#999',
// width: '300px', // 可选,设定宽度便于对齐
}}>
{measureState.version.appVersion && (
<Grid columns={2} gap={2}>
<Grid.Item>
<span style={{ display: 'inline-block',textAlign: 'right', minWidth: '100px' }}></span>
</Grid.Item>
<Grid.Item>
<span>{measureState.version.appVersion}</span>
</Grid.Item>
</Grid>
)}
{measureState.version.sn && (
<Grid columns={2} gap={2}>
<Grid.Item>
<span style={{ display: 'inline-block', textAlign: 'right', minWidth: '100px' }}>SN码</span>
</Grid.Item>
<Grid.Item>
<span>{measureState.version.sn}</span>
</Grid.Item>
</Grid>
)}
{measureState.version.hfwVersion && (
<Grid columns={2} gap={2}>
<Grid.Item>
<span style={{ display: 'inline-block',textAlign: 'right', minWidth: '100px' }}></span>
</Grid.Item>
<Grid.Item>
<span>{measureState.version.hfwVersion}</span>
</Grid.Item>
</Grid>
)}
{measureState.version.sfwVersion && (
<Grid columns={2} gap={2}>
<Grid.Item>
<span style={{ display: 'inline-block', textAlign: 'right', minWidth: '100px' }}></span>
</Grid.Item>
<Grid.Item>
<span>{measureState.version.sfwVersion}</span>
</Grid.Item>
</Grid>
)}
</div>
</div> </div>
</div> </div>
); );
} }

50
src/store/features/measureSlice.ts

@ -9,6 +9,14 @@ export interface MeasureState {
measureData:[], measureData:[],
measureStatus: string, measureStatus: string,
measureFinishData: [] measureFinishData: []
measurementCalibrationData:[]
showCalibration: boolean
version: {
appVersion?: string,
hfwVersion?: string
sfwVersion?: string
sn?: string
}
} }
const initialState: MeasureState = { const initialState: MeasureState = {
taskState: undefined, taskState: undefined,
@ -18,6 +26,15 @@ const initialState: MeasureState = {
measureData: [], measureData: [],
measureStatus: '', measureStatus: '',
measureFinishData: [], measureFinishData: [],
measurementCalibrationData:[],
showCalibration: false,
version: {
appVersion: '',
hfwVersion: '',
sfwVersion: '',
sn: '',
}
}; };
function isLeftFinished(state: MeasureState) { function isLeftFinished(state: MeasureState) {
@ -36,6 +53,7 @@ export const measureSlice = createSlice({
reducers: { reducers: {
clearData: (state) => { clearData: (state) => {
state.measureFinishData = []; state.measureFinishData = [];
state.measurementCalibrationData = [];
state.leftPoints = []; state.leftPoints = [];
state.rightPoints = []; state.rightPoints = [];
state.measureData = []; state.measureData = [];
@ -96,8 +114,38 @@ export const measureSlice = createSlice({
// } // }
state.measureFinishData = payload state.measureFinishData = payload
}, },
updateMeasurementCalibrationData: (state, { payload })=>{
console.log('payload--', payload)
// if(payload.outline1 && payload.outline1.length){
// state.rightPoints = payload.outline1
// }
// if(payload.outline2 && payload.outline2.length){
// state.leftPoints = payload.outline2
// }
state.measurementCalibrationData = payload
},
updateShowCalibration: (state, { payload })=>{
console.log('payload--', payload)
// if(payload.outline1 && payload.outline1.length){
// state.rightPoints = payload.outline1
// }
// if(payload.outline2 && payload.outline2.length){
// state.leftPoints = payload.outline2
// }
state.showCalibration = payload
},
updateVersion: (state, { payload })=>{
console.log('payload--', payload)
// if(payload.outline1 && payload.outline1.length){
// state.rightPoints = payload.outline1
// }
// if(payload.outline2 && payload.outline2.length){
// state.leftPoints = payload.outline2
// }
state.version = payload
},
}, },
}); });
export const { updateTaskState, addNewPoint, resetState, updateMeasureData,updateMeasureStatus, updateMeasureFinish, clearData } = measureSlice.actions;
export const { updateTaskState, addNewPoint, resetState, updateMeasureData,updateMeasureStatus,updateVersion, updateMeasureFinish,updateShowCalibration, updateMeasurementCalibrationData, clearData } = measureSlice.actions;
export default measureSlice.reducer; export default measureSlice.reducer;

8
src/utils/bridge.ts

@ -373,6 +373,14 @@ export default class Bridge {
params: {}, params: {},
}); });
} }
static getVersion() {
return httpRequest<BridgeBaseResult<{ needSync: boolean }>>({
url: '/api/system/info',
method: 'POST',
params: {},
});
}
static syncBaseData() { static syncBaseData() {
return httpRequest<BridgeBaseResult>({ return httpRequest<BridgeBaseResult>({
url: '/api/basic/ktj/update', url: '/api/basic/ktj/update',

Loading…
Cancel
Save