import { NavBar, Picker, Toast } from 'antd-mobile'; import { useNavigate } from 'react-router'; import icon_arr_r from '../assets/icon_arr_s_r.svg'; import { ChangeEvent, useState } from 'react'; import { useAppDispatch, useAppSelector } from '../utils/hooks'; import { DATA_SOURCE, LINE_CLASSIFY, UNIT_TYPES, XB_CODES } from '../utils/constant'; import { ExtraDesc, MeasurementDTO } from '../services/apiTypes'; import Bridge from '../utils/bridge'; import { resetState } from '../store/features/measureSlice'; import { selectOrgTextArr } from '../store'; export default function MeasureSave() { const navigate = useNavigate(); const dispatch = useAppDispatch(); const back = () => navigate(-1); const contextState = useAppSelector((state) => state.context); const baseState = useAppSelector((state) => state.baseData); const orgTextArr = useAppSelector(selectOrgTextArr); const [name, setName] = useState(''); const [batch, setBatch] = useState(''); const [mile, setMile] = useState(10); const [meter, setMeter] = useState(10); const [railPickerVisible, setRailPickerVisible] = useState(false); const [dataSourcePickerVisible, setDataSourcePickerVisible] = useState(false); const [lineClassPickerVisible, setLineClassPickerVisible] = useState(false); const [unitTypePickerVisible, setUnitTypePickerVisible] = useState(false); const [stationPickerVisible, setStationPickerVisible] = useState(false); const [directionCode, setDirectionCode] = useState([XB_CODES[0].value]); const [dataSourceCode, setDataSourceCode] = useState([DATA_SOURCE[0].value]); const [lineClassCode, setLineClassCode] = useState([LINE_CLASSIFY[0].value]); const [stationCode, setStationCode] = useState([contextState.stationList[0].value]); const [unitType, setUnitType] = useState([UNIT_TYPES[0].value]); const onInputChange = (evt: ChangeEvent) => { if (evt.target.name === 'name') { setName(evt.target.value); } else if (evt.target.name === 'batch') { setBatch(evt.target.value); } else if (evt.target.name === 'mile') { if (/^\d*$/.test(evt.target.value)) { setMile(+evt.target.value); } } else if (evt.target.name === 'meter') { if (/^\d*$/.test(evt.target.value)) { setMeter(+evt.target.value); } } }; const onSaveBtnClick = () => { if (!name) { return Toast.show('请输入测量名称'); } if (!batch) { return Toast.show('请输入批次号'); } const railType = baseState.railTypes.find((r) => r.id === contextState.currRailTypeId); const [tlj, gwd, xm] = orgTextArr; const desc: ExtraDesc = { railSize: railType!.name, tljCode: tlj, gwdCode: gwd, xmCode: xm, xbCode: XB_CODES.find((x) => x.value === directionCode[0])!.label, stationCode: contextState.stationList.find((s) => s.value === stationCode[0])!.label, lineClassify: LINE_CLASSIFY.find((l) => l.value === lineClassCode[0])!.label, dataSource: DATA_SOURCE.find((d) => d.value === dataSourceCode[0])!.label, unitType: UNIT_TYPES.find((u) => u.value === unitType[0])!.label, mile, meter, }; const dto: MeasurementDTO = { operator: 'klj_test', dataType: 'MINIPROF', name, batch, railSize: railType!.code, tljCode: contextState.currOrgCode, gwdCode: contextState.currGWDCode, xmCode: contextState.currXMCode, xbCode: directionCode[0], stationCode: stationCode[0], lineClassify: lineClassCode[0], dataSource: dataSourceCode[0], unitType: unitType[0], mileage: `${mile}+${meter.toString().padStart(3, '0')}`, radius: '', extraDesc: JSON.stringify(desc), }; Bridge.saveMeasure(dto).then((res) => { if (res.success) { Toast.show('保存成功'); setTimeout(() => { navigate(-1); dispatch(resetState()); }, 300); } else { Toast.show(res.message); } }); }; return ( <>
测量参数
测量名称
批次
里程 公里+
setDataSourcePickerVisible(true)} > 数据来源 {DATA_SOURCE.find((r) => r.value === dataSourceCode[0])?.label || ''} arr
setStationPickerVisible(true)} > 车站 {contextState.stationList.find((r) => r.value === stationCode[0])?.label || ''} arr
setLineClassPickerVisible(true)} > 线路分类 {LINE_CLASSIFY.find((r) => r.value === lineClassCode[0])?.label || ''} arr
setRailPickerVisible(true)} > 行别 {XB_CODES.find((r) => r.value === directionCode[0])?.label || ''} arr
setUnitTypePickerVisible(true)}> 股别 {UNIT_TYPES.find((r) => r.value === unitType[0])?.label || ''} arr
确定
{ setRailPickerVisible(false); }} value={directionCode} onConfirm={(v) => { setDirectionCode(v as string[]); }} /> { setDataSourcePickerVisible(false); }} value={dataSourceCode} onConfirm={(v) => { setDataSourceCode(v as string[]); }} /> { setLineClassPickerVisible(false); }} value={dataSourceCode} onConfirm={(v) => { setLineClassCode(v as string[]); }} /> { setUnitTypePickerVisible(false); }} value={unitType} onConfirm={(v) => { setUnitType(v as string[]); }} /> { setStationPickerVisible(false); }} value={stationCode} onConfirm={(v) => { setStationCode(v as string[]); }} /> ); }