icon-light.vue 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. <template>
  2. <div class="icon-light">
  3. <template v-for="(item, index) in pointList" :key="index">
  4. <div class="icon-point" @click="openModal(item.code, item.label, item.leftV, item.topV)" :style="{ left: item.leftV, top: item.topV }">
  5. <img :src="item.imgSrc" alt="" />
  6. <span :class="{ 'icon-text-c': item.align == 'center', 'icon-text-l': item.align == 'left', 'icon-text-r': item.align == 'right' }">{{
  7. item.label
  8. }}</span>
  9. </div>
  10. </template>
  11. </div>
  12. </template>
  13. <script setup lang="ts">
  14. import { ref, defineEmits, inject } from 'vue';
  15. import { getAssetURL } from '/@/utils/ui';
  16. const emit = defineEmits(['showDetail']);
  17. const globalConfig = inject('globalConfig');
  18. const warningLevel1 = getAssetURL('company/home/point1.png'); // 低风险
  19. const warningLevel2 = getAssetURL('company/home/point2.png'); // 中风险
  20. const warningLevel3 = getAssetURL('company/home/point3.png'); // 高风险
  21. const warningLevel4 = getAssetURL('company/home/point4.png'); // 报警
  22. let pointList = ref<any[]>(
  23. globalConfig.History_Type == 'vent'
  24. ? [
  25. { code: 'liuTa', imgSrc: warningLevel1, label: 'lt', leftV: '327px', topV: '40px', textColor: '#fff', align: 'left' },
  26. { code: 'cunCaoErTa', imgSrc: warningLevel1, label: 'cce', leftV: '291px', topV: '69px', textColor: '#fff', align: 'left' },
  27. { code: 'buErTaiTa', imgSrc: warningLevel1, label: 'bet', leftV: '286px', topV: '97px', textColor: 'rgba(255, 231, 83,.9)', align: 'left' },
  28. { code: 'wuLunTa', imgSrc: warningLevel1, label: 'wlml', leftV: '327px', topV: '115px', textColor: '#fff', align: 'left' },
  29. { code: 'cunCaoTa', imgSrc: warningLevel1, label: 'cc', leftV: '346px', topV: '132px', textColor: 'rgba(255, 231, 83,.9)', align: 'left' },
  30. { code: 'shiKanTa', imgSrc: warningLevel1, label: 'skt', leftV: '373px', topV: '149px', textColor: '#fff', align: 'left' },
  31. { code: 'buLieTa', imgSrc: warningLevel1, label: 'blt', leftV: '408px', topV: '184px', textColor: 'rgba(255, 231, 83,.9)', align: 'left' },
  32. { code: 'haLaGouTa', imgSrc: warningLevel1, label: 'hlg', leftV: '445px', topV: '214px', textColor: '#fff', align: 'left' },
  33. {
  34. code: 'shangWanTa',
  35. imgSrc: warningLevel1,
  36. label: 'sw',
  37. leftV: '439px',
  38. topV: '244px',
  39. textColor: 'rgba(255, 231, 83,.9)',
  40. align: 'left',
  41. },
  42. { code: 'huoJiTuTa', imgSrc: warningLevel1, label: 'hjt', leftV: '398px', topV: '265px', textColor: '#fff', align: 'left' },
  43. { code: 'daLiuTa', imgSrc: warningLevel1, label: 'dlt', leftV: '492px', topV: '260px', textColor: '#fff', align: 'left' },
  44. { code: 'jinJieTa', imgSrc: warningLevel1, label: 'jj', leftV: '565px', topV: '413px', textColor: 'rgba(255, 231, 83,.9)', align: 'left' },
  45. { code: 'yuJiaTa', imgSrc: warningLevel1, label: 'yjl', leftV: '669px', topV: '308px', textColor: '#fff', align: 'left' },
  46. { code: 'baoDeTa', imgSrc: warningLevel1, label: 'bd', leftV: '862px', topV: '340px', textColor: 'rgba(255, 231, 83,.9)', align: 'left' },
  47. ]
  48. : [
  49. { code: 'liuTa', imgSrc: warningLevel4, label: '柳塔矿', leftV: '375px', topV: '135px', textColor: '#fff', align: 'right' },
  50. { code: 'cunCaoErTa', imgSrc: warningLevel1, label: '寸草塔二矿', leftV: '269px', topV: '116px', textColor: '#fff', align: 'left' },
  51. {
  52. code: 'buErTaiTa',
  53. imgSrc: warningLevel1,
  54. label: '布尔台矿',
  55. leftV: '329px',
  56. topV: '177px',
  57. textColor: 'rgba(255, 231, 83,.9)',
  58. align: 'left',
  59. },
  60. { code: 'wuLunTa', imgSrc: warningLevel3, label: '乌兰木伦矿', leftV: '432px', topV: '178px', textColor: '#fff', align: 'right' },
  61. {
  62. code: 'cunCaoTa',
  63. imgSrc: warningLevel1,
  64. label: '寸草塔矿',
  65. leftV: '396px',
  66. topV: '224px',
  67. textColor: 'rgba(255, 231, 83,.9)',
  68. align: 'left',
  69. },
  70. { code: 'shiKanTa', imgSrc: warningLevel1, label: '石圪台矿', leftV: '470px', topV: '236px', textColor: '#fff', align: 'right' },
  71. {
  72. code: 'buLieTa',
  73. imgSrc: warningLevel1,
  74. label: '补连塔矿',
  75. leftV: '432px',
  76. topV: '282px',
  77. textColor: 'rgba(255, 231, 83,.9)',
  78. align: 'left',
  79. },
  80. { code: 'haLaGouTa', imgSrc: warningLevel2, label: '哈拉沟矿', leftV: '511px', topV: '302px', textColor: '#fff', align: 'right' },
  81. {
  82. code: 'shangWanTa',
  83. imgSrc: warningLevel1,
  84. label: '上湾矿',
  85. leftV: '381px',
  86. topV: '334px',
  87. textColor: 'rgba(255, 231, 83,.9)',
  88. align: 'left',
  89. },
  90. // { code: 'huoJiTuTa', imgSrc: warningLevel1, label: '活鸡兔井', leftV: '398px', topV: '265px', textColor: '#fff', align: 'left' },
  91. { code: 'daLiuTa', imgSrc: warningLevel1, label: '大柳塔矿', leftV: '588px', topV: '338px', textColor: '#fff', align: 'right' },
  92. {
  93. code: 'jinJieTa',
  94. imgSrc: warningLevel1,
  95. label: '锦界矿',
  96. leftV: '575px',
  97. topV: '460px',
  98. textColor: 'rgba(255, 231, 83,.9)',
  99. align: 'center',
  100. },
  101. { code: 'yuJiaTa', imgSrc: warningLevel1, label: '榆家梁矿', leftV: '699px', topV: '307px', textColor: '#fff', align: 'center' },
  102. {
  103. code: 'baoDeTa',
  104. imgSrc: warningLevel4,
  105. label: '保德矿',
  106. leftV: '892px',
  107. topV: '200px',
  108. textColor: 'rgba(255, 231, 83,.9)',
  109. align: 'center',
  110. },
  111. ]
  112. );
  113. function openModal(code, label, leftV, topV) {
  114. emit('showDetail', code, label, leftV, topV);
  115. }
  116. </script>
  117. <style lang="less" scoped>
  118. .icon-light {
  119. position: relative;
  120. width: 100%;
  121. height: 100%;
  122. .icon-point {
  123. display: flex;
  124. align-items: center;
  125. position: absolute;
  126. img {
  127. width: 35px;
  128. height: 35px;
  129. cursor: pointer;
  130. }
  131. span {
  132. font-size: 12px;
  133. padding: 0px 5px;
  134. color: #ffffff;
  135. // background-color: rgba(12, 13, 13);
  136. }
  137. .icon-text-l {
  138. position: absolute;
  139. font-size: 12px;
  140. padding: 0px 5px;
  141. // background-color: rgba(12, 13, 13);
  142. display: block;
  143. width: 100px;
  144. text-align: center;
  145. // top: -20px;
  146. left: -75px;
  147. }
  148. .icon-text-r {
  149. position: absolute;
  150. font-size: 12px;
  151. padding: 0px 5px;
  152. display: block;
  153. width: 100px;
  154. text-align: center;
  155. // top: -20px;
  156. left: 12px;
  157. }
  158. .icon-text-c {
  159. position: absolute;
  160. font-size: 12px;
  161. padding: 0px 5px;
  162. display: block;
  163. width: 60px;
  164. text-align: center;
  165. top: -20px;
  166. left: -12px;
  167. }
  168. }
  169. }
  170. </style>