diff --git a/packages/screen/src/router/index.js b/packages/screen/src/router/index.js index c48a536..5c86e34 100644 --- a/packages/screen/src/router/index.js +++ b/packages/screen/src/router/index.js @@ -18,12 +18,12 @@ const routes = [ component: () => import('../views/ServiceStationManagePage/index.vue') }, { - path: '/yhzsb', + path: '/yhzsb/:data', name: 'yhzsb', component: () => import('../views/EquipmentManagement/index.vue') }, { - path: '/yhzwz', + path: '/yhzwz/:data', name: 'yhzwz', component: () => import('../views/MaterialManagement/index.vue') } diff --git a/packages/screen/src/views/EquipmentManagement/index.js b/packages/screen/src/views/EquipmentManagement/index.js index 0f12fa3..c6f2f07 100644 --- a/packages/screen/src/views/EquipmentManagement/index.js +++ b/packages/screen/src/views/EquipmentManagement/index.js @@ -1,9 +1,10 @@ -import { h, ref, onMounted, reactive, watch, toRaw } from "vue"; +import { h, ref, onMounted, reactive, watch, toRaw, nextTick } from "vue"; import { request } from "@/utils/request"; import { Search } from "@element-plus/icons-vue"; import DetailDialog from "./detailDialog.vue"; import EditDialog from "./editDialog.vue"; import AddDialog from "./addDialog.vue"; +import { useRoute } from 'vue-router' const treeData = ref([]); const treeProps = { @@ -122,6 +123,7 @@ const getTreeData = async () => { }; // 处理节点点击事件 const handleNodeClick = (data, node) => { + if (!data || !data.type) return; if (data.type === 'area' && node.expanded === false) { console.log('树节点关闭', node.expanded) yhzid.value = ''; // 重置养护站id @@ -395,13 +397,49 @@ const openAddEquipmentModel = () => { } + + export default () => { const treeRef = ref(null); watch(() => filterText.value, (val) => { treeRef.value.filter(val || '') + + // 添加自动点击逻辑 + + nextTick(() => { + setTimeout(() => { + const visibleNodes = getFilteredVisibleNodes() + if (visibleNodes.length === 2) { + handleAutoClickNode(visibleNodes[1]) + } + }, 100) // 增加 100ms 延迟确保过滤完成 + }) + }) + // 获取过滤后的可见节点 + const getFilteredVisibleNodes = () => { + return Object.values(treeRef.value?.store?.nodesMap || {}) + .filter(node => node.visible && !node.isHidden) + } + const handleAutoClickNode = (node) => { + // 展开父节点 + if (node.parent) { + node.parent.expanded = true + } + + // 执行点击逻辑 + handleNodeClick( + node.data, + { + data: node.data, + expanded: false, + isCurrent: true + } + ) + } + watch( [() => filterData, qxmc, yhzid], ([newFilterData, newQxmc, newYhzid]) => { @@ -410,10 +448,16 @@ export default () => { { deep: true } ) + const route = useRoute() - onMounted(() => { - getTreeData(); - getyhzsbList(); + + onMounted(async () => { + await getTreeData(); + await getyhzsbList(); + const rowData = JSON.parse(decodeURIComponent(route.params.data)); + if (rowData) { + filterText.value = rowData.mc; + }; }); return { treeRef, diff --git a/packages/screen/src/views/EquipmentManagement/index.vue b/packages/screen/src/views/EquipmentManagement/index.vue index 3ec3c12..cdf82a5 100644 --- a/packages/screen/src/views/EquipmentManagement/index.vue +++ b/packages/screen/src/views/EquipmentManagement/index.vue @@ -92,7 +92,7 @@ import MyDialog from "../../component/MyDialog"; const script = scriptFn(); const { treeRef, dialogRef } = script; - \ No newline at end of file