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

677 lines
18 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
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
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="test_container">
  3. <div class="common_set switch_wrap">
  4. <p class="title">加液蠕动泵</p>
  5. <!-- <div class="num">
  6. <van-field
  7. type="number"
  8. v-model="addLiquidVal"
  9. :clickable="true"
  10. :formatter="formatter6"
  11. readonly
  12. @click.stop="hideAllKeyboards(1)"
  13. class="add_liquid_input"
  14. />
  15. <p>g/min</p>
  16. </div> -->
  17. <div class="btn_wrap">
  18. <div
  19. :class="
  20. settingStore.chargingPumpRPM > 0
  21. ? 'open style-btn mg'
  22. : 'close style-btn mg'
  23. "
  24. @click="setAddLiquidConfig(1)"
  25. >
  26. 正转
  27. </div>
  28. <div
  29. :class="
  30. settingStore.chargingPumpRPM < 0
  31. ? 'open style-btn'
  32. : 'close style-btn'
  33. "
  34. @click="setAddLiquidConfig(5)"
  35. >
  36. 反转
  37. </div>
  38. </div>
  39. <div class="btn_wrap">
  40. <div
  41. :class="
  42. settingStore.chargingPumpRPM != 0
  43. ? 'open style-btn mg'
  44. : 'close style-btn mg'
  45. "
  46. @click="setAddLiquidConfig(1)"
  47. >
  48. 打开
  49. </div>
  50. <div
  51. :class="
  52. settingStore.chargingPumpRPM == 0
  53. ? 'open style-btn'
  54. : 'close style-btn'
  55. "
  56. @click="setAddLiquidConfig(3)"
  57. >
  58. 关闭
  59. </div>
  60. </div>
  61. </div>
  62. <div class="common_set switch_wrap">
  63. <p class="title">注射蠕动泵</p>
  64. <div class="num">
  65. <my-input type="number" class="add_liquid_input" theme="custom" close-text="配置"
  66. v-model:value="addLiquidVal2"
  67. :formatter="formatter7"
  68. @done="setHeat_timeVal"
  69. />
  70. <p>g/min</p>
  71. </div>
  72. <div class="btn_wrap">
  73. <div
  74. :class="
  75. settingStore.sprinklerPumpRPM > 0
  76. ? 'open style-btn mg'
  77. : 'close style-btn mg'
  78. "
  79. @click="setAddLiquidConfig(2)"
  80. >
  81. 正转
  82. </div>
  83. <div
  84. :class="
  85. settingStore.sprinklerPumpRPM < 0
  86. ? 'open style-btn'
  87. : 'close style-btn'
  88. "
  89. @click="setAddLiquidConfig(6)"
  90. >
  91. 反转
  92. </div>
  93. </div>
  94. <div class="btn_wrap">
  95. <div
  96. :class="
  97. settingStore.sprinklerPumpRPM != 0
  98. ? 'open style-btn mg'
  99. : 'close style-btn mg'
  100. "
  101. @click="setAddLiquidConfig(2)"
  102. >
  103. 打开
  104. </div>
  105. <div
  106. :class="
  107. settingStore.sprinklerPumpRPM == 0
  108. ? 'open style-btn'
  109. : 'close style-btn'
  110. "
  111. @click="setAddLiquidConfig(4)"
  112. >
  113. 关闭
  114. </div>
  115. </div>
  116. </div>
  117. <div class="common_set switch_wrap">
  118. <p class="title">空压机</p>
  119. <p class="num">
  120. {{
  121. testStore?.airCompressorObj?.currentVal > 5000
  122. ? 5000
  123. : testStore?.airCompressorObj?.currentVal
  124. }}
  125. A
  126. </p>
  127. <div class="btn_wrap">
  128. <div
  129. :class="
  130. testStore.airCompressor ? 'open style-btn mg' : 'close style-btn mg'
  131. "
  132. @click="changeAirStatus(1)"
  133. >
  134. 打开
  135. </div>
  136. <div
  137. :class="
  138. !testStore.airCompressor ? 'open style-btn' : 'close style-btn'
  139. "
  140. @click="changeAirStatus(2)"
  141. >
  142. 关闭
  143. </div>
  144. </div>
  145. </div>
  146. <div class="common_set switch_wrap">
  147. <p class="title">风机</p>
  148. <p class="num">{{ testStore?.airBlowerObj?.currentVal }} A</p>
  149. <div class="btn_wrap">
  150. <div
  151. :class="
  152. testStore.draughtFan ? 'open style-btn mg' : 'close style-btn mg'
  153. "
  154. @click="changeDraughtStatus(1)"
  155. >
  156. 打开
  157. </div>
  158. <div
  159. :class="!testStore.draughtFan ? 'open style-btn ' : 'close style-btn'"
  160. @click="changeDraughtStatus(2)"
  161. >
  162. 关闭
  163. </div>
  164. </div>
  165. </div>
  166. <div class="common_set switch_wrap">
  167. <p class="title">加热片</p>
  168. <p class="num">{{ testStore?.heatingStripObj?.currentVal }} A</p>
  169. <div class="btn_wrap">
  170. <div
  171. :class="
  172. testStore.heatingStrip ? 'open style-btn mg' : 'close style-btn mg'
  173. "
  174. @click="changeHeatingStatus(1)"
  175. >
  176. 打开
  177. </div>
  178. <div
  179. :class="
  180. !testStore.heatingStrip ? 'open style-btn' : 'close style-btn'
  181. "
  182. @click="changeHeatingStatus(2)"
  183. >
  184. 关闭
  185. </div>
  186. </div>
  187. </div>
  188. <div class="common_set update_wrap">
  189. <p class="title" style="width:150px;">设备底部水浸</p>
  190. <p class="num">{{ testStore.waterImmersionSensor1 ? '有水' : '没水' }}</p>
  191. <div class="btn_wrap style-btn" @click="handleUpdate" style="opacity: 0">
  192. 更新读取水浸状态
  193. </div>
  194. </div>
  195. <div class="common_set update_wrap">
  196. <p class="title">蒸发仓水浸</p>
  197. <p class="num">{{ testStore.waterImmersionSensor2 ? '有水' : '没水' }}</p>
  198. <div class="btn_wrap style-btn" @click="handleUpdate" style="opacity: 0">
  199. 更新读取水浸状态
  200. </div>
  201. </div>
  202. <div class="common_set update_wrap">
  203. <p class="title">液位</p>
  204. <p class="num">
  205. {{
  206. deviceStore.disinfectantCapacity <= 0
  207. ? 0
  208. : deviceStore.disinfectantCapacity
  209. }}
  210. g
  211. </p>
  212. <div class="btn_wrap style-btn" @click="handleUpdate" style="opacity: 0">
  213. 更新读取液位状态
  214. </div>
  215. </div>
  216. <div class="common_set info_wrap">
  217. <p class="title">仓内</p>
  218. <p class="info">温度 {{ deviceStore.binTemperature }} </p>
  219. <p class="info">湿度 {{ deviceStore.binHumidity }} </p>
  220. <p class="info">过氧化氢浓度 {{ deviceStore.binHP }} PPM</p>
  221. </div>
  222. <div class="common_set info_wrap">
  223. <p class="title">环境1</p>
  224. <p class="info">温度 {{ deviceStore.envirTemperature1 }} </p>
  225. <p class="info">湿度 {{ deviceStore.envirHumidity1 }} </p>
  226. <p class="info">过氧化氢浓度 {{ deviceStore.envirHP1 }} PPM</p>
  227. </div>
  228. <div class="common_set info_wrap">
  229. <p class="title">环境2</p>
  230. <p class="info">温度 {{ deviceStore.envirTemperature2 }} </p>
  231. <p class="info">湿度 {{ deviceStore.envirHumidity2 }} </p>
  232. <p class="info">过氧化氢浓度 {{ deviceStore.envirHP2 }} PPM</p>
  233. </div>
  234. <div class="common_set update_wrap pressure">
  235. <p class="title">
  236. 气路压力计 <span>{{ testStore.allPressure[1] }}</span>
  237. </p>
  238. <p class="title">
  239. 加液压力计 <span>{{ testStore.allPressure[2] }}</span>
  240. </p>
  241. <p class="title">
  242. 喷液压力计 <span>{{ testStore.allPressure[3] }}</span>
  243. </p>
  244. </div>
  245. <van-number-keyboard
  246. v-model="addLiquidVal"
  247. @input="val => handleInput(val, 1)"
  248. :show="numberKeyboardShowVal"
  249. @blur="numberKeyboardShowVal = false"
  250. />
  251. <van-number-keyboard
  252. @input="val => handleInput(val, 2)"
  253. v-model="addLiquidPower"
  254. :show="numberKeyboardShowPower"
  255. @blur="numberKeyboardShowPower = false"
  256. />
  257. <van-number-keyboard
  258. @input="val => handleInput(val, 3)"
  259. v-model="addLiquidVal2"
  260. :show="numberKeyboardShowVal2"
  261. @blur="numberKeyboardShowVal2 = false"
  262. />
  263. <van-number-keyboard
  264. @input="val => handleInput(val, 4)"
  265. v-model="addLiquidPower2"
  266. :show="numberKeyboardShowPower2"
  267. @blur="numberKeyboardShowPower2 = false"
  268. />
  269. </div>
  270. </template>
  271. <script setup>
  272. import { ref } from 'vue'
  273. import {
  274. useTestStore,
  275. useDeviceStore,
  276. useWebSocketStore,
  277. useSettingStore,
  278. } from '@/store'
  279. import {
  280. someAirSwitchJSON,
  281. liquidpumpctrlJSON,
  282. getStateJSON,
  283. addLiquidCtrlJSON,
  284. test_replenishingFluidsPumpCtrJSON,
  285. sprayLiquidPump_open_for_testJSON,
  286. } from '@/mock/command'
  287. import { showSuccessToast, showFailToast } from 'vant'
  288. const testStore = useTestStore()
  289. const deviceStore = useDeviceStore()
  290. const websocketStore = useWebSocketStore()
  291. const settingStore = useSettingStore()
  292. const addLiquidVal = ref(settingStore.addLiquidConfigVal)
  293. const addLiquidPower = ref(25)
  294. const numberKeyboardShowVal = ref(false)
  295. const numberKeyboardShowPower = ref(false)
  296. const addLiquidVal2 = ref(settingStore.sprayLiquidConfigVal)
  297. const addLiquidPower2 = ref(25)
  298. const numberKeyboardShowVal2 = ref(false)
  299. const numberKeyboardShowPower2 = ref(false)
  300. const formatter = value => {
  301. if (parseInt(value) > 31) {
  302. return '31'
  303. }
  304. return value
  305. }
  306. const formatter6 = value => {
  307. let arr = settingStore.allSettingList.filter(
  308. item => item.name == 'drainage_pump_speed',
  309. )
  310. if (arr && arr.length > 0) {
  311. if (parseInt(value) > 40) {
  312. return '40'
  313. }
  314. if (parseInt(value) < arr[0].val_lower_limit) {
  315. return arr[0].val_lower_limit + ''
  316. }
  317. }
  318. if (value == '') {
  319. return '0'
  320. }
  321. return value
  322. }
  323. const formatter7 = value => {
  324. let arr = settingStore.allSettingList.filter(
  325. item => item.name == 'injection_pump_speed',
  326. )
  327. if (arr && arr.length > 0) {
  328. if (parseInt(value) > 40) {
  329. return '40'
  330. }
  331. if (parseInt(value) < arr[0].val_lower_limit) {
  332. return arr[0].val_lower_limit + ''
  333. }
  334. }
  335. if (value == '') {
  336. return '0'
  337. }
  338. return value
  339. }
  340. const isFirstClick = ref(true)
  341. const hideAllKeyboards = flag => {
  342. isFirstClick.value = true
  343. if (flag == 1) {
  344. numberKeyboardShowVal.value = true
  345. numberKeyboardShowPower.value = false
  346. numberKeyboardShowVal2.value = false
  347. numberKeyboardShowPower2.value = false
  348. }
  349. if (flag == 2) {
  350. numberKeyboardShowPower.value = true
  351. numberKeyboardShowVal.value = false
  352. numberKeyboardShowVal2.value = false
  353. numberKeyboardShowPower2.value = false
  354. }
  355. if (flag == 3) {
  356. numberKeyboardShowVal2.value = true
  357. numberKeyboardShowPower.value = false
  358. numberKeyboardShowVal.value = false
  359. numberKeyboardShowPower2.value = false
  360. }
  361. if (flag == 4) {
  362. numberKeyboardShowPower2.value = true
  363. numberKeyboardShowPower.value = false
  364. numberKeyboardShowVal2.value = false
  365. numberKeyboardShowVal.value = false
  366. }
  367. }
  368. const handleInput = (value, index) => {
  369. if (isFirstClick.value) {
  370. if (index == 1) {
  371. setTimeout(() => {
  372. addLiquidVal.value = value + ''
  373. })
  374. }
  375. if (index == 2) {
  376. setTimeout(() => {
  377. addLiquidPower.value = value + ''
  378. })
  379. }
  380. if (index == 3) {
  381. setTimeout(() => {
  382. addLiquidVal2.value = value + ''
  383. })
  384. }
  385. if (index == 4) {
  386. setTimeout(() => {
  387. addLiquidPower2.value = value + ''
  388. })
  389. }
  390. isFirstClick.value = false
  391. }
  392. }
  393. const setAddLiquidConfig = flag => {
  394. if (flag == 1) {
  395. websocketStore.sendCommandMsg(
  396. // 正传
  397. test_replenishingFluidsPumpCtrJSON(1, 300),
  398. )
  399. showSuccessToast('设置成功')
  400. return
  401. } else if (flag == 2) {
  402. websocketStore.sendCommandMsg(
  403. sprayLiquidPump_open_for_testJSON(1, addLiquidVal2.value),
  404. )
  405. showSuccessToast('设置成功')
  406. return
  407. } else if (flag == 3) {
  408. // 关闭
  409. websocketStore.sendCommandMsg(test_replenishingFluidsPumpCtrJSON(0, 0))
  410. showSuccessToast('关闭加液蠕动泵成功')
  411. return
  412. } else if (flag == 5) {
  413. // 反转
  414. websocketStore.sendCommandMsg(test_replenishingFluidsPumpCtrJSON(-1, 300))
  415. showSuccessToast('设置成功')
  416. } else if (flag == 6) {
  417. websocketStore.sendCommandMsg(
  418. sprayLiquidPump_open_for_testJSON(-1, addLiquidVal2.value),
  419. )
  420. showSuccessToast('设置成功')
  421. } else {
  422. websocketStore.sendCommandMsg(
  423. sprayLiquidPump_open_for_testJSON(0, addLiquidVal2.value),
  424. )
  425. showSuccessToast('关闭注射蠕动泵成功')
  426. return
  427. }
  428. }
  429. const handleUpdate = () => {
  430. websocketStore.sendCommandMsg(getStateJSON)
  431. }
  432. const changeFeedingStatus = flag => {
  433. if (flag == 1) {
  434. if (!testStore.feedingPeristalticPumpStatus) {
  435. // 发送打开指令
  436. websocketStore.sendCommandMsg(
  437. liquidpumpctrlJSON(1, settingStore.addLiquidConfigVal),
  438. )
  439. testStore.updateFeedingPeristalticPumpStatus(true)
  440. }
  441. } else {
  442. if (testStore.feedingPeristalticPumpStatus) {
  443. websocketStore.sendCommandMsg(liquidpumpctrlJSON(1, 0))
  444. testStore.updateFeedingPeristalticPumpStatus(false)
  445. }
  446. }
  447. }
  448. const changeSprayStatus = flag => {
  449. if (flag == 1) {
  450. if (!testStore.sprayPeristalticPump) {
  451. websocketStore.sendCommandMsg(
  452. liquidpumpctrlJSON(2, settingStore.sprayLiquidConfigVal),
  453. )
  454. testStore.updateSprayPeristalticPump(true)
  455. }
  456. } else {
  457. if (testStore.sprayPeristalticPump) {
  458. websocketStore.sendCommandMsg(liquidpumpctrlJSON(2, 0))
  459. testStore.updateSprayPeristalticPump(false)
  460. }
  461. }
  462. }
  463. const changeHeatingStatus = flag => {
  464. if (flag == 1) {
  465. if (!testStore.heatingStrip) {
  466. websocketStore.sendCommandMsg(someAirSwitchJSON(4, 1))
  467. websocketStore.sendCommandMsg(someAirSwitchJSON(5, 1))
  468. testStore.updateHeatingStrip(true)
  469. }
  470. } else {
  471. if (testStore.heatingStrip) {
  472. websocketStore.sendCommandMsg(someAirSwitchJSON(4, 0))
  473. websocketStore.sendCommandMsg(someAirSwitchJSON(5, 0))
  474. testStore.updateHeatingStrip(false)
  475. }
  476. }
  477. }
  478. const changeAirStatus = flag => {
  479. if (flag == 1) {
  480. if (!testStore.airCompressor) {
  481. websocketStore.sendCommandMsg(someAirSwitchJSON(0, 1))
  482. websocketStore.sendCommandMsg(someAirSwitchJSON(1, 1))
  483. testStore.updateAirCompressor(true)
  484. }
  485. } else {
  486. if (testStore.airCompressor) {
  487. websocketStore.sendCommandMsg(someAirSwitchJSON(0, 0))
  488. websocketStore.sendCommandMsg(someAirSwitchJSON(1, 0))
  489. testStore.updateAirCompressor(false)
  490. }
  491. }
  492. }
  493. const changeDraughtStatus = flag => {
  494. if (flag == 1) {
  495. if (!testStore.draughtFan) {
  496. websocketStore.sendCommandMsg(someAirSwitchJSON(2, 1))
  497. websocketStore.sendCommandMsg(someAirSwitchJSON(3, 1))
  498. testStore.updateDraughtFan(true)
  499. }
  500. } else {
  501. if (testStore.draughtFan) {
  502. websocketStore.sendCommandMsg(someAirSwitchJSON(2, 0))
  503. websocketStore.sendCommandMsg(someAirSwitchJSON(3, 0))
  504. testStore.updateDraughtFan(false)
  505. }
  506. }
  507. }
  508. </script>
  509. <style lang="scss" scoped>
  510. .test_container {
  511. margin-bottom: 19px;
  512. height: 580px;
  513. overflow: scroll;
  514. box-sizing: border-box;
  515. background: #ffffff;
  516. border-radius: 16px;
  517. padding: 20px;
  518. display: grid;
  519. row-gap: 20px;
  520. column-gap: 20px;
  521. grid-template-columns: repeat(2, 1fr);
  522. grid-template-rows: repeat(5, 1fr);
  523. padding-bottom: 20px;
  524. .common_set {
  525. width: 580px;
  526. height: 73px;
  527. box-sizing: border-box;
  528. border-radius: 14px;
  529. background: #f6f6f6;
  530. display: flex;
  531. align-items: center;
  532. .title {
  533. font-family: Source Han Sans CN;
  534. font-size: 20px;
  535. font-weight: 500;
  536. letter-spacing: 0.06em;
  537. color: #000000;
  538. width: 106px;
  539. }
  540. .num {
  541. font-family: Source Han Sans CN;
  542. font-size: 18px;
  543. font-weight: 500;
  544. letter-spacing: 0.1em;
  545. color: #000000;
  546. display: flex;
  547. align-items: center;
  548. margin-right: 4px;
  549. :deep(.add_liquid_input) {
  550. width: 40px;
  551. margin-right: 2px;
  552. text-align: right;
  553. height: 24px;
  554. padding: 0;
  555. color: #0e0e0e;
  556. font-family: Source Han Sans CN;
  557. font-weight: 500;
  558. font-size: 18px;
  559. }
  560. }
  561. }
  562. .pressure {
  563. display: flex;
  564. align-items: center;
  565. justify-content: space-evenly !important;
  566. .title {
  567. display: flex;
  568. line-height: 30px;
  569. justify-content: center !important;
  570. flex-direction: column;
  571. align-items: center;
  572. span {
  573. font-size: 26px;
  574. }
  575. }
  576. }
  577. .switch_wrap {
  578. padding: 0 17px 0 17px;
  579. justify-content: space-between;
  580. .btn_wrap {
  581. display: flex;
  582. align-items: center;
  583. background: #ddd;
  584. padding: 6px;
  585. border-radius: 30px;
  586. .mg {
  587. margin-right: 6px;
  588. }
  589. .open {
  590. width: 67px;
  591. height: 35px;
  592. border-radius: 18px;
  593. background: #06518b;
  594. display: flex;
  595. align-items: center;
  596. justify-content: center;
  597. font-family: Source Han Sans CN;
  598. font-size: 14px;
  599. font-weight: 500;
  600. letter-spacing: 0.1em;
  601. color: #ffffff;
  602. }
  603. .success {
  604. background: #1ad66e;
  605. }
  606. .close {
  607. width: 67px;
  608. height: 35px;
  609. border-radius: 18px;
  610. background: #ffffff;
  611. display: flex;
  612. align-items: center;
  613. justify-content: center;
  614. font-family: Source Han Sans CN;
  615. font-size: 14px;
  616. font-weight: 500;
  617. letter-spacing: 0.1em;
  618. color: #282727;
  619. }
  620. }
  621. }
  622. .update_wrap {
  623. padding: 0 17px 0 17px;
  624. justify-content: space-between;
  625. .btn_wrap {
  626. width: 150px;
  627. height: 45px;
  628. border-radius: 23px;
  629. background: #06518b;
  630. display: flex;
  631. align-items: center;
  632. justify-content: center;
  633. font-family: Source Han Sans CN;
  634. font-size: 14px;
  635. font-weight: 500;
  636. letter-spacing: 0.1em;
  637. color: #ffffff;
  638. }
  639. }
  640. .info_wrap {
  641. padding: 0 32px 0 17px;
  642. justify-content: space-between;
  643. .title {
  644. font-family: Source Han Sans CN;
  645. font-size: 20px;
  646. font-weight: 500;
  647. letter-spacing: 0.06em;
  648. color: #000000;
  649. width: 57px;
  650. white-space: nowrap;
  651. }
  652. .info {
  653. font-family: Source Han Sans CN;
  654. font-size: 18px;
  655. font-weight: 500;
  656. letter-spacing: 0.1em;
  657. color: #06518b;
  658. }
  659. }
  660. }
  661. </style>