From 090979fb07fb906450ef27bbaa1f6a208d2a8564 Mon Sep 17 00:00:00 2001 From: huangchenhao <123673748@qq.com> Date: Thu, 6 Nov 2025 11:17:05 +0800 Subject: [PATCH] =?UTF-8?q?PC=E5=85=BB=E6=8A=A4=E7=AB=99=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=20=E6=96=B0=E5=A2=9E=E8=AE=BE=E5=A4=87=E5=92=8C=E7=89=A9?= =?UTF-8?q?=E8=B5=84=E7=AE=A1=E7=90=86=E8=B7=B3=E8=BD=AC=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/screen/src/router/index.js | 4 +- .../src/views/EquipmentManagement/index.js | 52 +- .../src/views/EquipmentManagement/index.vue | 2 +- .../src/views/MaterialManagement/index.js | 50 +- .../src/views/MaterialManagement/index.vue | 7 +- .../views/ServiceStationManagePage/index.vue | 40 +- .../src/views/SnowEventManagement/index.js | 463 ++++++++++++++++++ .../src/views/SnowEventManagement/index.vue | 149 ++++++ 8 files changed, 747 insertions(+), 20 deletions(-) create mode 100644 packages/screen/src/views/SnowEventManagement/index.js create mode 100644 packages/screen/src/views/SnowEventManagement/index.vue 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