瀏覽代碼

大屏可视化

钞小赢 1 年之前
父節點
當前提交
ba2ccb4884
共有 33 個文件被更改,包括 334 次插入3 次删除
  1. 1 0
      package.json
  2. 二進制
      src/assets/images/bigScreen/1温度统计外框.png
  3. 二進制
      src/assets/images/bigScreen/2湿度统计外框.png
  4. 二進制
      src/assets/images/bigScreen/3温湿度设备状态外框.png
  5. 二進制
      src/assets/images/bigScreen/3点位外框.png
  6. 二進制
      src/assets/images/bigScreen/4仓内温度云图外框.png
  7. 二進制
      src/assets/images/bigScreen/5历史预警趋势外框.png
  8. 二進制
      src/assets/images/bigScreen/6温湿度变换趋势外框.png
  9. 二進制
      src/assets/images/bigScreen/7预警信息外框.png
  10. 二進制
      src/assets/images/bigScreen/bg.png
  11. 二進制
      src/assets/images/bigScreen/cangfang.png
  12. 二進制
      src/assets/images/bigScreen/dwTemp.png
  13. 二進制
      src/assets/images/bigScreen/icon-shidu.png
  14. 二進制
      src/assets/images/bigScreen/icon-wendu.png
  15. 二進制
      src/assets/images/bigScreen/icon1lw.png
  16. 二進制
      src/assets/images/bigScreen/icon1温度.png
  17. 二進制
      src/assets/images/bigScreen/icon2ldwd.png
  18. 二進制
      src/assets/images/bigScreen/icon2湿度.png
  19. 二進制
      src/assets/images/bigScreen/icon3cw.png
  20. 二進制
      src/assets/images/bigScreen/icon3设备.png
  21. 二進制
      src/assets/images/bigScreen/icon4ww.png
  22. 二進制
      src/assets/images/bigScreen/icon4温.png
  23. 二進制
      src/assets/images/bigScreen/icon5cnwd.png
  24. 二進制
      src/assets/images/bigScreen/icon5湿.png
  25. 二進制
      src/assets/images/bigScreen/icon6cwsd.png
  26. 二進制
      src/assets/images/bigScreen/icon7故障.png
  27. 二進制
      src/assets/images/bigScreen/icon点位.png
  28. 二進制
      src/assets/images/bigScreen/logo.png
  29. 二進制
      src/assets/images/bigScreen/logo1.png
  30. 二進制
      src/assets/images/bigScreen/normal-temp.png
  31. 2 2
      src/layout/header-aside/layout.vue
  32. 12 1
      src/router/routes.js
  33. 319 0
      src/views/system/visualized/index.vue

+ 1 - 0
package.json

@@ -27,6 +27,7 @@
27 27
     "lodash": "^4.17.19",
28 28
     "lowdb": "^1.0.0",
29 29
     "moment": "^2.29.3",
30
+    "mqtt": "^4.3.7",
30 31
     "nprogress": "^0.2.0",
31 32
     "screenfull": "^5.0.2",
32 33
     "sortablejs": "^1.10.1",

二進制
src/assets/images/bigScreen/1温度统计外框.png


二進制
src/assets/images/bigScreen/2湿度统计外框.png


二進制
src/assets/images/bigScreen/3温湿度设备状态外框.png


二進制
src/assets/images/bigScreen/3点位外框.png


二進制
src/assets/images/bigScreen/4仓内温度云图外框.png


二進制
src/assets/images/bigScreen/5历史预警趋势外框.png


二進制
src/assets/images/bigScreen/6温湿度变换趋势外框.png


二進制
src/assets/images/bigScreen/7预警信息外框.png


二進制
src/assets/images/bigScreen/bg.png


二進制
src/assets/images/bigScreen/cangfang.png


二進制
src/assets/images/bigScreen/dwTemp.png


二進制
src/assets/images/bigScreen/icon-shidu.png


二進制
src/assets/images/bigScreen/icon-wendu.png


二進制
src/assets/images/bigScreen/icon1lw.png


二進制
src/assets/images/bigScreen/icon1温度.png


二進制
src/assets/images/bigScreen/icon2ldwd.png


二進制
src/assets/images/bigScreen/icon2湿度.png


