优化详情跳转

This commit is contained in:
mmc
2026-08-04 16:11:27 +08:00
parent afbd40a787
commit 0116509dab
5 changed files with 34 additions and 10 deletions

View File

@@ -423,9 +423,9 @@ const WorkOrderModelManagement: React.FC = () => {
</Form.Item>
)}
<Form.Item label="自动生成任务" name="autoGenerateTask" valuePropName="checked">
{/*<Form.Item label="自动生成任务" name="autoGenerateTask" valuePropName="checked">
<Switch />
</Form.Item>
</Form.Item>*/}
<Form.Item>
<Space>

View File

@@ -15,6 +15,9 @@ import {
EditOutlined, FullscreenOutlined, InfoCircleOutlined,
CarOutlined
} from '@ant-design/icons';
import { useNavigate } from 'react-router-dom';
// 组件内
@@ -75,6 +78,8 @@ export default function DeviceOverviewPage() {
const [currentEditRobot, setCurrentEditRobot] = useState(null);
const [editAliasInput, setEditAliasInput] = useState('');
const [editLoading, setEditLoading] = useState(false);
const navigate = useNavigate();
// 获取数据
const fetchAllData = async () => {
@@ -116,7 +121,10 @@ export default function DeviceOverviewPage() {
console.error('数据请求失败', err);
}
};
const onViewStatus = (sn) => { }
const onViewStatus = (sn) => {
navigate(`/devices/status?sn=${sn}`);
}
// 打开编辑弹窗

View File

@@ -44,6 +44,7 @@ import {
getSiteUAVList,
addRoute,
} from '../../api/device.ts';
import { useLocation } from 'react-router-dom';
import XboxController from './XboxController';
import DroneVideoPlayer from './DroneVideoPlayer';
@@ -110,6 +111,10 @@ export default function DeviceStatusPage() {
const [isSaving, setIsSaving] = useState(false); // 是否正在保存
const mapRef = useRef(null); // 地图 ref
const location = useLocation();
const queryParams = new URLSearchParams(location.search);
const urlSn = queryParams.get('sn'); // 拿到路由上的sn
// 开关切换回调
const handleChange = (checked: boolean) => {
@@ -180,10 +185,22 @@ export default function DeviceStatusPage() {
// 当设备列表加载后,如果没有选中的设备,默认选中第一个
useEffect(() => {
if (devicesAll?.length > 0) {
// 优先从url参数匹配设备
if (urlSn) {
const target = devicesAll.find(d =>
(d.device_sn || d.serialNumber) === urlSn
);
if (target) {
setSelectedSn(urlSn);
return;
}
}
// url无sn / 没匹配到对应设备:默认选中第一个
const firstDevice = devicesAll[0];
setSelectedSn(firstDevice.device_sn || firstDevice.serialNumber);
}
}, [devicesAll]);
}, [devicesAll, urlSn]);
// 获取当前选中的无人机设备
const device = useMemo(() => {

View File

@@ -1862,8 +1862,8 @@ const NewTaskModal = ({ isOpen, onClose, robots, selectedPathWork, handlGetTaskL
if (!formData.device?.serialNumber) missingFields.push('设备编号');
if (!formData.planName) missingFields.push('任务名称');
if (!formData.path?.id) missingFields.push('路线');
if (!formData.excuteDayStartTime) missingFields.push('执行开始时间');
if (!formData.excuteDayEndTime) missingFields.push('执行结束时间');
//if (!formData.excuteDayStartTime) missingFields.push('执行开始时间');
//if (!formData.excuteDayEndTime) missingFields.push('执行结束时间');
if (missingFields.length > 0) {
utils.message.error({ title: '提示', content: `请填写:${missingFields.join('、')}` });

View File

@@ -735,7 +735,7 @@ const WorkOrderPage = () => {
const params = {
ids: values.orderIds,
deviceId: values.deviceId,
startTime: startTimeStr
//startTime: startTimeStr
};
const res = await startWorkOrder(params);
if (res.code == 200) {
@@ -1694,7 +1694,6 @@ const WorkOrderPage = () => {
<FormItem
name="deviceId"
label="选择执行设备"
rules={[{ required: true, message: '请选择执行设备' }]}
>
{/*<Select
style={{ width: "80%", marginBottom: 8 }}
@@ -1754,7 +1753,7 @@ const WorkOrderPage = () => {
</Select>
</FormItem>
<FormItem
{/*<FormItem
name="startTime"
label="执行开始时间"
>
@@ -1764,7 +1763,7 @@ const WorkOrderPage = () => {
placeholder="请选择执行开始时间"
style={{ width: '100%' }}
/>
</FormItem>
</FormItem>*/}
<FormItem style={{ textAlign: 'right', marginBottom: 0 }}>
<Button onClick={() => setDispatchModalVisible(false)}>取消</Button>
<Button type="primary" htmlType="submit" style={{ marginLeft: 8 }}>确认执行</Button>