Browse Source

fix:测试bug

master
guoapeng 2 months ago
parent
commit
c8ab6d8264
  1. 6
      src/App.tsx
  2. 2
      src/components/konva/MeasurementCanvas.tsx
  3. 42
      src/pages/Measure.tsx
  4. 8
      src/pages/MeasureSave.tsx
  5. 38
      src/pages/Setting.tsx
  6. 1
      src/services/apiTypes.ts
  7. 7
      src/services/mobileWsType.ts
  8. 3
      src/store/features/contextSlice.ts
  9. 7
      src/utils/bridge.ts

6
src/App.tsx

@ -48,6 +48,12 @@ function App() {
dispatch(updateSyncBaseProgress(datagram.data)); dispatch(updateSyncBaseProgress(datagram.data));
}else if (datagram.type === 'measure-finished') { }else if (datagram.type === 'measure-finished') {
dispatch(updateMeasureFinish(datagram.data)); dispatch(updateMeasureFinish(datagram.data));
}else if (datagram.type === 'msg-toast') {
// @ts-ignore
Toast.show({
content: datagram.data,
position: 'bottom',
})
} }
}); });
return () => subscription.unsubscribe(); return () => subscription.unsubscribe();

2
src/components/konva/MeasurementCanvas.tsx

@ -490,8 +490,6 @@ const MeasurementCanvas = forwardRef<MeasurementCanvasRef, MeasurementCanvasProp
} }
return null; return null;
}); });
console.log( 'bk', bk)
console.log('benchmarkData', benchmarkData)
return bk; return bk;
}; };

42
src/pages/Measure.tsx

