From 7bd866831780abcf5a59c4cbb7d1be456eea7c99 Mon Sep 17 00:00:00 2001
From: wangzhibo <wangzhibo@shsening.com>
Date: 星期五, 14 八月 2026 10:13:57 +0800
Subject: [PATCH] add shop module
---
src/modules/monitor/components/site-tree.vue | 92 +++++++++++++++++++++------------------------
1 files changed, 43 insertions(+), 49 deletions(-)
diff --git a/src/modules/monitor/components/site-tree.vue b/src/modules/monitor/components/site-tree.vue
index ab20d1d..86e0ba6 100644
--- a/src/modules/monitor/components/site-tree.vue
+++ b/src/modules/monitor/components/site-tree.vue
@@ -13,32 +13,21 @@
<div class="site-tree__container">
<el-scrollbar>
- <el-tree
- v-loading="loading"
- node-key="a_id"
- default-expand-all
- :data="list"
- :props="{
- label: 'a_name',
- children: 'children'
- }"
- highlight-current
- :expand-on-click-node="false"
- @node-click="rowClick"
- >
+ <el-tree v-loading="loading" node-key="a_id" default-expand-all :data="list" :props="{
+ label: 'a_name',
+ children: 'children'
+ }" highlight-current :expand-on-click-node="false" @node-click="rowClick">
<template #default="{ node, data }">
<div class="site-tree__node">
- <span
- class="site-tree__node-label"
- :class="{
- 'is-active': data.a_id == selectId
- }"
- >
+ <span class="site-tree__node-label" :class="{
+ 'is-active': data.a_id == selectId
+ }">
{{ node.label }}
- <span v-if="!/^\d+$/.test(data.a_id)" style="margin-left:6px;color:#67c23a;font-size:12px;">(绔欑偣)</span>
+ <span v-if="!/^\d+$/.test(data.a_id)"
+ style="margin-left:6px;color:#67c23a;font-size:12px;">(绔欑偣)</span>
</span>
</div>
- </template>
+ </template>
</el-tree>
</el-scrollbar>
</div>
@@ -66,37 +55,37 @@
const selectId = ref<number | string>();
function buildTree(source: any[]) {
- const map = new Map<string, any>();
- const roots: any[] = [];
- source.forEach(item => {
- map.set(item.a_id, { ...item, children: [] });
- });
- source.forEach(item => {
- const node = map.get(item.a_id);
- if (item.a_parentId && map.has(item.a_parentId)) {
- map.get(item.a_parentId).children.push(node);
- } else {
- roots.push(node);
- }
- });
- return roots;
+ const map = new Map<string, any>();
+ const roots: any[] = [];
+ source.forEach(item => {
+ map.set(item.a_id, { ...item, children: [] });
+ });
+ source.forEach(item => {
+ const node = map.get(item.a_id);
+ if (item.a_parentId && map.has(item.a_parentId)) {
+ map.get(item.a_parentId).children.push(node);
+ } else {
+ roots.push(node);
+ }
+ });
+ return roots;
}
async function refresh() {
- loading.value = true;
- try {
- const res = await service.basicdata.iot.list();
- const formatList = res.map(item => ({
- ...item,
- a_id: String(item.a_id),
- a_parentId: item.a_parentId === null ? null : String(item.a_parentId)
- }));
- list.value = buildTree(formatList);
- } catch (err) {
- ElMessage.error('鍔犺浇鏍戝舰澶辫触');
- } finally {
- loading.value = false;
- }
+ loading.value = true;
+ try {
+ const res = await service.basicdata.iot.getSitelist();
+ const formatList = res.map(item => ({
+ ...item,
+ a_id: String(item.a_id),
+ a_parentId: item.a_parentId === null ? null : String(item.a_parentId)
+ }));
+ list.value = buildTree(formatList);
+ } catch (err) {
+ ElMessage.error('鍔犺浇鏍戝舰澶辫触');
+ } finally {
+ loading.value = false;
+ }
}
// 鑺傜偣鐐瑰嚮
@@ -135,6 +124,7 @@
&__op {
display: flex;
align-items: center;
+
.item {
display: flex;
justify-content: center;
@@ -146,6 +136,7 @@
height: 26px;
width: 26px;
color: var(--el-text-color-primary);
+
&:hover {
background-color: var(--el-fill-color-light);
}
@@ -155,6 +146,7 @@
&__container {
height: calc(100% - 40px);
padding: 10px;
+
:deep(.el-tree-node__content) {
height: 38px;
border-radius: 4px;
@@ -167,6 +159,7 @@
height: 100%;
width: 100%;
box-sizing: border-box;
+
&-label {
display: flex;
align-items: center;
@@ -176,6 +169,7 @@
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
+
&.is-active {
color: var(--el-color-primary);
}
--
Gitblit v1.9.1