index.vue 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. <template>
  2. <div class="base-container no-events">
  3. <fnHeader showDate></fnHeader>
  4. <div class="content">
  5. <div class="warning-l left">
  6. <div class="warning-top">
  7. <div class="top-l yes-events">
  8. <div>
  9. <el-select
  10. v-model="areaVal"
  11. placeholder=""
  12. style="width: 184px"
  13. popper-class="area-select"
  14. >
  15. <el-option label="广东省" :value="0" />
  16. <el-option label="广东省-从化" :value="1" />
  17. </el-select>
  18. </div>
  19. <div class="type-box"><img src="@/assets/images/warningHome/lz.png" /></div>
  20. </div>
  21. <div class="top-r yes-events">
  22. <div class="data-box">
  23. <div class="data-value"><span>526</span>亩</div>
  24. <div class="data-name">种植面积</div>
  25. </div>
  26. <div class="data-box" v-if="areaVal === 1">
  27. <div class="data-value"><span>526</span>亩</div>
  28. <div class="data-name">疑似失管面积</div>
  29. </div>
  30. <div class="data-box">
  31. <div class="data-value"><span>526</span>亩</div>
  32. <div class="data-name">预估产量</div>
  33. </div>
  34. <div class="data-box">
  35. <div class="data-value"><span>526</span>万元</div>
  36. <div class="data-name">预估总产值</div>
  37. </div>
  38. </div>
  39. </div>
  40. <div class="warning-alarm yes-events">
  41. <alarm-list></alarm-list>
  42. </div>
  43. </div>
  44. <div class="warning-r right yes-events">
  45. <album></album>
  46. </div>
  47. <div class="warning-search">
  48. <img src="@/assets/images/warningHome/search-img.png" />
  49. </div>
  50. </div>
  51. <div id="popup" class="ol-popup-warning">
  52. <div class="warning-info-title">
  53. <div class="icon">
  54. <img src="@/assets/images/common/chart-icon.png" />
  55. </div>
  56. <div id="popup-title"></div>
  57. <div class="close">
  58. <img src="@/assets/images/warningHome/close-btn.png" />
  59. </div>
  60. </div>
  61. <div id="popup-content" class="info-content"></div>
  62. </div>
  63. </div>
  64. <div ref="mapRef" class="bottom-map"></div>
  65. </template>
  66. <script setup>
  67. import { onMounted, ref } from "vue";
  68. import fnHeader from "@/components/fnHeader.vue";
  69. import WarningMap from "./warningMap";
  70. import album from "./components/album.vue";
  71. import alarmList from "./components/alarmList.vue";
  72. import { useRouter } from "vue-router";
  73. import { useStore } from "vuex";
  74. let store = useStore();
  75. let warningMap = new WarningMap();
  76. const router = useRouter();
  77. const areaVal = ref(0)
  78. const mapRef = ref();
  79. onMounted(() => {
  80. warningMap.initMap(store.getters.userinfo.location, mapRef.value);
  81. });
  82. </script>
  83. <style lang="scss" scoped>
  84. .base-container {
  85. width: 100%;
  86. height: 100vh;
  87. color: #fff;
  88. position: absolute;
  89. box-sizing: border-box;
  90. z-index: 1;
  91. .content {
  92. width: 100%;
  93. height: calc(100% - 74px - 48px);
  94. padding: 0 20px 0 27px;
  95. display: flex;
  96. justify-content: space-between;
  97. box-sizing: border-box;
  98. position: relative;
  99. .left,
  100. .right {
  101. width: calc(376px + 54px);
  102. height: 100%;
  103. padding-top: 10px;
  104. box-sizing: border-box;
  105. // display: flex;
  106. }
  107. .right {
  108. width: 395px;
  109. .list {
  110. width: 100%;
  111. height: 100%;
  112. }
  113. }
  114. .warning-search {
  115. position: absolute;
  116. right: 192px;
  117. top: -30px;
  118. }
  119. .warning-top {
  120. display: flex;
  121. .top-l {
  122. display: flex;
  123. flex-direction: column;
  124. align-items: center;
  125. .type-box {
  126. margin-top: 10px;
  127. background: rgba(29, 29, 29, 0.54);
  128. border: 1px solid rgba(255, 212, 137, 0.3);
  129. border-radius: 2px;
  130. text-align: center;
  131. line-height: 48px;
  132. height: 48px;
  133. width: 184px;
  134. }
  135. ::v-deep {
  136. .el-select__wrapper {
  137. background: rgba(29, 29, 29, 0.54);
  138. box-shadow: 0 0 0 1px rgba(255, 212, 137, 0.3) inset;
  139. height: 50px;
  140. line-height: 50px;
  141. .el-select__caret {
  142. color: #FFD489;
  143. }
  144. }
  145. .el-select__placeholder {
  146. color: #F7BE5A;
  147. font-size: 20px;
  148. font-family: 'PangMenZhengDao';
  149. text-align: center;
  150. }
  151. }
  152. }
  153. .top-r {
  154. display: flex;
  155. .data-box {
  156. cursor: pointer;
  157. margin-left: 20px;
  158. width: 200px;
  159. height: 104px;
  160. background: url("@/assets/images/warningHome/box-bg.png") no-repeat center center / cover;
  161. display: flex;
  162. flex-direction: column;
  163. align-items: center;
  164. .data-value {
  165. padding-top: 15px;
  166. font-size: 20px;
  167. color: rgba(255, 212, 137, 0.4);
  168. font-family: 'PangMenZhengDao';
  169. span {
  170. font-size: 38px;
  171. color: #F7BE5A;
  172. padding-right: 2px;
  173. }
  174. }
  175. .data-name {
  176. color: #CECECE;
  177. font-size: 16px;
  178. }
  179. }
  180. }
  181. }
  182. .warning-alarm {
  183. width: 88px;
  184. padding-top: 14px;
  185. }
  186. }
  187. }
  188. .bottom-map {
  189. width: 100%;
  190. height: 100vh;
  191. position: absolute;
  192. z-index: 0;
  193. }
  194. </style>
  195. <style lang="less">
  196. .area-select {
  197. &.el-popper.is-light {
  198. background: #232323;
  199. border-color: rgba(255, 212, 137, 0.3);
  200. box-shadow: 0px 0px 12px rgba(255, 212, 137, 0.3);
  201. .el-select-dropdown__item {
  202. background: none;
  203. color: rgba(255, 212, 137, 0.6);
  204. }
  205. .el-select-dropdown__item.is-selected {
  206. background: rgba(255, 212, 137, 0.2);
  207. color: #FFD489;
  208. }
  209. }
  210. &.el-popper.is-light .el-popper__arrow:before {
  211. background: #232323;
  212. border-color: rgba(255, 212, 137, 0.3);
  213. }
  214. }
  215. .ol-popup-warning {
  216. position: relative;
  217. width: 295px;
  218. background: rgb(35, 35, 35, 0.86);
  219. color: #fff;
  220. font-size: 16px;
  221. .warning-info-title {
  222. display: flex;
  223. padding: 6px 10px;
  224. background: rgba(255, 255, 255, 0.05);
  225. font-size: 18px;
  226. .icon {
  227. padding-right: 6px;
  228. }
  229. .close {
  230. position: absolute;
  231. right: 12px;
  232. top: 8px;
  233. }
  234. }
  235. .info-content {
  236. padding: 16px 20px 40px 20px;
  237. }
  238. }
  239. </style>