|
@@ -1,132 +1,249 @@
|
|
|
<template>
|
|
<template>
|
|
|
<div class="water-station-content">
|
|
<div class="water-station-content">
|
|
|
- <!-- 顶部统计卡片 -->
|
|
|
|
|
- <TopStats />
|
|
|
|
|
|
|
+ <!-- 顶部统计卡片 - 仅在圩区总览页面显示 -->
|
|
|
|
|
+ <TopStats v-if="!selectedPolderDetail && !showHydrologyDetail" />
|
|
|
<!-- 圩区总览 -->
|
|
<!-- 圩区总览 -->
|
|
|
- <template v-if="!selectedPolderDetail">
|
|
|
|
|
- <div class="left-panel">
|
|
|
|
|
- <div class="left-panel-3d">
|
|
|
|
|
- <m-card title="圩区统计" class="water-station-card water-station-card-top" :width="398" :height="280">
|
|
|
|
|
- <div class="stats-panel">
|
|
|
|
|
- <div class="core-indicator">
|
|
|
|
|
- <div class="indicator-main">
|
|
|
|
|
- <span class="main-value">94</span>
|
|
|
|
|
- <span class="main-unit">个</span>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="indicator-label">圩区总数</div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="stats-grid">
|
|
|
|
|
- <div class="stat-item">
|
|
|
|
|
- <div class="stat-value">18</div>
|
|
|
|
|
- <div class="stat-label">骨干河道</div>
|
|
|
|
|
|
|
+ <template v-if="!selectedPolderDetail && !showHydrologyDetail">
|
|
|
|
|
+ <!-- 防汛抗旱 -->
|
|
|
|
|
+ <template v-if="activeTab === 'flood'">
|
|
|
|
|
+ <div class="left-panel">
|
|
|
|
|
+ <div class="left-panel-3d">
|
|
|
|
|
+ <m-card title="圩区统计" class="water-station-card water-station-card-top" :width="398" :height="280">
|
|
|
|
|
+ <div class="stats-panel">
|
|
|
|
|
+ <div class="core-indicator">
|
|
|
|
|
+ <div class="indicator-main">
|
|
|
|
|
+ <span class="main-value">94</span>
|
|
|
|
|
+ <span class="main-unit">个</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="indicator-label">圩区总数</div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="stat-item">
|
|
|
|
|
- <div class="stat-value">618</div>
|
|
|
|
|
- <div class="stat-label">防洪闸</div>
|
|
|
|
|
|
|
+ <div class="stats-grid">
|
|
|
|
|
+ <div class="stat-item">
|
|
|
|
|
+ <div class="stat-value">18</div>
|
|
|
|
|
+ <div class="stat-label">骨干河道</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="stat-item">
|
|
|
|
|
+ <div class="stat-value">618</div>
|
|
|
|
|
+ <div class="stat-label">防洪闸</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="stat-item">
|
|
|
|
|
+ <div class="stat-value">560</div>
|
|
|
|
|
+ <div class="stat-label">排涝站</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="stat-item">
|
|
|
|
|
+ <div class="stat-value">2173.69<span class="stat-unit">m³/s</span></div>
|
|
|
|
|
+ <div class="stat-label">排涝流量</div>
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="stat-item">
|
|
|
|
|
- <div class="stat-value">560</div>
|
|
|
|
|
- <div class="stat-label">排涝站</div>
|
|
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </m-card>
|
|
|
|
|
+ <m-card title="圩区信息" class="water-station-card water-station-card-bottom" :width="398" :height="520">
|
|
|
|
|
+ <div class="polder-list">
|
|
|
|
|
+ <div class="polder-list-header">
|
|
|
|
|
+ <div class="header-item">序号</div>
|
|
|
|
|
+ <div class="header-item">圩区名称</div>
|
|
|
|
|
+ <div class="header-item">实时水位</div>
|
|
|
|
|
+ <div class="header-item">控制水位</div>
|
|
|
|
|
+ <div class="header-item">流量</div>
|
|
|
|
|
+ <div class="header-item">运行情况</div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="stat-item">
|
|
|
|
|
- <div class="stat-value">2173.69<span class="stat-unit">m³/s</span></div>
|
|
|
|
|
- <div class="stat-label">排涝流量</div>
|
|
|
|
|
|
|
+ <div class="polder-list-body">
|
|
|
|
|
+ <div class="polder-item" v-for="(item, index) in polderList" :key="index">
|
|
|
|
|
+ <div class="item-cell">{{ index + 1 }}</div>
|
|
|
|
|
+ <div class="item-cell">{{ item.name }}</div>
|
|
|
|
|
+ <div class="item-cell">{{ item.waterLevel }}</div>
|
|
|
|
|
+ <div class="item-cell">{{ item.controlLevel }}</div>
|
|
|
|
|
+ <div class="item-cell">{{ item.flow }}</div>
|
|
|
|
|
+ <div class="item-cell">
|
|
|
|
|
+ <div class="rate-bar">
|
|
|
|
|
+ <div class="rate-fill" :style="{ width: item.rate }"></div>
|
|
|
|
|
+ <span class="rate-text">{{ item.rate }}</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
- </m-card>
|
|
|
|
|
- <m-card title="圩区信息" class="water-station-card water-station-card-bottom" :width="398" :height="520">
|
|
|
|
|
- <div class="polder-list">
|
|
|
|
|
- <div class="polder-list-header">
|
|
|
|
|
- <div class="header-item">序号</div>
|
|
|
|
|
- <div class="header-item">圩区名称</div>
|
|
|
|
|
- <div class="header-item">实时水位</div>
|
|
|
|
|
- <div class="header-item">控制水位</div>
|
|
|
|
|
- <div class="header-item">流量</div>
|
|
|
|
|
- <div class="header-item">运行情况</div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="polder-list-body">
|
|
|
|
|
- <div class="polder-item" v-for="(item, index) in polderList" :key="index">
|
|
|
|
|
- <div class="item-cell">{{ index + 1 }}</div>
|
|
|
|
|
- <div class="item-cell">{{ item.name }}</div>
|
|
|
|
|
- <div class="item-cell">{{ item.waterLevel }}</div>
|
|
|
|
|
- <div class="item-cell">{{ item.controlLevel }}</div>
|
|
|
|
|
- <div class="item-cell">{{ item.flow }}</div>
|
|
|
|
|
- <div class="item-cell">
|
|
|
|
|
- <div class="rate-bar">
|
|
|
|
|
- <div class="rate-fill" :style="{ width: item.rate }"></div>
|
|
|
|
|
- <span class="rate-text">{{ item.rate }}</span>
|
|
|
|
|
|
|
+ </m-card>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 右侧面板 -->
|
|
|
|
|
+ <div class="right-panel">
|
|
|
|
|
+ <div class="right-panel-3d">
|
|
|
|
|
+ <!-- 气象预警信息 -->
|
|
|
|
|
+ <m-card title="气象预警信息" class="water-station-card water-station-card-top" :width="398" :height="320">
|
|
|
|
|
+ <div class="weather-warning-panel">
|
|
|
|
|
+ <div class="warning-grid">
|
|
|
|
|
+ <div class="warning-item">
|
|
|
|
|
+ <div class="warning-title">暴雨</div>
|
|
|
|
|
+ <div class="warning-icon rain-icon">
|
|
|
|
|
+ <img src="@/assets/images/rain.svg" alt="暴雨" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="warning-status">无</div>
|
|
|
|
|
+ <div class="warning-time">09-30 11:06</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="warning-item">
|
|
|
|
|
+ <div class="warning-title">强对流</div>
|
|
|
|
|
+ <div class="warning-icon storm-icon">
|
|
|
|
|
+ <img src="@/assets/images/storm.svg" alt="强对流" />
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+ <div class="warning-status">无</div>
|
|
|
|
|
+ <div class="warning-time">10-18 05:28</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="warning-item">
|
|
|
|
|
+ <div class="warning-title">台风</div>
|
|
|
|
|
+ <div class="warning-icon typhoon-icon">
|
|
|
|
|
+ <img src="@/assets/images/typhoon.svg" alt="台风" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="warning-status">无</div>
|
|
|
|
|
+ <div class="warning-time">07-31 10:08</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="warning-item">
|
|
|
|
|
+ <div class="warning-title">高温</div>
|
|
|
|
|
+ <div class="warning-icon heat-icon">
|
|
|
|
|
+ <img src="@/assets/images/heat.svg" alt="高温" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="warning-status">无</div>
|
|
|
|
|
+ <div class="warning-time">09-17 17:27</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
- </m-card>
|
|
|
|
|
|
|
+ </m-card>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 预警统计 -->
|
|
|
|
|
+ <m-card title="预警统计" class="water-station-card water-station-card-bottom" :width="398" :height="240">
|
|
|
|
|
+ <div class="warning-stats-panel">
|
|
|
|
|
+ <div class="stats-grid">
|
|
|
|
|
+ <div class="stat-card warning-stat">
|
|
|
|
|
+ <div class="stat-title">超警站点个数</div>
|
|
|
|
|
+ <div class="stat-value">0/11</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="stat-card alert-stat">
|
|
|
|
|
+ <div class="stat-title">超保站点个数</div>
|
|
|
|
|
+ <div class="stat-value">0/11</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="stat-card normal-stat">
|
|
|
|
|
+ <div class="stat-title">正常站点个数</div>
|
|
|
|
|
+ <div class="stat-value">55/57</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </m-card>
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
|
|
+ </template>
|
|
|
|
|
|
|
|
- <!-- 右侧面板 -->
|
|
|
|
|
- <div class="right-panel">
|
|
|
|
|
- <div class="right-panel-3d">
|
|
|
|
|
- <!-- 气象预警信息 -->
|
|
|
|
|
- <m-card title="气象预警信息" class="water-station-card water-station-card-top" :width="398" :height="320">
|
|
|
|
|
- <div class="weather-warning-panel">
|
|
|
|
|
- <div class="warning-grid">
|
|
|
|
|
- <div class="warning-item">
|
|
|
|
|
- <div class="warning-title">暴雨</div>
|
|
|
|
|
- <div class="warning-icon rain-icon">
|
|
|
|
|
- <img src="@/assets/images/rain.svg" alt="暴雨" />
|
|
|
|
|
|
|
+ <!-- 水环境 -->
|
|
|
|
|
+ <WaterEnvironment v-else-if="activeTab === 'environment'" />
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 水资源 -->
|
|
|
|
|
+ <div v-else-if="activeTab === 'resource'" class="water-resource-content">
|
|
|
|
|
+ <div class="left-panel">
|
|
|
|
|
+ <div class="left-panel-3d">
|
|
|
|
|
+ <m-card title="水资源统计" class="water-station-card water-station-card-top" :width="398" :height="280">
|
|
|
|
|
+ <div class="stats-panel">
|
|
|
|
|
+ <div class="core-indicator">
|
|
|
|
|
+ <div class="indicator-main">
|
|
|
|
|
+ <span class="main-value">8</span>
|
|
|
|
|
+ <span class="main-unit">座</span>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="warning-status">无</div>
|
|
|
|
|
- <div class="warning-time">09-30 11:06</div>
|
|
|
|
|
|
|
+ <div class="indicator-label">水厂总数</div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="warning-item">
|
|
|
|
|
- <div class="warning-title">强对流</div>
|
|
|
|
|
- <div class="warning-icon storm-icon">
|
|
|
|
|
- <img src="@/assets/images/storm.svg" alt="强对流" />
|
|
|
|
|
|
|
+ <div class="stats-grid">
|
|
|
|
|
+ <div class="stat-item">
|
|
|
|
|
+ <div class="stat-value">931</div>
|
|
|
|
|
+ <div class="stat-label">区域面积</div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="warning-status">无</div>
|
|
|
|
|
- <div class="warning-time">10-18 05:28</div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="warning-item">
|
|
|
|
|
- <div class="warning-title">台风</div>
|
|
|
|
|
- <div class="warning-icon typhoon-icon">
|
|
|
|
|
- <img src="@/assets/images/typhoon.svg" alt="台风" />
|
|
|
|
|
|
|
+ <div class="stat-item">
|
|
|
|
|
+ <div class="stat-value">156</div>
|
|
|
|
|
+ <div class="stat-label">排水口</div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="warning-status">无</div>
|
|
|
|
|
- <div class="warning-time">07-31 10:08</div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="warning-item">
|
|
|
|
|
- <div class="warning-title">高温</div>
|
|
|
|
|
- <div class="warning-icon heat-icon">
|
|
|
|
|
- <img src="@/assets/images/heat.svg" alt="高温" />
|
|
|
|
|
|
|
+ <div class="stat-item">
|
|
|
|
|
+ <div class="stat-value">57</div>
|
|
|
|
|
+ <div class="stat-label">水文站</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="stat-item">
|
|
|
|
|
+ <div class="stat-value">18</div>
|
|
|
|
|
+ <div class="stat-label">骨干河道</div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="warning-status">无</div>
|
|
|
|
|
- <div class="warning-time">09-17 17:27</div>
|
|
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
- </m-card>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 预警统计 -->
|
|
|
|
|
- <m-card title="预警统计" class="water-station-card water-station-card-bottom" :width="398" :height="240">
|
|
|
|
|
- <div class="warning-stats-panel">
|
|
|
|
|
- <div class="stats-grid">
|
|
|
|
|
- <div class="stat-card warning-stat">
|
|
|
|
|
- <div class="stat-title">超警站点个数</div>
|
|
|
|
|
- <div class="stat-value">0/11</div>
|
|
|
|
|
|
|
+ </m-card>
|
|
|
|
|
+ <m-card title="水资源分布" class="water-station-card water-station-card-bottom" :width="398" :height="520">
|
|
|
|
|
+ <div class="polder-list">
|
|
|
|
|
+ <div class="polder-list-header">
|
|
|
|
|
+ <div class="header-item">序号</div>
|
|
|
|
|
+ <div class="header-item">水源地</div>
|
|
|
|
|
+ <div class="header-item">类型</div>
|
|
|
|
|
+ <div class="header-item">蓄水量</div>
|
|
|
|
|
+ <div class="header-item">状态</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="polder-list-body">
|
|
|
|
|
+ <div class="polder-item" v-for="(item, index) in resourceList" :key="index">
|
|
|
|
|
+ <div class="item-cell">{{ index + 1 }}</div>
|
|
|
|
|
+ <div class="item-cell">{{ item.name }}</div>
|
|
|
|
|
+ <div class="item-cell">{{ item.type }}</div>
|
|
|
|
|
+ <div class="item-cell">{{ item.capacity }}</div>
|
|
|
|
|
+ <div class="item-cell">
|
|
|
|
|
+ <div class="rate-bar">
|
|
|
|
|
+ <div class="rate-fill" :style="{ width: item.rate }"></div>
|
|
|
|
|
+ <span class="rate-text">{{ item.rate }}</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="stat-card alert-stat">
|
|
|
|
|
- <div class="stat-title">超保站点个数</div>
|
|
|
|
|
- <div class="stat-value">0/11</div>
|
|
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </m-card>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 右侧面板 -->
|
|
|
|
|
+ <div class="right-panel">
|
|
|
|
|
+ <div class="right-panel-3d">
|
|
|
|
|
+ <!-- 用水统计 -->
|
|
|
|
|
+ <m-card title="用水统计" class="water-station-card water-station-card-top" :width="398" :height="320">
|
|
|
|
|
+ <div class="water-usage-panel">
|
|
|
|
|
+ <div class="usage-grid">
|
|
|
|
|
+ <div class="usage-item">
|
|
|
|
|
+ <div class="usage-title">工业用水</div>
|
|
|
|
|
+ <div class="usage-value">45%</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="usage-item">
|
|
|
|
|
+ <div class="usage-title">农业用水</div>
|
|
|
|
|
+ <div class="usage-value">30%</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="usage-item">
|
|
|
|
|
+ <div class="usage-title">生活用水</div>
|
|
|
|
|
+ <div class="usage-value">20%</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="usage-item">
|
|
|
|
|
+ <div class="usage-title">其他用水</div>
|
|
|
|
|
+ <div class="usage-value">5%</div>
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="stat-card normal-stat">
|
|
|
|
|
- <div class="stat-title">正常站点个数</div>
|
|
|
|
|
- <div class="stat-value">55/57</div>
|
|
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </m-card>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 水质达标率 -->
|
|
|
|
|
+ <m-card title="水质达标率" class="water-station-card water-station-card-bottom" :width="398" :height="240">
|
|
|
|
|
+ <div class="warning-stats-panel">
|
|
|
|
|
+ <div class="stats-grid">
|
|
|
|
|
+ <div class="stat-card normal-stat">
|
|
|
|
|
+ <div class="stat-title">优Ⅲ以上</div>
|
|
|
|
|
+ <div class="stat-value">90%</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="stat-card warning-stat">
|
|
|
|
|
+ <div class="stat-title">Ⅳ类</div>
|
|
|
|
|
+ <div class="stat-value">8%</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="stat-card alert-stat">
|
|
|
|
|
+ <div class="stat-title">劣Ⅴ类</div>
|
|
|
|
|
+ <div class="stat-value">2%</div>
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
- </m-card>
|
|
|
|
|
|
|
+ </m-card>
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
@@ -147,8 +264,8 @@
|
|
|
<HydrologyDetail />
|
|
<HydrologyDetail />
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
- <!-- 底部托盘 -->
|
|
|
|
|
- <div class="bottom-tray">
|
|
|
|
|
|
|
+ <!-- 底部托盘 - 仅在圩区总览页面显示 -->
|
|
|
|
|
+ <div class="bottom-tray" v-if="!selectedPolderDetail && !showHydrologyDetail">
|
|
|
<!-- svg线条动画 -->
|
|
<!-- svg线条动画 -->
|
|
|
<mSvglineAnimation class="bottom-svg-line-left" :width="721" :height="57" color="#00BFFF" :strokeWidth="2"
|
|
<mSvglineAnimation class="bottom-svg-line-left" :width="721" :height="57" color="#00BFFF" :strokeWidth="2"
|
|
|
:dir="[0, 1]" :length="50"
|
|
:dir="[0, 1]" :length="50"
|
|
@@ -165,9 +282,9 @@
|
|
|
</div>
|
|
</div>
|
|
|
<!-- 底部菜单 -->
|
|
<!-- 底部菜单 -->
|
|
|
<div class="bottom-menu">
|
|
<div class="bottom-menu">
|
|
|
- <div class="bottom-menu-item is-active"><span>防汛抗旱</span></div>
|
|
|
|
|
- <div class="bottom-menu-item"><span>水环境</span></div>
|
|
|
|
|
- <div class="bottom-menu-item"><span>水资源</span></div>
|
|
|
|
|
|
|
+ <div class="bottom-menu-item" :class="{ 'is-active': activeTab === 'flood' }" @click="switchTab('flood')"><span>防汛抗旱</span></div>
|
|
|
|
|
+ <div class="bottom-menu-item" :class="{ 'is-active': activeTab === 'environment' }" @click="switchTab('environment')"><span>水环境</span></div>
|
|
|
|
|
+ <div class="bottom-menu-item" :class="{ 'is-active': activeTab === 'resource' }" @click="switchTab('resource')"><span>水资源</span></div>
|
|
|
</div>
|
|
</div>
|
|
|
<!-- 右箭头 -->
|
|
<!-- 右箭头 -->
|
|
|
<div class="bottom-tray-arrow is-reverse">
|
|
<div class="bottom-tray-arrow is-reverse">
|
|
@@ -179,17 +296,18 @@
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script setup>
|
|
<script setup>
|
|
|
-import { ref, onMounted, nextTick } from "vue"
|
|
|
|
|
|
|
+import { ref, onMounted, nextTick, watch, computed } from "vue"
|
|
|
import mCard from "@/components/mCard/index.vue"
|
|
import mCard from "@/components/mCard/index.vue"
|
|
|
import VChart from "vue-echarts"
|
|
import VChart from "vue-echarts"
|
|
|
import * as echarts from "echarts"
|
|
import * as echarts from "echarts"
|
|
|
import TopStats from "./TopStats.vue"
|
|
import TopStats from "./TopStats.vue"
|
|
|
import PolderDetail from "./PolderDetail.vue"
|
|
import PolderDetail from "./PolderDetail.vue"
|
|
|
import HydrologyDetail from "./HydrologyDetail.vue"
|
|
import HydrologyDetail from "./HydrologyDetail.vue"
|
|
|
|
|
+import WaterEnvironment from "./WaterEnvironment.vue"
|
|
|
import mSvglineAnimation from "@/components/mSvglineAnimation/index.vue"
|
|
import mSvglineAnimation from "@/components/mSvglineAnimation/index.vue"
|
|
|
import gsap from "gsap"
|
|
import gsap from "gsap"
|
|
|
|
|
|
|
|
-defineProps({
|
|
|
|
|
|
|
+const props = defineProps({
|
|
|
selectedPolderDetail: {
|
|
selectedPolderDetail: {
|
|
|
type: String,
|
|
type: String,
|
|
|
default: null
|
|
default: null
|
|
@@ -209,6 +327,8 @@ defineProps({
|
|
|
})
|
|
})
|
|
|
defineEmits(['update:showGate', 'update:showHydrology'])
|
|
defineEmits(['update:showGate', 'update:showHydrology'])
|
|
|
|
|
|
|
|
|
|
+const activeTab = ref('flood')
|
|
|
|
|
+
|
|
|
const polderList = ref([
|
|
const polderList = ref([
|
|
|
{ name: '庙泾联圩', waterLevel: '2.19', controlLevel: '2.50', flow: '3.20', rate: '28%' },
|
|
{ name: '庙泾联圩', waterLevel: '2.19', controlLevel: '2.50', flow: '3.20', rate: '28%' },
|
|
|
{ name: '西河联圩', waterLevel: '2.74', controlLevel: '3.10', flow: '3.00', rate: '17%' },
|
|
{ name: '西河联圩', waterLevel: '2.74', controlLevel: '3.10', flow: '3.00', rate: '17%' },
|
|
@@ -237,14 +357,53 @@ const stationRanking = ref([
|
|
|
{ district: '淀山湖镇', name: '清水湾', level: '2.52', time: '02-12 10:05' }
|
|
{ district: '淀山湖镇', name: '清水湾', level: '2.52', time: '02-12 10:05' }
|
|
|
])
|
|
])
|
|
|
|
|
|
|
|
-// 组件挂载时执行动画
|
|
|
|
|
-onMounted(() => {
|
|
|
|
|
|
|
+const resourceList = ref([
|
|
|
|
|
+ { name: '巴城湖水源地', type: '湖泊', capacity: '1200万m³', rate: '85%' },
|
|
|
|
|
+ { name: '傀儡湖水源地', type: '湖泊', capacity: '800万m³', rate: '90%' },
|
|
|
|
|
+ { name: '吴淞江水源地', type: '河道', capacity: '500万m³', rate: '75%' },
|
|
|
|
|
+ { name: '娄江水源地', type: '河道', capacity: '300万m³', rate: '80%' },
|
|
|
|
|
+ { name: '阳澄湖水源地', type: '湖泊', capacity: '2000万m³', rate: '92%' }
|
|
|
|
|
+])
|
|
|
|
|
+
|
|
|
|
|
+// 计算是否显示圩区总览
|
|
|
|
|
+const isOverview = computed(() => {
|
|
|
|
|
+ return !props.selectedPolderDetail && !props.showHydrologyDetail
|
|
|
|
|
+})
|
|
|
|
|
+
|
|
|
|
|
+// 切换标签页
|
|
|
|
|
+function switchTab(tab) {
|
|
|
|
|
+ activeTab.value = tab
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 执行动画
|
|
|
|
|
+function executeAnimations() {
|
|
|
nextTick(() => {
|
|
nextTick(() => {
|
|
|
gsap.to(".water-station-content .water-station-card", { x: 0, opacity: 1, duration: 0.5, stagger: 0.1 })
|
|
gsap.to(".water-station-content .water-station-card", { x: 0, opacity: 1, duration: 0.5, stagger: 0.1 })
|
|
|
gsap.to(".water-station-content .count-card", { y: 0, opacity: 1, duration: 0.5, stagger: 0.1 })
|
|
gsap.to(".water-station-content .count-card", { y: 0, opacity: 1, duration: 0.5, stagger: 0.1 })
|
|
|
gsap.to(".water-station-content .bottom-tray", { y: 0, opacity: 1, duration: 0.5 })
|
|
gsap.to(".water-station-content .bottom-tray", { y: 0, opacity: 1, duration: 0.5 })
|
|
|
})
|
|
})
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 组件挂载时执行动画
|
|
|
|
|
+onMounted(() => {
|
|
|
|
|
+ executeAnimations()
|
|
|
})
|
|
})
|
|
|
|
|
+
|
|
|
|
|
+// 监听状态变化,重新执行动画
|
|
|
|
|
+watch(
|
|
|
|
|
+ [() => props.selectedPolderDetail, () => props.showHydrologyDetail, () => activeTab.value],
|
|
|
|
|
+ () => {
|
|
|
|
|
+ if (isOverview.value) {
|
|
|
|
|
+ // 重置元素初始状态
|
|
|
|
|
+ gsap.set(".water-station-content .water-station-card", { x: -150, opacity: 0 })
|
|
|
|
|
+ gsap.set(".water-station-content .count-card", { y: 150, opacity: 0 })
|
|
|
|
|
+ gsap.set(".water-station-content .bottom-tray", { y: 100, opacity: 0 })
|
|
|
|
|
+
|
|
|
|
|
+ // 重新执行动画
|
|
|
|
|
+ executeAnimations()
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+)
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss">
|
|
<style lang="scss">
|