From f16de30ae1880d9016e96a08df58693a315f6f4c Mon Sep 17 00:00:00 2001 From: zhangjiming Date: Fri, 7 Mar 2025 10:20:22 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=99=E8=BF=94=E5=9B=9E=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0success?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mock/recordList.ts | 38 ++++++++++++++++++++++ src/pages/measure/components/MeasureAction.tsx | 2 +- src/pages/measure/components/MeasureDetail.tsx | 6 +++- src/pages/measure/components/graph/ResultLayer.tsx | 4 +-- src/services/httpRequest.ts | 28 +++++++++++++--- src/services/measure/analysis.ts | 19 +++-------- src/services/measure/type.ts | 24 +++++++++++++- src/services/wsTypes.ts | 22 ++++++++++++- 8 files changed, 119 insertions(+), 24 deletions(-) create mode 100644 src/mock/recordList.ts diff --git a/src/mock/recordList.ts b/src/mock/recordList.ts new file mode 100644 index 0000000..cb57224 --- /dev/null +++ b/src/mock/recordList.ts @@ -0,0 +1,38 @@ +export const detailList = [{ + "id": 2703,//数据主键id + "createTime": "2025-03-03 17:05:34",//数据创建时间 + "updateTime": "2025-03-03 17:05:34",//数据修改时间 + "uuid": "650fc0a3-8bb2-4223-973e-72846fd31b82",//数据uuid + "operatorName": "张三",//操作员姓名 + "trackShapeCode": "001",//轨型code + "verificationMethodCode": "aaa",//核校方式code + "name": "京沪铁路",//测量名称 + "lineName": "河北段",//线路名称 + "location": "100米处",//位置 + "direction": "左"///方向 +},{ + "id": 2704,//数据主键id + "createTime": "2025-03-03 17:05:34",//数据创建时间 + "updateTime": "2025-03-03 17:05:34",//数据修改时间 + "uuid": "650fc0a3-8bb2-4223-973e-72846fd31b83",//数据uuid + "operatorName": "李四",//操作员姓名 + "trackShapeCode": "002",//轨型code + "verificationMethodCode": "bbb",//核校方式code + "name": "京昆铁路",//测量名称 + "lineName": "河北段",//线路名称 + "location": "5100米处",//位置 + "direction": "右"///方向 +}] + +export const bluetoothList = [{ + name:'Kdkow_1', + id:'1', +},{ + name:'llwoa_2', + id:'2', +}] + +export const bluetoothInfo = { + type: 'kxy0812', + power: '78%', +} \ No newline at end of file diff --git a/src/pages/measure/components/MeasureAction.tsx b/src/pages/measure/components/MeasureAction.tsx index 07e6d4d..dc39289 100644 --- a/src/pages/measure/components/MeasureAction.tsx +++ b/src/pages/measure/components/MeasureAction.tsx @@ -29,7 +29,7 @@ export default function MeasureAction() { const onAnalysisBtnClick = () => { // navigate("../detail"); analyzeMeasurement().then(res => { - if (res.status === 0) { + if (res.success) { // mask } else { diff --git a/src/pages/measure/components/MeasureDetail.tsx b/src/pages/measure/components/MeasureDetail.tsx index be2f536..806f14c 100644 --- a/src/pages/measure/components/MeasureDetail.tsx +++ b/src/pages/measure/components/MeasureDetail.tsx @@ -70,7 +70,11 @@ export default function MeasureDetail() { const [tableData, setTableData] = useState([]) const getDetailDataList = () => { getDetailList().then(res => { - setTableData(res.data.list) + if (res.success) { + setTableData(res.data.list) + } else { + setTableData(detailList) + } }).catch(e=>{ //如果接口异常,则使用mock数据 setTableData(detailList) diff --git a/src/pages/measure/components/graph/ResultLayer.tsx b/src/pages/measure/components/graph/ResultLayer.tsx index c5ba795..1e5269a 100644 --- a/src/pages/measure/components/graph/ResultLayer.tsx +++ b/src/pages/measure/components/graph/ResultLayer.tsx @@ -54,7 +54,7 @@ export default function ResultLayer(props: { const ctx = canvas.getContext("2d"); if (!ctx) return; - if (data.data.event === "START_RECORD_SIG") { + if ('event' in data.data && data.data.event === "START_RECORD_SIG") { // setRtPoints([]); pointArr.length = 0; ctx.resetTransform(); @@ -66,7 +66,7 @@ export default function ResultLayer(props: { ctx.translate(xStartPx + xOffset, yStartPx + yOffset); ctx.beginPath(); }, 0); - } else if (data.data.event === "END_RECORD_SIG") { + } else if ('event' in data.data && data.data.event === "END_RECORD_SIG") { // } } else if (data.path === "/measurement-task/profile-record-ctrl-sig") { diff --git a/src/services/httpRequest.ts b/src/services/httpRequest.ts index 919f7be..2853a21 100644 --- a/src/services/httpRequest.ts +++ b/src/services/httpRequest.ts @@ -1,9 +1,23 @@ import { Subject } from "rxjs"; -export interface BaseResponse { - data: T; +export interface FailResponse { status: number; + success: false; + data: { + info: string; + } +} + +export interface SuccessResponse { + data: T; + success: true; + status: 0; } +export type BaseResponse = SuccessResponse | FailResponse +// export interface BaseResponse { +// data: T; +// status: 0; +// } type HttpReqParam = { url: string; @@ -18,6 +32,12 @@ export type ApiException = "invalidToken" | "serverError"; const exceptionSub = new Subject(); export const exceptionOb = exceptionSub.asObservable(); +function extHandle(res: BaseResponse) { + return { + ...res, + success: res.status === 0, + }; +} export default async function httpRequest({ url, method = "GET", params = {}, encode = "json", headers = {} }: HttpReqParam) { const token = sessionStorage.getItem("token"); @@ -28,7 +48,7 @@ export default async function httpRequest({ url, method = "GET", params = {}, const query = urlEncode(params); const _url = query ? url + "?" + query : url; const res = await fetch(_url, { headers }); - return res.json() as T; + return res.json().then(res => extHandle(res) as T); } else { const body = encode === "json" ? JSON.stringify(params) : urlEncode(params); const _headers = @@ -36,7 +56,7 @@ export default async function httpRequest({ url, method = "GET", params = {}, ? { "Content-Type": "application/json; charset=utf-8", ...headers } : { "Content-Type": "application/x-www-form-urlencoded; charset=utf-8", ...headers }; const res = await fetch(url, { method, headers: _headers, body }); - return res.json() as T; + return res.json().then(res => extHandle(res) as T); } } export function urlEncode(params?: Record) { diff --git a/src/services/measure/analysis.ts b/src/services/measure/analysis.ts index 9aef396..9e793c6 100644 --- a/src/services/measure/analysis.ts +++ b/src/services/measure/analysis.ts @@ -1,5 +1,5 @@ import httpRequest, { type BaseResponse } from "../httpRequest"; -import type { DetailTable } from "../../services/measure/type"; +import type { AnalyzeResult, DetailTable, MeasureRecord } from "../../services/measure/type"; export function startMeasurement() { return httpRequest({ @@ -13,8 +13,9 @@ export function stopMeasurement() { method: "POST", }); } + export function analyzeMeasurement() { - return httpRequest({ + return httpRequest>({ url: "/measurement-task/analyze-measurement", method: "POST", }); @@ -27,29 +28,19 @@ export function saveMeasurement() { } export function getDetailList() { - return httpRequest>({ + return httpRequest>({ url: "/measurement-data/list", method: "POST", }); } -export function delDetail(params:{ids:string}) { +export function delDetail(params: { ids: string }) { return httpRequest({ url: `/measurement-data/delete/${params.ids}`, method: "POST", }); } -export type MeasureRecord = { - operatorName: "张三"; //操作员名称 - // trackShapeCode: "code01"; //轨形code - // verificationMethodCode: "code01"; //核校方式code - name: "某某铁路"; ///测量名称 - lineName: "河北段"; //线路名称 - location: "100米处"; //位置 - // direction: "左"; //方向 -}; - export function createMeasure(params: MeasureRecord) { return httpRequest({ url: "/measurement-task/cache-measurement", diff --git a/src/services/measure/type.ts b/src/services/measure/type.ts index e847046..d10467b 100644 --- a/src/services/measure/type.ts +++ b/src/services/measure/type.ts @@ -7,4 +7,26 @@ export type DetailTable = { operatorName:string; name: string; createTime: string; -} \ No newline at end of file +} + +export type MeasureRecord = { + operatorName: "张三"; //操作员名称 + // trackShapeCode: "code01"; //轨形code + // verificationMethodCode: "code01"; //核校方式code + name: "某某铁路"; ///测量名称 + lineName: "河北段"; //线路名称 + location: "100米处"; //位置 + // direction: "左"; //方向 +}; + + +export type AnalyzeAngle = { + x: number; + y: number; + degree: number; + describe: string; +}; + +export type AnalyzeResult = { + angles: AnalyzeAngle[]; +}; diff --git a/src/services/wsTypes.ts b/src/services/wsTypes.ts index bcc94bd..3eee932 100644 --- a/src/services/wsTypes.ts +++ b/src/services/wsTypes.ts @@ -17,6 +17,12 @@ export type TrackRecordSig = { path: "/measurement-task/profile-record-ctrl-sig"; }; +export const defaultContext: ContextMessage["data"] = { + loginFlag: false, + loginUser: {}, + newMeasureAfterSave: false +}; + export type ContextMessage = { messageType: "DeviceContext"; data: { @@ -34,4 +40,18 @@ export type ContextMessage = { path: "/deviceContext"; }; -export type Datagram = TrackRecordSig | TaskState | ContextMessage; +export type MeasureState = { + messageType: "EVENT"; + data: { + taskStatus: "IDLE" | "MEASURING" | "WAITING_FOR_MEASURING" | "FINISHED"; + measureSideCnt: 0 | 1 | 2; //已测量数量,0,1,2 最多两边(左边和右边) + isMeasuringLeftEnd: boolean; //测量左侧完成 + isMeasuringRightEnd: boolean; //测量右侧完成 + motionlessSigFlag: boolean; //滑轮质心是否静止 + inStartMeasuringPos: boolean; //是否在允许开始测量的位置 + // profileRecordDescription: null; //用户填写的新测量信息 + }; + path: "/measurement-task/get-task-state"; +}; + +export type Datagram = TrackRecordSig | TaskState | ContextMessage | MeasureState;