@ -11,7 +11,12 @@ import { useEffect, useRef, useState } from 'react';
import RailTypeBtn from '../components/RailTypeBtn'; import RailTypeBtn from '../components/RailTypeBtn';
import { Cascader, Dialog, Mask, Picker, SpinLoading, Toast } from 'antd-mobile'; import { Cascader, Dialog, Mask, Picker, SpinLoading, Toast } from 'antd-mobile';
import { useAppDispatch, useAppSelector } from '../utils/hooks'; import { useAppDispatch, useAppSelector } from '../utils/hooks';
import { updateMeasureData, updateTaskState, updateMeasureStatus } from '../store/features/measureSlice';
import {
updateMeasureData,
updateTaskState,
updateMeasureStatus,
updateMeasureFinish
} 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';
import { updateOrg } from '../store/features/contextSlice'; import { updateOrg } from '../store/features/contextSlice';
@ -97,7 +102,7 @@ export default function Measure() {
}, 100); }, 100);
canvasRef.current?.setMeasurementCalibrationData(measureState.measureFinishData); canvasRef.current?.setMeasurementCalibrationData(measureState.measureFinishData);
setShowMeasureFinish(true) setShowMeasureFinish(true)
setCaloading(false)
setLoading(false)
} }
@ -128,9 +133,9 @@ export default function Measure() {
// setShowStandard(true) // setShowStandard(true)
// }, 100); // }, 100);
// canvasRef.current?.setMeasurementCalibrationData(measureState.measureFinishData); // canvasRef.current?.setMeasurementCalibrationData(measureState.measureFinishData);
// // setshowCalibration(true);
// // setShowCalibration(true);
// setShowMeasureFinish(true) // setShowMeasureFinish(true)
// setCaloading(false)
// setLoading(false)
// //
// //
// } // }
@ -138,9 +143,16 @@ export default function Measure() {
useEffect(() => { useEffect(() => {
if(measureState.measureStatus === 'FINISH_RECORD'){ if(measureState.measureStatus === 'FINISH_RECORD'){
setCaloading(true)
setLoading(true)
Bridge.record().then((res) => {
if (res.success) {
dispatch(updateMeasureFinish(res.data));
} else {
Toast.show(res.message);
}
})
} }
}, [measureState.measureStatus])
}, [dispatch, measureState.measureStatus])
useEffect(() => { useEffect(() => {
@ -163,22 +175,22 @@ export default function Measure() {
navigate('/measure/save'); navigate('/measure/save');
}; };
const [caloading, setCaloading] = useState(false);
const [showCalibration, setshowCalibration] = 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 = () => {
setCaloading(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);
canvasRef.current?.setMeasurementCalibrationData(res.data); canvasRef.current?.setMeasurementCalibrationData(res.data);
} else { } else {
} }
setCaloading(false);
setLoading(false);
}) })
.catch((e) => { .catch((e) => {
setCaloading(false);
setLoading(false);
Toast.show({ Toast.show({
content: <span></span>, content: <span></span>,
position: 'top', position: 'top',
@ -203,7 +215,7 @@ export default function Measure() {
const onStartClick = () => { const onStartClick = () => {
setMeasurementCanvasKey(measurementCanvasKey+1) setMeasurementCanvasKey(measurementCanvasKey+1)
setshowCalibration(false);
setShowCalibration(false);
setShowMeasureFinish(false) setShowMeasureFinish(false)
dispatch(updateMeasureData([])); dispatch(updateMeasureData([]));
if (!contextState.device.connected) { if (!contextState.device.connected) {
@ -489,8 +501,8 @@ export default function Measure() {
<main className="home-page-content overflow-x-hidden overflow-y-auto"> <main className="home-page-content overflow-x-hidden overflow-y-auto">
<div className="relative h-0 p-0 pb-[70%]"> <div className="relative h-0 p-0 pb-[70%]">
{/**正在校准时的loading */} {/**正在校准时的loading */}
{/*caloading*/}
{caloading && (
{/*loading*/}
{loading && (
<Mask opacity='thick' className="h-[100vh] flex justify-center items-center"> <Mask opacity='thick' className="h-[100vh] flex justify-center items-center">
<div style={{ margin: '45%', display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center' }}> <div style={{ margin: '45%', display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center' }}>
<SpinLoading color="#5c92b4" /> <SpinLoading color="#5c92b4" />

8
src/pages/MeasureSave.tsx

@ -33,11 +33,13 @@ export default function MeasureSave() {
const loadData = useCallback(() => { const loadData = useCallback(() => {
Bridge.getRecordList({ pageNum: 1, size: 1 }).then((res) => { Bridge.getRecordList({ pageNum: 1, size: 1 }).then((res) => {
const [tlj, gwd, xm] = orgTextArr;
if (res.success && res.data.list.length) { if (res.success && res.data.list.length) {
const data = (sessionStorage.getItem('measureData') ? JSON.parse(sessionStorage.getItem('measureData')!) : false) || res.data.list[0]?.records?.[0]
console.log('res', res)
const data = res.data.list[0]?.records?.[0]
console.log(data) console.log(data)
let num = data?.todayNumber || 0 let num = data?.todayNumber || 0
setName(`${data?.tljCode}-${data.gwdCode}-${data.xmCode}-${getDate()}${(Number(num) + 1).toString().padStart(4, '0') }`)
setName(`${tlj}-${gwd}-${xm}-${getDate()}${(Number(num) + 1).toString().padStart(4, '0') }`)
setBatch(data?.batch) setBatch(data?.batch)
setMile(data?.mileage?.split('+')?.[0]) setMile(data?.mileage?.split('+')?.[0])
setMeter(data?.mileage?.split('+')?.[1]) setMeter(data?.mileage?.split('+')?.[1])
@ -167,7 +169,7 @@ export default function MeasureSave() {
if(measureData && measureData.length){ if(measureData && measureData.length){
dto.alignPoints = measureData dto.alignPoints = measureData
} }
sessionStorage.setItem('measureData', JSON.stringify(measureData))
sessionStorage.setItem('measureData', JSON.stringify(dto))
Bridge.saveMeasure(dto).then((res) => { Bridge.saveMeasure(dto).then((res) => {
if (res.success) { if (res.success) {
Toast.show('保存成功'); Toast.show('保存成功');

38
src/pages/Setting.tsx

@ -1,4 +1,4 @@
import {Mask, NavBar, Picker, SpinLoading, Switch, Toast} from 'antd-mobile';
import {Mask, NavBar, Picker, Selector, SpinLoading, Switch, Toast} from 'antd-mobile';
import icon_arr_r from '../assets/icon_arr_s_r.svg'; import icon_arr_r from '../assets/icon_arr_s_r.svg';
import { useEffect, useRef, useState } from 'react'; import { useEffect, useRef, useState } from 'react';
import { useNavigate } from 'react-router'; import { useNavigate } from 'react-router';
@ -12,14 +12,20 @@ export default function Setting() {
const context = useAppSelector((state) => state.context); const context = useAppSelector((state) => state.context);
const addrInput = useRef<HTMLInputElement>(null); const addrInput = useRef<HTMLInputElement>(null);
const suffixInput = useRef<HTMLInputElement>(null);
const [standbyPickerVisible, setStandbyPickerVisible] = useState(false); const [standbyPickerVisible, setStandbyPickerVisible] = useState(false);
const [checked, setChecked] = useState(false) const [checked, setChecked] = useState(false)
const [selectStandby, setSelectStandby] = useState<number[]>([context.setting.standbyMinutes]); const [selectStandby, setSelectStandby] = useState<number[]>([context.setting.standbyMinutes]);
const [downloadFileType, serDownloadFileType] = useState<string>('txt');
useEffect(() => { useEffect(() => {
if (addrInput.current && context.setting.server) { if (addrInput.current && context.setting.server) {
addrInput.current!.value = context.setting.server; addrInput.current!.value = context.setting.server;
} }
if (context.setting.downloadFileType) {
serDownloadFileType(context.setting.downloadFileType)
}
setSelectStandby([context.setting.standbyMinutes]); setSelectStandby([context.setting.standbyMinutes]);
setChecked(context.setting.todayNumberFlag) setChecked(context.setting.todayNumberFlag)
}, [context.setting]); }, [context.setting]);
@ -40,13 +46,17 @@ export default function Setting() {
const onSaveClick = async () => { const onSaveClick = async () => {
const server = addrInput.current!.value; const server = addrInput.current!.value;
try { try {
const res = await dispatch(saveConfig({ server, standbyMinutes: selectStandby[0], todayNumberFlag: checked })).unwrap();
const res = await dispatch(saveConfig({ server, standbyMinutes: selectStandby[0], todayNumberFlag: checked, downloadFileType })).unwrap();
if (res.success) { if (res.success) {
Toast.show('保存成功'); Toast.show('保存成功');
} }
} catch (err) {} } catch (err) {}
}; };
const setType = (arr: string[]) => {
serDownloadFileType(arr[0])
}
const back = () => navigate(-1); const back = () => navigate(-1);
return ( return (
<div> <div>
@ -86,6 +96,30 @@ export default function Setting() {
</div> </div>
</div> </div>
</section> </section>
<section>
<div className="h-[42px] px-5">
<h1 className="h-[42px] leading-[42px] text-base text-text font-medium">
</h1>
</div>
<div className="bg-white px-5 text-sm text-text">
<div className="h-12 flex items-center justify-between">
<span></span>
<Selector
options={[{label: 'txt', value: 'txt'}, {label: 'ban', value: 'ban'}]}
defaultValue={['ban']}
value={[downloadFileType]}
onChange={(arr, extend) => setType(arr) }
/>
{/*<input*/}
{/* ref={suffixInput}*/}
{/* type="text"*/}
{/* placeholder="请填写"*/}
{/* className="border-0 outline-none self-stretch text-right flex-1 ml-4"*/}
{/*/>*/}
</div>
</div>
</section>
{context.device.connected && ( {context.device.connected && (
<section> <section>

1
src/services/apiTypes.ts

@ -15,6 +15,7 @@ export type SettingDTO = {
server: string; server: string;
todayNumberFlag: boolean; todayNumberFlag: boolean;
standbyMinutes: number; // 待机分钟数 standbyMinutes: number; // 待机分钟数
downloadFileType: string;
}; };
export type KTJOrg = { export type KTJOrg = {

7
src/services/mobileWsType.ts

@ -78,6 +78,10 @@ export type MeasurePointFinish = {
outline2: Points[]; outline2: Points[];
}; };
}; };
export type MsgToast = {
type: 'msg-toast';
data: string;
};
export type MobileDatagram = export type MobileDatagram =
| PeripheralStatus | PeripheralStatus
@ -87,4 +91,5 @@ export type MobileDatagram =
| SyncProgress | SyncProgress
| SyncItemFinish | SyncItemFinish
| SyncBaseStatus | SyncBaseStatus
| MeasurePointFinish;
| MeasurePointFinish
| MsgToast;

3
src/store/features/contextSlice.ts

@ -60,7 +60,8 @@ const initialState: ContextState = {
setting: { setting: {
server: '', server: '',
standbyMinutes: 20, standbyMinutes: 20,
todayNumberFlag: true
todayNumberFlag: true,
downloadFileType: 'ban'
}, },
settingReqStatus: 'idle', settingReqStatus: 'idle',
error: undefined, error: undefined,

7
src/utils/bridge.ts

@ -388,4 +388,11 @@ export default class Bridge {
params, params,
}); });
} }
static record(){
return httpRequest<BridgeBaseResult>({
url: 'api/measure/record',
method: 'POST',
});
}
} }
Loading…
Cancel
Save