This commit is contained in:
chenlin
2025-12-13 18:14:36 +08:00
9 changed files with 38 additions and 25 deletions

View File

@@ -122,20 +122,20 @@ export const getTrainingManagementDataPark = (data) => {
// 动环监控-总设备数 /jeelowcode/power_env_device_totol_num // 动环监控-总设备数 /jeelowcode/power_env_device_totol_num
export const getPowerEnvDeviceTotalNum = (data) => { export const getPowerEnvDeviceTotalNum = (data) => {
return request.post({ url: '/jeelowcode/power_env_device_totol_num', data }) return request.post({ url: '/jeelowcode/report-data/list/power_env_device_totol_num', data })
} }
// 动环监控-告警设备类型分布 /jeelowcode/power_env_device_alarm_distribution // 动环监控-告警设备类型分布 /jeelowcode/power_env_device_alarm_distribution
export const getPowerEnvDeviceAlarmDistribution = (data) => { export const getPowerEnvDeviceAlarmDistribution = (data) => {
return request.post({ url: '/jeelowcode/power_env_device_alarm_distribution', data }) return request.post({ url: '/jeelowcode/report-data/list/power_env_device_alarm_distribution', data })
} }
// 动环监控-当月告警趋势 /jeelowcode/power_env_alarm_trend // 动环监控-当月告警趋势 /jeelowcode/power_env_alarm_trend
export const getPowerEnvAlarmTrend = (data) => { export const getPowerEnvAlarmTrend = (data) => {
return request.post({ url: '/jeelowcode/power_env_alarm_trend', data }) return request.post({ url: '/jeelowcode/report-data/list/power_env_alarm_trend', data })
} }
// 动环监控-园区信息列表 /jeelowcode/power_env_device_group_type_campus // 动环监控-园区信息列表 /jeelowcode/power_env_device_group_type_campus
export const getPowerEnvDeviceGroupTypeCampus = (data) => { export const getPowerEnvDeviceGroupTypeCampus = (data) => {
return request.post({ url: '/jeelowcode/power_env_device_group_type_campus', data }) return request.post({ url: '/jeelowcode/report-data/list/power_env_device_group_type_campus', data })
} }

View File

@@ -102,10 +102,17 @@ router.beforeEach(async (to, from, next) => {
} else { } else {
if(import.meta.env.VITE_DEFAULT_SSO =='true'){ if(import.meta.env.VITE_DEFAULT_SSO =='true'){
authUtil.setTenantId("1") authUtil.setTenantId("1")
// 正确构造包含查询参数的重定向URL
let redirectUrl = to.fullPath;
if (Object.keys(to.query).length > 0) {
const queryParams = new URLSearchParams(to.query as Record<string, string>).toString();
redirectUrl = `${to.path}?${queryParams}`;
}
const redirectUri = const redirectUri =
location.origin + location.origin +
'/social-login?' + '/social-login?' +
`type=100&redirect=${to.fullPath}` `type=100&redirect=${encodeURIComponent(redirectUrl)}`
// 进行跳转 // 进行跳转
const res = await LoginApi.socialAuthRedirect(100, encodeURIComponent(redirectUri)) const res = await LoginApi.socialAuthRedirect(100, encodeURIComponent(redirectUri))

View File

@@ -52,7 +52,7 @@
class="alert-text" class="alert-text"
:class="[{ error: item.error }, { warn: item.warn }]" :class="[{ error: item.error }, { warn: item.warn }]"
> >
{{ (index + 1) }} {{ item.text }} <a href="'http://10.0.64.20/pms/workorder-list'">{{ (index + 1) }} {{ item.text }}</a>
</span> </span>
</div> </div>
</div> </div>

View File

@@ -61,7 +61,7 @@
<div class="safe-wrapper"> <div class="safe-wrapper">
<span class="safe-title"> <span class="safe-title">
<img width="22" style="margin: 3px 5px 0 0" src="@/assets/images/ybp_icon.png" /> <img width="22" style="margin: 3px 5px 0 0" src="@/assets/images/ybp_icon.png" />
安全指数: 安全指数:<p title="安全指数 = 逾期隐患百分比 × 60% + 安全考核通过率 × 20% + 安全培训完成率 × 20%"></p>
</span> </span>
<span class="pending-count">{{ hiddenDangerData?.safetyIndex || 0 }}</span> <span class="pending-count">{{ hiddenDangerData?.safetyIndex || 0 }}</span>
</div> </div>
@@ -392,7 +392,8 @@ onMounted(() => {
} }
} }
} }
p{width:17px; height:17px; background-color:rgb(125, 125, 152); border-radius:50%; text-align:center; }
p:before{content:'?'; color:yellow; font-weight: bold;}
.center-container { .center-container {
position: fixed; position: fixed;
top: 55%; top: 55%;

View File

@@ -263,7 +263,7 @@ onMounted(() => {
line-height: 25px; line-height: 25px;
color: #fff; color: #fff;
text-align: center; text-align: center;
background-color: #1afb8f; background-color: #158e56;
border-radius: 2px; border-radius: 2px;
transition: all 0.3s ease; transition: all 0.3s ease;
} }

View File

@@ -11,12 +11,12 @@
{{ currentTime }} {{ currentTime }}
</div> </div>
</div> </div>
<span class="weather-warning"> <!-- <span class="weather-warning">
天气预警: 天气预警:
<span style="color: red"> <span style="color: red">
2025年08月19日13:25分中央气象台发布雄安地区于17时至夜间将有200毫米强降雨并伴有10级大风...... 2025年08月19日13:25分中央气象台发布雄安地区于17时至夜间将有200毫米强降雨并伴有10级大风......
</span> </span>
</span> </span> -->
<!-- 主内容区 --> <!-- 主内容区 -->
<div class="content-container"> <div class="content-container">
<div class="left-wrapper"> <div class="left-wrapper">

View File

@@ -1,15 +1,15 @@
<template> <template>
<div class="weather-warning"> <div class="weather-warning">
<span>天气预警:</span> <!-- <span>天气预警:</span> -->
<!-- 预报内容 --> <!-- 预报内容 -->
<div class="weather-scroll-container" @mouseenter="stopWeatherScroll" @mouseleave="startWeatherScroll"> <!-- <div class="weather-scroll-container" @mouseenter="stopWeatherScroll" @mouseleave="startWeatherScroll">
<div class="weather-scroll-content" :style="{ transform: `translateX(${scrollPosition}px)` }"> <div class="weather-scroll-content" :style="{ transform: `translateX(${scrollPosition}px)` }">
<span v-for="(item, index) in weatherData" :key="index" class="weather-item" <span v-for="(item, index) in weatherData" :key="index" class="weather-item"
:style="{ color: getLevelColor(item.level_code) }"> :style="{ color: getLevelColor(item.level_code) }">
{{ item.content }} {{ item.content }}
</span> </span>
</div> </div>
</div> </div> -->
</div> </div>
</template> </template>

View File

@@ -1355,7 +1355,7 @@ const timeOut1 = (): void => {
@keyframes typeFlashEffect { @keyframes typeFlashEffect {
0% { 0% {
background-color: #1afb8f; background-color: #158e56;
} }
50% { 50% {
@@ -1363,7 +1363,7 @@ const timeOut1 = (): void => {
} }
100% { 100% {
background-color: #1afb8f; background-color: #158e56;
} }
} }
@@ -1381,14 +1381,14 @@ const timeOut1 = (): void => {
line-height: 25px; line-height: 25px;
color: #fff; color: #fff;
text-align: center; text-align: center;
background-color: #1afb8f; background-color: #158e56;
border-radius: 2px; border-radius: 2px;
animation: typeNumberPulse 1.5s ease-in-out infinite; animation: typeNumberPulse 1.5s ease-in-out infinite;
transition: all 0.3s ease; transition: all 0.3s ease;
} }
.type-number:hover { .type-number:hover {
background-color: #16d47a; background-color: #158e56;
transform: scale(1.2); transform: scale(1.2);
} }

View File

@@ -27,7 +27,7 @@
<div class="card-title">在线设备数</div> <div class="card-title">在线设备数</div>
<div class="card-value">{{ onlineDevices.toLocaleString() }}</div> <div class="card-value">{{ onlineDevices.toLocaleString() }}</div>
<div class="card-trend online-rate"> <div class="card-trend online-rate">
<span>在线率 {{ onlineRate }}%</span> <!-- <span>在线率 {{ onlineRate }}%</span> -->
</div> </div>
</div> </div>
</div> </div>
@@ -109,6 +109,8 @@
<a <a
:class="['detail-link', row.hasAlarm ? 'detail-alarm' : 'detail-normal']" :class="['detail-link', row.hasAlarm ? 'detail-alarm' : 'detail-normal']"
@click="handleViewDetail(row)" @click="handleViewDetail(row)"
:href="'http://10.0.64.20/configcenter/console/device-manage'"
target="_blank"
> >
<span v-if="row.hasAlarm" class="alarm-badge">异常</span> <span v-if="row.hasAlarm" class="alarm-badge">异常</span>
<span v-else class="normal-badge">正常</span> <span v-else class="normal-badge">正常</span>
@@ -440,8 +442,10 @@ const fetchTotalDevices = async () => {
pageSize: 10 pageSize: 10
}; };
const response = await getPowerEnvDeviceTotalNum(params); const response = await getPowerEnvDeviceTotalNum(params);
if (response.code === 0 && response.data?.records?.length > 0) { debugger
const total = parseInt(response.data.records[0].total || '0', 10); if (response.records?.length > 0) {
debugger
const total = parseInt(response.records[0].total || '0', 10);
totalDevices.value = total; totalDevices.value = total;
onlineDevices.value = total; // 在线设备数也用total onlineDevices.value = total; // 在线设备数也用total
} }
@@ -522,11 +526,12 @@ const fetchParkList = async () => {
pageSize: parkListPage.value.pageSize pageSize: parkListPage.value.pageSize
}; };
const response = await getPowerEnvDeviceGroupTypeCampus(params); const response = await getPowerEnvDeviceGroupTypeCampus(params);
if (response.code === 0 && response.data) { debugger
parkListPage.value.total = response.data.total || 0; if (response.records?.length>0) {
parkListPage.value.total = response.records?.length || 0;
if (response.data.records && response.data.records.length > 0) { if (response.records && response.records.length > 0) {
parkList.value = response.data.records.map((item: any) => { parkList.value = response.records.map((item: any) => {
const upsCount = parseInt(item.ups || '0', 10); const upsCount = parseInt(item.ups || '0', 10);
const jmktCount = parseInt(item.jmkt || '0', 10); const jmktCount = parseInt(item.jmkt || '0', 10);
const wsdCount = parseInt(item.wsd || '0', 10); const wsdCount = parseInt(item.wsd || '0', 10);