environment.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. <template>
  2. <view class="environment-index">
  3. <view class="environment-box">
  4. <view class="environment-box-title">实时数据</view>
  5. <div class="air-item">
  6. <div class="test-item">
  7. <div class="name">温度(°C)</div>
  8. <div class="number">{{realTimeData.temperature}}</div>
  9. </div>
  10. <div class="test-item line">
  11. <div class="name">湿度(%)</div>
  12. <div class="number">{{realTimeData.humidity}}</div>
  13. </div>
  14. <div class="test-item">
  15. <div class="name">风速(m/s)</div>
  16. <div class="number">{{realTimeData.windSpeed}}</div>
  17. </div>
  18. </div>
  19. <div class="air-item">
  20. <div class="test-item">
  21. <div class="name">粉尘(mg/m³)</div>
  22. <div class="number">{{realTimeData.dust}}</div>
  23. </div>
  24. <div class="test-item line">
  25. <div class="name">噪声(dB)</div>
  26. <div class="number">{{realTimeData.noise}}</div>
  27. </div>
  28. <div class="test-item">
  29. <div class="name">气压(Kpa)</div>
  30. <div class="number">{{realTimeData.pressure}}</div>
  31. </div>
  32. </div>
  33. </view>
  34. <view class="common-charts">
  35. <view class="common-chart-title">温度监测</view>
  36. <view class="common-chart-box">
  37. <u-echart ref="temperature"></u-echart>
  38. </view>
  39. </view>
  40. <view class="common-charts">
  41. <view class="common-chart-title">湿度监测</view>
  42. <view class="common-chart-box">
  43. <u-echart ref="humidity"></u-echart>
  44. </view>
  45. </view>
  46. <view class="common-charts">
  47. <view class="common-chart-title">粉尘监测</view>
  48. <view class="common-chart-box">
  49. <u-echart ref="dust"></u-echart>
  50. </view>
  51. </view>
  52. </view>
  53. </template>
  54. <script>
  55. import uEchart from './uEchart.vue'
  56. export default {
  57. data() {
  58. return {
  59. realTimeData: {
  60. dust: '1.2', //粉尘
  61. noise: '55', //噪声
  62. temperature: '26', //温度
  63. humidity: '40', //湿度
  64. pressure: '100', //气压
  65. windSpeed: '1', //风速
  66. windDirection: '东北' //风向
  67. },
  68. echart: [{
  69. ref: 'temperature',
  70. type: 'line',
  71. color: ["#1890FF"],
  72. categories: ['03:00', '06:00', '09:00', '12:00', '15:00', '18:00', '21:00', '24:00'],
  73. series: [{
  74. name: '温度',
  75. data: [21.3, 24.0, 24.1, 24.1, 24.4, 24.0, 23.4, 23.3]
  76. }]
  77. }, {
  78. ref: 'humidity',
  79. type: 'line',
  80. color: ["#73C0DE"],
  81. categories: ['03:00', '06:00', '09:00', '12:00', '15:00', '18:00', '21:00', '24:00'],
  82. series: [{
  83. name: '湿度',
  84. data: [37, 38, 38.1, 38.1, 38.4, 38.0, 36.4, 36]
  85. }]
  86. }, {
  87. ref: 'dust',
  88. type: 'line',
  89. color: ["#FAC858"],
  90. categories: ['03:00', '06:00', '09:00', '12:00', '15:00', '18:00', '21:00', '24:00'],
  91. series: [{
  92. name: '粉尘',
  93. data: [7, 8, 3.1, 8.1, 8.4, 8, 6.4, 9]
  94. }]
  95. }]
  96. }
  97. },
  98. mounted() {
  99. setTimeout(() => {
  100. for (var i = 0; i < this.echart.length; i++) {
  101. let item = this.echart[i];
  102. this.$refs[item.ref].initCharts({
  103. type: item.type,
  104. categories: item.categories,
  105. series: item.series,
  106. animation: true,
  107. background: "#FFFFFF",
  108. color: item.color,
  109. padding: [10, 5, 0, 0],
  110. enableScroll: false,
  111. legend: {
  112. show: false
  113. },
  114. xAxis: {
  115. disableGrid: true
  116. },
  117. yAxis: {
  118. gridType: "dash",
  119. dashLength: 2
  120. },
  121. extra: {
  122. line: {
  123. type: "curve",
  124. width: 2,
  125. activeType: "hollow"
  126. }
  127. }
  128. })
  129. }
  130. }, 500)
  131. },
  132. components: {
  133. uEchart
  134. },
  135. }
  136. </script>
  137. <style lang="scss">
  138. .environment-index {
  139. padding: 30rpx;
  140. .environment-box {
  141. background: #fff;
  142. padding: 30rpx;
  143. border-radius: 16rpx;
  144. box-shadow: 0px 1px 12px rgba(3, 3, 3, 0.08);
  145. }
  146. .air-item {
  147. display: flex;
  148. align-items: center;
  149. margin: 10rpx 0;
  150. }
  151. .test-item {
  152. flex: 1;
  153. width: 0;
  154. overflow: hidden;
  155. text-align: center;
  156. padding: 2px 0;
  157. position: relative;
  158. .name {
  159. font-size: 24rpx;
  160. margin-bottom: 8rpx;
  161. line-height: 36rpx;
  162. color: $uni-secondary-color;
  163. }
  164. .number {
  165. font-size: 36rpx;
  166. color: $uni-success;
  167. }
  168. }
  169. .environment-box-title {
  170. padding-bottom: 30rpx;
  171. font-size: 32rpx;
  172. font-weight: 500;
  173. }
  174. }
  175. </style>