ソースを参照

Merge remote-tracking branch 'origin/master'

xu 7 ヶ月 前
コミット
e4e41213ef

+ 0 - 1
web/src/pinia/modules/screen.js

@@ -25,7 +25,6 @@ export const useScreenStore = defineStore('screen',() => {
 
     const setCurrentTunnel = (val) => {
         currentTunnel.value = val
-        console.log('执行2', currentTunnel.value)
     }
     return {
         controllerData,

+ 16 - 16
web/src/view/admin/dataDashboard/dataDashboard.vue

@@ -156,6 +156,8 @@ const initThree = () => {
 let materialOne = reactive({})
 let materialTwo = reactive({})
 
+const relayList = reactive([])
+
 
 // 加载 GLB 模型
 const loadModel = () => {
@@ -209,18 +211,14 @@ const changeTransparency = (e) => {
       }
     })
   } else {
-    let relay = lampData.devices[0].deviceRelays
+    let relay = relayList[0].deviceRelays
     for (let i = 0; i < relay.length; i++) {
-      if (i < option[e][2]) {
-        relay[i].state = true
-      } else {
-        relay[i].state = false
-      }
+      relay[i].state = i < option[e][2];
     }
     for (let j = 0; j < relay.length; j++) {
       deviceSwitch({
         tunnelSn: lampData.tunnelSn,
-        radarId: lampData.devices[0].radarId,
+        radarId: relayList[0].radarId,
         relayId: relay[j].relayId,
         state: relay[j].state
       }).then(res => {
@@ -251,18 +249,14 @@ const changeTransparencyTwo = (e) => {
       }
     })
   } else {
-    let relay = lampData.devices[1].deviceRelays
+    let relay = relayList[1].deviceRelays
     for (let i = 0; i < relay.length; i++) {
-      if (i < option[e][2]) {
-        relay[i].state = true
-      } else {
-        relay[i].state = false
-      }
+      relay[i].state = i < option[e][2];
     }
     for (let j = 0; j < relay.length; j++) {
       deviceSwitch({
         tunnelSn: lampData.tunnelSn,
-        radarId: lampData.devices[1].radarId,
+        radarId: relayList[1].radarId,
         relayId: relay[j].relayId,
         state: relay[j].state
       }).then(res => {
@@ -278,6 +272,7 @@ const changeTransparencyTwo = (e) => {
 const lampData = reactive({})
 
 const judgeLamp = () => {
+  relayList.length = 0
   if (lampData.switchType === '单灯控制器') {
     let val1 = lampData.lampValue1
     let val2 = lampData.lampValue2
@@ -291,8 +286,13 @@ const judgeLamp = () => {
     transparencyTwo.value = judge[val1][1]
     materialTwo.opacity = judge[val2][0]
   } else if(lampData.switchType === '四路控制器') {
-      let deviceLamp1 = lampData.devices[0].deviceRelays
-      let deviceLamp2 = lampData.devices[1].deviceRelays
+    lampData.devices.forEach(item => {
+      if (item.genre === 6) {
+        relayList.push(item)
+      }
+    })
+    let deviceLamp1 = relayList[0].deviceRelays
+    let deviceLamp2 = relayList[1].deviceRelays
       let count1 = 0
       let count2 = 0
       deviceLamp1.forEach(item => {

+ 0 - 2
web/src/view/admin/tunnel/tunnel.vue

@@ -514,7 +514,6 @@ const getData = async() => {
     region.value = res.data
   })
   await queryTunnelList(searchData.value).then(res => {
-    console.log(res.data.list)
     tunnel.value = res.data.list
     total.value = res.data.total
     searchData.value.pageInfo.page = res.data.page
@@ -781,7 +780,6 @@ const lightBySn = ref()
 const tunnelDataPanel = (val) => {
   isDataPanel.value = true
   tunnelTimeData.value = val
-  console.log('数据面板',val)
   groupedBySn.value = tunnelTimeData.value.envData.reduce((acc, current) => {
     const { sn } = current
     // 如果 acc(累加器)中没有当前 sn 对应的数组,则创建一个新的数组

+ 0 - 1
web/src/view/screen/components/chart.vue

@@ -95,7 +95,6 @@ watch(() => useScreen.currentTunnel, (newValue, oldValue) => {
 })
 
 const yourMethod = (value) => {
-  console.log('Method called with:', value)
   chartLoading(value.envData)
   // 你的逻辑代码
 }

+ 0 - 1
web/src/view/screen/components/lightChart.vue

@@ -84,7 +84,6 @@ watch(() => useScreen.currentTunnel, (newValue, oldValue) => {
 })
 
 const yourMethod = (value) => {
-  console.log('Method called with:', value)
   chartLoading(value.envData)
   // 你的逻辑代码
 }

+ 1 - 2
web/src/view/screen/components/map.vue

@@ -76,13 +76,13 @@ export default defineComponent({
       const list = useScreen.tunnelList
       list.forEach(item => {
         if (item.ID === id) {
-          console.log(item)
           dialogData.value = item
         }
       })
     }
     const callParentMethod = () => {
       useScreen.setCurrentTunnel(dialogData.value)
+      dialogVisible.value = false
     }
     return {
       center,
@@ -128,6 +128,5 @@ export default defineComponent({
 .infoDialog{
   width: 300px;
   height: 100px;
-
 }
 </style>

+ 205 - 3
web/src/view/screen/dataScreen.vue

@@ -69,6 +69,44 @@
           </div>
           <div class="panel-bottom"></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"/>
@@ -92,8 +130,15 @@ import Map from './components/map.vue'
 import warnTitle from '@/assets/warnTitle.png'
 import lightChart from './components/lightChart.vue'
 import { queryTunnelList } from '@/api/tunnel'
-import { reactive, onMounted } from 'vue'
+import {reactive, onMounted, ref, watch} from 'vue'
+// 单灯控制
+import { updateTunnelLamp } from "@/api/tunnel";
+// 四路控制
+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([
@@ -112,21 +157,156 @@ const condition = {
   regionId: 0,
   userId: 1
 }
-const jumpScreen = (type) => {
-  console.log(type)
+
+// 存储模型数据
+let materialOne = reactive({})
+let materialTwo = reactive({})
+
+// 亮度调整
+const transparency = ref(0)
+const relayList = reactive([])
+const changeTransparency = (e) => {
+  let option = {
+    0: [0.8, 33, 1],
+    50: [0.5, 66, 2],
+    100: [0.2, 100, 3]
+  }
+  materialOne.opacity = option[e][0]
+  if (lampData.switchType === '单灯控制器') {
+    updateTunnelLamp({
+      id: lampData.ID,
+      tunnelSn: lampData.tunnelSn,
+      lampValue1: option[e][1]
+    }).then(res => {
+      if (res.code === 0) {
+        ElMessage.success('已发送')
+      }
+    })
+  } else {
+    let relay = relayList[0].deviceRelays
+    for (let i = 0; i < relay.length; i++) {
+      relay[i].state = i < option[e][2];
+    }
+    for (let j = 0; j < relay.length; j++) {
+      deviceSwitch({
+        tunnelSn: lampData.tunnelSn,
+        radarId: relayList[0].radarId,
+        relayId: relay[j].relayId,
+        state: relay[j].state
+      }).then(res => {
+        if (res.code === 0) {
+          console.log('发送成功')
+        }
+      })
+    }
+  }
+}
+
+const transparencyTwo = ref(0)
+const changeTransparencyTwo = (e) => {
+  let option = {
+    0: [0.8, 33, 1],
+    50: [0.5, 66, 2],
+    100: [0.2, 100, 3]
+  }
+  materialTwo.opacity = option[e][0]
+  if (lampData.switchType === '单灯控制器') {
+    updateTunnelLamp({
+      id: lampData.ID,
+      tunnelSn: lampData.tunnelSn,
+      lampValue2: option[e][1]
+    }).then(res => {
+      if (res.code === 0) {
+        ElMessage.success('已发送')
+      }
+    })
+  } else {
+    let relay = relayList[1].deviceRelays
+    for (let i = 0; i < relay.length; i++) {
+      relay[i].state = i < option[e][2];
+    }
+    for (let j = 0; j < relay.length; j++) {
+      deviceSwitch({
+        tunnelSn: lampData.tunnelSn,
+        radarId: relayList[1].radarId,
+        relayId: relay[j].relayId,
+        state: relay[j].state
+      }).then(res => {
+        if (res.code === 0) {
+          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],
+    }
+    transparency.value = judge[val1][1]
+    transparencyTwo.value = judge[val1][1]
+    materialOne.opacity = judge[val1][0]
+    materialTwo.opacity = judge[val2][0]
+  } 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
+    let count1 = 0
+    let count2 = 0
+    deviceLamp1.forEach(item => {
+      item.state ? count1++ : count1
+    })
+    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]
+    }
+    transparency.value = judgeWay[count1][1]
+    transparencyTwo.value = judgeWay[count2][1]
+    materialOne.opacity = judgeWay[count1][0]
+    materialTwo.opacity = judgeWay[count2][0]
+  }
+}
 onMounted(() => {
   queryTunnelList(condition).then(res => {
     if (res.code === 0) {
       useScreen.setTunnelList(res.data)
+      Object.assign(lampData, res.data.list[0])
+      brightness()
     }
   })
 })
+
+watch(() => useScreen.currentTunnel, (newValue, oldValue) => {
+  yourMethod(newValue) // 调用你的方法
+})
+
+const yourMethod = (value) => {
+  Object.assign(lampData, value)
+  brightness()
+}
 </script>
 
 <style scoped lang="less">
@@ -328,6 +508,28 @@ onMounted(() => {
         font-size: 14px;
       }
     }
+    //.vehicleBox{
+    //  margin-top: 30px;
+    //  margin-bottom: 30px;
+    //  .vehicleData{
+    //    display: flex;
+    //    justify-content: end;
+    //    align-items: center;
+    //    span {
+    //      font-size: 18px;
+    //      font-weight: bold;
+    //      color: #0EFCFF;
+    //    }
+    //  }
+    //  .vehicleUnit{
+    //    display: flex;
+    //    justify-content: end;
+    //    align-items: center;
+    //    span {
+    //      color: #909399;
+    //    }
+    //  }
+    //}
   }
 }