warndata.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692
  1. <template>
  2. <view class="container">
  3. <u-navbar :title="titleName" :bgStatusImage="backPic0" :bgImage="backPic" :safeAreaInsetTop="true" left-icon=""
  4. @leftClick="menuShow">
  5. <view class="u-nav-slot" slot="left" v-if="!isShowDetail">
  6. <u-icon name="arrow-left" size="20"> </u-icon>
  7. </view>
  8. </u-navbar>
  9. <view class="menupage">
  10. <view class="main" v-if="isShowDetail">
  11. <view class="flcard" v-if="isShow1">
  12. <view class="typeBar">
  13. <view class="icon-vent">
  14. <text class="text-style">通风监测预警</text>
  15. </view>
  16. <u-icon @click="toggleIsShow1" name="arrow-up-fill"></u-icon>
  17. </view>
  18. </view>
  19. <view class="flcard" v-else>
  20. <view class="typeBar">
  21. <text class="text-style">通风监测预警</text>
  22. <u-icon @click="toggleIsShow1" name="arrow-down-fill"></u-icon>
  23. </view>
  24. </view>
  25. <view class="flcard" @click="getDetail('vent')" v-show="isShow1">
  26. <view class="datacard demo-layout bg-purple-light">
  27. <view style="margin-top: 10rpx">
  28. <text class="text-style1">{{ windData.zongjinfeng }}</text>
  29. </view>
  30. <view class="nameStyle" style="margin-top: 10rpx; margin-left: 5px">总进风量(m³/min)</view>
  31. </view>
  32. <view class="datacard demo-layout bg-purple-light">
  33. <view style="margin-top: 10rpx">
  34. <text class="text-style1">{{ windData.zonghuifeng }}</text>
  35. </view>
  36. <view class="nameStyle" style="margin-top: 10rpx; margin-left: 5px">总回风量(m³/min)</view>
  37. </view>
  38. <view class="datacard demo-layout bg-purple-light">
  39. <view style="margin-top: 10rpx">
  40. <text class="text-style1">{{ xufengliang }}</text>
  41. </view>
  42. <view class="nameStyle" style="margin-top: 10rpx; margin-left: 5px">总需风量(m³/min)</view>
  43. </view>
  44. </view>
  45. <view class="flcard" v-if="isShow2 && getCode != 'lblt'">
  46. <view class="typeBar">
  47. <view class="icon-vent">
  48. <text class="text-style">火灾监测预警</text>
  49. </view>
  50. <u-icon @click="toggleIsShow2" name="arrow-up-fill"></u-icon>
  51. </view>
  52. </view>
  53. <view class="flcard" v-if="!isShow2 && getCode != 'lblt'">
  54. <view class="typeBar">
  55. <text class="text-style">火灾监测预警</text>
  56. <u-icon @click="toggleIsShow2" name="arrow-down-fill"></u-icon>
  57. </view>
  58. </view>
  59. <view class="flcard" v-show="isShow2 && getCode != 'lblt'" @click="getDetail('fire')">
  60. <view class="firecontainer">
  61. <view class="title">
  62. <span class="firetext">内因火灾</span>
  63. </view>
  64. <view class="fire-style">
  65. <view v-for="(item, index) in internalInfo" :key="index" class="fire-item1"
  66. v-if="item && Object.keys(item).length > 0">
  67. <view class="firecard">
  68. <text :class="item.Maxlevel > 0 ? 'red-text-style' : 'text-style1'
  69. ">{{ item.value
  70. }}{{
  71. item.code === "o2val" ||
  72. item.code === "co2val" ||
  73. item.code === "ch4val" ||
  74. item.code === "smokeval"
  75. ? "(%)"
  76. : item.code === "fmax" ||
  77. item.code === "temperature" ||
  78. item.code === "fireval"
  79. ? "(℃)"
  80. : "(ppm)"
  81. }}
  82. </text>
  83. <view class="nameStyle" style="margin-top: 10rpx">{{
  84. item.monitorcode
  85. }}</view>
  86. </view>
  87. </view>
  88. </view>
  89. </view>
  90. <view class="firecontainer">
  91. <view class="title">
  92. <span class="firetext">外因火灾</span>
  93. </view>
  94. <view class="fire-style">
  95. <view v-for="(item, index) in externalInfo" :key="index" class="fire-item1">
  96. <view class="firecard">
  97. <text :class="item.Maxlevel > 0 ? 'red-text-style' : 'text-style1'
  98. ">{{ item.value
  99. }}{{
  100. item.code === "o2val" ||
  101. item.code === "co2val" ||
  102. item.code === "ch4val" ||
  103. item.code === "smokeval"
  104. ? "(%)"
  105. : item.code === "fmax" ||
  106. item.code === "temperature" ||
  107. item.code === "fireval"
  108. ? "(℃)"
  109. : "(ppm)"
  110. }}
  111. </text>
  112. <view class="nameStyle" style="margin-top: 10rpx">{{
  113. item.monitorcode
  114. }}</view>
  115. </view>
  116. </view>
  117. </view>
  118. </view>
  119. </view>
  120. <view class="flcard" v-if="isShow3 && getCode != 'lblt'">
  121. <view class="typeBar">
  122. <view class="icon-vent">
  123. <text class="text-style">粉尘监测预警</text>
  124. </view>
  125. <u-icon @click="toggleIsShow3" name="arrow-up-fill"></u-icon>
  126. </view>
  127. </view>
  128. <view class="flcard" v-if="!isShow3 && getCode != 'lblt'">
  129. <view class="typeBar">
  130. <text class="text-style">粉尘监测预警</text>
  131. <u-icon @click="toggleIsShow3" name="arrow-down-fill"></u-icon>
  132. </view>
  133. </view>
  134. <view class="flcard" v-show="isShow3 && getCode != 'lblt'" @click="getDetail('dust')">
  135. <view style="display: flex">
  136. <view class="dustcard">
  137. <view class="demo-layout bg-purple-light">
  138. <view style="margin-top: 10rpx">
  139. <text class="text-style1">{{ dustTotalcount }}</text>
  140. </view>
  141. <view class="nameStyle" style="margin: 10rpx">测点数量</view>
  142. </view>
  143. <view class="dust-right"> </view>
  144. </view>
  145. <view class="dustcard">
  146. <view class="demo-layout bg-purple-light">
  147. <view style="margin-top: 10rpx">
  148. <text class="text-style1">{{ dustLevelstatus }}</text>
  149. </view>
  150. <view class="nameStyle" style="margin: 10rpx">当前状态</view>
  151. </view>
  152. <view class="dust-right"> </view>
  153. </view>
  154. </view>
  155. </view>
  156. <view class="flcard" v-if="isShow4 && getCode != 'lblt'">
  157. <view class="typeBar">
  158. <view class="icon-vent">
  159. <text class="text-style">瓦斯监测预警</text>
  160. </view>
  161. <u-icon @click="toggleIsShow4" name="arrow-up-fill"></u-icon>
  162. </view>
  163. </view>
  164. <view class="flcard" v-if="!isShow4 && getCode != 'lblt'">
  165. <view class="typeBar">
  166. <text class="text-style">瓦斯监测预警</text>
  167. <u-icon @click="toggleIsShow4" name="arrow-down-fill"></u-icon>
  168. </view>
  169. </view>
  170. <view class="flcard" v-show="isShow4 && getCode != 'lblt'" @click="getDetail('gas')">
  171. <view class="firecontainer">
  172. <view class="title">
  173. <span class="firetext" v-if="gasDevice.length > 0">安全监测系统监测点</span>
  174. </view>
  175. </view>
  176. <view class="safe-container">
  177. <view class="safecard" v-for="(item, index) in gasDevice" :key="index">
  178. <view class="left" style="margin-top: 20rpx; float: left">
  179. <text class="text-style1">{{ item.gasNumber }}</text>
  180. <view class="nameStyle" style="margin: 10rpx">{{
  181. item.systemname
  182. }}</view>
  183. </view>
  184. <view class="right"> </view>
  185. </view>
  186. </view>
  187. <view class="firecontainer">
  188. <view class="title">
  189. <span class="firetext" v-if="gasDevice.length > 0">瓦斯抽采系统监测点</span>
  190. </view>
  191. <view class="gascontainer">
  192. <view class="gascard" v-for="(item, index) in gasDevice" :key="index">
  193. <view class="left" style="margin-top: 20rpx; float: left">
  194. <text class="text-style1">{{ item.pumpNumber }}</text>
  195. <view class="nameStyle" style="margin: 10rpx">{{
  196. item.systemname
  197. }}</view>
  198. </view>
  199. <view class="gas-right"> </view>
  200. </view>
  201. </view>
  202. </view>
  203. </view>
  204. <view class="flcard" v-if="isShow5">
  205. <view class="typeBar">
  206. <view class="icon-vent">
  207. <text class="text-style">设备监测预警</text>
  208. </view>
  209. <u-icon @click="toggleIsShow5" name="arrow-up-fill"></u-icon>
  210. </view>
  211. </view>
  212. <view class="flcard" v-else>
  213. <view class="typeBar">
  214. <text class="text-style">设备监测预警</text>
  215. <u-icon @click="toggleIsShow5" name="arrow-down-fill"></u-icon>
  216. </view>
  217. </view>
  218. <view class="flcard demo-layout bg-purple-light" v-show="isShow5" @click="getDetail('device')">
  219. <view class="deviceCard">
  220. <view class="item-container" v-for="(item, index) in devicekindData" :key="index">
  221. <view class="item" :style="{ backgroundImage: itemBackground(item) }">
  222. <view class="deviceItem">
  223. <text class="nameStyle" style="margin-right: 10px">{{
  224. item.name
  225. }}</text>
  226. <text style="font-weight: bold">{{ item.status }}</text>
  227. </view>
  228. </view>
  229. </view>
  230. </view>
  231. </view>
  232. </view>
  233. <view class="main" v-else>
  234. <ventDetail v-if="Type == 'vent'"></ventDetail>
  235. <deviceDetail v-if="Type == 'device'"></deviceDetail>
  236. <fireDetail v-if="Type == 'fire'"></fireDetail>
  237. <dustDetail v-if="Type == 'dust'"></dustDetail>
  238. <gasDetail v-if="Type == 'gas'"></gasDetail>
  239. </view>
  240. </view>
  241. </view>
  242. </template>
  243. <script>
  244. import api from "@/api/api";
  245. import ventDetail from "./components/vent-detail.vue";
  246. import deviceDetail from "./components/device-detail.vue";
  247. import fireDetail from "./components/fire-detail.vue";
  248. import dustDetail from "./components/dust-detail.vue";
  249. import gasDetail from "./components/gas-detail.vue";
  250. export default {
  251. props: {},
  252. watch: {},
  253. data() {
  254. return {
  255. backPic0: "url(/static/topnavbar0.png)",
  256. backPic: "url(../../static/topnavbar.png)",
  257. titleName: "预警分析",
  258. isShowDetail: true,
  259. detailComponent: null,
  260. windData: {},
  261. devicekindData: [],
  262. fireData: [],
  263. gasData: [],
  264. dustData: [],
  265. dustTotalcount: 0,
  266. dustLevelstatus: "",
  267. gasDevice: [],
  268. externalInfo: [],
  269. internalInfo: [],
  270. xufengliang: "", //总需风量
  271. imageMap: {
  272. atomizing: "atomizing.png",
  273. ballvalve: "ballvalve.png",
  274. dedustefan: "dedustefan.png",
  275. drilling: "drilling.png",
  276. dustdev: "dustdev.png",
  277. fanlocal: "fanlocal.png",
  278. fanmain: "fanmain.png",
  279. forcFan: "forcFan.png",
  280. gasmonitor: "gasmonitor.png",
  281. gate: "gate.png",
  282. location: "location.png",
  283. nitrogen: "nitrogen.png",
  284. pulping: "pulping.png",
  285. pump: "pump.png",
  286. rebroadcast: "rebroadcast.png",
  287. safetymonitor: "safetymonitor.png",
  288. spary: "spary.png",
  289. unit: "unit.png",
  290. window: "window.png",
  291. windrect: "windrect.png",
  292. wintest: "wintest.png",
  293. },
  294. dustMap: {
  295. alarm: "报警",
  296. blue: "低风险",
  297. orange: "重大风险",
  298. red: "较大风险",
  299. yellow: "一般风险",
  300. },
  301. isShow1: true,
  302. isShow2: false,
  303. isShow3: false,
  304. isShow4: false,
  305. isShow5: true,
  306. Type: "", // 当前点击的类型
  307. };
  308. },
  309. mounted() {
  310. this.$nextTick(() => {
  311. this.getWarnInfo();
  312. });
  313. },
  314. components: {
  315. ventDetail,
  316. deviceDetail,
  317. fireDetail,
  318. dustDetail,
  319. gasDetail,
  320. },
  321. methods: {
  322. //获取预警信息
  323. getWarnInfo() {
  324. return new Promise((resolve, reject) => {
  325. api
  326. .getWarnInfo()
  327. .then((response) => {
  328. if (response.data.code == 200) {
  329. this.windData = response.data.result.ventInfo;
  330. this.devicekindData = response.data.result.info.devicekindInfo;
  331. this.fireData = response.data.result.info.sysInfo.fireS;
  332. const externalInfo1 = this.fireData.summaryInfo.external;
  333. const internalInfo1 = this.fireData.summaryInfo.internal;
  334. for (let key in externalInfo1) {
  335. if (!externalInfo1.hasOwnProperty(key)) continue;
  336. const item = externalInfo1[key];
  337. // 跳过空对象(如 ch4val: {})
  338. if (Object.keys(item).length === 0) continue;
  339. if (item.code == "coval") {
  340. item.monitorcode = "一氧化碳";
  341. } else if (item.code == "ch4val") {
  342. item.monitorcode = "甲烷";
  343. } else if (item.code == "o2val") {
  344. item.monitorcode = "氧气";
  345. } else if (item.code == "co2val") {
  346. item.monitorcode = "二氧化碳";
  347. } else if (item.code == "fmax") {
  348. item.monitorcode = "温度";
  349. } else if (item.code == "chval") {
  350. item.monitorcode = "乙炔";
  351. } else if (item.code == "ch2val") {
  352. item.monitorcode = "乙烯";
  353. } else if (item.code == "temperature") {
  354. item.monitorcode = "温度";
  355. } else if (item.code == "gasval") {
  356. item.monitorcode = "瓦斯";
  357. } else if (item.code == "fireval") {
  358. item.monitorcode = "温度";
  359. } else if (item.code == "smokeval") {
  360. item.monitorcode = "烟雾";
  361. }
  362. }
  363. for (let key in internalInfo1) {
  364. if (!internalInfo1.hasOwnProperty(key)) continue;
  365. const item = internalInfo1[key];
  366. // 跳过空对象(如 ch4val: {})
  367. if (Object.keys(item).length === 0) continue;
  368. if (item.code == "coval") {
  369. item.monitorcode = "一氧化碳";
  370. } else if (item.code == "ch4val") {
  371. item.monitorcode = "甲烷";
  372. } else if (item.code == "o2val") {
  373. item.monitorcode = "氧气";
  374. } else if (item.code == "co2val") {
  375. item.monitorcode = "二氧化碳";
  376. } else if (item.code == "chval") {
  377. item.monitorcode = "乙炔";
  378. } else if (item.code == "ch2val") {
  379. item.monitorcode = "乙烯";
  380. } else if (item.code == "fmax") {
  381. item.monitorcode = "温度";
  382. } else if (item.code == "temperature") {
  383. item.monitorcode = "温度";
  384. } else if (item.code == "gasval") {
  385. item.monitorcode = "瓦斯";
  386. } else if (item.code == "fireval") {
  387. item.monitorcode = "温度";
  388. } else if (item.code == "smokeval") {
  389. item.monitorcode = "烟雾";
  390. }
  391. }
  392. this.externalInfo = externalInfo1;
  393. this.internalInfo = internalInfo1;
  394. this.gasData = response.data.result.info.sysInfo.gasS;
  395. this.gasDevice = this.gasData.devices;
  396. this.xufengliang = this.windData.sysdata.xufengliang;
  397. this.dustTotalcount =
  398. response.data.result.info.devicekindInfo.dusting.totalcount;
  399. this.dustLevelstatus =
  400. response.data.result.info.devicekindInfo.dusting.levelstatus;
  401. } else {
  402. reject(response);
  403. }
  404. })
  405. .catch((error) => {
  406. console.log("catch===>response", response);
  407. reject(error);
  408. });
  409. });
  410. },
  411. //返回监测首页
  412. menuShow() {
  413. this.isShowDetail = true;
  414. },
  415. //跳转监测详情
  416. getDetail(data) {
  417. this.isShowDetail = false;
  418. this.Type = data; // 将当前点击的类型存储到 Type 中
  419. },
  420. toggleIsShow1() {
  421. this.isShow1 = !this.isShow1; // 切换 isShow 的值
  422. },
  423. toggleIsShow2() {
  424. this.isShow2 = !this.isShow2; // 切换 isShow 的值
  425. },
  426. toggleIsShow3() {
  427. this.isShow3 = !this.isShow3; // 切换 isShow 的值
  428. },
  429. toggleIsShow4() {
  430. this.isShow4 = !this.isShow4; // 切换 isShow 的值
  431. },
  432. toggleIsShow5() {
  433. this.isShow5 = !this.isShow5; // 切换 isShow 的值
  434. },
  435. },
  436. computed: {
  437. itemBackground() {
  438. return (item) => {
  439. const defaultImage = "unit.png";
  440. const imageName = this.imageMap[item.code] || defaultImage;
  441. return `url('/static/warndata/${imageName}')`;
  442. };
  443. },
  444. getCode() {
  445. return uni.getStorageSync("apiCode");
  446. }
  447. },
  448. };
  449. </script>
  450. <style lang="scss" scoped>
  451. .nameStyle {
  452. color: #7484a4;
  453. font-size: 15px;
  454. }
  455. .container {
  456. display: flex;
  457. flex-direction: column;
  458. }
  459. .main {
  460. margin-top: 90px;
  461. display: flex;
  462. flex-direction: column;
  463. flex: 1;
  464. width: 100%;
  465. background: #f1f5f6;
  466. /* 内容区域顶部留出导航栏的高度 */
  467. }
  468. .text-style {
  469. font-weight: bold;
  470. }
  471. .flcard {
  472. padding: 20rpx;
  473. background-color: #ffffff;
  474. margin-bottom: 5rpx;
  475. }
  476. .datacard {
  477. width: 32.5%;
  478. margin: 1px;
  479. float: left;
  480. height: 74px;
  481. line-height: 27px;
  482. border-radius: 5px;
  483. background: url(/static/model/windM3.png),
  484. linear-gradient(to right,
  485. rgba(55, 135, 254, 0.08),
  486. rgba(4, 184, 255, 0.08),
  487. rgba(60, 161, 237, 0.08));
  488. background-repeat: no-repeat;
  489. background-size: 100% 100%;
  490. background-position: right;
  491. }
  492. .dustcard {
  493. width: 47%;
  494. border-radius: 10px;
  495. margin: 10px;
  496. display: flex;
  497. background: linear-gradient(to right,
  498. rgba(55, 135, 254, 0.08),
  499. rgba(4, 184, 255, 0.08),
  500. rgba(60, 161, 237, 0.08));
  501. flex-direction: row;
  502. justify-content: space-between;
  503. }
  504. .dust-right {
  505. margin-right: 10px;
  506. width: 60px;
  507. height: 60px;
  508. background: url(/static/warndata/dust.png);
  509. background-repeat: no-repeat;
  510. background-size: 100% 100%;
  511. }
  512. .datacard1 {
  513. width: 100%;
  514. margin: 2px;
  515. float: left;
  516. height: 200rpx;
  517. text-align: center;
  518. border-radius: 10px;
  519. background: linear-gradient(to right,
  520. rgba(55, 135, 254, 0.08),
  521. rgba(4, 184, 255, 0.08),
  522. rgba(60, 161, 237, 0.08));
  523. }
  524. .title {
  525. position: relative;
  526. width: 100%;
  527. height: 50rpx;
  528. background: url(/static/warndata/title.png);
  529. background-repeat: no-repeat;
  530. background-size: 100% 100%;
  531. display: flex;
  532. /* 将父级元素设置为 Flex 容器 */
  533. align-items: center;
  534. /* 垂直居中子元素 */
  535. }
  536. .firecard {
  537. width: 100%;
  538. padding: 10px;
  539. float: left;
  540. text-align: center;
  541. border-radius: 10px;
  542. }
  543. .deviceCard {
  544. margin-top: 10rpx;
  545. }
  546. .item {
  547. position: relative;
  548. width: 100%;
  549. height: 80px;
  550. background-size: 100% 100%;
  551. background-repeat: no-repeat;
  552. }
  553. .deviceItem {
  554. position: absolute;
  555. width: 76%;
  556. top: 76%;
  557. left: 63%;
  558. transform: translate(-50%, -50%);
  559. display: flex;
  560. align-items: center;
  561. justify-content: space-around;
  562. }
  563. .firetext {
  564. margin: 20px;
  565. }
  566. .text-style1 {
  567. color: #3787fe;
  568. font-weight: bold;
  569. font-size: 17px;
  570. margin-left: 5px;
  571. }
  572. .red-text-style1 {
  573. color: #ff0000;
  574. font-weight: bold;
  575. font-size: 16px;
  576. }
  577. .firecontainer {
  578. margin-top: 10px;
  579. }
  580. .fire-style {
  581. display: flex;
  582. flex-wrap: wrap;
  583. }
  584. .fire-item1 {
  585. width: 45%;
  586. margin: 16rpx;
  587. background: linear-gradient(to right,
  588. rgba(55, 135, 254, 0.08),
  589. rgba(4, 184, 255, 0.08));
  590. }
  591. .gascontainer {
  592. display: flex;
  593. }
  594. .gascard {
  595. width: 47%;
  596. border-radius: 10px;
  597. margin: 10px;
  598. display: flex;
  599. background: linear-gradient(to right,
  600. rgba(55, 135, 254, 0.08),
  601. rgba(4, 184, 255, 0.08),
  602. rgba(60, 161, 237, 0.08));
  603. flex-direction: row;
  604. justify-content: space-between;
  605. }
  606. .gas-right {
  607. margin-right: 10px;
  608. width: 60px;
  609. height: 60px;
  610. background: url(/static/warndata/gas.png);
  611. background-repeat: no-repeat;
  612. background-size: 100% 100%;
  613. }
  614. .safecard {
  615. width: 47%;
  616. border-radius: 10px;
  617. margin: 10px;
  618. display: flex;
  619. background: linear-gradient(to right,
  620. rgba(55, 135, 254, 0.08),
  621. rgba(4, 184, 255, 0.08),
  622. rgba(60, 161, 237, 0.08));
  623. flex-direction: row;
  624. justify-content: space-between;
  625. }
  626. .safe-container {
  627. display: flex;
  628. width: 100%;
  629. height: 70px;
  630. align-items: center;
  631. display: flex;
  632. justify-content: space-between;
  633. }
  634. .right {
  635. margin-right: 10px;
  636. width: 60px;
  637. height: 60px;
  638. background: url(/static/warndata/safety.png);
  639. background-repeat: no-repeat;
  640. background-size: 100% 100%;
  641. }
  642. .icon-style {
  643. margin-right: 8px;
  644. width: 13px;
  645. height: 13px;
  646. border-radius: 4px;
  647. }
  648. .typeBar {
  649. display: flex;
  650. justify-content: space-between;
  651. .icon-vent {
  652. display: flex;
  653. .u-icon--right {
  654. margin: 0px 5px;
  655. }
  656. }
  657. }
  658. </style>