LeftChart1.vue 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. <template>
  2. <div class="left-chart-1">
  3. <div class="left-list">
  4. <div class="left-container">
  5. <div class="container-topdown">
  6. <img src="./img/SOS.svg" alt="" />
  7. <div class="word">SOS告警</div>
  8. </div>
  9. <div class="container-topdown">
  10. <div class="number">{{ data.un_alarmSOSSolve }}</div>
  11. <div class="word">未处理</div>
  12. </div>
  13. <div class="container-topdown">
  14. <div class="number color">{{ data.alarmSOSSolve }}</div>
  15. <div class="word">已处理</div>
  16. </div>
  17. </div>
  18. <div class="left-container">
  19. <div class="container-topdown">
  20. <img src="./img/weilan.svg" alt="" />
  21. <div class="word">围栏告警</div>
  22. </div>
  23. <div class="container-topdown">
  24. <div class="number">{{ data.un_alarmRailSolve }}</div>
  25. <div class="word">未处理</div>
  26. </div>
  27. <div class="container-topdown">
  28. <div class="number color">{{ data.alarmRailSolve }}</div>
  29. <div class="word">已处理</div>
  30. </div>
  31. </div>
  32. <div class="left-container">
  33. <div class="container-topdown">
  34. <img src="./img/xinlv.svg" alt="" />
  35. <div class="word">心率告警</div>
  36. </div>
  37. <div class="container-topdown">
  38. <div class="number">{{ data.un_alarmHeartSolve }}</div>
  39. <div class="word">未处理</div>
  40. </div>
  41. <div class="container-topdown">
  42. <div class="number color">{{ data.alarmHeartSolve }}</div>
  43. <div class="word">已处理</div>
  44. </div>
  45. </div>
  46. <div class="left-container">
  47. <div class="container-topdown">
  48. <img src="./img/diedao.svg" alt="" />
  49. <div class="word">跌倒告警</div>
  50. </div>
  51. <div class="container-topdown">
  52. <div class="number">{{ data.un_alarmFallSolve }}</div>
  53. <div class="word">未处理</div>
  54. </div>
  55. <div class="container-topdown">
  56. <div class="number color">{{ data.alarmFallSolve }}</div>
  57. <div class="word">已处理</div>
  58. </div>
  59. </div>
  60. <div class="left-container">
  61. <div class="container-topdown">
  62. <img src="./img/didian.svg" alt="" />
  63. <div class="word">低电提醒</div>
  64. </div>
  65. <div class="container-topdown">
  66. <div class="number">{{ data.un_alarmLowSolve }}</div>
  67. <div class="word">未处理</div>
  68. </div>
  69. <div class="container-topdown">
  70. <div class="number color">{{ data.alarmLowSolve }}</div>
  71. <div class="word">已处理</div>
  72. </div>
  73. </div>
  74. <div class="left-container">
  75. <div class="container-topdown">
  76. <img src="./img/shebei.svg" alt="" />
  77. <div class="word">设备状态</div>
  78. </div>
  79. <div class="container-topdown">
  80. <div class="number">{{ data.un_alarmStatusSolve }}</div>
  81. <div class="word">未处理</div>
  82. </div>
  83. <div class="container-topdown">
  84. <div class="number color">{{ data.alarmStatusSolve }}</div>
  85. <div class="word">已处理</div>
  86. </div>
  87. </div>
  88. </div>
  89. </div>
  90. </template>
  91. <script>
  92. import { count, alarm } from "@/api/system/datav";
  93. export default {
  94. name: "LeftChart1",
  95. data() {
  96. return {
  97. config: {
  98. // data: [
  99. // {
  100. // label:222,
  101. // name: '收费系统',
  102. // value: 167
  103. // },
  104. // {
  105. // label:222,
  106. // name: '通信系统',
  107. // value: 67
  108. // },
  109. // {
  110. // label:222,
  111. // name: '监控系统',
  112. // value: 123
  113. // },
  114. // {
  115. // label:222,
  116. // name: '供配系统',
  117. // value: 55
  118. // },
  119. // {
  120. // label:222,
  121. // name: '其他',
  122. // value: 98
  123. // },
  124. // {
  125. // label:222,
  126. // name: '其他',
  127. // value: 98
  128. // },
  129. // ],
  130. colors: ["#00baff", "#3de7c9", "#fff", "#ffc530", "#469f4b"],
  131. unit: "件",
  132. },
  133. number: null,
  134. data: {},
  135. config1: {},
  136. currentValue:0,
  137. digits: [0, 0, 0],
  138. animationInterval: null,
  139. };
  140. },
  141. mounted() {
  142. this.initData();
  143. // this.flipToValue(this.number); // 初始化显示数字
  144. // this.startAnimation()
  145. },
  146. methods: {
  147. async initData() {
  148. await count().then((res) => {
  149. console.log(res, 999);
  150. this.number = res.data;
  151. });
  152. alarm().then((res) => {
  153. console.log(res, 444);
  154. this.data = res.data;
  155. });
  156. this.config1 = {
  157. number: [this.number],
  158. content: String(this.number),
  159. // animationFrame:10
  160. };
  161. console.log(typeof String(this.number),777);
  162. },
  163. // startAnimation() {
  164. // this.animationInterval = setInterval(() => {
  165. // const increment = this.number > this.currentValue ? 1 : -1;
  166. // this.currentValue += increment;
  167. // console.log(this.currentValue, increment,4545444);
  168. // this.flipToValue(this.currentValue);
  169. // // this.number = this.currentValue
  170. // if (this.currentValue === this.number) {
  171. // clearInterval(this.animationInterval);
  172. // setTimeout(() => {
  173. // this.currentValue = 0; // 重置当前值
  174. // this.startAnimation(); // 开始新一轮动画
  175. // }, 5000); // 5秒后重新开始
  176. // }
  177. // }, 50);
  178. // },
  179. // updateDigit(index, value) {
  180. // this.$set(this.digits, index, value);
  181. // },
  182. // flipToValue(value) {
  183. // const valueStr = String(value).padStart(3, '0');
  184. // for (let i = 0; i < 3; i++) {
  185. // this.updateDigit(i, Number(valueStr[i]));
  186. // }
  187. // },
  188. },
  189. };
  190. </script>
  191. <style lang="scss">
  192. .left-chart-1 {
  193. width: 100%;
  194. height: 100%;
  195. display: flex;
  196. flex-grow: 0;
  197. flex-direction: column;
  198. // border:1px solid green;
  199. .lc1-details {
  200. // width: 250px;
  201. height: 90px;
  202. font-size: 14px;
  203. padding: 0 10px;
  204. display: flex;
  205. justify-content: space-between;
  206. align-items: center;
  207. border-radius: 5px;
  208. // border: 1px solid red;
  209. background-color: #062961;
  210. span {
  211. color: #096dd9;
  212. font-weight: bold;
  213. font-size: 35px;
  214. margin-left: 20px;
  215. }
  216. }
  217. .left-list {
  218. height: 100%;
  219. .left-container {
  220. // width: 100%;
  221. height: 15.4%;
  222. text-align: center;
  223. border-radius: 5px;
  224. border: 1px solid #1ae1e6;
  225. // height: 50px;
  226. // background-color: green;
  227. margin-top: 10px;
  228. display: flex;
  229. background-color: #5d6986;
  230. // color:red;
  231. .container-topdown {
  232. width: 100%;
  233. // height: 57px;
  234. display: flex;
  235. flex-direction: column;
  236. align-items: center;
  237. justify-content: center;
  238. img {
  239. width: 30px;
  240. height: 30px;
  241. }
  242. .word {
  243. margin-top: 5px;
  244. font-size: 16px;
  245. }
  246. .number {
  247. color: #fcca00;
  248. font-size: 20px;
  249. font-weight: bold;
  250. }
  251. .color {
  252. color: #fff;
  253. }
  254. }
  255. }
  256. }
  257. }
  258. </style>