From 55e57eb219a2512c39d85d17f67fa8ee5b307482 Mon Sep 17 00:00:00 2001 From: zcxlsm Date: Sun, 31 Aug 2025 12:48:27 +0800 Subject: [PATCH] =?UTF-8?q?feat(property):=20=E6=B7=BB=E5=8A=A0=E6=B0=B4?= =?UTF-8?q?=E7=94=B5=E6=B0=94=E8=A1=A8=E5=BD=93=E5=89=8D=E8=AF=BB=E6=95=B0?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 currentReading 函数获取水电气表当前读数和状态 - 更新 floor-tree 组件,增加 isMeter 属性控制是否显示电表数据 - 重构 electricitySituation 页面,展示电表当前读数和状态信息 - 优化 waterSituation 页面,引入 floor-tree 组件 --- .../energyManagement/meterInfo/index.ts | 13 +- .../electricEnergy/components/floor-tree.vue | 78 ++++++---- .../elctricitySituation/index.vue | 140 ++++++++++++------ .../waterPower/waterSituation/index.vue | 2 +- 4 files changed, 155 insertions(+), 78 deletions(-) diff --git a/apps/web-antd/src/api/property/energyManagement/meterInfo/index.ts b/apps/web-antd/src/api/property/energyManagement/meterInfo/index.ts index b3c505df..bf722395 100644 --- a/apps/web-antd/src/api/property/energyManagement/meterInfo/index.ts +++ b/apps/web-antd/src/api/property/energyManagement/meterInfo/index.ts @@ -1,6 +1,6 @@ import type { MeterInfoVO, MeterInfoForm, MeterInfoQuery } from './model' -import type { ID, IDS, PageResult, TreeNode } from '#/api/common'; +import type { ID, IDS, PageResult, TreeNode } from '#/api/common' import { commonExport } from '#/api/helper' import { requestClient } from '#/api/request' @@ -64,6 +64,13 @@ export function meterInfoRemove(id: ID | IDS) { * @param level * @returns 水电气树 */ -export function queryTree(meterType: number | string) { - return requestClient.get[]>(`/property/meterInfo/tree/${meterType}`) +export function queryTree(params?: any) { + return requestClient.get[]>(`/property/meterInfo/tree`, { params }) +} + +/** + * 获取水/电/气表当前读数/状态 + */ +export function currentReading(params?: any) { + return requestClient.get(`/property/meterInfo/currentReading`, { params }) } \ No newline at end of file diff --git a/apps/web-antd/src/views/property/energyManagement/electricEnergy/components/floor-tree.vue b/apps/web-antd/src/views/property/energyManagement/electricEnergy/components/floor-tree.vue index 7b99045b..1aedde12 100644 --- a/apps/web-antd/src/views/property/energyManagement/electricEnergy/components/floor-tree.vue +++ b/apps/web-antd/src/views/property/energyManagement/electricEnergy/components/floor-tree.vue @@ -1,14 +1,19 @@ @@ -67,7 +108,7 @@ async function handleSelectFloor(selectedKeys, info) {} gap: 20px; /* 使用gap替代margin控制间距 */ } -.plan-card { +.meterInfo-card { background: #fff; width: 15rem; padding-left: 2rem; @@ -78,18 +119,18 @@ async function handleSelectFloor(selectedKeys, info) {} border-bottom: 4px solid #87ceeb; box-shadow: 0 6px 30px rgba(173, 216, 230, 0.3); font-family: 'Poppins', sans-serif; - height: 306px; + height: 290px; margin: 0 5px 20px 5px; } -.plan-card h2 { +.meterInfo-card h2 { margin-bottom: 15px; font-size: 27px; color: #5faee3; font-weight: 600; } -.plan-card h2 span { +.meterInfo-card h2 span { display: block; margin-top: -4px; color: #7eb8da; @@ -97,7 +138,7 @@ async function handleSelectFloor(selectedKeys, info) {} font-weight: 400; } -.etiquet-price { +.meterInfo-reading { position: relative; background: #f0f8ff; width: 14.46rem; @@ -106,7 +147,7 @@ async function handleSelectFloor(selectedKeys, info) {} border-radius: 5px 0 0 5px; } -.etiquet-price p { +.meterInfo-reading p { margin: 0; padding-top: 0.4rem; display: flex; @@ -115,21 +156,21 @@ async function handleSelectFloor(selectedKeys, info) {} color: #4a8cbb; } -.etiquet-price p:before { +.meterInfo-reading p:before { content: ''; margin-right: 5px; font-size: 15px; font-weight: 300; } -.etiquet-price p:after { +.meterInfo-reading p:after { content: '/ KW.H'; margin-left: 5px; font-size: 15px; font-weight: 300; } -.etiquet-price div { +.meterInfo-reading div { position: absolute; bottom: -23px; right: 0px; @@ -141,16 +182,16 @@ async function handleSelectFloor(selectedKeys, info) {} z-index: 1; } -.benefits-list { +.meterInfo-list { margin-top: 16px; } -.benefits-list ul { +.meterInfo-list ul { padding: 0; font-size: 14px; } -.benefits-list ul li { +.meterInfo-list ul li { color: #5a7d9a; list-style: none; margin-bottom: 0.2rem; @@ -159,12 +200,12 @@ async function handleSelectFloor(selectedKeys, info) {} gap: 0.5rem; } -.benefits-list ul li svg { +.meterInfo-list ul li svg { width: 0.9rem; fill: currentColor; } -.benefits-list ul li span { +.meterInfo-list ul li span { font-weight: 300; } @@ -178,7 +219,7 @@ async function handleSelectFloor(selectedKeys, info) {} display: flex; justify-content: center; align-items: center; - background: #6bb1e3; + color: #fff; padding: 10px 15px; border-radius: 5px; @@ -200,4 +241,15 @@ async function handleSelectFloor(selectedKeys, info) {} width: 0.9rem; fill: currentColor; } + +.back-to-top { + width: 50px; + height: 50px; +} + +/* 返回顶部按钮 */ +.back-to-top:hover { + background-color: #6bb1e3; + transform: translateY(-5px); +} diff --git a/apps/web-antd/src/views/property/energyManagement/waterPower/waterSituation/index.vue b/apps/web-antd/src/views/property/energyManagement/waterPower/waterSituation/index.vue index 76cfbcc9..463db550 100644 --- a/apps/web-antd/src/views/property/energyManagement/waterPower/waterSituation/index.vue +++ b/apps/web-antd/src/views/property/energyManagement/waterPower/waterSituation/index.vue @@ -81,7 +81,7 @@ import { Page } from '@vben/common-ui' import { ref, onMounted, onBeforeUnmount, reactive } from 'vue' import * as echarts from 'echarts' import type { ECharts, EChartsOption } from 'echarts' -import FloorTree from "../../electricEnergy/components/floor-tree.vue" +import FloorTree from "../components/floor-tree.vue" const chainData = reactive({ currentMonthEnergy: '9',