新型管道消毒机前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

942 lines
43 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. <template>
  2. <div class="progress_container">
  3. <div class="header_wrap">
  4. <div class="left_time">
  5. <p class="time">
  6. {{
  7. operatorStore.estimatedRemainingTimeS == 0
  8. ? '已结束'
  9. : `${time_To_hhmmss(operatorStore.estimatedRemainingTimeS)}`
  10. }}
  11. </p>
  12. </div>
  13. <svg
  14. v-if="[2, 3].includes(operatorStore.disinfectStatus)"
  15. xmlns="http://www.w3.org/2000/svg"
  16. xmlns:xlink="http://www.w3.org/1999/xlink"
  17. fill="none"
  18. version="1.1"
  19. width="181"
  20. height="52"
  21. viewBox="0 0 181 52"
  22. >
  23. <g>
  24. <g>
  25. <g>
  26. <path
  27. d="M82.64,13.3438C81.84,15.7875,80.28,18.9925,79.12,21.0362L83.28,22.5987C84.52000000000001,20.6756,86,17.8306,87.28,15.0263L82.64,13.3438ZM62.72,15.4269C64.28,17.7506,65.84,20.8756,66.36,22.8794L70.72,20.8356C70.08,18.7925,68.4,15.8275,66.8,13.6244L62.72,15.4269ZM52,16.1481C54.480000000000004,17.4706,57.56,19.5537,59,21.0762L61.96,17.35C60.4,15.8675,57.24,13.9444,54.8,12.7825L52,16.1481ZM50.12,26.76C52.68,28.08,55.88,30.2,57.32,31.72L60.24,27.96C58.6,26.48,55.36,24.56,52.84,23.36L50.12,26.76ZM51.24,46.76L55.480000000000004,49.84C57.6,45.8,59.84,41.12,61.68,36.84L58.16,33.92C55.96,38.64,53.2,43.68,51.24,46.76ZM68.68,35.08L80.88,35.08L80.88,38.08L68.68,38.08L68.68,35.08ZM68.68,31.04L68.68,28.08L80.88,28.08L80.88,31.04L68.68,31.04ZM72.48,12.4225L72.48,23.64L64,23.64L64,49.9606L68.68,49.9606L68.68,42.12L80.88,42.12L80.88,44.76C80.88,45.28,80.68,45.48,80.03999999999999,45.52C79.44,45.52,77.32,45.52,75.48,45.4C76.12,46.64,76.76,48.64,76.92,49.92C79.96000000000001,49.92,82.08,49.88,83.6,49.12C85.12,48.4,85.56,47.12,85.56,44.84L85.56,23.64L77.32,23.64L77.32,12.4225L72.48,12.4225ZM121.2,33.76L121.08,35.92L114.16,35.92L115.16,35.36C115,34.88,114.64,34.32,114.16,33.76L121.2,33.76ZM100.72,30.32C100.6,32.08,100.44,34,100.24000000000001,35.92L94.28,35.92L94.28,39.44L99.88,39.44C99.6,41.56,99.36,43.52,99.08,45.12L119.96,45.12C119.8,45.6,119.64,45.88,119.48,46.08C119.12,46.52,118.76,46.6,118.08,46.6C117.36,46.64,115.8,46.6,114.08,46.44C114.6,47.36,115.08,48.84,115.12,49.8C117.2,49.8812,119.2,49.9219,120.44,49.72C121.72,49.6,122.8,49.28,123.68,48.2C124.12,47.64,124.52,46.68,124.84,45.12L129.44,45.12L129.44,41.68L125.36,41.68L125.56,39.44L131.72,39.44L131.72,35.92L125.84,35.92L126.04,32.16C126.08,31.6,126.12,30.32,126.12,30.32L100.72,30.32ZM110.08,34.24C110.56,34.72,111,35.32,111.4,35.92L104.96000000000001,35.92L105.16,33.76L111,33.76L110.08,34.24ZM120.84,39.44L120.6,41.68L113.68,41.68L114.96,41C114.76,40.52,114.4,39.96,113.96,39.44L120.84,39.44ZM109.75999999999999,39.88C110.28,40.4,110.8,41.04,111.16,41.68L104.32,41.68L104.6,39.44L110.6,39.44L109.75999999999999,39.88ZM110.52000000000001,12.4262L110.52000000000001,15.36L97.2,15.36L97.2,18.72L110.52000000000001,18.72L110.52000000000001,20.36L99.88,20.36L99.88,23.68L110.52000000000001,23.68L110.52000000000001,25.4L95.36,25.4L95.36,28.88L130.64,28.88L130.64,25.4L115.44,25.4L115.44,23.68L126.64,23.68L126.64,20.36L115.44,20.36L115.44,18.72L129.36,18.72L129.36,15.36L115.44,15.36L115.44,12.4262L110.52000000000001,12.4262ZM154.36,12.4231L154.36,19.4L140.51999999999998,19.4L140.51999999999998,39.6838L145.32,39.6838L145.32,37.48L154.36,37.48L154.36,50.0187L159.44,50.0187L159.44,37.48L168.51999999999998,37.48L168.51999999999998,39.4831L173.56,39.4831L173.56,19.4L159.44,19.4L159.44,12.4231L154.36,12.4231ZM145.32,32.76L145.32,24.12L154.36,24.12L154.36,32.76L145.32,32.76ZM168.51999999999998,32.76L159.44,32.76L159.44,24.12L168.51999999999998,24.12L168.51999999999998,32.76Z"
  28. fill="#17F179"
  29. fill-opacity="1"
  30. />
  31. </g>
  32. <g transform="matrix(0,1,-1,0,52,-22)">
  33. <path
  34. d="M61.3114,50.5847L56.491,45.7322C62.778400000000005,44.923500000000004,67.8084,39.8689,67.8084,33.8033C67.8084,27.9399,63.1976,22.88525,57.1198,21.87432L52.7186,17.62841L54.6048,17.62841C64.24549999999999,17.62841,72,24.9071,72,33.8033C72,39.8689,68.2276,45.3279,62.988,47.9563L62.988,52L61.3114,50.5847ZM56.7006,49.776C56.0719,49.776,55.2335,49.9781,54.3952,49.9781C44.75449,49.9781,37,42.6995,37,33.8033C37,27.7377,40.77246,22.27869,46.01198,19.650280000000002L46.01198,15L48.7365,17.62842L52.9281,21.67213C46.43114,22.27869,41.4012,27.5355,41.4012,33.8033C41.4012,39.8689,46.22156,44.923500000000004,52.509,45.7322L56.7006,49.776Z"
  35. fill="#17F179"
  36. fill-opacity="1"
  37. />
  38. </g>
  39. </g>
  40. </g>
  41. </svg>
  42. <svg
  43. v-if="operatorStore.disinfectStatus == 1"
  44. xmlns="http://www.w3.org/2000/svg"
  45. xmlns:xlink="http://www.w3.org/1999/xlink"
  46. fill="none"
  47. version="1.1"
  48. width="132"
  49. height="52"
  50. viewBox="0 0 132 52"
  51. >
  52. <g>
  53. <g>
  54. <g>
  55. <g>
  56. <path
  57. d="M26.04,27.36L26.04,34.68C26.04,38.44,24.84,43.48,16,46.44C17.12,47.28,18.4,48.84,19,49.8C28.92,46.04,30.52,39.96,30.52,34.72L30.52,27.36L26.04,27.36ZM28.96,43.8C31.2,45.76,34.32,48.48,35.76,50.2037L39.08,46.96C37.48,45.32,34.24,42.72,32.04,40.92L28.96,43.8ZM2.68,23.2C4.56,24.4,7,25.92,9.04,27.32L1.04,27.32L1.04,31.56L7,31.56L7,44.8C7,45.24,6.84,45.36,6.28,45.4C5.72,45.4,3.84,45.4,2.16,45.36C2.76,46.64,3.4,48.6,3.6,49.96C6.28,49.96,8.28,49.84,9.76,49.12C11.28,48.4,11.64,47.12,11.64,44.88L11.64,31.56L14.04,31.56C13.6,33.44,13.08,35.28,12.64,36.6L16.2,37.36C17.12,34.96,18.2,31.2,19.08,27.84L16.12,27.2L15.48,27.32L13.64,27.32L14.68,25.92C13.92,25.36,12.88,24.72,11.76,24C14,21.76,16.36,18.68,18.04,15.92L15.16,13.9187L14.32,14.16L2,14.16L2,18.32L11.32,18.32C10.4,19.64,9.36,20.96,8.36,21.96L5.2,20.12L2.68,23.2ZM19.52,21.08L19.52,40.4L23.96,40.4L23.96,25.36L32.6,25.36L32.6,40.24L37.28,40.24L37.28,21.08L30.16,21.08L31.12,18.2L38.84,18.2L38.84,14L18.24,14L18.24,18.2L26,18.2L25.52,21.08L19.52,21.08ZM57.08,42.0844C57.52,44.5687,57.84,47.8544,57.84,49.8175L62.56,49.1369C62.52,47.1731,62.04,44.0075,61.52,41.5637L57.08,42.0844ZM65.24,42.0044C66.12,44.4888,67.04,47.6944,67.28,49.6575L72.08,48.7356C71.76,46.7325,70.72,43.6069,69.72,41.2431L65.24,42.0044ZM73.4,41.9244C75.2,44.5287,77.32,48.055,78.16,50.2188L82.72,48.175C81.72,45.9712,79.48,42.565,77.64,40.1612L73.4,41.9244ZM50.24,40.4412C48.96,43.2463,46.92,46.4519,45.32,48.335L49.92,50.2188C51.56,47.9744,53.56,44.5687,54.84,41.6437L50.24,40.4412ZM65.64,12.3838L65.56,18L60.88,18L60.88,22.04L65.4,22.04C65.28,23.88,65.08,25.56,64.8,27.08L62.44,25.76L60.4,28.72L59.96,24.6L56,25.52L56,22.2L60.16,22.2L60.16,17.8L56,17.8L56,12.5444L51.6,12.5444L51.6,17.8L46.28,17.8L46.28,22.2L51.6,22.2L51.6,26.52L45.36,27.84L46.32,32.48L51.6,31.16L51.6,34.88C51.6,35.36,51.44,35.52,50.88,35.52C50.36,35.52,48.68,35.52,47.08,35.44C47.64,36.68,48.24,38.52,48.36,39.76C51.04,39.76,52.92,39.64,54.28,38.96C55.64,38.24,56,37.08,56,34.92L56,30.04L60.24,28.96L60.16,29.08L63.52,31.12C62.44,33.4,60.84,35.28,58.36,36.76C59.4,37.56,60.76,39.24,61.32,40.3212C64.16,38.56,66.08,36.36,67.36,33.64C68.88,34.68,70.24,35.64,71.16,36.48L73.56,32.64C72.4,31.72,70.68,30.6,68.8,29.44C69.36,27.24,69.68,24.76,69.84,22.04L73.56,22.04C73.36,32.84,73.4,39.6,78.52,39.6C81.52,39.6,82.76,38.16,83.2,33.24C82.12,32.92,80.52,32.2,79.64,31.44C79.52,34.28,79.28,35.48,78.72,35.48C77.48,35.48,77.64,29.12,78.08,18L70.04,18L70.16,12.3838L65.64,12.3838ZM105.36,12.4231L105.36,19.4L91.52,19.4L91.52,39.6838L96.32,39.6838L96.32,37.48L105.36,37.48L105.36,50.0187L110.44,50.0187L110.44,37.48L119.52,37.48L119.52,39.4831L124.56,39.4831L124.56,19.4L110.44,19.4L110.44,12.4231L105.36,12.4231ZM96.32,32.76L96.32,24.12L105.36,24.12L105.36,32.76L96.32,32.76ZM119.52,32.76L110.44,32.76L110.44,24.12L119.52,24.12L119.52,32.76Z"
  58. fill="#F74104"
  59. fill-opacity="1"
  60. />
  61. </g>
  62. </g>
  63. </g>
  64. </g>
  65. </svg>
  66. <svg
  67. v-if="operatorStore.disinfectStatus == 4"
  68. xmlns="http://www.w3.org/2000/svg"
  69. xmlns:xlink="http://www.w3.org/1999/xlink"
  70. fill="none"
  71. version="1.1"
  72. width="132"
  73. height="52"
  74. viewBox="0 0 132 52"
  75. >
  76. <g>
  77. <g>
  78. <g>
  79. <path
  80. d="M30.16,19.56C29.16,20.88,27.96,22.04,26.56,23.12C25.16,22.08,24,20.96,23.08,19.68L23.16,19.56L30.16,19.56ZM22.84,12.5056C21.2,15.5187,18.32,19,14.16,21.56C15.12,22.28,16.56,23.88,17.2,24.88C18.28,24.12,19.32,23.32,20.24,22.48C21.04,23.52,21.92,24.48,22.92,25.36C20.16,26.76,17,27.84,13.72,28.48C14.56,29.4,15.6,31.2,16.04,32.32C19.88,31.36,23.48,30,26.64,28.12C29.48,29.84,32.76,31.08,36.48,31.84C37.12,30.64,38.32,28.84,39.32,27.92C36.04,27.44,33.04,26.56,30.48,25.4C33.04,23.16,35.16,20.4,36.56,17.08L33.6,15.6394L32.84,15.84L26.08,15.84C26.6,15.0369,27.08,14.2331,27.56,13.43L22.84,12.5056ZM16.76,32.4L16.76,36.52L25.12,36.52L25.12,40.44L20.76,40.44L21.44,37.88L17.12,37.36C16.6,39.72,15.76,42.6,15.04,44.56L16.96,44.56L25.12,44.6006L25.12,50.0169L29.72,50.0169L29.72,44.6L37.96,44.6L37.96,40.44L29.72,40.44L29.72,36.52L37,36.52L37,32.4L29.72,32.4L29.72,30.12L25.12,30.12L25.12,32.4L16.76,32.4ZM2.6,14.04L2.6,49.8962L6.8,49.8962L6.8,18.32L10.12,18.32C9.36,20.96,8.4,24.2,7.48,26.6C10.12,29.44,10.8,32.04,10.8,33.96C10.84,35.16,10.6,36,10.04,36.36C9.72,36.6,9.28,36.72,8.8,36.72C8.28,36.72,7.64,36.72,6.84,36.64C7.52,37.8,7.88,39.6,7.92,40.76C8.92,40.8006,9.92,40.8006,10.72,40.68C11.68,40.52,12.44,40.28,13.12,39.8C14.44,38.84,15.04,37.04,15.04,34.48C15.04,32.08,14.48,29.28,11.68,26.08C12.96,23.04,14.44,19.04,15.6,15.64L12.44,13.8387L11.76,14.04L2.6,14.04ZM54.04,26.28L54.04,29.72L51.88,29.72L51.88,26.28L54.04,26.28ZM57.2,26.28L59.48,26.28L59.48,29.72L57.2,29.72L57.2,26.28ZM51.36,22.76C51.88,21.8,52.32,20.84,52.76,19.8L56.72,19.8C56.4,20.84,56,21.88,55.6,22.76L51.36,22.76ZM50.72,12.425C49.6,17.2,47.52,21.88,44.76,24.84C45.6,25.36,47.08,26.6,47.92,27.4L47.92,33.36C47.92,37.84,47.68,43.8,44.96,47.9625C45.92,48.405,47.68,49.4906,48.4,50.1744C50.12,47.6006,51,44.16,51.44,40.72L54.04,40.72L54.04,47.52L57.2,47.52L57.2,46.12C57.64,47.2,58,48.6,58.08,49.52C59.88,49.52,61.12,49.44,62.16,48.72C63.16,48.04,63.4,46.84,63.4,45.12L63.4,36.8C64.36,37.24,66,38.08,66.76,38.6C67.36,37.72,67.88,36.68,68.4,35.48L72.16,35.48L72.16,39.12L64.56,39.12L64.56,43.24L72.16,43.24L72.16,50.0175L76.72,50.0175L76.72,43.24L82.68,43.24L82.68,39.12L76.72,39.12L76.72,35.48L81.84,35.48L81.84,31.44L76.72,31.44L76.72,28.28L72.16,28.28L72.16,31.44L69.76,31.44C69.96,30.6,70.16,29.76,70.32,28.92L66.8,28.2C70.8,25.96,72.28,22.6,72.96,18.44L77.4,18.44C77.24,21.76,77.04,23.12,76.68,23.56C76.4,23.92,76.08,23.96,75.6,23.96C75.08,23.96,74,23.92,72.72,23.8C73.32,24.84,73.72,26.48,73.8,27.68C75.44,27.72,76.96,27.72,77.88,27.56C78.88,27.44,79.64,27.08,80.32,26.28C81.2,25.2,81.52,22.44,81.72,16.04C81.76,15.52,81.8,14.48,81.8,14.48L64.16,14.48L64.16,18.44L68.64,18.44C68.08,21.4,66.88,23.8,63.4,25.36L63.4,22.76L59.76,22.76C60.6,21.12,61.44,19.32,62,17.76L59.16,15.9994L58.52,16.16L54.12,16.16C54.44,15.2369,54.72,14.2725,54.96,13.3488L50.72,12.425ZM54.04,33.16L54.04,37.2L51.76,37.2C51.84,35.88,51.88,34.56,51.88,33.4L51.88,33.16L54.04,33.16ZM57.2,33.16L59.48,33.16L59.48,37.2L57.2,37.2L57.2,33.16ZM57.2,40.72L59.48,40.72L59.48,45.04C59.48,45.44,59.4,45.56,59.04,45.56L57.2,45.52L57.2,40.72ZM63.4,36.6L63.4,25.8C64.28,26.6006,65.16,27.8819,65.6,28.8025L66.4,28.4025C65.84,31.44,64.8,34.48,63.4,36.6ZM105.36,12.4231L105.36,19.4L91.52,19.4L91.52,39.6838L96.32,39.6838L96.32,37.48L105.36,37.48L105.36,50.0187L110.44,50.0187L110.44,37.48L119.52,37.48L119.52,39.4831L124.56,39.4831L124.56,19.4L110.44,19.4L110.44,12.4231L105.36,12.4231ZM96.32,32.76L96.32,24.12L105.36,24.12L105.36,32.76L96.32,32.76ZM119.52,32.76L110.44,32.76L110.44,24.12L119.52,24.12L119.52,32.76Z"
  81. fill="#2485FF"
  82. fill-opacity="1"
  83. />
  84. </g>
  85. </g>
  86. </g>
  87. </svg>
  88. <div class="left_log_wrap">
  89. <p class="text">当前剩余</p>
  90. <p class="val">{{ deviceStore.nowlog?.toFixed(2) || 0 }}log</p>
  91. </div>
  92. <div
  93. class="btn"
  94. v-if="[1, 2, 3, 4].includes(operatorStore.disinfectStatus)"
  95. @click="stopDisinfect"
  96. >
  97. 结束消毒
  98. </div>
  99. <div
  100. class="btn"
  101. v-if="
  102. operatorStore.disinfectStatus == 0 ||
  103. operatorStore.disinfectStatus == 5
  104. "
  105. @click="showDetail"
  106. >
  107. 返回
  108. </div>
  109. </div>
  110. <div class="echarts_wrap">
  111. <div class="single_wrap">
  112. <p class="title">设备</p>
  113. <div
  114. class="echarts_box"
  115. id="bin"
  116. v-if="operatorStore.disinfectStatus != 0 || binLocal"
  117. ></div>
  118. </div>
  119. <div class="single_wrap">
  120. <p class="title">环境1</p>
  121. <div
  122. class="echarts_box"
  123. id="envir1"
  124. v-if="operatorStore.disinfectStatus != 0 || envir1Local"
  125. ></div>
  126. </div>
  127. <div class="single_wrap">
  128. <p class="title">环境2</p>
  129. <div
  130. class="echarts_box"
  131. id="envir2"
  132. v-if="operatorStore.disinfectStatus != 0 || envir2Local"
  133. ></div>
  134. </div>
  135. </div>
  136. <div class="detail_wrap">
  137. <div class="tip_info">警报信息</div>
  138. <div class="speed_wrap">
  139. <p class="speed">{{ settingStore.sprinklerPumpGPM }}</p>
  140. </div>
  141. <svg
  142. @click="showDetail"
  143. xmlns="http://www.w3.org/2000/svg"
  144. xmlns:xlink="http://www.w3.org/1999/xlink"
  145. fill="none"
  146. version="1.1"
  147. width="222"
  148. height="50"
  149. viewBox="0 0 222 50"
  150. >
  151. <g>
  152. <g>
  153. <rect
  154. x="0"
  155. y="0"
  156. width="222"
  157. height="50"
  158. rx="25"
  159. fill="#06518B"
  160. fill-opacity="1"
  161. />
  162. </g>
  163. <g>
  164. <path
  165. d="M59.16,27.84L66.68,27.84L66.68,29.24L59.16,29.24L59.16,27.84ZM59.16,25.22L66.68,25.22L66.68,26.58L59.16,26.58L59.16,25.22ZM57.28,23.939999999999998L57.28,30.52L68.64,30.52L68.64,23.939999999999998L57.28,23.939999999999998ZM54.36,31.62L54.36,33.3L71.7,33.3L71.7,31.62L54.36,31.62ZM62,15.3325L62,17.740000000000002L54.1,17.740000000000002L54.1,19.4L60.08,19.4C58.42,21.14,55.96,22.68,53.62,23.46C54.02,23.84,54.56,24.52,54.84,24.98C57.5,23.92,60.2,21.96,62,19.68L62,23.32L63.88,23.32L63.88,19.68C65.72,21.9,68.44,23.82,71.12,24.82C71.4,24.34,71.96000000000001,23.64,72.36,23.28C69.94,22.52,67.44,21.08,65.78,19.4L71.92,19.4L71.92,17.740000000000002L63.88,17.740000000000002L63.88,15.3325L62,15.3325ZM81.36,28.06L89.44,28.06L89.44,29.24L81.36,29.24L81.36,28.06ZM81.36,26.82L81.36,25.68L89.44,25.68L89.44,26.82L81.36,26.82ZM81.36,30.48L89.44,30.48L89.44,31.72L81.36,31.72L81.36,30.48ZM90.84,15.455C87.56,16.05844,81.62,16.34,76.72,16.36C76.88,16.740000000000002,77.06,17.380000000000003,77.08,17.8C78.74,17.8,80.52,17.759999999999998,82.32,17.7L81.98,18.86L76.96000000000001,18.86L76.96000000000001,20.32L81.44,20.32C81.28,20.72,81.1,21.119999999999997,80.92,21.52L75.53999999999999,21.52L75.53999999999999,23.060000000000002L80.08,23.060000000000002C78.84,25.08,77.18,26.86,74.98,28.08C75.36,28.46,75.9,29.14,76.16,29.58C77.44,28.82,78.56,27.9,79.53999999999999,26.86L79.53999999999999,33.965599999999995L81.36,33.965599999999995L81.36,33.18L89.44,33.18L89.44,33.965599999999995L91.32,33.965599999999995L91.32,24.22L81.56,24.22C81.8,23.84,82.02,23.46,82.24,23.060000000000002L93.25999999999999,23.060000000000002L93.25999999999999,21.52L83,21.52L83.5,20.32L92.14,20.32L92.14,18.86L84.02,18.86L84.4,17.6C87.22,17.439999999999998,89.92,17.2,92,16.82L90.84,15.455ZM112.86,15.83219C112.42,17.03406,111.56,18.63656,110.9,19.658099999999997L112.53999999999999,20.3191C113.2,19.3375,114.02000000000001,17.895310000000002,114.7,16.53312L112.86,15.83219ZM102.75999999999999,16.67344C103.58,17.83531,104.4,19.4178,104.68,20.4394L106.4,19.6181C106.06,18.596249999999998,105.18,17.07406,104.36,15.972190000000001L102.75999999999999,16.67344ZM97.42,16.833750000000002C98.66,17.49469,100.18,18.536250000000003,100.88,19.2975L102.06,17.83531C101.3,17.09406,99.75999999999999,16.1325,98.52000000000001,15.531559999999999L97.42,16.833750000000002ZM96.47999999999999,22.18C97.74000000000001,22.82,99.3,23.880000000000003,100.03999999999999,24.6L101.18,23.119999999999997C100.4,22.4,98.8,21.439999999999998,97.56,20.84L96.47999999999999,22.18ZM97.08,32.519999999999996L98.72,33.739999999999995C99.78,31.8,100.97999999999999,29.36,101.9,27.22L100.5,26.08C99.44,28.38,98.06,30.98,97.08,32.519999999999996ZM105.2,26.22L112.02000000000001,26.22L112.02000000000001,28.1L105.2,28.1L105.2,26.22ZM105.2,24.6L105.2,22.759999999999998L112.02000000000001,22.759999999999998L112.02000000000001,24.6L105.2,24.6ZM107.72,15.311250000000001L107.72,21L103.34,21L103.34,33.8809L105.2,33.8809L105.2,29.72L112.02000000000001,29.72L112.02000000000001,31.68C112.02000000000001,31.96,111.92,32.04,111.62,32.06C111.3,32.08,110.24000000000001,32.08,109.2,32.019999999999996C109.44,32.519999999999996,109.72,33.32,109.78,33.82C111.3,33.82,112.34,33.8,113,33.5C113.68,33.2,113.86,32.68,113.86,31.7L113.86,21L109.64,21L109.64,15.311250000000001L107.72,15.311250000000001ZM131.66,25.68L131.57999999999998,27.14L127.72,27.14L128.2,26.86C128.06,26.52,127.76,26.08,127.42,25.68L131.66,25.68ZM121.28,24.3L121.02,27.14L117.94,27.14L117.94,28.58L120.84,28.58C120.72,29.66,120.56,30.68,120.42,31.5L131.04000000000002,31.5C130.94,31.9,130.82,32.14,130.7,32.28C130.51999999999998,32.480000000000004,130.34,32.519999999999996,129.98000000000002,32.519999999999996C129.6,32.54,128.72,32.519999999999996,127.76,32.42C127.98,32.8,128.16,33.4,128.18,33.78C129.24,33.8612,130.26,33.8612,130.84,33.8003C131.45999999999998,33.760000000000005,131.95999999999998,33.6,132.34,33.14C132.6,32.84,132.8,32.36,132.95999999999998,31.5L135.18,31.5L135.18,30.1L133.18,30.1L133.34,28.58L136.45999999999998,28.58L136.45999999999998,27.14L133.45999999999998,2
  166. fill="#FFFFFF"
  167. fill-opacity="1"
  168. />
  169. </g>
  170. <g>
  171. <ellipse
  172. cx="25"
  173. cy="25"
  174. rx="19"
  175. ry="19"
  176. fill="#FFFFFF"
  177. fill-opacity="1"
  178. />
  179. </g>
  180. <g>
  181. <path
  182. d="M19.02871,32.7154L26.9271,32.7154C27.2819,32.7154,27.5694,33.003,27.5694,33.3577C27.5694,33.7124,27.2819,34,26.9271,34L19.02878,34C17.35495,34.0013,15.99791543,32.643699999999995,16.00000275899,30.969900000000003L16.00000275899,19.03051C15.99771433,17.35657,17.35476,15.99871462,19.02871,16L30.9681,16C32.6422,15.999239749,33.9994,17.35649,33.998599999999996,19.03051L33.998599999999996,19.03261L33.972,26.9309C33.9678,27.2836,33.6803,27.5672,33.3275,27.5666C32.9747,27.566000000000003,32.688199999999995,27.281599999999997,32.685,26.928800000000003L32.685,26.9267L32.712199999999996,19.02978C32.712,18.56363,32.5319,18.1255,32.2024,17.79601C31.875799999999998,17.46756,31.4313,17.28341,30.9681,17.28457L19.02871,17.28457C18.06486,17.28485,17.28386,18.06666,17.28458,19.03051L17.28458,30.969900000000003C17.2839,31.9336,18.06494,32.7153,19.02871,32.7154ZM30.7872,21.14739C30.787100000000002,21.50206,30.4996,21.79142,30.1449,21.79142L19.85856,21.78772C19.50381,21.78772,19.21634,21.497709999999998,19.21634,21.142960000000002C19.21634,20.788,19.50375,20.50011,19.858629999999998,20.49959L30.145,20.50293C30.4997,20.503,30.787300000000002,20.79272,30.7872,21.14739ZM31.3598,30.4513L33.812200000000004,32.9037C34.0627,33.1546,34.0626,33.561,33.8119,33.8117C33.5612,34.0624,33.1548,34.0626,32.9039,33.8121L30.4514,31.3596C28.1824,32.973600000000005,25.00281,31.7287,24.432969999999997,29.0031C23.86314,26.2775,26.2776,23.86302,29.0032,24.432850000000002C31.7289,25.002679999999998,32.9738,28.1822,31.3598,30.4513ZM24.35822,25.002850000000002C24.35822,25.35758,24.07066,25.645139999999998,23.71593,25.645139999999998L19.85856,25.643909999999998C19.50417,25.643909999999998,19.21688,25.35662,19.21688,25.00224C19.21688,24.64785,19.50417,24.36057,19.85856,24.36057L23.71593,24.36057C24.07066,24.36057,24.35822,24.648130000000002,24.35822,25.002850000000002ZM25.73168,27.5503C25.29392,29.1839,26.5248,30.7881,28.2161,30.7882C28.898699999999998,30.79,29.5536,30.518700000000003,30.0349,30.0348C31.230800000000002,28.839,30.966900000000003,26.8342,29.502299999999998,25.98853C28.037599999999998,25.142879999999998,26.1694,25.91666,25.73168,27.5503ZM19.21681,28.8564C19.21681,28.5018,19.50429,28.2143,19.85892,28.2143L22.43048,28.2155C22.78752,28.2117,23.07899,28.5001,23.07899,28.8572C23.07899,29.2143,22.78752,29.5026,22.43048,29.4989L19.85892,29.4985C19.50429,29.4985,19.21681,29.211,19.21681,28.8564Z"
  183. fill-rule="evenodd"
  184. fill="#06518B"
  185. fill-opacity="1"
  186. />
  187. </g>
  188. </g>
  189. </svg>
  190. </div>
  191. <DisinfectModal
  192. v-if="disinfectWarnVisible"
  193. :hideDisinfectModal="hideDisinfectModal"
  194. />
  195. <van-overlay :show="operatorStore.showStopReady" z-index="3">
  196. <div class="wrapper" @click.stop>
  197. <div class="block">
  198. <van-loading />
  199. <p class="shutdown_text">结束消毒中</p>
  200. </div>
  201. </div>
  202. </van-overlay>
  203. </div>
  204. </template>
  205. <script setup>
  206. import {
  207. useOperatorStore,
  208. useWebSocketStore,
  209. useEchartsStore,
  210. useSettingStore,
  211. useDeviceStore,
  212. } from '@/store'
  213. import { time_To_hhmmss } from '@/utils'
  214. import {
  215. stopDisinfectionJSON,
  216. getStateJSON,
  217. continueDisinfectionJSON,
  218. pauseDisinfectionJSON,
  219. } from '@/mock/command'
  220. import DisinfectModal from 'cpns/dialogs/DisinfectModal'
  221. import { onMounted, onUnmounted, ref, computed, watch } from 'vue'
  222. import * as echarts from 'echarts'
  223. import { storeToRefs } from 'pinia'
  224. const echartsStore = useEchartsStore()
  225. const settingStore = useSettingStore()
  226. const deviceStore = useDeviceStore()
  227. const binLocal = computed(() => {
  228. return echartsStore?.binCharts || localStorage.getItem('bin')
  229. })
  230. const envir1Local = computed(() => {
  231. return echartsStore?.envir1Charts || localStorage.getItem('envir1')
  232. })
  233. const envir2Local = computed(() => {
  234. return echartsStore?.envir2Charts || localStorage.getItem('envir2')
  235. })
  236. const binOption = ref({
  237. tooltip: {
  238. trigger: 'axis',
  239. },
  240. legend: {
  241. data: ['温度', '湿度', 'H2O2浓度', 'H2O2饱和度'],
  242. },
  243. grid: {
  244. left: '3%',
  245. right: '4%',
  246. bottom: '3%',
  247. containLabel: true,
  248. },
  249. xAxis: {
  250. type: 'category',
  251. boundaryGap: false,
  252. data: echartsStore.abscissaFormater,
  253. },
  254. yAxis: {
  255. type: 'value',
  256. },
  257. series: [
  258. {
  259. name: '温度',
  260. type: 'line',
  261. stack: 'binTemp',
  262. data: echartsStore.binTemp,
  263. },
  264. {
  265. name: '湿度',
  266. type: 'line',
  267. stack: 'binHumidity',
  268. data: echartsStore.binHumidity,
  269. },
  270. {
  271. name: 'H2O2浓度',
  272. type: 'line',
  273. stack: 'binHP',
  274. data: echartsStore.binHP,
  275. },
  276. {
  277. name: 'H2O2饱和度',
  278. type: 'line',
  279. stack: 'binSaturation',
  280. data: echartsStore.binSaturation,
  281. },
  282. ],
  283. })
  284. const envir1Option = ref({
  285. tooltip: {
  286. trigger: 'axis',
  287. },
  288. legend: {
  289. data: ['温度', '湿度', 'H2O2浓度', 'H2O2饱和度'],
  290. },
  291. grid: {
  292. left: '3%',
  293. right: '4%',
  294. bottom: '3%',
  295. containLabel: true,
  296. },
  297. xAxis: {
  298. type: 'category',
  299. boundaryGap: false,
  300. data: echartsStore.abscissaFormater,
  301. },
  302. yAxis: {
  303. type: 'value',
  304. },
  305. series: [
  306. {
  307. name: '温度',
  308. type: 'line',
  309. stack: '1',
  310. data: [],
  311. },
  312. {
  313. name: '湿度',
  314. type: 'line',
  315. stack: '2',
  316. data: [],
  317. },
  318. {
  319. name: 'H2O2浓度',
  320. type: 'line',
  321. stack: '3',
  322. data: [],
  323. },
  324. {
  325. name: 'H2O2饱和度',
  326. type: 'line',
  327. stack: '4',
  328. data: [],
  329. },
  330. ],
  331. })
  332. const envir2Option = ref({
  333. tooltip: {
  334. trigger: 'axis',
  335. },
  336. legend: {
  337. data: ['温度', '湿度', 'H2O2浓度', 'H2O2饱和度'],
  338. },
  339. grid: {
  340. left: '3%',
  341. right: '4%',
  342. bottom: '3%',
  343. containLabel: true,
  344. },
  345. xAxis: {
  346. type: 'category',
  347. boundaryGap: false,
  348. data: echartsStore.abscissaFormater,
  349. },
  350. yAxis: {
  351. type: 'value',
  352. },
  353. series: [
  354. {
  355. name: '温度',
  356. type: 'line',
  357. stack: '1',
  358. data: [],
  359. },
  360. {
  361. name: '湿度',
  362. type: 'line',
  363. stack: '2',
  364. data: [],
  365. },
  366. {
  367. name: 'H2O2浓度',
  368. type: 'line',
  369. stack: '3',
  370. data: [],
  371. },
  372. {
  373. name: 'H2O2饱和度',
  374. type: 'line',
  375. stack: '4',
  376. data: [],
  377. },
  378. ],
  379. })
  380. const operatorStore = useOperatorStore()
  381. const webSocketStore = useWebSocketStore()
  382. const props = defineProps({
  383. changeShowOperator: {
  384. type: Function,
  385. },
  386. })
  387. const showDetail = () => {
  388. props.changeShowOperator(true)
  389. }
  390. const timer = ref(null)
  391. const binCharts = ref(null)
  392. const envir1Charts = ref(null)
  393. const envir2Charts = ref(null)
  394. const time1 = ref(null)
  395. const time2 = ref(null)
  396. onMounted(() => {
  397. timer.value = setInterval(() => {
  398. webSocketStore.sendCommandMsg(getStateJSON)
  399. }, 1000)
  400. let a = echarts.getInstanceByDom(document.getElementById('bin'))
  401. if (a == undefined) {
  402. binCharts.value = echarts.init(document.getElementById('bin'))
  403. binCharts.value.setOption(binOption.value)
  404. }
  405. let b = echarts.getInstanceByDom(document.getElementById('envir1'))
  406. if (b == undefined) {
  407. envir1Charts.value = echarts.init(document.getElementById('envir1'))
  408. envir1Charts.value.setOption(envir1Option.value)
  409. }
  410. let c = echarts.getInstanceByDom(document.getElementById('envir2'))
  411. if (c == undefined) {
  412. envir2Charts.value = echarts.init(document.getElementById('envir2'))
  413. envir2Charts.value.setOption(envir2Option.value)
  414. }
  415. time1.value = setInterval(() => {
  416. binCharts.value?.setOption({
  417. tooltip: {
  418. trigger: 'axis',
  419. },
  420. legend: {
  421. data: ['温度', '湿度', 'H2O2浓度', 'H2O2饱和度'],
  422. },
  423. grid: {
  424. left: '3%',
  425. right: '4%',
  426. bottom: '3%',
  427. containLabel: true,
  428. },
  429. xAxis: {
  430. type: 'category',
  431. boundaryGap: false,
  432. data: echartsStore.abscissaFormater,
  433. },
  434. yAxis: {
  435. type: 'value',
  436. },
  437. series: [
  438. {
  439. name: '温度',
  440. type: 'line',
  441. stack: 'binTemp',
  442. data: echartsStore.binTemp,
  443. },
  444. {
  445. name: '湿度',
  446. type: 'line',
  447. stack: 'binHumidity',
  448. data: echartsStore.binHumidity,
  449. },
  450. {
  451. name: 'H2O2浓度',
  452. type: 'line',
  453. stack: 'binHP',
  454. data: echartsStore.binHP,
  455. },
  456. {
  457. name: 'H2O2饱和度',
  458. type: 'line',
  459. stack: 'binSaturation',
  460. data: echartsStore.binSaturation,
  461. },
  462. ],
  463. })
  464. envir1Charts.value?.setOption({
  465. tooltip: {
  466. trigger: 'axis',
  467. },
  468. legend: {
  469. data: ['温度', '湿度', 'H2O2浓度', 'H2O2饱和度'],
  470. },
  471. grid: {
  472. left: '3%',
  473. right: '4%',
  474. bottom: '3%',
  475. containLabel: true,
  476. },
  477. xAxis: {
  478. type: 'category',
  479. boundaryGap: false,
  480. data: echartsStore.abscissaFormater,
  481. },
  482. yAxis: {
  483. type: 'value',
  484. },
  485. series: [
  486. {
  487. name: '温度',
  488. type: 'line',
  489. stack: '1',
  490. data: [],
  491. },
  492. {
  493. name: '湿度',
  494. type: 'line',
  495. stack: '2',
  496. data: [],
  497. },
  498. {
  499. name: 'H2O2浓度',
  500. type: 'line',
  501. stack: '3',
  502. data: [],
  503. },
  504. {
  505. name: 'H2O2饱和度',
  506. type: 'line',
  507. stack: '4',
  508. data: [],
  509. },
  510. ],
  511. })
  512. envir2Charts.value?.setOption({
  513. tooltip: {
  514. trigger: 'axis',
  515. },
  516. legend: {
  517. data: ['温度', '湿度', 'H2O2浓度', 'H2O2饱和度'],
  518. },
  519. grid: {
  520. left: '3%',
  521. right: '4%',
  522. bottom: '3%',
  523. containLabel: true,
  524. },
  525. xAxis: {
  526. type: 'category',
  527. boundaryGap: false,
  528. data: echartsStore.abscissaFormater,
  529. },
  530. yAxis: {
  531. type: 'value',
  532. },
  533. series: [
  534. {
  535. name: '温度',
  536. type: 'line',
  537. stack: '1',
  538. data: [],
  539. },
  540. {
  541. name: '湿度',
  542. type: 'line',
  543. stack: '2',
  544. data: [],
  545. },
  546. {
  547. name: 'H2O2浓度',
  548. type: 'line',
  549. stack: '3',
  550. data: [],
  551. },
  552. {
  553. name: 'H2O2饱和度',
  554. type: 'line',
  555. stack: '4',
  556. data: [],
  557. },
  558. ],
  559. })
  560. }, 1000 * 20)
  561. time1.value = setInterval(() => {
  562. binCharts.value?.setOption({
  563. tooltip: {
  564. trigger: 'axis',
  565. },
  566. legend: {
  567. data: ['温度', '湿度', 'H2O2浓度', 'H2O2饱和度'],
  568. },
  569. grid: {
  570. left: '3%',
  571. right: '4%',
  572. bottom: '3%',
  573. containLabel: true,
  574. },
  575. xAxis: {
  576. type: 'category',
  577. boundaryGap: false,
  578. data: echartsStore.abscissaFormater,
  579. },
  580. yAxis: {
  581. type: 'value',
  582. },
  583. series: [
  584. {
  585. name: '温度',
  586. type: 'line',
  587. stack: 'binTemp',
  588. data: echartsStore.binTemp,
  589. },
  590. {
  591. name: '湿度',
  592. type: 'line',
  593. stack: 'binHumidity',
  594. data: echartsStore.binHumidity,
  595. },
  596. {
  597. name: 'H2O2浓度',
  598. type: 'line',
  599. stack: 'binHP',
  600. data: echartsStore.binHP,
  601. },
  602. {
  603. name: 'H2O2饱和度',
  604. type: 'line',
  605. stack: 'binSaturation',
  606. data: echartsStore.binSaturation,
  607. },
  608. ],
  609. })
  610. envir1Charts.value?.setOption({
  611. tooltip: {
  612. trigger: 'axis',
  613. },
  614. legend: {
  615. data: ['温度', '湿度', 'H2O2浓度', 'H2O2饱和度'],
  616. },
  617. grid: {
  618. left: '3%',
  619. right: '4%',
  620. bottom: '3%',
  621. containLabel: true,
  622. },
  623. xAxis: {
  624. type: 'category',
  625. boundaryGap: false,
  626. data: echartsStore.abscissaFormater,
  627. },
  628. yAxis: {
  629. type: 'value',
  630. },
  631. series: [
  632. {
  633. name: '温度',
  634. type: 'line',
  635. stack: '1',
  636. data: [],
  637. },
  638. {
  639. name: '湿度',
  640. type: 'line',
  641. stack: '2',
  642. data: [],
  643. },
  644. {
  645. name: 'H2O2浓度',
  646. type: 'line',
  647. stack: '3',
  648. data: [],
  649. },
  650. {
  651. name: 'H2O2饱和度',
  652. type: 'line',
  653. stack: '4',
  654. data: [],
  655. },
  656. ],
  657. })
  658. envir2Charts.value?.setOption({
  659. tooltip: {
  660. trigger: 'axis',
  661. },
  662. legend: {
  663. data: ['温度', '湿度', 'H2O2浓度', 'H2O2饱和度'],
  664. },
  665. grid: {
  666. left: '3%',
  667. right: '4%',
  668. bottom: '3%',
  669. containLabel: true,
  670. },
  671. xAxis: {
  672. type: 'category',
  673. boundaryGap: false,
  674. data: echartsStore.abscissaFormater,
  675. },
  676. yAxis: {
  677. type: 'value',
  678. },
  679. series: [
  680. {
  681. name: '温度',
  682. type: 'line',
  683. stack: '1',
  684. data: [],
  685. },
  686. {
  687. name: '湿度',
  688. type: 'line',
  689. stack: '2',
  690. data: [],
  691. },
  692. {
  693. name: 'H2O2浓度',
  694. type: 'line',
  695. stack: '3',
  696. data: [],
  697. },
  698. {
  699. name: 'H2O2饱和度',
  700. type: 'line',
  701. stack: '4',
  702. data: [],
  703. },
  704. ],
  705. })
  706. }, 1000)
  707. })
  708. // 监听到store中的数据变化动态更改options
  709. onUnmounted(() => {
  710. timer.value = null
  711. time1.value = null
  712. time2.value = null
  713. })
  714. const pauseDisinfect = () => {
  715. // if (operatorStore.disinfectStatus == 1) {
  716. // webSocketStore.sendCommandMsg(pauseDisinfectionJSON)
  717. // }
  718. }
  719. const disinfectWarnVisible = ref(false)
  720. const stopDisinfect = () => {
  721. disinfectWarnVisible.value = true
  722. // if ([1, 2, 3, 4].includes(operatorStore.disinfectStatus)) {
  723. // webSocketStore.sendCommandMsg(stopDisinfectionJSON)
  724. // }
  725. }
  726. const hideDisinfectModal = () => {
  727. disinfectWarnVisible.value = false
  728. }
  729. const continueDisinfect = () => {
  730. // if (operatorStore.disinfectStatus == 2) {
  731. // webSocketStore.sendCommandMsg(continueDisinfectionJSON)
  732. // }
  733. }
  734. </script>
  735. <style lang="scss" scoped>
  736. .progress_container {
  737. margin-bottom: 19px;
  738. height: 580px;
  739. box-sizing: border-box;
  740. background: #ffffff;
  741. border-radius: 16px;
  742. padding-bottom: 30px;
  743. .header_wrap {
  744. display: flex;
  745. align-items: center;
  746. justify-content: space-between;
  747. margin-bottom: 34px;
  748. height: 107px;
  749. box-sizing: border-box;
  750. padding: 13px 36px 13px 20px;
  751. background: #f6f6f6;
  752. border-radius: 16px 16px 0 0;
  753. .left_time {
  754. position: relative;
  755. width: 377px;
  756. height: 61px;
  757. background: url(../assets/img/operator/time.png) no-repeat;
  758. background-size: 100% 100%;
  759. .time {
  760. font-family: Source Han Sans CN;
  761. font-size: 28px;
  762. font-weight: bold;
  763. line-height: normal;
  764. letter-spacing: 0.1em;
  765. color: #ffffff;
  766. position: absolute;
  767. left: 165px;
  768. top: 9px;
  769. width: 178px;
  770. height: 41px;
  771. text-align: center;
  772. }
  773. }
  774. .left_log_wrap {
  775. display: flex;
  776. align-items: center;
  777. .text {
  778. font-family: Source Han Sans CN;
  779. font-size: 30px;
  780. font-weight: bold;
  781. line-height: normal;
  782. letter-spacing: 0.1em;
  783. color: #06518b;
  784. }
  785. .val {
  786. margin-left: 10px;
  787. font-family: Poppins;
  788. font-size: 32px;
  789. font-weight: bold;
  790. line-height: normal;
  791. letter-spacing: 0.1em;
  792. color: #17f179;
  793. }
  794. }
  795. .btn {
  796. padding: 12px 28px;
  797. white-space: nowrap;
  798. box-sizing: border-box;
  799. width: 140px;
  800. height: 50px;
  801. border-radius: 25px;
  802. background: #06518b;
  803. display: flex;
  804. align-items: center;
  805. justify-content: center;
  806. font-family: Source Han Sans CN;
  807. font-size: 20px;
  808. font-weight: 500;
  809. line-height: normal;
  810. letter-spacing: 0.07em;
  811. color: #ffffff;
  812. }
  813. }
  814. .echarts_wrap {
  815. height: 351px;
  816. display: flex;
  817. padding-left: 20px;
  818. align-items: center;
  819. margin-bottom: 19px;
  820. .single_wrap {
  821. flex: 1;
  822. height: 351px;
  823. .title {
  824. margin-left: 28px;
  825. padding: 5px 13px;
  826. margin-bottom: 24px;
  827. font-family: Source Han Sans CN;
  828. font-size: 14px;
  829. font-weight: 500;
  830. line-height: normal;
  831. letter-spacing: 0.1em;
  832. color: #ffffff;
  833. height: 27px;
  834. border-radius: 14px;
  835. opacity: 1;
  836. background: #06518b;
  837. width: 70px;
  838. box-sizing: border-box;
  839. display: flex;
  840. align-items: center;
  841. justify-content: center;
  842. }
  843. .echarts_box {
  844. width: 380px;
  845. height: 308px;
  846. }
  847. }
  848. }
  849. .detail_wrap {
  850. padding-left: 20px;
  851. display: flex;
  852. align-items: center;
  853. padding-right: 16px;
  854. height: 50px;
  855. .tip_info {
  856. padding: 12px 20px;
  857. box-sizing: border-box;
  858. overflow: hidden;
  859. text-overflow: ellipsis;
  860. white-space: nowrap;
  861. width: 550px;
  862. height: 50px;
  863. border-radius: 6px;
  864. opacity: 1;
  865. background: #f6f6f6;
  866. font-family: Source Han Sans CN;
  867. font-size: 18px;
  868. font-weight: bold;
  869. line-height: normal;
  870. letter-spacing: 0.1em;
  871. margin-right: 20px;
  872. color: #fa1c1c;
  873. }
  874. .speed_wrap {
  875. background: url(../assets/img/operator/speed.png) no-repeat;
  876. background-size: 100% 100%;
  877. position: relative;
  878. width: 335px;
  879. height: 41px;
  880. margin-right: 37px;
  881. .speed {
  882. position: absolute;
  883. font-family: Source Han Sans CN;
  884. font-size: 28px;
  885. font-weight: bold;
  886. line-height: normal;
  887. letter-spacing: 0.02em;
  888. color: #17f179;
  889. left: 194px;
  890. bottom: -2px;
  891. width: 68px;
  892. height: 41px;
  893. white-space: nowrap;
  894. text-align: center;
  895. }
  896. }
  897. }
  898. }
  899. .wrapper {
  900. display: flex;
  901. align-items: center;
  902. justify-content: center;
  903. height: 100%;
  904. }
  905. .block {
  906. width: 120px;
  907. height: 120px;
  908. display: flex;
  909. flex-direction: column;
  910. padding: 16px;
  911. align-items: center;
  912. justify-content: center;
  913. .shutdown_text {
  914. margin-top: 24px;
  915. font-family: Source Han Sans CN;
  916. font-size: 18px;
  917. font-weight: normal;
  918. line-height: normal;
  919. letter-spacing: 0.06em;
  920. color: #fff;
  921. white-space: nowrap;
  922. }
  923. }
  924. </style>