管道式消毒机
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.

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