大空间消毒机
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.

721 lines
19 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
  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. xmlns="http://www.w3.org/2000/svg"
  15. xmlns:xlink="http://www.w3.org/1999/xlink"
  16. fill="none"
  17. version="1.1"
  18. width="181"
  19. height="52"
  20. viewBox="0 0 181 52"
  21. >
  22. <g>
  23. <g>
  24. <g>
  25. <path
  26. 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"
  27. fill="#17F179"
  28. fill-opacity="1"
  29. />
  30. </g>
  31. <g transform="matrix(0,1,-1,0,52,-22)">
  32. <path
  33. 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"
  34. fill="#17F179"
  35. fill-opacity="1"
  36. />
  37. </g>
  38. </g>
  39. </g>
  40. </svg>
  41. <div
  42. class="btn"
  43. v-if="[1, 2].includes(operatorStore.disinfectStatus)"
  44. @click="stopDisinfect"
  45. >
  46. 结束消毒
  47. </div>
  48. <div
  49. class="btn"
  50. v-if="operatorStore.disinfectStatus == 0"
  51. @click="showDetail"
  52. >
  53. 返回
  54. </div>
  55. </div>
  56. <div class="echarts_wrap">
  57. <div class="single_wrap">
  58. <p class="title">设备温度/湿度/过氧化氢浓度</p>
  59. <div
  60. class="echarts_box"
  61. id="bin"
  62. v-if="operatorStore.disinfectStatus != 0 || binLocal"
  63. ></div>
  64. </div>
  65. <div class="single_wrap">
  66. <p class="title">环境1/湿度/过氧化氢浓度</p>
  67. <div
  68. class="echarts_box"
  69. id="envir1"
  70. v-if="operatorStore.disinfectStatus != 0 || envir1Local"
  71. ></div>
  72. </div>
  73. <div class="single_wrap">
  74. <p class="title">环境2/湿度/过氧化氢浓度</p>
  75. <div
  76. class="echarts_box"
  77. id="envir2"
  78. v-if="operatorStore.disinfectStatus != 0 || envir2Local"
  79. ></div>
  80. </div>
  81. </div>
  82. <div class="detail_wrap">
  83. <div class="detail" @click="showDetail">详情</div>
  84. </div>
  85. </div>
  86. </template>
  87. <script setup>
  88. import { useOperatorStore, useWebSocketStore, useEchartsStore } from '@/store'
  89. import { time_To_hhmmss } from '@/utils'
  90. import {
  91. stopDisinfectionJSON,
  92. getStateJSON,
  93. continueDisinfectionJSON,
  94. pauseDisinfectionJSON,
  95. } from '@/mock/command'
  96. import { onMounted, onUnmounted, ref, computed, watch } from 'vue'
  97. import * as echarts from 'echarts'
  98. import { storeToRefs } from 'pinia'
  99. const echartsStore = useEchartsStore()
  100. const binLocal = computed(() => {
  101. return echartsStore?.binCharts || localStorage.getItem('bin')
  102. })
  103. const envir1Local = computed(() => {
  104. return echartsStore?.envir1Charts || localStorage.getItem('envir1')
  105. })
  106. const envir2Local = computed(() => {
  107. return echartsStore?.envir2Charts || localStorage.getItem('envir2')
  108. })
  109. const binOption = ref({
  110. tooltip: {
  111. trigger: 'axis',
  112. },
  113. legend: {
  114. data: ['温度', '湿度', 'H2O2浓度', 'H2O2饱和度'],
  115. },
  116. grid: {
  117. left: '3%',
  118. right: '4%',
  119. bottom: '3%',
  120. containLabel: true,
  121. },
  122. xAxis: {
  123. type: 'category',
  124. boundaryGap: false,
  125. data: echartsStore.abscissaFormater,
  126. },
  127. yAxis: {
  128. type: 'value',
  129. },
  130. series: [
  131. {
  132. name: '温度',
  133. type: 'line',
  134. stack: 'binTemp',
  135. data: echartsStore.binTemp,
  136. },
  137. {
  138. name: '湿度',
  139. type: 'line',
  140. stack: 'binHumidity',
  141. data: echartsStore.binHumidity,
  142. },
  143. {
  144. name: 'H2O2浓度',
  145. type: 'line',
  146. stack: 'binHP',
  147. data: echartsStore.binHP,
  148. },
  149. {
  150. name: 'H2O2饱和度',
  151. type: 'line',
  152. stack: 'binSaturation',
  153. data: echartsStore.binSaturation,
  154. },
  155. ],
  156. })
  157. const envir1Option = ref({
  158. tooltip: {
  159. trigger: 'axis',
  160. },
  161. legend: {
  162. data: ['温度', '湿度', 'H2O2浓度', 'H2O2饱和度'],
  163. },
  164. grid: {
  165. left: '3%',
  166. right: '4%',
  167. bottom: '3%',
  168. containLabel: true,
  169. },
  170. xAxis: {
  171. type: 'category',
  172. boundaryGap: false,
  173. data: echartsStore.abscissaFormater,
  174. },
  175. yAxis: {
  176. type: 'value',
  177. },
  178. series: [
  179. {
  180. name: '温度',
  181. type: 'line',
  182. stack: '1',
  183. data: [],
  184. },
  185. {
  186. name: '湿度',
  187. type: 'line',
  188. stack: '2',
  189. data: [],
  190. },
  191. {
  192. name: 'H2O2浓度',
  193. type: 'line',
  194. stack: '3',
  195. data: [],
  196. },
  197. {
  198. name: 'H2O2饱和度',
  199. type: 'line',
  200. stack: '4',
  201. data: [],
  202. },
  203. ],
  204. })
  205. const envir2Option = ref({
  206. tooltip: {
  207. trigger: 'axis',
  208. },
  209. legend: {
  210. data: ['温度', '湿度', 'H2O2浓度', 'H2O2饱和度'],
  211. },
  212. grid: {
  213. left: '3%',
  214. right: '4%',
  215. bottom: '3%',
  216. containLabel: true,
  217. },
  218. xAxis: {
  219. type: 'category',
  220. boundaryGap: false,
  221. data: echartsStore.abscissaFormater,
  222. },
  223. yAxis: {
  224. type: 'value',
  225. },
  226. series: [
  227. {
  228. name: '温度',
  229. type: 'line',
  230. stack: '1',
  231. data: [],
  232. },
  233. {
  234. name: '湿度',
  235. type: 'line',
  236. stack: '2',
  237. data: [],
  238. },
  239. {
  240. name: 'H2O2浓度',
  241. type: 'line',
  242. stack: '3',
  243. data: [],
  244. },
  245. {
  246. name: 'H2O2饱和度',
  247. type: 'line',
  248. stack: '4',
  249. data: [],
  250. },
  251. ],
  252. })
  253. const operatorStore = useOperatorStore()
  254. const webSocketStore = useWebSocketStore()
  255. const props = defineProps({
  256. changeShowOperator: {
  257. type: Function,
  258. },
  259. })
  260. const showDetail = () => {
  261. props.changeShowOperator(true)
  262. }
  263. const timer = ref(null)
  264. const binCharts = ref(null)
  265. const envir1Charts = ref(null)
  266. const envir2Charts = ref(null)
  267. const time1 = ref(null)
  268. const time2 = ref(null)
  269. onMounted(() => {
  270. timer.value = setInterval(() => {
  271. webSocketStore.sendCommandMsg(getStateJSON)
  272. }, 1000)
  273. let a = echarts.getInstanceByDom(document.getElementById('bin'))
  274. if (a == undefined) {
  275. binCharts.value = echarts.init(document.getElementById('bin'))
  276. binCharts.value.setOption(binOption.value)
  277. }
  278. let b = echarts.getInstanceByDom(document.getElementById('envir1'))
  279. if (b == undefined) {
  280. envir1Charts.value = echarts.init(document.getElementById('envir1'))
  281. envir1Charts.value.setOption(envir1Option.value)
  282. }
  283. let c = echarts.getInstanceByDom(document.getElementById('envir2'))
  284. if (c == undefined) {
  285. envir2Charts.value = echarts.init(document.getElementById('envir2'))
  286. envir2Charts.value.setOption(envir2Option.value)
  287. }
  288. time1.value = setInterval(() => {
  289. binCharts.value?.setOption({
  290. tooltip: {
  291. trigger: 'axis',
  292. },
  293. legend: {
  294. data: ['温度', '湿度', 'H2O2浓度', 'H2O2饱和度'],
  295. },
  296. grid: {
  297. left: '3%',
  298. right: '4%',
  299. bottom: '3%',
  300. containLabel: true,
  301. },
  302. xAxis: {
  303. type: 'category',
  304. boundaryGap: false,
  305. data: echartsStore.abscissaFormater,
  306. },
  307. yAxis: {
  308. type: 'value',
  309. },
  310. series: [
  311. {
  312. name: '温度',
  313. type: 'line',
  314. stack: 'binTemp',
  315. data: echartsStore.binTemp,
  316. },
  317. {
  318. name: '湿度',
  319. type: 'line',
  320. stack: 'binHumidity',
  321. data: echartsStore.binHumidity,
  322. },
  323. {
  324. name: 'H2O2浓度',
  325. type: 'line',
  326. stack: 'binHP',
  327. data: echartsStore.binHP,
  328. },
  329. {
  330. name: 'H2O2饱和度',
  331. type: 'line',
  332. stack: 'binSaturation',
  333. data: echartsStore.binSaturation,
  334. },
  335. ],
  336. })
  337. envir1Charts.value?.setOption({
  338. tooltip: {
  339. trigger: 'axis',
  340. },
  341. legend: {
  342. data: ['温度', '湿度', 'H2O2浓度', 'H2O2饱和度'],
  343. },
  344. grid: {
  345. left: '3%',
  346. right: '4%',
  347. bottom: '3%',
  348. containLabel: true,
  349. },
  350. xAxis: {
  351. type: 'category',
  352. boundaryGap: false,
  353. data: echartsStore.abscissaFormater,
  354. },
  355. yAxis: {
  356. type: 'value',
  357. },
  358. series: [
  359. {
  360. name: '温度',
  361. type: 'line',
  362. stack: '1',
  363. data: [],
  364. },
  365. {
  366. name: '湿度',
  367. type: 'line',
  368. stack: '2',
  369. data: [],
  370. },
  371. {
  372. name: 'H2O2浓度',
  373. type: 'line',
  374. stack: '3',
  375. data: [],
  376. },
  377. {
  378. name: 'H2O2饱和度',
  379. type: 'line',
  380. stack: '4',
  381. data: [],
  382. },
  383. ],
  384. })
  385. envir2Charts.value?.setOption({
  386. tooltip: {
  387. trigger: 'axis',
  388. },
  389. legend: {
  390. data: ['温度', '湿度', 'H2O2浓度', 'H2O2饱和度'],
  391. },
  392. grid: {
  393. left: '3%',
  394. right: '4%',
  395. bottom: '3%',
  396. containLabel: true,
  397. },
  398. xAxis: {
  399. type: 'category',
  400. boundaryGap: false,
  401. data: echartsStore.abscissaFormater,
  402. },
  403. yAxis: {
  404. type: 'value',
  405. },
  406. series: [
  407. {
  408. name: '温度',
  409. type: 'line',
  410. stack: '1',
  411. data: [],
  412. },
  413. {
  414. name: '湿度',
  415. type: 'line',
  416. stack: '2',
  417. data: [],
  418. },
  419. {
  420. name: 'H2O2浓度',
  421. type: 'line',
  422. stack: '3',
  423. data: [],
  424. },
  425. {
  426. name: 'H2O2饱和度',
  427. type: 'line',
  428. stack: '4',
  429. data: [],
  430. },
  431. ],
  432. })
  433. }, 1000 * 20)
  434. time1.value = setInterval(() => {
  435. binCharts.value?.setOption({
  436. tooltip: {
  437. trigger: 'axis',
  438. },
  439. legend: {
  440. data: ['温度', '湿度', 'H2O2浓度', 'H2O2饱和度'],
  441. },
  442. grid: {
  443. left: '3%',
  444. right: '4%',
  445. bottom: '3%',
  446. containLabel: true,
  447. },
  448. xAxis: {
  449. type: 'category',
  450. boundaryGap: false,
  451. data: echartsStore.abscissaFormater,
  452. },
  453. yAxis: {
  454. type: 'value',
  455. },
  456. series: [
  457. {
  458. name: '温度',
  459. type: 'line',
  460. stack: 'binTemp',
  461. data: echartsStore.binTemp,
  462. },
  463. {
  464. name: '湿度',
  465. type: 'line',
  466. stack: 'binHumidity',
  467. data: echartsStore.binHumidity,
  468. },
  469. {
  470. name: 'H2O2浓度',
  471. type: 'line',
  472. stack: 'binHP',
  473. data: echartsStore.binHP,
  474. },
  475. {
  476. name: 'H2O2饱和度',
  477. type: 'line',
  478. stack: 'binSaturation',
  479. data: echartsStore.binSaturation,
  480. },
  481. ],
  482. })
  483. envir1Charts.value?.setOption({
  484. tooltip: {
  485. trigger: 'axis',
  486. },
  487. legend: {
  488. data: ['温度', '湿度', 'H2O2浓度', 'H2O2饱和度'],
  489. },
  490. grid: {
  491. left: '3%',
  492. right: '4%',
  493. bottom: '3%',
  494. containLabel: true,
  495. },
  496. xAxis: {
  497. type: 'category',
  498. boundaryGap: false,
  499. data: echartsStore.abscissaFormater,
  500. },
  501. yAxis: {
  502. type: 'value',
  503. },
  504. series: [
  505. {
  506. name: '温度',
  507. type: 'line',
  508. stack: '1',
  509. data: [],
  510. },
  511. {
  512. name: '湿度',
  513. type: 'line',
  514. stack: '2',
  515. data: [],
  516. },
  517. {
  518. name: 'H2O2浓度',
  519. type: 'line',
  520. stack: '3',
  521. data: [],
  522. },
  523. {
  524. name: 'H2O2饱和度',
  525. type: 'line',
  526. stack: '4',
  527. data: [],
  528. },
  529. ],
  530. })
  531. envir2Charts.value?.setOption({
  532. tooltip: {
  533. trigger: 'axis',
  534. },
  535. legend: {
  536. data: ['温度', '湿度', 'H2O2浓度', 'H2O2饱和度'],
  537. },
  538. grid: {
  539. left: '3%',
  540. right: '4%',
  541. bottom: '3%',
  542. containLabel: true,
  543. },
  544. xAxis: {
  545. type: 'category',
  546. boundaryGap: false,
  547. data: echartsStore.abscissaFormater,
  548. },
  549. yAxis: {
  550. type: 'value',
  551. },
  552. series: [
  553. {
  554. name: '温度',
  555. type: 'line',
  556. stack: '1',
  557. data: [],
  558. },
  559. {
  560. name: '湿度',
  561. type: 'line',
  562. stack: '2',
  563. data: [],
  564. },
  565. {
  566. name: 'H2O2浓度',
  567. type: 'line',
  568. stack: '3',
  569. data: [],
  570. },
  571. {
  572. name: 'H2O2饱和度',
  573. type: 'line',
  574. stack: '4',
  575. data: [],
  576. },
  577. ],
  578. })
  579. }, 1000)
  580. })
  581. // 监听到store中的数据变化动态更改options
  582. onUnmounted(() => {
  583. timer.value = null
  584. time1.value = null
  585. time2.value = null
  586. })
  587. const pauseDisinfect = () => {
  588. if (operatorStore.disinfectStatus == 1) {
  589. webSocketStore.sendCommandMsg(pauseDisinfectionJSON)
  590. }
  591. }
  592. const stopDisinfect = () => {
  593. if ([1, 2].includes(operatorStore.disinfectStatus)) {
  594. webSocketStore.sendCommandMsg(stopDisinfectionJSON)
  595. }
  596. }
  597. const continueDisinfect = () => {
  598. if (operatorStore.disinfectStatus == 2) {
  599. webSocketStore.sendCommandMsg(continueDisinfectionJSON)
  600. }
  601. }
  602. </script>
  603. <style lang="scss" scoped>
  604. .progress_container {
  605. margin-bottom: 19px;
  606. height: 580px;
  607. box-sizing: border-box;
  608. background: #ffffff;
  609. border-radius: 16px;
  610. padding-bottom: 30px;
  611. .header_wrap {
  612. display: flex;
  613. align-items: center;
  614. justify-content: space-between;
  615. margin-bottom: 34px;
  616. height: 107px;
  617. box-sizing: border-box;
  618. padding: 13px 36px 13px 20px;
  619. background: #f6f6f6;
  620. border-radius: 16px 16px 0 0;
  621. .left_time {
  622. position: relative;
  623. width: 377px;
  624. height: 61px;
  625. background: url(../assets/img/operator/time.png) no-repeat;
  626. background-size: 100% 100%;
  627. .time {
  628. font-family: Source Han Sans CN;
  629. font-size: 28px;
  630. font-weight: bold;
  631. line-height: normal;
  632. letter-spacing: 0.1em;
  633. color: #ffffff;
  634. position: absolute;
  635. left: 165px;
  636. top: 9px;
  637. width: 178px;
  638. height: 41px;
  639. text-align: center;
  640. }
  641. }
  642. .btn {
  643. padding: 12px 28px;
  644. box-sizing: border-box;
  645. width: 140px;
  646. height: 50px;
  647. border-radius: 25px;
  648. background: #06518b;
  649. display: flex;
  650. align-items: center;
  651. justify-content: center;
  652. font-family: Source Han Sans CN;
  653. font-size: 20px;
  654. font-weight: 500;
  655. line-height: normal;
  656. letter-spacing: 0.07em;
  657. color: #ffffff;
  658. }
  659. }
  660. .echarts_wrap {
  661. height: 351px;
  662. display: flex;
  663. align-items: center;
  664. margin-bottom: 19px;
  665. .single_wrap {
  666. flex: 1;
  667. height: 351px;
  668. .title {
  669. font-family: Source Han Sans CN;
  670. font-size: 14px;
  671. font-weight: 500;
  672. letter-spacing: 0.1em;
  673. color: #000000;
  674. margin-bottom: 24px;
  675. padding-left: 11px;
  676. }
  677. .echarts_box {
  678. width: 380px;
  679. height: 308px;
  680. }
  681. }
  682. }
  683. .detail_wrap {
  684. display: flex;
  685. align-items: center;
  686. justify-content: flex-end;
  687. padding-right: 16px;
  688. .detail {
  689. width: 105px;
  690. height: 40px;
  691. border-radius: 20px;
  692. background: #06518b;
  693. display: flex;
  694. align-items: center;
  695. justify-content: center;
  696. font-family: Source Han Sans CN;
  697. font-size: 18px;
  698. font-weight: normal;
  699. letter-spacing: 0.1em;
  700. color: #ffffff;
  701. }
  702. }
  703. }
  704. </style>