Browse Source

fix: bug修复

master
guoapeng 1 month 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 { useAppDispatch, useAppSelector } from './utils/hooks';
import { addNewPoint, updateTaskState, updateMeasureFinish } from './store/features/measureSlice';
import { addNewPoint, updateTaskState, updateVersion, updateMeasureFinish } from './store/features/measureSlice';
import {
refreshStationList,
updateBleList,
@ -62,6 +62,11 @@ function App() {
// 开启推送
useEffect(() => {
Bridge.getVersion().then((res) => {
if (res.success) {
dispatch(updateVersion(res.data))
}
});
// if (appWebview) {
// registerBridgeFunc();
// } else {

8
src/index.css

@ -4,7 +4,7 @@
:root {
--primaryColor: #3e63cb;
--tabBarHeight: 50px;
--tabBarHeight: 60px;
--navBarHeight: 45px;
}
@ -81,3 +81,9 @@ code {
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
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,
updateTaskState,
updateMeasureStatus,
updateMeasureFinish
updateMeasureFinish,
updateShowCalibration
} from '../store/features/measureSlice';
import Bridge from '../utils/bridge';
import { selectLabeledKtjOrgs, updateRailPoints } from '../store/features/baseData';
@ -40,7 +41,7 @@ export default function Measure() {
const [railId, setRailId] = useState<(number | string | null)[]>([]);
const canvasRef = useRef<MeasurementCanvasRef>(null);
const [railSize, setRailSize] = useState<number | string | null>();
const iconWidth = 35;
const iconWidth = 40;
const [showStandard, setShowStandard] = useState(false);
// 默认选中第一个轨型
@ -101,9 +102,6 @@ export default function Measure() {
}, 100);
canvasRef.current?.setMeasurementCalibrationData(measureState.measureFinishData);
setShowMeasureFinish(true)
}
}, [baseState.railTypes, measureState.measureFinishData, railId]);
@ -186,15 +184,16 @@ export default function Measure() {
};
const [loading, setLoading] = useState(false);
const [showCalibration, setShowCalibration] = useState(false);
const [showMeasureFinish, setShowMeasureFinish] = useState(false);
const onCalibrationBtnClick = () => {
setLoading(true);
Bridge.alignPoints({ railSize: railSize || 'GX-60' })
.then((res) => {
if (res.success) {
setShowCalibration(true);
// setShowCalibration(true);
dispatch(updateShowCalibration(true))
canvasRef.current?.setMeasurementCalibrationData(res.data);
dispatch(updateMeasureFinish(res.data))
} else {
}
setLoading(false);
@ -225,7 +224,8 @@ export default function Measure() {
const onStartClick = () => {
setMeasurementCanvasKey(measurementCanvasKey+1)
setShowCalibration(false);
// setShowCalibration(false);
dispatch(updateShowCalibration(false))
setShowMeasureFinish(false)
dispatch(updateMeasureData([]));
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) => {
console.log('你进行了长按操作!');
if (timerRef.current) {
return
}
timerRef.current = setInterval(() => {
console.log('你进行了长按操作!');
console.log('111!');
onHandleMove(type);
}, 500);
console.log(timerRef.current)
};
const handlePressEnd = () => {
if (timerRef.current) {
clearInterval(timerRef.current);
timerRef.current = null;
}
timerRef.current = null;
};
const onMoveLine = (type: string) => {
@ -432,27 +435,25 @@ export default function Measure() {
const onHandleMove = (type: string) => {
let list = canvasRef.current?.getMeasurementCalibrationData();
console.log(list)
if (list && list.length) {
list.forEach((item) => {
const updatedList = list.map((item) => {
const mutableItem = { ...item }; // 创建副本
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();
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}
scaleInterval={1}
showCoordinates={false}
showCalibration={showCalibration || showMeasureFinish}
showCalibration={measureState.showCalibration || showMeasureFinish}
ref={canvasRef}
key={measurementCanvasKey}
/>
@ -562,7 +567,7 @@ export default function Measure() {
<span className="text-primary underline"></span>
</section>
{/**手动校准区 */}
{showCalibration && (
{(measureState.showCalibration && measureState.measureFinishData.length>0) && (
<section className="h-10 bg-[#e3e8f5] flex justify-between items-center px-4">
<img
width={iconWidth}

4
src/pages/Mine.tsx

@ -7,10 +7,12 @@ import { Measurement } from '../services/apiTypes';
import UnuploadList from '../components/UnuploadList';
import MineSegment from '../components/MineSegment';
import Bridge from '../utils/bridge';
import {useAppSelector} from "../utils/hooks";
const PAGE_SIZE = 10;
export default function Mine() {
const [tabIndex, setTabIndex] = useState(0);
const [uploadedList, setUploadedList] = useState<Measurement[]>([]);
const [unuploadList, setUnuploadList] = useState<Measurement[]>([]);
@ -113,7 +115,9 @@ export default function Mine() {
/>
)}
</main>
</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 { useNavigate } from 'react-router-dom';
import { useAppDispatch, useAppSelector } from '../utils/hooks';
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() {
const measureState = useAppSelector((state) => state.measure);
const navigate = useNavigate();
const dispatch = useAppDispatch();
const baseState = useAppSelector((state) => state.baseData);
useEffect(() => {
Bridge.getVersion().then((res) => {
if (res.success) {
dispatch(updateVersion(res.data))
}
});
}, [dispatch]);
const onSync = async () => {
const result = await Dialog.confirm({
content: '是否确认同步',
@ -61,7 +73,58 @@ export default function Mine2() {
</div>
</List.Item>
</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>
);
}

50
src/store/features/measureSlice.ts

@ -9,6 +9,14 @@ export interface MeasureState {
measureData:[],
measureStatus: string,
measureFinishData: []
measurementCalibrationData:[]
showCalibration: boolean
version: {
appVersion?: string,
hfwVersion?: string
sfwVersion?: string
sn?: string
}
}
const initialState: MeasureState = {
taskState: undefined,
@ -18,6 +26,15 @@ const initialState: MeasureState = {
measureData: [],
measureStatus: '',
measureFinishData: [],
measurementCalibrationData:[],
showCalibration: false,
version: {
appVersion: '',
hfwVersion: '',
sfwVersion: '',
sn: '',
}
};
function isLeftFinished(state: MeasureState) {
@ -36,6 +53,7 @@ export const measureSlice = createSlice({
reducers: {
clearData: (state) => {
state.measureFinishData = [];
state.measurementCalibrationData = [];
state.leftPoints = [];
state.rightPoints = [];
state.measureData = [];
@ -96,8 +114,38 @@ export const measureSlice = createSlice({
// }
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;

8
src/utils/bridge.ts

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

Loading…
Cancel
Save