二進制
src/assets/images/bigScreen/icon3cw.png


二進制
src/assets/images/bigScreen/icon3设备.png


二進制
src/assets/images/bigScreen/icon4ww.png


二進制
src/assets/images/bigScreen/icon4温.png


二進制
src/assets/images/bigScreen/icon5cnwd.png


二進制
src/assets/images/bigScreen/icon5湿.png


二進制
src/assets/images/bigScreen/icon6cwsd.png


二進制
src/assets/images/bigScreen/icon7故障.png


二進制
src/assets/images/bigScreen/icon点位.png


二進制
src/assets/images/bigScreen/logo.png


二進制
src/assets/images/bigScreen/logo1.png


二進制
src/assets/images/bigScreen/normal-temp.png


+ 2 - 2
src/layout/header-aside/layout.vue

@@ -5,7 +5,7 @@
5 5
     <!-- 主体内容 -->
6 6
     <div class="d2-layout-header-aside-content" flex="dir:top">
7 7
       <!-- 顶栏 -->
8
-      <div class="d2-theme-header" :style="{ opacity: this.searchActive ? 0.5 : 1 }" flex-box="0" flex>
8
+      <div class="d2-theme-header" :style="{ opacity: this.searchActive ? 0.5 : 1 }" flex-box="0" flex v-if='this.$route.path!="/visualized"'>
9 9
         <!-- <router-link
10 10
           to="/index"
11 11
           :class="{'logo-group': true, 'logo-transition': asideTransition}"
@@ -74,7 +74,7 @@
74 74
                   </keep-alive>
75 75
                 </transition>
76 76
               </div>
77
-              <Foot></Foot>
77
+              <Foot v-if='this.$route.path!="/visualized"'></Foot>
78 78
             </div>
79 79
           </transition>
80 80
 

+ 12 - 1
src/router/routes.js

@@ -1,5 +1,6 @@
1 1
 import layoutHeaderAside from '@/layout/header-aside'
2 2
 
3
+
3 4
 // 由于懒加载页面太多的话会造成webpack热更新太慢,所以开发环境不使用懒加载,只有生产环境使用懒加载
4 5
 const _import = require('@/libs/util.import.' + process.env.NODE_ENV)
5 6
 
@@ -7,12 +8,22 @@ const _import = require('@/libs/util.import.' + process.env.NODE_ENV)
7 8
  * 在主框架内显示
8 9
  */
