Browse Source

从附加描述对象中反显

master
zhangjiming 4 months ago
parent
commit
1ec501b38f
  1. 14
      src/components/MeasureItem.tsx
  2. 8
      src/components/MeasurementItem.tsx
  3. 53
      src/pages/MeasureRecord.tsx
  4. 4
      src/pages/MeasureSave.tsx
  5. 18
      src/pages/MeasurementList.tsx
  6. 6
      src/pages/UploadList.tsx
  7. 13
      src/services/apiTypes.ts
  8. 4
      src/utils/bridge.ts

14
src/components/MeasureItem.tsx

@ -5,7 +5,6 @@ import icon_pending from '../assets/icon_upload_0.svg';
import icon_uploading from '../assets/icon_upload_1.svg'; import icon_uploading from '../assets/icon_upload_1.svg';
import icon_uploaded from '../assets/icon_upload_2.svg'; import icon_uploaded from '../assets/icon_upload_2.svg';
import { Measurement } from '../services/apiTypes'; import { Measurement } from '../services/apiTypes';
import { XB_CODES } from '../utils/constant';
export type UpdateState = 'idle' | 'pending' | 'uploading' | 'uploaded'; export type UpdateState = 'idle' | 'pending' | 'uploading' | 'uploaded';
@ -28,7 +27,6 @@ export default function MeasureItem({
return null; return null;
}; };
const direct = XB_CODES.find((dire) => dire.value === item.direction);
return ( return (
<div className="flex mx-2 gap-3"> <div className="flex mx-2 gap-3">
<main className="flex-1"> <main className="flex-1">
@ -37,9 +35,9 @@ export default function MeasureItem({
{stateText()} {stateText()}
</header> </header>
<main className="flex my-2"> <main className="flex my-2">
<p className="flex-1 text-sm ">{`${item.lineName}`}</p>
<p className="flex-1 text-sm ">{`${item.location}`}</p>
<p className="flex-1 text-sm ">{`${direct?.label}方向`}</p>
<p className="flex-1 text-sm ">{item.extraDescObj?.gwdCode}</p>
<p className="flex-1 text-sm ">{item.extraDescObj?.xmCode}</p>
<p className="flex-1 text-sm ">{item.extraDescObj?.xbCode}</p>
</main> </main>
<footer> <footer>
<span className="text-sm text-[#b7b7b7]">{item.createTime}</span> <span className="text-sm text-[#b7b7b7]">{item.createTime}</span>
@ -97,9 +95,9 @@ export function MeasureItemEx(props: {
<h1 className="text-[15px] font-medium ">{props.item.name}</h1> <h1 className="text-[15px] font-medium ">{props.item.name}</h1>
</header> </header>
<main className="flex my-2"> <main className="flex my-2">
<p className="flex-1 text-sm ">{`${props.item.lineName}`}</p>
<p className="flex-1 text-sm ">{`${props.item.location}`}</p>
<p className="flex-1 text-sm ">{`${props.item.direction}方向`}</p>
<p className="flex-1 text-sm ">{props.item.extraDescObj?.gwdCode}</p>
<p className="flex-1 text-sm ">{props.item.extraDescObj?.xmCode}</p>
<p className="flex-1 text-sm ">{props.item.extraDescObj?.xbCode}</p>
</main> </main>
<footer> <footer>
<span className="text-sm text-[#b7b7b7]">{props.item.createTime}</span> <span className="text-sm text-[#b7b7b7]">{props.item.createTime}</span>

8
src/components/MeasurementItem.tsx

@ -2,7 +2,6 @@ import icon_check_s from '../assets/icon_check_s_s.svg';
import icon_check_u from '../assets/icon_check_s_u.svg'; import icon_check_u from '../assets/icon_check_s_u.svg';
import icon_arr from '../assets/icon_arr_p_r.svg'; import icon_arr from '../assets/icon_arr_p_r.svg';
import { Measurement } from '../services/apiTypes'; import { Measurement } from '../services/apiTypes';
import { XB_CODES } from '../utils/constant';
export default function MeasurementItem({ export default function MeasurementItem({
item, item,
@ -17,7 +16,6 @@ export default function MeasurementItem({
onDetail?: () => void; onDetail?: () => void;
onSelected?: () => void; onSelected?: () => void;
}) { }) {
const direct = XB_CODES.find((dire) => dire.value === item.direction);
return ( return (
<div className="flex mx-2 gap-3" onClick={editMode ? onSelected : undefined}> <div className="flex mx-2 gap-3" onClick={editMode ? onSelected : undefined}>
{editMode && ( {editMode && (
@ -31,9 +29,9 @@ export default function MeasurementItem({
{/* <span className="text-sm text-[#b7b7b7]">{item.createAt.replace('T',' ').split(' ')[1]}</span> */} {/* <span className="text-sm text-[#b7b7b7]">{item.createAt.replace('T',' ').split(' ')[1]}</span> */}
</header> </header>
<main className="flex mt-2"> <main className="flex mt-2">
<p className="flex-1 text-sm ">{`${item.lineName}`}</p>
<p className="flex-1 text-sm ">{`${item.location}`}</p>
<p className="flex-1 text-sm ">{`${direct ? direct.label : ''}方向`}</p>
<p className="flex-1 text-sm ">{item.extraDescObj?.gwdCode}</p>
<p className="flex-1 text-sm ">{item.extraDescObj?.xmCode}</p>
<p className="flex-1 text-sm ">{item.extraDescObj?.xbCode}</p>
</main> </main>
</main> </main>
{!editMode && ( {!editMode && (

53
src/pages/MeasureRecord.tsx

@ -8,7 +8,7 @@ import MeasurementCanvas, {
import Bridge from '../utils/bridge'; import Bridge from '../utils/bridge';
import { Measurement } from '../services/apiTypes'; import { Measurement } from '../services/apiTypes';
import { useAppDispatch, useAppSelector } from '../utils/hooks'; import { useAppDispatch, useAppSelector } from '../utils/hooks';
import { XB_CODES } from '../utils/constant';
// import { XB_CODES } from '../utils/constant';
import { updateRailPoints } from '../store/features/baseData'; import { updateRailPoints } from '../store/features/baseData';
export default function MeasureRecord() { export default function MeasureRecord() {
@ -24,7 +24,7 @@ export default function MeasureRecord() {
useEffect(() => { useEffect(() => {
Bridge.getMeasurementDetail({ id: +(params.recordId || '') }).then((res) => { Bridge.getMeasurementDetail({ id: +(params.recordId || '') }).then((res) => {
if (res.success) { if (res.success) {
setMeasure(res.data);
setMeasure({ ...res.data, extraDescObj: JSON.parse(res.data.extraDesc) });
} else { } else {
Toast.show(res.message); Toast.show(res.message);
} }
@ -47,7 +47,7 @@ export default function MeasureRecord() {
useEffect(() => { useEffect(() => {
if (measure) { if (measure) {
const r = baseState.railTypes.find((rail) => rail.code === measure.trackShapeCode);
const r = baseState.railTypes.find((rail) => rail.code === measure.railSize);
if (!r) return; if (!r) return;
if (!!r.points) { if (!!r.points) {
drawRailBaseLine(r.points); drawRailBaseLine(r.points);
@ -66,14 +66,14 @@ export default function MeasureRecord() {
} }
}, [baseState.railTypes, dispatch, measure]); }, [baseState.railTypes, dispatch, measure]);
function railType(code: string) {
const rail = baseState.railTypes.find((rail) => rail.code === code);
return rail;
}
// function railType(code: string) {
// const rail = baseState.railTypes.find((rail) => rail.code === code);
// return rail;
// }
function direction(directCode: string) {
return XB_CODES.find((dire) => dire.value === directCode);
}
// function direction(directCode: string) {
// return XB_CODES.find((dire) => dire.value === directCode);
// }
return ( return (
<div> <div>
@ -111,20 +111,41 @@ export default function MeasureRecord() {
<p className="text-[#818181]"></p> <p className="text-[#818181]"></p>
<span className="text-text">{measure.name}</span> <span className="text-text">{measure.name}</span>
<p className="text-[#818181]"></p>
<span className="text-text">{measure.batch}</span>
<p className="text-[#818181]"></p>
<span className="text-text">{measure.extraDescObj?.railSize}</span>
<p className="text-[#818181]"></p>
<span className="text-text">{measure.extraDescObj?.dataSource}</span>
<p className="text-[#818181]">线</p>
<span className="text-text">{measure.extraDescObj?.lineClassify}</span>
<p className="text-[#818181]"></p> <p className="text-[#818181]"></p>
<span className="text-text">{railType(measure.trackShapeCode)?.name}</span>
<span className="text-text">{measure.extraDescObj?.railSize}</span>
{/* <p className="text-[#818181]"></p>
<span className="text-text"></span> */}
<p className="text-[#818181]"></p>
<span className="text-text">{measure.extraDescObj?.tljCode}</span>
<p className="text-[#818181]"></p> <p className="text-[#818181]"></p>
<span className="text-text">{measure.location}</span>
<span className="text-text">{measure.extraDescObj?.gwdCode}</span>
<p className="text-[#818181]">线</p> <p className="text-[#818181]">线</p>
<span className="text-text">{measure.lineName}</span>
<span className="text-text">{measure.extraDescObj?.xmCode}</span>
<p className="text-[#818181]"></p>
<span className="text-text">{measure.extraDescObj?.stationCode}</span>
<p className="text-[#818181]"></p> <p className="text-[#818181]"></p>
<span className="text-text">{direction(measure.direction)?.label}</span>
<span className="text-text">{measure.extraDescObj?.xbCode}</span>
<p className="text-[#818181]"></p>
<span className="text-text">{measure.extraDescObj?.unitType}</span>
<p className="text-[#818181]"></p>
<span className="text-text">{`${measure.extraDescObj?.mile}公里+${measure.extraDescObj?.meter}`}</span>
</div> </div>
)} )}
</section> </section>

4
src/pages/MeasureSave.tsx

@ -4,7 +4,7 @@ import icon_arr_r from '../assets/icon_arr_s_r.svg';
import { ChangeEvent, useState } from 'react'; import { ChangeEvent, useState } from 'react';
import { useAppDispatch, useAppSelector } from '../utils/hooks'; import { useAppDispatch, useAppSelector } from '../utils/hooks';
import { DATA_SOURCE, LINE_CLASSIFY, UNIT_TYPES, XB_CODES } from '../utils/constant'; import { DATA_SOURCE, LINE_CLASSIFY, UNIT_TYPES, XB_CODES } from '../utils/constant';
import { ExtraDesc, SaveMeasureDTO } from '../services/apiTypes';
import { ExtraDesc, MeasurementDTO } from '../services/apiTypes';
import Bridge from '../utils/bridge'; import Bridge from '../utils/bridge';
import { resetState } from '../store/features/measureSlice'; import { resetState } from '../store/features/measureSlice';
import { selectOrgTextArr } from '../store'; import { selectOrgTextArr } from '../store';
@ -71,7 +71,7 @@ export default function MeasureSave() {
mile, mile,
meter, meter,
}; };
const dto: SaveMeasureDTO = {
const dto: MeasurementDTO = {
operator: 'klj_test', operator: 'klj_test',
dataType: 'MINIPROF', dataType: 'MINIPROF',
name, name,

18
src/pages/MeasurementList.tsx

@ -20,7 +20,13 @@ export default function MeasurementList() {
const loadData = useCallback(() => { const loadData = useCallback(() => {
Bridge.getRecordList({ pageNum: 1, size: PAGE_SIZE }).then((res) => { Bridge.getRecordList({ pageNum: 1, size: PAGE_SIZE }).then((res) => {
if (res.success) { if (res.success) {
setDataList(res.data.list);
const nList = res.data.list.map((g) => {
return {
date: g.date,
records: g.records.map((r) => ({ ...r, extraDescObj: JSON.parse(r.extraDesc) })),
};
});
setDataList(nList);
setNoMore(res.data.list.length < PAGE_SIZE); setNoMore(res.data.list.length < PAGE_SIZE);
} else { } else {
Toast.show(res.message); Toast.show(res.message);
@ -32,7 +38,13 @@ export default function MeasurementList() {
const pageNum = Math.floor(dataList.length / PAGE_SIZE); const pageNum = Math.floor(dataList.length / PAGE_SIZE);
const res = await Bridge.getRecordList({ pageNum: pageNum + 1, size: PAGE_SIZE }); const res = await Bridge.getRecordList({ pageNum: pageNum + 1, size: PAGE_SIZE });
if (res.success) { if (res.success) {
setDataList((list) => list.concat(res.data.list));
const nList = res.data.list.map((g) => {
return {
date: g.date,
records: g.records.map((r) => ({ ...r, extraDescObj: JSON.parse(r.extraDesc) })),
};
});
setDataList((list) => list.concat(nList));
setNoMore(res.data.list.length < PAGE_SIZE); setNoMore(res.data.list.length < PAGE_SIZE);
} else { } else {
Toast.show(res.message); Toast.show(res.message);
@ -82,7 +94,7 @@ export default function MeasurementList() {
const right = ( const right = (
<div className="flex justify-end gap-x-2" style={{ fontSize: 24 }}> <div className="flex justify-end gap-x-2" style={{ fontSize: 24 }}>
<SearchOutline onClick={() => navigate('/measure/search')} />
{/* <SearchOutline onClick={() => navigate('/measure/search')} /> */}
<MoreOutline onClick={() => setEditMode(!editMode)} /> <MoreOutline onClick={() => setEditMode(!editMode)} />
</div> </div>
); );

6
src/pages/UploadList.tsx

@ -82,7 +82,8 @@ export default function UploadList() {
dispatch(refreshSyncProgress()); dispatch(refreshSyncProgress());
Bridge.getSyncTaskList({ pageNum: 1, size: PAGE_SIZE }).then((res) => { Bridge.getSyncTaskList({ pageNum: 1, size: PAGE_SIZE }).then((res) => {
if (res.success) { if (res.success) {
setList(res.data.list);
const nList = res.data.list.map((r) => ({ ...r, extraDescObj: JSON.parse(r.extraDesc) }));
setList(nList);
setNoMore(res.data.list.length < PAGE_SIZE); setNoMore(res.data.list.length < PAGE_SIZE);
} else { } else {
Toast.show(res.message); Toast.show(res.message);
@ -94,7 +95,8 @@ export default function UploadList() {
const pageNum = Math.floor(list.length / PAGE_SIZE); const pageNum = Math.floor(list.length / PAGE_SIZE);
const res = await Bridge.getSyncTaskList({ pageNum: pageNum + 1, size: PAGE_SIZE }); const res = await Bridge.getSyncTaskList({ pageNum: pageNum + 1, size: PAGE_SIZE });
if (res.success) { if (res.success) {
setList(list.concat(res.data.list));
const nList = res.data.list.map((r) => ({ ...r, extraDescObj: JSON.parse(r.extraDesc) }));
setList(list.concat(nList));
setNoMore(res.data.list.length < PAGE_SIZE); setNoMore(res.data.list.length < PAGE_SIZE);
} else { } else {
Toast.show(res.message); Toast.show(res.message);

13
src/services/apiTypes.ts

@ -1,19 +1,12 @@
export type ReqStatus = 'idle' | 'loading' | 'succeeded' | 'failed'; export type ReqStatus = 'idle' | 'loading' | 'succeeded' | 'failed';
export type Measurement = {
export type Measurement = MeasurementDTO & {
id: number; id: number;
name: string;
trackShapeCode: string;
operatorName: string;
bureau: string;
lineName: string;
location: string;
direction: string;
createTime: string; // Date; createTime: string; // Date;
leftPoints: string; // json: 坐标数组 leftPoints: string; // json: 坐标数组
rightPoints: string; // json: 坐标数组 rightPoints: string; // json: 坐标数组
upload: boolean;
syncStatus: 'wait' | 'finish' | 'fail'; syncStatus: 'wait' | 'finish' | 'fail';
extraDescObj?: ExtraDesc;
}; };
export type SettingDTO = { export type SettingDTO = {
@ -42,7 +35,7 @@ export type RailType = {
points?: string; points?: string;
}; };
export type SaveMeasureDTO = {
export type MeasurementDTO = {
operator: string; operator: string;
name: string; name: string;
tljCode: string; tljCode: string;

4
src/utils/bridge.ts

@ -4,7 +4,7 @@ import {
KTJOrg, KTJOrg,
Measurement, Measurement,
RailType, RailType,
SaveMeasureDTO,
MeasurementDTO,
SettingDTO, SettingDTO,
StationItem, StationItem,
} from '../services/apiTypes'; } from '../services/apiTypes';
@ -335,7 +335,7 @@ export default class Bridge {
params, params,
}); });
} }
static saveMeasure(params: SaveMeasureDTO) {
static saveMeasure(params: MeasurementDTO) {
console.log('保存测量 入参:', params); console.log('保存测量 入参:', params);
return httpRequest<BridgeBaseResult>({ return httpRequest<BridgeBaseResult>({
url: '/api/measure/save', url: '/api/measure/save',

Loading…
Cancel
Save