fix: 图片修改,增加组件等功能。

This commit is contained in:
tianyongbao
2025-04-30 17:04:13 +08:00
parent 5e0d04bfd3
commit 1beb28eae2
30 changed files with 191 additions and 28 deletions

View File

@@ -2,10 +2,11 @@
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<link rel="icon" href="/static/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title></title>
<script type="text/javascript" src="/EasyWasmPlayer.js"></script>
</head>
<body>
<div id="app"></div>

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@@ -90,7 +90,7 @@ export function sunRiseSet(query) {
});
}
// 灯杆统计
// 场所统计
export function lightPoleCount(query) {
return request({
url: "/smartlight/screen/lightPoleCount",
@@ -150,7 +150,7 @@ export function getSwitchBox(id) {
});
}
// 获取灯杆详情
// 获取场所详情
export function getPoleDevice(id) {
return request({
url: `/smartlight/light/lightPole/getLightDeviceList/${id}`,

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

@@ -299,7 +299,7 @@
}
}
// 灯杆详情
// 场所详情
.pole-dialog-wrapper {
width: 9.14rem;
height: 5.63rem;

View File

@@ -289,7 +289,7 @@
}
}
// 灯杆统计
// 场所统计
.pole-wrapper {
margin-left: 0.12rem;

View File

@@ -125,7 +125,7 @@ $themes: (blue: (title_color: #D9E7FF, // 银海立交智慧照明平台(标
information_jiaotong_color: #CEEBFF,
putin_desc: #CEEBFF,
// 灯杆弹窗
// 场所弹窗
dialog_title: #D9E7FF,
pole_function_normal: #C8D3E9,
pole_function_active: #fff,
@@ -273,7 +273,7 @@ $themes: (blue: (title_color: #D9E7FF, // 银海立交智慧照明平台(标
information_jiaotong_color: #D9F7FF,
putin_desc : #D9D9D9,
// 灯杆弹窗
// 场所弹窗
dialog_title: #FFF2DF,
pole_function_normal:#E8DECF,
pole_function_active:#FFF2DF,

View File

@@ -119,8 +119,8 @@ export function createPopupEle(item, flag) {
<div class="popup-wrapper">
<div class="popup-title">${item.feature.name}</div>
<div class="popup-content">
<div class="item">设备编号:<span class="num">${item.feature.code}</span></div>
${item.feature.type === '1' ? `<div class="item">关联灯杆数:<span class="num">${item.feature.deviceCount}</span>个</div>` : ''}
<div class="item">场所编号:<span class="num">${item.feature.code}</span></div>
${item.feature.type === '1' ? `<div class="item">关联场所数:<span class="num">${item.feature.deviceCount}</span>个</div>` : ''}
${item.feature.type === '2' ? `<div class="item">挂载设备数:<span class="num">${item.feature.deviceCount}</span>个</div>` : ''}
${item.feature.type === '3' ? `<div class="item">控制灯具数:<span class="num">${item.feature.deviceCount}</span>个</div>` : ''}
<div class="item">现存故障:<span class="${item.feature.alarmTypeLabel ? 'error' :'' }">${item.feature.alarmTypeLabel || '无' }</span></div>

View File

@@ -9,9 +9,9 @@
</div>
<div class="cabinet-info">
<span class="square"></span>
<span class="info-text">设备编号{{ cabinet.code }}</span>
<span class="info-text">场所编号{{ cabinet.code }}</span>
<span class="square"></span>
<span class="info-text">关联灯杆{{ cabinet.deviceCount }}</span>
<span class="info-text">关联场所{{ cabinet.deviceCount }}</span>
<span class="square"></span>
<span class="info-text">
现存故障 <span v-if="!cabinet.alarmTypeLabel"></span>

View File

@@ -110,7 +110,7 @@ const changeFunction = (item) => {
getInfo(item);
};
// 获取灯杆挂载设备
// 获取场所挂载设备
const deviceList = ref([]);
getPoleDevice(props.pole.id).then((res) => {
if (res.data?.length > 0) {
@@ -129,7 +129,7 @@ getPoleDevice(props.pole.id).then((res) => {
getInfo(deviceList.value[0]);
} else {
deviceList.value = [];
ElMessage.warning("该灯杆未挂载设备");
ElMessage.warning("该场所未挂载设备");
}
});

View File

@@ -0,0 +1,74 @@
<template>
<div class="environment-wrapper">
<div class="search" @click.stop="handleSearch">
<el-select
v-model="searchData.itemId"
placeholder="请选择..."
@change="deviceChange"
:teleported="false"
>
<el-option
v-for="item in deviceList"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</div>
<div class="content">
<div class="item" v-for="item in list" :key="item.id">
<div class="name">{{ item.name }}</div>
<div class="num-con">
<div class="num">{{ item.num }}</div>
<div class="unit">{{ item.unit }}</div>
</div>
</div>
</div>
</div>
</template>
<script setup>
import { environmentData, environmentItem } from "@/api/largeScreen";
import { onMounted } from "vue";
const props = defineProps(["buildingId"]);
const searchContent = ref("请选择...");
const searchData = ref({});
const deviceList = ref([]); //传感器list
const list = ref([
{ id: 0, name: "氧气", num: "--", unit: "%" },
{ id: 1, name: "硫化氢", num: "--", unit: "ppm" },
{ id: 2, name: "甲烷", num: "--", unit: "%lel" },
{ id: 0, name: "一氧化碳", num: "--", unit: "ppm" },
{ id: 0, name: "氨气", num: "--", unit: "ppm" },
{ id: 0, name: "二氧化碳", num: "--", unit: "ppm" },
]);
// el-select切换获取新数据
const deviceChange = (val) => {
getItem(val);
};
// 获取传感器下监测项
const getItem = (val) => {
environmentItem({ id: val }).then((res) => {
list.value[0].num = res.data.noise;
list.value[1].num = res.data.windSpeed;
list.value[2].num = res.data.pm25;
list.value[3].num = res.data.temperature;
list.value[4].num = res.data.humidity;
list.value[5].num = res.data.pressure;
});
};
onMounted(() => {
// 获取传感器list
environmentData({ buildingIdList: props.buildingId }).then((res) => {
deviceList.value = res.rows;
if (res.rows.length !== 0) {
searchData.value.itemId = deviceList.value[0].id;
getItem(deviceList.value[0].id);
}
});
});
</script>
<style lang="scss" scoped></style>

View File

@@ -18,9 +18,9 @@ import { onMounted } from "vue";
const props = defineProps(["buildingId"]);
const list = ref([
{ id: 0, name: "灯杆总数", num: 0, unit: "" },
{ id: 1, name: "灯控总数", num: 0, unit: "个" },
{ id: 2, name: "灯具总数", num: 0, unit: "个" },
{ id: 0, name: "监控场所", num: 0, unit: "" },
{ id: 1, name: "设备总数", num: 0, unit: "个" },
{ id: 2, name: "在线设备", num: 0, unit: "个" },
]);
onMounted(() => {

View File

@@ -0,0 +1,74 @@
<template>
<div class="environment-wrapper">
<div class="search" @click.stop="handleSearch">
<el-select
v-model="searchData.itemId"
placeholder="请选择..."
@change="deviceChange"
:teleported="false"
>
<el-option
v-for="item in deviceList"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</div>
<div class="content">
<div class="item" v-for="item in list" :key="item.id">
<div class="name">{{ item.name }}</div>
<div class="num-con">
<div class="num">{{ item.num }}</div>
<div class="unit">{{ item.unit }}</div>
</div>
</div>
</div>
</div>
</template>
<script setup>
import { environmentData, environmentItem } from "@/api/largeScreen";
import { onMounted } from "vue";
const props = defineProps(["buildingId"]);
const searchContent = ref("请选择...");
const searchData = ref({});
const deviceList = ref([]); //传感器list
const list = ref([
{ id: 0, name: "Ph值", num: "--", unit: "" },
{ id: 1, name: "色度", num: "--", unit: "度" },
{ id: 2, name: "浑浊度", num: "--", unit: "NTU" },
{ id: 0, name: "溶解氧", num: "--", unit: "%" },
{ id: 0, name: "细菌", num: "--", unit: "%" },
{ id: 0, name: "病毒", num: "--", unit: "%" },
]);
// el-select切换获取新数据
const deviceChange = (val) => {
getItem(val);
};
// 获取传感器下监测项
const getItem = (val) => {
environmentItem({ id: val }).then((res) => {
list.value[0].num = res.data.noise;
list.value[1].num = res.data.windSpeed;
list.value[2].num = res.data.pm25;
list.value[3].num = res.data.temperature;
list.value[4].num = res.data.humidity;
list.value[5].num = res.data.pressure;
});
};
onMounted(() => {
// 获取传感器list
environmentData({ buildingIdList: props.buildingId }).then((res) => {
deviceList.value = res.rows;
if (res.rows.length !== 0) {
searchData.value.itemId = deviceList.value[0].id;
getItem(deviceList.value[0].id);
}
});
});
</script>
<style lang="scss" scoped></style>

View File

@@ -184,7 +184,7 @@ const vcConfirm = (currentId, currentModuleId) => {
currentModule.value.active = false;
};
// 灯杆逻辑
// 场所逻辑
const showPoleDialog = ref(false);
const pole = ref({});
const poleClick = (data) => {

View File

@@ -86,6 +86,8 @@ import ComTitle from "../components/comp/title.vue";
import WorkOrderOverview from "../components/module/WorkOrderOverview.vue";
import LightingRate from "../components/module/LightingRate.vue";
import EnvironmentMonitor from "../components/module/EnvironmentMonitor.vue";
import WaterQualityMonitor from "../components/module/WaterQualityMonitor.vue";
import GasMonitor from "../components/module/GasMonitor.vue";
import LampPoleStatistics from "../components/module/LampPoleStatistics.vue";
import DueToday from "../components/module/DueToday.vue";
import MonthlyEnergyConsumption from "../components/module/MonthlyEnergyConsumption.vue";
@@ -132,8 +134,8 @@ const moduleObj = {
},
LightPole: {
moduleId: "7",
title: "灯杆统计",
titleEn: "LAMP POLE STATISTICS",
title: "场所统计",
titleEn: "SITE STATISTICS",
comp: LampPoleStatistics,
},
TodayPlan: {
@@ -178,6 +180,18 @@ const moduleObj = {
titleEn: "Environment",
comp: EnvironmentMonitor,
},
GasMonitor: {
moduleId: "13",
title: "气体监测",
titleEn: "GasMonitor",
comp: GasMonitor,
},
WaterQuality: {
moduleId: "14",
title: "水质监测",
titleEn: "WaterQualityMonitor",
comp: WaterQualityMonitor,
},
InfoScreen: {
moduleId: '11',
title: '屏幕总览',
@@ -195,7 +209,7 @@ const moduleObj = {
const deviceInfoList = ref([
{
id: 0,
name: "配电柜",
name: "传感器",
num: 0,
img: "DistributionCabinet",
isActive: false,
@@ -204,13 +218,13 @@ const deviceInfoList = ref([
{ id: 1, name: "摄像头", num: 0, img: "Camera", isActive: false, type: "4" },
{
id: 2,
name: "灯控",
name: "屏幕",
num: 0,
img: "LightControl",
isActive: false,
type: "3",
},
{ id: 3, name: "灯杆", num: 0, img: "Pole", isActive: true, type: "2" },
{ id: 3, name: "场所", num: 0, img: "Pole", isActive: true, type: "2" },
]);
const getTitle = (id) => {

View File

@@ -197,7 +197,7 @@ const handleThemeConfirm = (val) => {
const title = ref("");
function getDefaultTitle() {
getConfigKey("defaultTitle").then((res) => {
getConfigKey("iotTitle").then((res) => {
title.value = res.msg;
document.title = res.msg;
});

View File

@@ -170,13 +170,13 @@ function getCode() {
}
function getDefaultBg() {
getConfigKey("defaultBg").then((res) => {
getConfigKey("iotBg").then((res) => {
defaultBg.value = res.msg;
});
}
function getDefaultTitle() {
getConfigKey("defaultTitle").then((res) => {
getConfigKey("iotTitle").then((res) => {
title.value = res.msg;
document.title = res.msg;
});

BIN
static/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@@ -14,8 +14,8 @@ export default defineConfig({
server: {
proxy: {
'/api': { // 匹配请求路径,
// target: 'http://140.249.205.82:8288', // 代理的目标地址
target: 'http://127.0.0.1:8080', // 代理的目标地址
target: 'http://117.72.197.29:8080', // 代理的目标地址
// target: 'http://127.0.0.1:8080', // 代理的目标地址
changeOrigin: true,
// secure: true, // 是否https接口
// ws: true, // 是否代理websockets
@@ -23,7 +23,7 @@ export default defineConfig({
rewrite: (path) => path.replace(/^\/api/, '')
},
'/fileUrl': {
target: 'http://140.249.24.92:9000', // 本地
target: 'http://117.72.197.29:9000', // 本地
changeOrigin: true,
rewrite: (p) => p.replace(/^\/fileUrl/, '')
},