fix: selectedDevice doennot update when directly enter DevicePage

This commit is contained in:
yangsy
2025-08-26 12:11:48 +08:00
parent f6c6432b1e
commit a0a56e43f2

View File

@@ -169,10 +169,9 @@ const renderDeviceNodePrefix = (device: NdmDeviceResultVO, stationCode: string)
// ========== 选中设备 ========== // ========== 选中设备 ==========
const selectedTab = ref<DeviceTypeVal>(DeviceType.Camera); const selectedTab = ref<DeviceTypeVal>(DeviceType.Camera);
const selectedKeys = ref<string[]>(); const selectedKeys = ref<string[]>();
const expandedKeys = ref<string[]>();
const selectedDevice = ref<NdmDeviceResultVO>(); const selectedDevice = ref<NdmDeviceResultVO>();
// 路由参数设置选中的设备 // 解析路由参数设置选中的设备
const setDeviceTreePropsFromRouteQuery = (query: LocationQuery) => { const setSelectedRefsFromRouteQuery = (query: LocationQuery) => {
const { stationCode, deviceType, deviceDBId } = query; const { stationCode, deviceType, deviceDBId } = query;
let stnCode = ''; let stnCode = '';
let devType: DeviceTypeVal = DeviceType.Camera; let devType: DeviceTypeVal = DeviceType.Camera;
@@ -190,13 +189,24 @@ const setDeviceTreePropsFromRouteQuery = (query: LocationQuery) => {
}; };
// 页面加载时,需要设置选中的设备 // 页面加载时,需要设置选中的设备
onMounted(() => { onMounted(() => {
setDeviceTreePropsFromRouteQuery(route.query); // setSelectedRefsFromRouteQuery(route.query);
// scrollDeviceTreeToSelectedDevice(); // scrollDeviceTreeToSelectedDevice();
}); });
// 页面加载时设备数据可能不存在,因此当设备数据更新时,需要重新设置选中的设备 // 页面加载时设备数据可能不存在,因此当设备数据更新时,需要重新设置选中的设备
watch(lineDevices, () => setDeviceTreePropsFromRouteQuery(route.query), { immediate: true }); watch(
lineDevices,
() => {
setSelectedRefsFromRouteQuery(route.query);
},
{
deep: true,
immediate: true,
},
);
// 更改选择的设备类型时,更新路由查询参数 // 更改选择的设备类型时,更新路由查询参数
watch(selectedTab, (newTab) => router.replace({ query: { ...route.query, deviceType: newTab } })); watch(selectedTab, (newTab) => {
router.replace({ query: { ...route.query, deviceType: newTab } });
});
const override: TreeOverrideNodeClickBehavior = ({ option }) => { const override: TreeOverrideNodeClickBehavior = ({ option }) => {
if (!option['device']) { if (!option['device']) {
return 'none'; return 'none';
@@ -225,6 +235,7 @@ const searchFilter = (pattern: string, node: TreeOption): boolean => {
}; };
// ========== 设备树交互 ========== // ========== 设备树交互 ==========
const expandedKeys = ref<string[]>();
const deviceTreeInst = useTemplateRef<TreeInst>('deviceTreeInst'); const deviceTreeInst = useTemplateRef<TreeInst>('deviceTreeInst');
const onClickLocateDeviceTree = () => { const onClickLocateDeviceTree = () => {
selectedTab.value = (selectedDevice.value?.deviceType ?? selectedTab.value) as DeviceTypeVal; selectedTab.value = (selectedDevice.value?.deviceType ?? selectedTab.value) as DeviceTypeVal;