From c8ab6d826495375783e70a446ece7381db632835 Mon Sep 17 00:00:00 2001 From: guoapeng Date: Wed, 18 Jun 2025 16:52:19 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E6=B5=8B=E8=AF=95bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.tsx | 6 +++++ src/components/konva/MeasurementCanvas.tsx | 2 -- src/pages/Measure.tsx | 42 +++++++++++++++++++----------- src/pages/MeasureSave.tsx | 8 +++--- src/pages/Setting.tsx | 38 +++++++++++++++++++++++++-- src/services/apiTypes.ts | 1 + src/services/mobileWsType.ts | 7 ++++- src/store/features/contextSlice.ts | 3 ++- src/utils/bridge.ts | 7 +++++ 9 files changed, 90 insertions(+), 24 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index bd5288d..ed659c9 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -48,6 +48,12 @@ function App() { dispatch(updateSyncBaseProgress(datagram.data)); }else if (datagram.type === 'measure-finished') { dispatch(updateMeasureFinish(datagram.data)); + }else if (datagram.type === 'msg-toast') { + // @ts-ignore + Toast.show({ + content: datagram.data, + position: 'bottom', + }) } }); return () => subscription.unsubscribe(); diff --git a/src/components/konva/MeasurementCanvas.tsx b/src/components/konva/MeasurementCanvas.tsx index 64fd553..32a4a05 100644 --- a/src/components/konva/MeasurementCanvas.tsx +++ b/src/components/konva/MeasurementCanvas.tsx @@ -490,8 +490,6 @@ const MeasurementCanvas = forwardRef { 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(() => { @@ -163,22 +175,22 @@ export default function Measure() { 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 onCalibrationBtnClick = () => { - setCaloading(true); + setLoading(true); Bridge.alignPoints({ railSize: railSize || 'GX-60' }) .then((res) => { if (res.success) { - setshowCalibration(true); + setShowCalibration(true); canvasRef.current?.setMeasurementCalibrationData(res.data); } else { } - setCaloading(false); + setLoading(false); }) .catch((e) => { - setCaloading(false); + setLoading(false); Toast.show({ content: 服务器异常, position: 'top', @@ -203,7 +215,7 @@ export default function Measure() { const onStartClick = () => { setMeasurementCanvasKey(measurementCanvasKey+1) - setshowCalibration(false); + setShowCalibration(false); setShowMeasureFinish(false) dispatch(updateMeasureData([])); if (!contextState.device.connected) { @@ -489,8 +501,8 @@ export default function Measure() {
{/**正在校准时的loading */} - {/*caloading*/} - {caloading && ( + {/*loading*/} + {loading && (
diff --git a/src/pages/MeasureSave.tsx b/src/pages/MeasureSave.tsx index be8558f..615d7c9 100644 --- a/src/pages/MeasureSave.tsx +++ b/src/pages/MeasureSave.tsx @@ -33,11 +33,13 @@ export default function MeasureSave() { const loadData = useCallback(() => { Bridge.getRecordList({ pageNum: 1, size: 1 }).then((res) => { + const [tlj, gwd, xm] = orgTextArr; 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) 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) setMile(data?.mileage?.split('+')?.[0]) setMeter(data?.mileage?.split('+')?.[1]) @@ -167,7 +169,7 @@ export default function MeasureSave() { if(measureData && measureData.length){ dto.alignPoints = measureData } - sessionStorage.setItem('measureData', JSON.stringify(measureData)) + sessionStorage.setItem('measureData', JSON.stringify(dto)) Bridge.saveMeasure(dto).then((res) => { if (res.success) { Toast.show('保存成功'); diff --git a/src/pages/Setting.tsx b/src/pages/Setting.tsx index 09cf9fe..7d33f4b 100644 --- a/src/pages/Setting.tsx +++ b/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 { useEffect, useRef, useState } from 'react'; import { useNavigate } from 'react-router'; @@ -12,14 +12,20 @@ export default function Setting() { const context = useAppSelector((state) => state.context); const addrInput = useRef(null); + const suffixInput = useRef(null); const [standbyPickerVisible, setStandbyPickerVisible] = useState(false); const [checked, setChecked] = useState(false) const [selectStandby, setSelectStandby] = useState([context.setting.standbyMinutes]); + const [downloadFileType, serDownloadFileType] = useState('txt'); + useEffect(() => { if (addrInput.current && context.setting.server) { addrInput.current!.value = context.setting.server; } + if (context.setting.downloadFileType) { + serDownloadFileType(context.setting.downloadFileType) + } setSelectStandby([context.setting.standbyMinutes]); setChecked(context.setting.todayNumberFlag) }, [context.setting]); @@ -40,13 +46,17 @@ export default function Setting() { const onSaveClick = async () => { const server = addrInput.current!.value; 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) { Toast.show('保存成功'); } } catch (err) {} }; + const setType = (arr: string[]) => { + serDownloadFileType(arr[0]) + } + const back = () => navigate(-1); return (
@@ -86,6 +96,30 @@ export default function Setting() {
+
+
+

+ 导出设置 +

+
+
+
+ 文件名后缀 + setType(arr) } + /> + {/**/} +
+
+
{context.device.connected && (
diff --git a/src/services/apiTypes.ts b/src/services/apiTypes.ts index a51f2bb..7840a5b 100644 --- a/src/services/apiTypes.ts +++ b/src/services/apiTypes.ts @@ -15,6 +15,7 @@ export type SettingDTO = { server: string; todayNumberFlag: boolean; standbyMinutes: number; // 待机分钟数 + downloadFileType: string; }; export type KTJOrg = { diff --git a/src/services/mobileWsType.ts b/src/services/mobileWsType.ts index aa90ec7..47da8c6 100644 --- a/src/services/mobileWsType.ts +++ b/src/services/mobileWsType.ts @@ -78,6 +78,10 @@ export type MeasurePointFinish = { outline2: Points[]; }; }; +export type MsgToast = { + type: 'msg-toast'; + data: string; +}; export type MobileDatagram = | PeripheralStatus @@ -87,4 +91,5 @@ export type MobileDatagram = | SyncProgress | SyncItemFinish | SyncBaseStatus - | MeasurePointFinish; + | MeasurePointFinish +| MsgToast; diff --git a/src/store/features/contextSlice.ts b/src/store/features/contextSlice.ts index af84ef7..94ee572 100644 --- a/src/store/features/contextSlice.ts +++ b/src/store/features/contextSlice.ts @@ -60,7 +60,8 @@ const initialState: ContextState = { setting: { server: '', standbyMinutes: 20, - todayNumberFlag: true + todayNumberFlag: true, + downloadFileType: 'ban' }, settingReqStatus: 'idle', error: undefined, diff --git a/src/utils/bridge.ts b/src/utils/bridge.ts index 9fc7e68..bf6dc63 100644 --- a/src/utils/bridge.ts +++ b/src/utils/bridge.ts @@ -388,4 +388,11 @@ export default class Bridge { params, }); } + + static record(){ + return httpRequest({ + url: 'api/measure/record', + method: 'POST', + }); + } }