|
|
@@ -1,115 +1,172 @@
|
|
|
<template>
|
|
|
<div class="screen">
|
|
|
- <div style="height: 10px"></div>
|
|
|
+ <div style="height: 10px" />
|
|
|
<div class="titleImage">
|
|
|
<el-image :src="titleUrl" />
|
|
|
<span class="Heading">龙弛智慧隧道系统</span>
|
|
|
- <div class="titleOption" style="left: 19%" @click="jumpScreen('map')">
|
|
|
+ <div
|
|
|
+ class="titleOption"
|
|
|
+ style="left: 19%"
|
|
|
+ >
|
|
|
<span>地图</span>
|
|
|
</div>
|
|
|
- <div class="titleOption" style="left: 76%" @click="jumpScreen('model')">
|
|
|
+ <div
|
|
|
+ class="titleOption"
|
|
|
+ style="left: 76%"
|
|
|
+ >
|
|
|
<span>模型</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div style="height: 10px"></div>
|
|
|
+ <div style="height: 10px" />
|
|
|
<el-row>
|
|
|
- <el-col :span="5" style="height: 900px;">
|
|
|
+ <el-col
|
|
|
+ :span="5"
|
|
|
+ style="height: 900px;"
|
|
|
+ >
|
|
|
<div class="deviceBox">
|
|
|
- <img src="@/assets/main_top_left.png" alt=""/>
|
|
|
- <div class="titleIcon"></div>
|
|
|
+ <img
|
|
|
+ src="@/assets/main_top_left.png"
|
|
|
+ alt=""
|
|
|
+ >
|
|
|
+ <div class="titleIcon" />
|
|
|
<div class="deviceBox_title">设备汇总</div>
|
|
|
<div class="deviceOptionBox">
|
|
|
- <div class="deviceOption" v-for="item in deviceList">
|
|
|
- <img :src="item.url" style="width: 35px;height: 35px" alt=""/>
|
|
|
- <el-text style="padding-top: 8px;color: #ffffff" size="small">{{item.label + item.value}}</el-text>
|
|
|
+ <div
|
|
|
+ v-for="item in deviceList"
|
|
|
+ class="deviceOption"
|
|
|
+ >
|
|
|
+ <img
|
|
|
+ :src="item.url"
|
|
|
+ style="width: 35px;height: 35px"
|
|
|
+ alt=""
|
|
|
+ >
|
|
|
+ <el-text
|
|
|
+ style="padding-top: 8px;color: #ffffff"
|
|
|
+ size="small"
|
|
|
+ >{{ item.label + item.value }}</el-text>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="chartBox">
|
|
|
- <Chart/>
|
|
|
+ <Chart />
|
|
|
</div>
|
|
|
<div class="chartBox">
|
|
|
- <lightChart/>
|
|
|
+ <lightChart />
|
|
|
</div>
|
|
|
</el-col>
|
|
|
- <el-col :span="14" style="display: flex;justify-content: center">
|
|
|
+ <el-col
|
|
|
+ :span="14"
|
|
|
+ style="display: flex;justify-content: center"
|
|
|
+ >
|
|
|
<div class="centerBox">
|
|
|
- <Map @call-parent="parentMethod"/>
|
|
|
+ <Map v-if="useScreen.screenType === 'map'" />
|
|
|
+ <div
|
|
|
+ v-if="useScreen.screenType === 'pattern'"
|
|
|
+ style="position: relative"
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ style="position: absolute;z-index: 1;"
|
|
|
+ type="info"
|
|
|
+ text
|
|
|
+ icon="ArrowLeft"
|
|
|
+ @click="returnMap"
|
|
|
+ >
|
|
|
+ 返回地图
|
|
|
+ </el-button>
|
|
|
+ <Pattern style="position: absolute;z-index: 2;pointer-events: none;" />
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</el-col>
|
|
|
- <el-col :span="5" class="rightBox">
|
|
|
- <div style="height: 20px"></div>
|
|
|
+ <el-col
|
|
|
+ :span="5"
|
|
|
+ class="rightBox"
|
|
|
+ >
|
|
|
+ <div style="height: 20px" />
|
|
|
<div class="panel">
|
|
|
<span class="panel-title">亮度调整</span>
|
|
|
<el-slider
|
|
|
- v-model="transparency"
|
|
|
- :step="50"
|
|
|
- show-stops
|
|
|
- :show-tooltip="false"
|
|
|
- class="panel-slider"
|
|
|
- @change="changeTransparency"
|
|
|
+ v-model="transparency"
|
|
|
+ :step="50"
|
|
|
+ show-stops
|
|
|
+ :show-tooltip="false"
|
|
|
+ class="panel-slider"
|
|
|
+ @change="changeTransparency"
|
|
|
/>
|
|
|
- <div class="brightness" style="margin: 90px 0 0 50px;">
|
|
|
+ <div
|
|
|
+ class="brightness"
|
|
|
+ style="margin: 90px 0 0 50px;"
|
|
|
+ >
|
|
|
<span>低</span>
|
|
|
<span>中</span>
|
|
|
<span>高</span>
|
|
|
</div>
|
|
|
<el-slider
|
|
|
- v-model="transparencyTwo"
|
|
|
- :step="50"
|
|
|
- show-stops
|
|
|
- :show-tooltip="false"
|
|
|
- class="panel-slider2"
|
|
|
- @change="changeTransparencyTwo"
|
|
|
+ v-model="transparencyTwo"
|
|
|
+ :step="50"
|
|
|
+ show-stops
|
|
|
+ :show-tooltip="false"
|
|
|
+ class="panel-slider2"
|
|
|
+ @change="changeTransparencyTwo"
|
|
|
/>
|
|
|
- <div class="brightness" style="margin: 50px 0 0 50px;">
|
|
|
+ <div
|
|
|
+ class="brightness"
|
|
|
+ style="margin: 50px 0 0 50px;"
|
|
|
+ >
|
|
|
<span>低</span>
|
|
|
<span>中</span>
|
|
|
<span>高</span>
|
|
|
</div>
|
|
|
- <div class="panel-bottom"></div>
|
|
|
+ <div class="panel-bottom" />
|
|
|
</div>
|
|
|
-<!-- <div class="vehicleBox">-->
|
|
|
-<!-- <div class="panel" style="height: 190px">-->
|
|
|
-<!-- <span class="panel-title">车辆检测器</span>-->
|
|
|
-<!-- <el-form style="position: absolute;left: 40px;top: 50px">-->
|
|
|
-<!-- <el-form-item label="交通量" label-width="110" label-position="left">-->
|
|
|
-<!-- <el-row style="width: 200px">-->
|
|
|
-<!-- <el-col :span="15" class="vehicleData">-->
|
|
|
-<!-- <span>123</span>-->
|
|
|
-<!-- </el-col>-->
|
|
|
-<!-- <el-col :span="9" class="vehicleUnit">-->
|
|
|
-<!-- <span>辆</span>-->
|
|
|
-<!-- </el-col>-->
|
|
|
-<!-- </el-row>-->
|
|
|
-<!-- </el-form-item>-->
|
|
|
-<!-- <el-form-item label="平均车速" label-width="110" label-position="left">-->
|
|
|
-<!-- <el-row style="width: 200px">-->
|
|
|
-<!-- <el-col :span="15" class="vehicleData">-->
|
|
|
-<!-- <span>66</span>-->
|
|
|
-<!-- </el-col>-->
|
|
|
-<!-- <el-col :span="9" class="vehicleUnit">-->
|
|
|
-<!-- <span>km/h</span>-->
|
|
|
-<!-- </el-col>-->
|
|
|
-<!-- </el-row>-->
|
|
|
-<!-- </el-form-item>-->
|
|
|
-<!-- <el-form-item label="车道占有量" label-width="110" label-position="left">-->
|
|
|
-<!-- <el-row style="width: 200px">-->
|
|
|
-<!-- <el-col :span="15" class="vehicleData">-->
|
|
|
-<!-- <span>12</span>-->
|
|
|
-<!-- </el-col>-->
|
|
|
-<!-- <el-col :span="9" class="vehicleUnit">-->
|
|
|
-<!-- <span>%</span>-->
|
|
|
-<!-- </el-col>-->
|
|
|
-<!-- </el-row>-->
|
|
|
-<!-- </el-form-item>-->
|
|
|
-<!-- </el-form>-->
|
|
|
-<!-- <div class="panel-bottom"></div>-->
|
|
|
-<!-- </div>-->
|
|
|
-<!-- </div>-->
|
|
|
+ <!-- <div class="vehicleBox">-->
|
|
|
+ <!-- <div class="panel" style="height: 190px">-->
|
|
|
+ <!-- <span class="panel-title">车辆检测器</span>-->
|
|
|
+ <!-- <el-form style="position: absolute;left: 40px;top: 50px">-->
|
|
|
+ <!-- <el-form-item label="交通量" label-width="110" label-position="left">-->
|
|
|
+ <!-- <el-row style="width: 200px">-->
|
|
|
+ <!-- <el-col :span="15" class="vehicleData">-->
|
|
|
+ <!-- <span>123</span>-->
|
|
|
+ <!-- </el-col>-->
|
|
|
+ <!-- <el-col :span="9" class="vehicleUnit">-->
|
|
|
+ <!-- <span>辆</span>-->
|
|
|
+ <!-- </el-col>-->
|
|
|
+ <!-- </el-row>-->
|
|
|
+ <!-- </el-form-item>-->
|
|
|
+ <!-- <el-form-item label="平均车速" label-width="110" label-position="left">-->
|
|
|
+ <!-- <el-row style="width: 200px">-->
|
|
|
+ <!-- <el-col :span="15" class="vehicleData">-->
|
|
|
+ <!-- <span>66</span>-->
|
|
|
+ <!-- </el-col>-->
|
|
|
+ <!-- <el-col :span="9" class="vehicleUnit">-->
|
|
|
+ <!-- <span>km/h</span>-->
|
|
|
+ <!-- </el-col>-->
|
|
|
+ <!-- </el-row>-->
|
|
|
+ <!-- </el-form-item>-->
|
|
|
+ <!-- <el-form-item label="车道占有量" label-width="110" label-position="left">-->
|
|
|
+ <!-- <el-row style="width: 200px">-->
|
|
|
+ <!-- <el-col :span="15" class="vehicleData">-->
|
|
|
+ <!-- <span>12</span>-->
|
|
|
+ <!-- </el-col>-->
|
|
|
+ <!-- <el-col :span="9" class="vehicleUnit">-->
|
|
|
+ <!-- <span>%</span>-->
|
|
|
+ <!-- </el-col>-->
|
|
|
+ <!-- </el-row>-->
|
|
|
+ <!-- </el-form-item>-->
|
|
|
+ <!-- </el-form>-->
|
|
|
+ <!-- <div class="panel-bottom"></div>-->
|
|
|
+ <!-- </div>-->
|
|
|
+ <!-- </div>-->
|
|
|
<div class="warnBox">
|
|
|
- <img :src="warn" alt="" class="warnBoxExternal" />
|
|
|
- <img :src="warnTitle" alt="" class="warnBoxTitle"/>
|
|
|
+ <img
|
|
|
+ :src="warn"
|
|
|
+ alt=""
|
|
|
+ class="warnBoxExternal"
|
|
|
+ >
|
|
|
+ <img
|
|
|
+ :src="warnTitle"
|
|
|
+ alt=""
|
|
|
+ class="warnBoxTitle"
|
|
|
+ >
|
|
|
<span>警告列表</span>
|
|
|
</div>
|
|
|
</el-col>
|
|
|
@@ -120,32 +177,34 @@
|
|
|
<script setup>
|
|
|
// 标题图片
|
|
|
import titleUrl from '@/assets/title_bg.png'
|
|
|
-import environments from "@/assets/icons/environment.png";
|
|
|
-import fourWays from "@/assets/icons/fourWays.png"
|
|
|
-import inductance from "@/assets/icons/inductance.png"
|
|
|
-import singleLamp from "@/assets/icons/singleLamp.png"
|
|
|
-import Chart from "./components/chart.vue";
|
|
|
+import environments from '@/assets/icons/environment.png'
|
|
|
+import fourWays from '@/assets/icons/fourWays.png'
|
|
|
+import inductance from '@/assets/icons/inductance.png'
|
|
|
+import singleLamp from '@/assets/icons/singleLamp.png'
|
|
|
+import Chart from './components/chart.vue'
|
|
|
import warn from '@/assets/main_bottopm_top2.png'
|
|
|
import Map from './components/map.vue'
|
|
|
+import Pattern from './components/pattern.vue'
|
|
|
import warnTitle from '@/assets/warnTitle.png'
|
|
|
import lightChart from './components/lightChart.vue'
|
|
|
import { queryTunnelList } from '@/api/tunnel'
|
|
|
-import {reactive, onMounted, ref, watch} from 'vue'
|
|
|
+import { reactive, onMounted, ref, watch } from 'vue'
|
|
|
// 单灯控制
|
|
|
-import { updateTunnelLamp } from "@/api/tunnel";
|
|
|
+import { updateTunnelLamp } from '@/api/tunnel'
|
|
|
// 四路控制
|
|
|
-import { deviceSwitch } from "@/api/device";
|
|
|
-import {useScreenStore} from "@/pinia/modules/screen";
|
|
|
-import {ElMessage} from "element-plus";
|
|
|
+import { deviceSwitch } from '@/api/device'
|
|
|
+import { useScreenStore } from '@/pinia/modules/screen'
|
|
|
+import { ElMessage } from 'element-plus'
|
|
|
+
|
|
|
// 灯光数据
|
|
|
const lampData = reactive({})
|
|
|
const useScreen = useScreenStore()
|
|
|
|
|
|
const deviceList = reactive([
|
|
|
- {url: environments, label: '环境:', value: '1/0'},
|
|
|
- {url: fourWays, label: '四路:', value: '1/0'},
|
|
|
- {url: inductance, label: '电感:', value: '1/0'},
|
|
|
- {url: singleLamp, label: '单灯:', value: '1/0'},
|
|
|
+ { url: environments, label: '环境:', value: '1/0' },
|
|
|
+ { url: fourWays, label: '四路:', value: '1/0' },
|
|
|
+ { url: inductance, label: '电感:', value: '1/0' },
|
|
|
+ { url: singleLamp, label: '单灯:', value: '1/0' },
|
|
|
])
|
|
|
|
|
|
const condition = {
|
|
|
@@ -159,14 +218,14 @@ const condition = {
|
|
|
}
|
|
|
|
|
|
// 存储模型数据
|
|
|
-let materialOne = reactive({})
|
|
|
-let materialTwo = reactive({})
|
|
|
+const materialOne = reactive({})
|
|
|
+const materialTwo = reactive({})
|
|
|
|
|
|
// 亮度调整
|
|
|
const transparency = ref(0)
|
|
|
const relayList = reactive([])
|
|
|
const changeTransparency = (e) => {
|
|
|
- let option = {
|
|
|
+ const option = {
|
|
|
0: [0.8, 33, 1],
|
|
|
50: [0.5, 66, 2],
|
|
|
100: [0.2, 100, 3]
|
|
|
@@ -183,9 +242,9 @@ const changeTransparency = (e) => {
|
|
|
}
|
|
|
})
|
|
|
} else {
|
|
|
- let relay = relayList[0].deviceRelays
|
|
|
+ const relay = relayList[0].deviceRelays
|
|
|
for (let i = 0; i < relay.length; i++) {
|
|
|
- relay[i].state = i < option[e][2];
|
|
|
+ relay[i].state = i < option[e][2]
|
|
|
}
|
|
|
for (let j = 0; j < relay.length; j++) {
|
|
|
deviceSwitch({
|
|
|
@@ -204,7 +263,7 @@ const changeTransparency = (e) => {
|
|
|
|
|
|
const transparencyTwo = ref(0)
|
|
|
const changeTransparencyTwo = (e) => {
|
|
|
- let option = {
|
|
|
+ const option = {
|
|
|
0: [0.8, 33, 1],
|
|
|
50: [0.5, 66, 2],
|
|
|
100: [0.2, 100, 3]
|
|
|
@@ -221,9 +280,9 @@ const changeTransparencyTwo = (e) => {
|
|
|
}
|
|
|
})
|
|
|
} else {
|
|
|
- let relay = relayList[1].deviceRelays
|
|
|
+ const relay = relayList[1].deviceRelays
|
|
|
for (let i = 0; i < relay.length; i++) {
|
|
|
- relay[i].state = i < option[e][2];
|
|
|
+ relay[i].state = i < option[e][2]
|
|
|
}
|
|
|
for (let j = 0; j < relay.length; j++) {
|
|
|
deviceSwitch({
|
|
|
@@ -233,41 +292,36 @@ const changeTransparencyTwo = (e) => {
|
|
|
state: relay[j].state
|
|
|
}).then(res => {
|
|
|
if (res.code === 0) {
|
|
|
- console.log('发送成功');
|
|
|
+ console.log('发送成功')
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-const parentMethod = (e) => {
|
|
|
- console.log('子组件调用了')
|
|
|
- console.log(e)
|
|
|
-}
|
|
|
-
|
|
|
const brightness = () => {
|
|
|
if (lampData.switchType === '单灯控制器') {
|
|
|
- let val1 = lampData.lampValue1
|
|
|
- let val2 = lampData.lampValue2
|
|
|
- let judge = {
|
|
|
- 0:[0.8,0],
|
|
|
- 33: [0.8,0],
|
|
|
- 66: [0.5,50],
|
|
|
- 100: [0.2,100],
|
|
|
+ const val1 = lampData.lampValue1
|
|
|
+ const val2 = lampData.lampValue2
|
|
|
+ const judge = {
|
|
|
+ 0: [0.8, 0],
|
|
|
+ 33: [0.8, 0],
|
|
|
+ 66: [0.5, 50],
|
|
|
+ 100: [0.2, 100],
|
|
|
}
|
|
|
transparency.value = judge[val1][1]
|
|
|
transparencyTwo.value = judge[val1][1]
|
|
|
materialOne.opacity = judge[val1][0]
|
|
|
materialTwo.opacity = judge[val2][0]
|
|
|
- } else if(lampData.switchType === '四路控制器') {
|
|
|
+ } else if (lampData.switchType === '四路控制器') {
|
|
|
relayList.length = 0
|
|
|
lampData.devices.forEach(item => {
|
|
|
if (item.genre === 6) {
|
|
|
relayList.push(item)
|
|
|
}
|
|
|
})
|
|
|
- let deviceLamp1 = relayList[0].deviceRelays
|
|
|
- let deviceLamp2 = relayList[1].deviceRelays
|
|
|
+ const deviceLamp1 = relayList[0].deviceRelays
|
|
|
+ const deviceLamp2 = relayList[1].deviceRelays
|
|
|
let count1 = 0
|
|
|
let count2 = 0
|
|
|
deviceLamp1.forEach(item => {
|
|
|
@@ -276,12 +330,12 @@ const brightness = () => {
|
|
|
deviceLamp2.forEach(item => {
|
|
|
item.state ? count2++ : count2
|
|
|
})
|
|
|
- let judgeWay = {
|
|
|
- 0: [0.8,0],
|
|
|
- 1: [0.8,0],
|
|
|
- 2: [0.5,50],
|
|
|
- 3: [0.2,100],
|
|
|
- 4: [0.2,100]
|
|
|
+ const judgeWay = {
|
|
|
+ 0: [0.8, 0],
|
|
|
+ 1: [0.8, 0],
|
|
|
+ 2: [0.5, 50],
|
|
|
+ 3: [0.2, 100],
|
|
|
+ 4: [0.2, 100]
|
|
|
}
|
|
|
transparency.value = judgeWay[count1][1]
|
|
|
transparencyTwo.value = judgeWay[count2][1]
|
|
|
@@ -307,6 +361,11 @@ const yourMethod = (value) => {
|
|
|
Object.assign(lampData, value)
|
|
|
brightness()
|
|
|
}
|
|
|
+
|
|
|
+const returnMap = () => {
|
|
|
+ console.log('返回地图')
|
|
|
+ useScreen.setScreenType('map')
|
|
|
+}
|
|
|
</script>
|
|
|
|
|
|
<style scoped lang="less">
|
|
|
@@ -546,5 +605,9 @@ const yourMethod = (value) => {
|
|
|
margin-top: 20px;
|
|
|
}
|
|
|
|
|
|
+.three-container {
|
|
|
+ height: 800px;
|
|
|
+ width: 100%;
|
|
|
+}
|
|
|
</style>
|
|
|
|