| | |
| | | setMaxQty, |
| | | speedLimit, |
| | | setSpeedLimit, |
| | | shapeData, |
| | | setShapeData, |
| | | startPoint, |
| | | endPoint, |
| | | memo, |
| | | setMemo, |
| | | priority, |
| | | setPriority, |
| | | onSave, |
| | | }) => { |
| | | const translate = useTranslate(); |
| | | const formatCoord = (value) => { |
| | | if (value === null || value === undefined || value === '') { |
| | | return ''; |
| | | } |
| | | const num = Number(value); |
| | | if (Number.isNaN(num)) { |
| | | return String(value); |
| | | } |
| | | return num.toFixed(2); |
| | | }; |
| | | |
| | | const handleSubmit = (e) => { |
| | | e.preventDefault(); |
| | | const confirmMsg = translate('page.map.area.confirm.save'); |
| | | if (window.confirm(confirmMsg)) { |
| | | onSave?.(); |
| | | } |
| | | }; |
| | | |
| | | return ( |
| | | <Box component="form" onSubmit={(e) => { e.preventDefault(); onSave(); }}> |
| | | <Box component="form" onSubmit={handleSubmit}> |
| | | <Grid container spacing={2}> |
| | | <Grid item xs={12}> |
| | | <TextField |
| | | label={translate('page.map.area.code', { _: '区域编码' })} |
| | | label={translate('page.map.area.form.code')} |
| | | fullWidth |
| | | value={areaCode} |
| | | onChange={(e) => setAreaCode(e.target.value)} |
| | |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <TextField |
| | | label={translate('page.map.area.maxQty', { _: '最大数量' })} |
| | | label={translate('page.map.area.form.maxQty')} |
| | | fullWidth |
| | | type="number" |
| | | value={maxQty} |
| | |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <TextField |
| | | label={translate('page.map.area.speedLimit', { _: '速度限制' })} |
| | | label={translate('page.map.area.form.speedLimit')} |
| | | fullWidth |
| | | type="number" |
| | | value={speedLimit} |
| | | onChange={(e) => setSpeedLimit(e.target.value)} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={12}> |
| | | <Grid item xs={12} sm={6}> |
| | | <TextField |
| | | label={translate('page.map.area.shape', { _: '形状数据' })} |
| | | label={translate('page.map.area.form.startX')} |
| | | fullWidth |
| | | multiline |
| | | minRows={3} |
| | | value={shapeData} |
| | | onChange={(e) => setShapeData(e.target.value)} |
| | | value={formatCoord(startPoint?.x)} |
| | | InputProps={{ readOnly: true }} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={12} sm={6}> |
| | | <TextField |
| | | label={translate('page.map.area.form.startY')} |
| | | fullWidth |
| | | value={formatCoord(startPoint?.y)} |
| | | InputProps={{ readOnly: true }} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={12} sm={6}> |
| | | <TextField |
| | | label={translate('page.map.area.form.endX')} |
| | | fullWidth |
| | | value={formatCoord(endPoint?.x)} |
| | | InputProps={{ readOnly: true }} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={12} sm={6}> |
| | | <TextField |
| | | label={translate('page.map.area.form.endY')} |
| | | fullWidth |
| | | value={formatCoord(endPoint?.y)} |
| | | InputProps={{ readOnly: true }} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={12}> |
| | | <TextField |
| | | label={translate('page.map.area.priority', { _: '优先级' })} |
| | | label={translate('page.map.area.form.priority')} |
| | | fullWidth |
| | | type="number" |
| | | value={priority} |
| | |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={12}> |
| | | <TextField |
| | | label={translate('page.map.area.form.memo')} |
| | | fullWidth |
| | | multiline |
| | | minRows={3} |
| | | value={memo} |
| | | onChange={(e) => setMemo(e.target.value)} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={12}> |
| | | <Button variant="contained" type="submit"> |
| | | {translate('common.action.save', { _: '保存' })} |
| | | {translate('ra.action.save')} |
| | | </Button> |
| | | </Grid> |
| | | </Grid> |