9 10
 const frameIn = [
10
- 
11
+
11 12
   {
12 13
     path: '/',
13 14
     redirect: { name: 'index' },
14 15
     component: layoutHeaderAside,
15 16
     children: [
17
+       // 大屏首页
18
+     {
19
+      path: 'visualized',
20
+      name: 'visualized',
21
+      meta: {
22
+        auth: true
23
+      },
24
+      component: _import('system/visualized')
25
+    },
26
+       
16 27
       // 首页
17 28
       {
18 29
         path: 'index',

+ 319 - 0
src/views/system/visualized/index.vue

@@ -0,0 +1,319 @@
1
+<template>
2
+  <div class="big-screen">
3
+    <div class="screen-left">
4
+      <div class="left-top">
5
+        <div class="head">
6
+          <div class="head-top"></div>
7
+          <div class="head-bot"></div>
8
+        </div>
9
+        <div class="bottom">
10
+          <div class="bot-top">
11
+            <div class="normal-temp">
12
+              <div class="temp-title">1号点位温湿度</div>
13
+              <div class="temp-list">
14
+                <div class="list-left">
15
+                  <img
16
+                    src="../../../assets/images/bigScreen/dwTemp.png"
17
+                    alt=""
18
+                    style="width: 100%; height: 100%"
19
+                  />
20
+                </div>
21
+                <div class="list-right">
22
+                  <ul class="outUl">
23
+                    <li>温度</li>
24
+                    <li>湿度</li>
25
+                    <li>监测时间</li>
26
+                  </ul>
27
+                  <vue-seamless-scroll
28
+                    :data="tableData"
29
+                    :class-option="classOption"
30
+                    class="scroll"
31
+                  >
32
+                    <ul
33
+                      class="DataList_top inUl"
34
+                      v-for="(item, index) in tableData"
35
+                      :key="index"
36
+                    >
37
+                      <li class="DataList_left">
38
+                        <span
39
+                          style="
40
+                            width: 5px;
41
+                            height: 5px;
42
+                            border-radius: 50%;
43
+                            background:rgb(38, 222, 197);
44
+                            display: inline-block;
45
+
46
+                            margin-right: 5px;
47
+                          "
48
+                        ></span
49
+                        >{{ item.temp }}
50
+                      </li>
51
+                      <li class="DataList_left">
52
+                        {{ item.shidu }}
53
+                      </li>
54
+                      <li class="DataList_left">
55
+                        {{ item.jcsj }}
56
+                      </li>
57
+                    </ul>
58
+                  </vue-seamless-scroll>
59
+                </div>
60
+              </div>
61
+            </div>
62
+            <div class="normal-temp">
63
+                <div class="temp-title">2号点位温湿度</div>
64
+              <div class="temp-list">
65
+                <div class="list-left">
66
+                  <img
67
+                    src="../../../assets/images/bigScreen/dwTemp.png"
68
+                    alt=""
69
+                    style="width: 100%; height: 100%"
70
+                  />
71
+                </div>
72
+                <div class="list-right">
73
+                  <ul class="outUl">
74
+                    <li>温度</li>
75
+                    <li>湿度</li>
76
+                    <li>监测时间</li>
77
+                  </ul>
78
+                  <vue-seamless-scroll
79
+                    :data="tableData"
80
+                    :class-option="classOption"
81
+                    class="scroll"
82
+                  >
83
+                    <ul
84
+                      class="DataList_top inUl"
85
+                      v-for="(item, index) in tableData"
86
+                      :key="index"
87
+                    >
88
+                      <li class="DataList_left">
89
+                        <span
90
+                          style="
91
+                            width: 5px;
92
+                            height: 5px;
93
+                            border-radius: 50%;
94
+                            background:rgb(38, 222, 197);
95
+                            display: inline-block;
96
+
97
+                            margin-right: 5px;
98
+                          "
99
+                        ></span
100
+                        >{{ item.temp }}
101
+                      </li>
102
+                      <li class="DataList_left">
103
+                        {{ item.shidu }}
104
+                      </li>
105
+                      <li class="DataList_left">
106
+                        {{ item.jcsj }}
107
+                      </li>
108
+                    </ul>
109
+                  </vue-seamless-scroll>
110
+                </div>
111
+              </div>
112
+            </div>
113
+          </div>
114
+          <div class="bot-bottom"></div>
115
+        </div>
116
+      </div>
117
+      <div class="left-bottom"></div>
118
+    </div>
119
+    <div class="screen-right"></div>
120
+  </div>
121
+</template>
122
+<script>
123
+import vueSeamlessScroll from "vue-seamless-scroll";
124
+export default {
125
+  components: {
126
+    vueSeamlessScroll,
127
+  },
128
+  data() {
129
+    return {
130
+      tableData: [
131
+        {
132
+          temp: "23℃",
133
+          shidu: "30%",
134
+          jcsj: "2022/10/10 9:20",
135
+        },
136
+        {
137
+          temp: "23℃",
138
+          shidu: "30%",
139
+          jcsj: "2022/10/10 9:20",
140
+        },
141
+        {
142
+          temp: "23℃",
143
+          shidu: "30%",
144
+          jcsj: "2022/10/10 9:20",
145
+        },
146
+
147
+        {
148
+          temp: "23℃",
149
+          shidu: "30%",
150
+          jcsj: "2022/10/10 9:20",
151
+        },
152
+        {
153
+          temp: "23℃",
154
+          shidu: "30%",
155
+          jcsj: "2022/10/10 9:20",
156
+        },
157
+
158
+        {
159
+          temp: "23℃",
160
+          shidu: "30%",
161
+          jcsj: "2022/10/10 9:20",
162
+        },
163
+        {
164
+          temp: "23℃",
165
+          shidu: "30%",
166
+          jcsj: "2022/10/10 9:20",
167
+        },
168
+      ],
169
+    };
170
+  },
171
+  computed: {
172
+    classOption() {
173
+      return {
174
+        step: 0, // 数值越大速度滚动越快
175
+        limitMoveNum: 5, // 开始无缝滚动的数据量 this.dataList.length
176
+        hoverStop: true, // 是否开启鼠标悬停stop
177
+        direction: 1, // 0向下 1向上 2向左 3向右
178
+        openWatch: true, // 开启数据实时监控刷新dom
179
+        singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
180
+        singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
181
+        waitTime: 0, // 单步运动停止的时间(默认值1000ms)
182
+      };
183
+    },
184
+  },
185
+};
186
+</script>
187
+<style lang="scss" scoped>
188
+.big-screen {
189
+  height: calc(100% - 20px);
190
+  padding: 10px;
191
+  display: flex;
192
+  background: url("../../../assets/images/bigScreen/bg.png") no-repeat;
193
+  background-size: 100%;
194
+  .screen-left {
195
+    width: 76%;
196
+    height: 100%;
197
+
198
+    .left-top {
199
+      display: flex;
200
+      flex-direction: column;
201
+      height: 75%;
202
+      .head {
203
+        height: 100px;
204
+        display: flex;
205
+        flex-direction: column;
206
+        .head-top {
207
+          flex: 1;
208
+          background: url("../../../assets/images/bigScreen/logo1.png")
209
+            no-repeat;
210
+        }
211
+        .head-bot {
212
+          flex: 2;
213
+          background: url("../../../assets/images/bigScreen/logo.png") no-repeat;
214
+          background-size: 100%;
215
+        }
216
+      }
217
+      .bottom {
218
+        flex: 1;
219
+        padding: 20px 40px;
220
+        background: url("../../../assets/images/bigScreen/cangfang.png");
221
+        background-size: cover;
222
+
223
+        box-sizing: border-box;
224
+        .bot-top {
225
+          display: flex;
226
+          justify-content: space-between;
227
+          .normal-temp {
228
+            width: 350px;
229
+            height: 200px;
230
+            display: flex;
231
+            flex-direction: column;
232
+            background: url("../../../assets/images/bigScreen/normal-temp.png")
233
+              no-repeat;
234
+            background-size: 100% 100%;
235
+            .temp-title {
236
+              margin-left: 24px;
237
+              margin-top: 6px;
238
+              color:rgb(38, 222, 197);
239
+              font-weight:bolder;
240
+            }
241
+            .temp-list {
242
+              flex: 1;
243
+              display: flex;
244
+              justify-content: space-between;
245
+              align-items: center;
246
+              padding: 10px;
247
+              .list-left {
248
+                width: 100px;
249
+                height: 100px;
250
+              }
251
+              .list-right {
252
+                width: calc(100% - 100px);
253
+                .outUl {
254
+                  display: flex;
255
+
256
+                  justify-content: space-around;
257
+                  //   padding: 7px 0;
258
+                 color:#ccc;
259
+                 font-weight:bolder;
260
+
261
+                  li {
262
+                    display: flex;
263
+
264
+                    justify-content: space-around;
265
+                    text-align: center;
266
+                    width: 30%;
267
+                    font-size: 14px;
268
+                  
269
+                  }
270
+                  li:nth-child(3) {
271
+                    width: 40%;
272
+                  }
273
+                  //   // li:nth-child(1) {
274
+                  //   //   width: 24%;
275
+                  //   // }
276
+                }
277
+                .inUl {
278
+                  display: flex;
279
+
280
+                  justify-content: space-around;
281
+
282
+                  li {
283
+                    line-height: 29px;
284
+                    text-align: center;
285
+                    width: 30%;
286
+                    font-size: 12px;
287
+                    color:rgb(204, 236, 232);
288
+                    // color:rgb(29, 221, 196);
289
+                  
290
+                  }
291
+
292
+                  li:nth-child(3) {
293
+                    width: 40%;
294
+                  }
295
+                }
296
+              }
297
+            }
298
+          }
299
+        }
300
+      }
301
+    }
302
+    .left-bottom {
303
+      height: 25%;
304
+      background: yellow;
305
+    }
306
+  }
307
+  .screen-right {
308
+    height: 100%;
309
+    width: 24%;
310
+    background: blue;
311
+  }
312
+}
313
+</style>
314
+<style>
315
+.scroll {
316
+  height: 140px;
317
+  overflow: hidden;
318
+}
319
+</style>