1
0

gasPumpHomeBD.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871
  1. <template>
  2. <div class="monitor-container">
  3. <div id="FlowSensor" class="FlowSensor-box" style="position: absolute; display: none">
  4. <!-- <div class="elementContent" v-if="selectData['deviceType'].startsWith('pump_under') || selectData['deviceType'] == 'pump_n12m2pq'">
  5. <fourBorderBg>
  6. <template v-for="(item, index) in modelMonitor" :key="index">
  7. <div class="gas-monitor-row">
  8. <div class="title">{{ item.title }}</div>
  9. <div class="value">{{ selectData[item.code] ? selectData[item.code] : '-' }}</div>
  10. </div>
  11. </template>
  12. </fourBorderBg>
  13. </div> -->
  14. </div>
  15. <!-- 布尔台新瓦斯泵模型上的数据 -->
  16. <div class="elementContent" style="position: absolute; display: none">
  17. <div v-for="(tag, index) in modelMonitorTags" :key="index" :id="tag.domId" class="modal-monitor-box">
  18. <div class="title">{{ tag.title }}</div>
  19. <div
  20. v-if="tag.type == 'sign'"
  21. class="signal-round"
  22. :class="{ 'signal-round-gry': selectData[tag.code] != 1, 'signal-round-run': selectData[tag.code] == 1 }"
  23. ></div>
  24. <div v-else class="value">{{ selectData[tag.code] }}</div>
  25. </div>
  26. </div>
  27. <div v-if="selectData['netStatus'] == 0" class="device-state">网络断开</div>
  28. <ModuleCommon
  29. v-for="cfg in configs"
  30. :key="cfg.deviceType"
  31. :show-style="cfg.showStyle"
  32. :module-data="cfg.moduleData"
  33. :module-name="cfg.moduleName"
  34. :device-type="cfg.deviceType"
  35. :data="selectData"
  36. :visible="true"
  37. />
  38. <div class="lr left-box"></div>
  39. <div class="lr right-box"></div>
  40. <div ref="playerRef" class="player-box"></div>
  41. </div>
  42. <!-- <DetailModal @register="register" :device-type="deviceType" :device-id="deviceId" /> -->
  43. <PasswordModal
  44. :modal-is-show="passwordModalIsShow"
  45. modal-title="密码检验"
  46. :modal-type="handlerType"
  47. @handle-ok="handleOK"
  48. @handle-cancel="handleCancel"
  49. />
  50. </template>
  51. <script setup lang="ts">
  52. import { ref, onMounted, onUnmounted, defineProps, watch, inject, nextTick, computed } from 'vue';
  53. // import ventBox1 from '/@/components/vent/ventBox1.vue';
  54. import ModuleCommon from '../../../home/configurable/components/ModuleCommon.vue';
  55. import { setModelType, playAnimate } from '../gasPump.threejs';
  56. import { getModelMonitorTags } from '../gasPump.data';
  57. // import { useModal } from '/@/components/Modal';
  58. import { deviceControlApi } from '/@/api/vent/index';
  59. import PasswordModal from '../../comment/components/PasswordModal.vue';
  60. import { message } from 'ant-design-vue';
  61. // import { useCamera } from '/@/hooks/system/useCamera';
  62. // import { Config } from '../../../deviceManager/configurationTable/types';
  63. // import DetailModal from './DetailModal.vue';
  64. import { set } from 'lodash-es';
  65. import { list } from '../gasPump.api';
  66. import { useInitConfigs } from '../../../home/configurable/hooks/useInit';
  67. const { configs: rawConfigs, fetchConfigs } = useInitConfigs();
  68. const globalConfig = inject<any>('globalConfig');
  69. const props = defineProps<{ deviceId: string; deviceType: string }>();
  70. // const [register, { openModal }] = useModal();
  71. const modelMonitorTags = getModelMonitorTags();
  72. const loading = ref(false);
  73. const passwordModalIsShow = ref(false);
  74. const handlerType = ref('');
  75. const playerRef = ref();
  76. // 监测数据
  77. const selectData = ref<any>({});
  78. // const { getCamera, removeCamera } = useCamera();
  79. // https获取监测数据
  80. let timer: null | NodeJS.Timeout = null;
  81. function getMonitor(flag?) {
  82. if (Object.prototype.toString.call(timer) === '[object Null]') {
  83. return new Promise((resolve) => {
  84. timer = setTimeout(
  85. async () => {
  86. const data = await getDataSource();
  87. selectData.value = data;
  88. playAnimate(data);
  89. // Object.assign(selectData, data);
  90. if (timer) {
  91. timer = null;
  92. }
  93. resolve(null);
  94. await getMonitor();
  95. loading.value = false;
  96. },
  97. flag ? 0 : 1000
  98. );
  99. });
  100. }
  101. }
  102. async function getDataSource() {
  103. const res = await list({
  104. devicetype: 'gasdrainage',
  105. pagetype: 'normal',
  106. });
  107. const datalist = res.msgTxt[0]['datalist'];
  108. const result = datalist.reduce((obj, e) => {
  109. return set(obj, e.readData.id, e);
  110. }, {});
  111. return result;
  112. }
  113. function handler(passWord, paramcode) {
  114. let value = '';
  115. if (paramcode == 'ykjdqh') {
  116. value = selectData.value['ykjdqh'] == '1' ? '2' : '1';
  117. }
  118. if (paramcode == 'jxmsqh') {
  119. value = selectData.value['jxmsqh'] == '1' ? '2' : '1';
  120. }
  121. const data = {
  122. deviceid: selectData.value['deviceID'],
  123. devicetype: selectData.value['deviceType'],
  124. paramcode: paramcode,
  125. password: passWord,
  126. value: value,
  127. };
  128. deviceControlApi(data)
  129. .then(() => {
  130. if (globalConfig.History_Type == 'remote') {
  131. message.success('指令已下发至生产管控平台成功!');
  132. } else {
  133. message.success('指令已下发成功!');
  134. }
  135. })
  136. .catch(() => {
  137. message.success('控制异常');
  138. });
  139. }
  140. function handleOK(passWord, handlerState) {
  141. handler(passWord, handlerState);
  142. passwordModalIsShow.value = false;
  143. handlerType.value = '';
  144. }
  145. function handleCancel() {
  146. passwordModalIsShow.value = false;
  147. handlerType.value = '';
  148. }
  149. const configs = computed(() => {
  150. return rawConfigs.value.filter((c) => c.deviceType == props.deviceId);
  151. });
  152. watch(
  153. () => props.deviceType,
  154. () => {
  155. // removeCamera();
  156. nextTick(async () => {
  157. if (props.deviceType == 'pump_over') {
  158. setModelType('gasPump');
  159. } else if (props.deviceType?.startsWith('pump_under') || props.deviceType == 'pump_n12m2pq') {
  160. setModelType('gasPumpUnder');
  161. }
  162. });
  163. }
  164. );
  165. onMounted(async () => {
  166. timer = null;
  167. await getMonitor(true);
  168. fetchConfigs('gasPumpMonitor');
  169. });
  170. // onBeforeUnmount(() => {
  171. // removeCamera();
  172. // });
  173. onUnmounted(() => {
  174. // removeCamera();
  175. if (timer) {
  176. clearTimeout(timer);
  177. timer = null;
  178. }
  179. });
  180. // const rawConfigs = ref<Config[]>([
  181. // {
  182. // deviceType: '1709773229143920641',
  183. // moduleName: '瓦斯泵',
  184. // pageType: 'gasPumpMonitor',
  185. // moduleData: {
  186. // header: {
  187. // show: false,
  188. // readFrom: '',
  189. // selector: {
  190. // show: false,
  191. // value: '',
  192. // },
  193. // slot: {
  194. // show: false,
  195. // value: '',
  196. // },
  197. // },
  198. // background: {
  199. // show: false,
  200. // type: 'image',
  201. // link: '',
  202. // },
  203. // layout: {
  204. // direction: 'column',
  205. // items: [
  206. // {
  207. // name: 'list',
  208. // basis: '100%',
  209. // },
  210. // ],
  211. // },
  212. // complex_list: [],
  213. // chart: [],
  214. // table: [],
  215. // gallery: [],
  216. // list: [
  217. // {
  218. // type: 'K',
  219. // readFrom: '',
  220. // items: [
  221. // {
  222. // label: '701001传感器的值',
  223. // value: '${701001.readData.value}',
  224. // color: 'blue',
  225. // },
  226. // ],
  227. // },
  228. // ],
  229. // gallery_list: [],
  230. // preset: [],
  231. // to: '',
  232. // },
  233. // showStyle: {
  234. // size: 'width:348px;height:300px;',
  235. // version: '原版',
  236. // position: 'top:30px;left:10px;',
  237. // },
  238. // },
  239. // {
  240. // deviceType: '1709773229143920641',
  241. // moduleName: '注水泵',
  242. // pageType: 'gasPumpMonitor',
  243. // moduleData: {
  244. // header: {
  245. // show: false,
  246. // readFrom: '',
  247. // selector: {
  248. // show: false,
  249. // value: '',
  250. // },
  251. // slot: {
  252. // show: false,
  253. // value: '',
  254. // },
  255. // },
  256. // background: {
  257. // show: false,
  258. // type: 'image',
  259. // link: '',
  260. // },
  261. // layout: {
  262. // direction: 'column',
  263. // items: [
  264. // {
  265. // name: 'list',
  266. // basis: '100%',
  267. // },
  268. // ],
  269. // },
  270. // complex_list: [],
  271. // chart: [],
  272. // table: [],
  273. // gallery: [],
  274. // list: [
  275. // {
  276. // type: 'K',
  277. // readFrom: '',
  278. // items: [
  279. // {
  280. // label: '701001传感器的值',
  281. // value: '${701001.readData.value}',
  282. // color: 'blue',
  283. // },
  284. // ],
  285. // },
  286. // ],
  287. // gallery_list: [],
  288. // preset: [],
  289. // to: '',
  290. // },
  291. // showStyle: {
  292. // size: 'width:348px;height:200px;',
  293. // version: '原版',
  294. // position: 'top:340px;left:10px;',
  295. // },
  296. // },
  297. // {
  298. // deviceType: '1709773229143920641',
  299. // moduleName: '排水泵',
  300. // pageType: 'gasPumpMonitor',
  301. // moduleData: {
  302. // header: {
  303. // show: false,
  304. // readFrom: '',
  305. // selector: {
  306. // show: false,
  307. // value: '',
  308. // },
  309. // slot: {
  310. // show: false,
  311. // value: '',
  312. // },
  313. // },
  314. // background: {
  315. // show: false,
  316. // type: 'image',
  317. // link: '',
  318. // },
  319. // layout: {
  320. // direction: 'column',
  321. // items: [
  322. // {
  323. // name: 'list',
  324. // basis: '100%',
  325. // },
  326. // ],
  327. // },
  328. // complex_list: [],
  329. // chart: [],
  330. // table: [],
  331. // gallery: [],
  332. // list: [
  333. // {
  334. // type: 'K',
  335. // readFrom: '',
  336. // items: [
  337. // {
  338. // label: '701001传感器的值',
  339. // value: '${701001.readData.value}',
  340. // color: 'blue',
  341. // },
  342. // ],
  343. // },
  344. // ],
  345. // gallery_list: [],
  346. // preset: [],
  347. // to: '',
  348. // },
  349. // showStyle: {
  350. // size: 'width:348px;height:200px;',
  351. // version: '原版',
  352. // position: 'top:550px;left:10px;',
  353. // },
  354. // },
  355. // {
  356. // deviceType: '1709773229143920641',
  357. // moduleName: '泵站检测详情',
  358. // pageType: 'gasPumpMonitor',
  359. // moduleData: {
  360. // header: {
  361. // show: false,
  362. // readFrom: '',
  363. // selector: {
  364. // show: false,
  365. // value: '',
  366. // },
  367. // slot: {
  368. // show: false,
  369. // value: '',
  370. // },
  371. // },
  372. // background: {
  373. // show: false,
  374. // type: 'image',
  375. // link: '',
  376. // },
  377. // layout: {
  378. // direction: 'column',
  379. // items: [
  380. // {
  381. // name: 'list',
  382. // basis: '100%',
  383. // },
  384. // ],
  385. // },
  386. // complex_list: [],
  387. // chart: [],
  388. // table: [],
  389. // gallery: [],
  390. // list: [
  391. // {
  392. // type: 'K',
  393. // readFrom: '',
  394. // items: [
  395. // {
  396. // label: '701001传感器的值',
  397. // value: '${701001.readData.value}',
  398. // color: 'blue',
  399. // },
  400. // ],
  401. // },
  402. // ],
  403. // gallery_list: [],
  404. // preset: [],
  405. // to: '',
  406. // },
  407. // showStyle: {
  408. // size: 'width:348px;height:490px;',
  409. // version: '原版',
  410. // position: 'top:30px;right:0px;',
  411. // },
  412. // },
  413. // {
  414. // deviceType: '1709773300489031682',
  415. // moduleName: '瓦斯泵',
  416. // pageType: 'gasPumpMonitor',
  417. // moduleData: {
  418. // header: {
  419. // show: false,
  420. // readFrom: '',
  421. // selector: {
  422. // show: false,
  423. // value: '',
  424. // },
  425. // slot: {
  426. // show: false,
  427. // value: '',
  428. // },
  429. // },
  430. // background: {
  431. // show: false,
  432. // type: 'image',
  433. // link: '',
  434. // },
  435. // layout: {
  436. // direction: 'column',
  437. // items: [
  438. // {
  439. // name: 'list',
  440. // basis: '100%',
  441. // },
  442. // ],
  443. // },
  444. // complex_list: [],
  445. // chart: [],
  446. // table: [],
  447. // gallery: [],
  448. // list: [
  449. // {
  450. // type: 'K',
  451. // readFrom: '',
  452. // items: [
  453. // {
  454. // label: '701004传感器的值',
  455. // value: '${701004.readData.value}',
  456. // color: 'blue',
  457. // },
  458. // ],
  459. // },
  460. // ],
  461. // gallery_list: [],
  462. // preset: [],
  463. // to: '',
  464. // },
  465. // showStyle: {
  466. // size: 'width:348px;height:300px;',
  467. // version: '原版',
  468. // position: 'top:30px;left:10px;',
  469. // },
  470. // },
  471. // {
  472. // deviceType: '1709773300489031682',
  473. // moduleName: '注水泵',
  474. // pageType: 'gasPumpMonitor',
  475. // moduleData: {
  476. // header: {
  477. // show: false,
  478. // readFrom: '',
  479. // selector: {
  480. // show: false,
  481. // value: '',
  482. // },
  483. // slot: {
  484. // show: false,
  485. // value: '',
  486. // },
  487. // },
  488. // background: {
  489. // show: false,
  490. // type: 'image',
  491. // link: '',
  492. // },
  493. // layout: {
  494. // direction: 'column',
  495. // items: [
  496. // {
  497. // name: 'list',
  498. // basis: '100%',
  499. // },
  500. // ],
  501. // },
  502. // complex_list: [],
  503. // chart: [],
  504. // table: [],
  505. // gallery: [],
  506. // list: [
  507. // {
  508. // type: 'K',
  509. // readFrom: '',
  510. // items: [
  511. // {
  512. // label: '701004传感器的值',
  513. // value: '${701004.readData.value}',
  514. // color: 'blue',
  515. // },
  516. // ],
  517. // },
  518. // ],
  519. // gallery_list: [],
  520. // preset: [],
  521. // to: '',
  522. // },
  523. // showStyle: {
  524. // size: 'width:348px;height:200px;',
  525. // version: '原版',
  526. // position: 'top:340px;left:10px;',
  527. // },
  528. // },
  529. // {
  530. // deviceType: '1709773300489031682',
  531. // moduleName: '排水泵',
  532. // pageType: 'gasPumpMonitor',
  533. // moduleData: {
  534. // header: {
  535. // show: false,
  536. // readFrom: '',
  537. // selector: {
  538. // show: false,
  539. // value: '',
  540. // },
  541. // slot: {
  542. // show: false,
  543. // value: '',
  544. // },
  545. // },
  546. // background: {
  547. // show: false,
  548. // type: 'image',
  549. // link: '',
  550. // },
  551. // layout: {
  552. // direction: 'column',
  553. // items: [
  554. // {
  555. // name: 'list',
  556. // basis: '100%',
  557. // },
  558. // ],
  559. // },
  560. // complex_list: [],
  561. // chart: [],
  562. // table: [],
  563. // gallery: [],
  564. // list: [
  565. // {
  566. // type: 'K',
  567. // readFrom: '',
  568. // items: [
  569. // {
  570. // label: '701004传感器的值',
  571. // value: '${701004.readData.value}',
  572. // color: 'blue',
  573. // },
  574. // ],
  575. // },
  576. // ],
  577. // gallery_list: [],
  578. // preset: [],
  579. // to: '',
  580. // },
  581. // showStyle: {
  582. // size: 'width:348px;height:200px;',
  583. // version: '原版',
  584. // position: 'top:550px;left:10px;',
  585. // },
  586. // },
  587. // {
  588. // deviceType: '1709773300489031682',
  589. // moduleName: '泵站检测详情',
  590. // pageType: 'gasPumpMonitor',
  591. // moduleData: {
  592. // header: {
  593. // show: false,
  594. // readFrom: '',
  595. // selector: {
  596. // show: false,
  597. // value: '',
  598. // },
  599. // slot: {
  600. // show: false,
  601. // value: '',
  602. // },
  603. // },
  604. // background: {
  605. // show: false,
  606. // type: 'image',
  607. // link: '',
  608. // },
  609. // layout: {
  610. // direction: 'column',
  611. // items: [
  612. // {
  613. // name: 'list',
  614. // basis: '100%',
  615. // },
  616. // ],
  617. // },
  618. // complex_list: [],
  619. // chart: [],
  620. // table: [],
  621. // gallery: [],
  622. // list: [
  623. // {
  624. // type: 'K',
  625. // readFrom: '',
  626. // items: [
  627. // {
  628. // label: '701004传感器的值',
  629. // value: '${701004.readData.value}',
  630. // color: 'blue',
  631. // },
  632. // ],
  633. // },
  634. // ],
  635. // gallery_list: [],
  636. // preset: [],
  637. // to: '',
  638. // },
  639. // showStyle: {
  640. // size: 'width:348px;height:490px;',
  641. // version: '原版',
  642. // position: 'top:30px;right:0px;',
  643. // },
  644. // },
  645. // ]);
  646. </script>
  647. <style lang="less" scoped>
  648. @import '/@/design/theme.less';
  649. @import '/@/design/vent/modal.less';
  650. @import '../../comment/less/workFace.less';
  651. @ventSpace: zxm;
  652. .elementContent {
  653. :deep(.main-container) {
  654. display: flex;
  655. flex-wrap: wrap;
  656. width: 690px;
  657. padding: 10px 12px 10px 15px;
  658. border: 1px solid #d3e1ff33;
  659. background-color: #061c2a55;
  660. box-shadow: 0 0 15px #3b567f55;
  661. background-color: #38383833;
  662. .gas-monitor-row {
  663. display: flex;
  664. flex-direction: row;
  665. flex-wrap: wrap;
  666. color: #fff;
  667. line-height: 32px;
  668. .title {
  669. width: 250px;
  670. color: #baeaff;
  671. }
  672. .value {
  673. width: 80px;
  674. color: #efae05;
  675. }
  676. }
  677. }
  678. }
  679. .modal-monitor-box {
  680. background-color: #000;
  681. color: #fff;
  682. padding: 0 5px;
  683. display: flex;
  684. align-items: center;
  685. justify-content: center;
  686. .title {
  687. margin-right: 5px;
  688. }
  689. .signal-round {
  690. margin-left: 5px;
  691. }
  692. .value {
  693. width: 30px;
  694. color: #efae05;
  695. }
  696. }
  697. .device-state {
  698. width: 100%;
  699. position: absolute;
  700. top: 20px;
  701. color: #e90000;
  702. display: flex;
  703. justify-content: center;
  704. font-size: 20px;
  705. }
  706. .lr {
  707. margin-top: 0 !important;
  708. }
  709. .left-box {
  710. width: 360px !important;
  711. direction: rtl;
  712. overflow-y: auto;
  713. overflow-x: hidden;
  714. height: calc(100% - 60px);
  715. margin-top: 30px !important;
  716. .left-container {
  717. direction: ltr;
  718. }
  719. }
  720. .right-box {
  721. width: 350px !important;
  722. overflow-y: auto;
  723. overflow-x: hidden;
  724. .environment-monitor {
  725. .item {
  726. flex: 1;
  727. margin: 0 5px;
  728. .title {
  729. color: #7ae5ff;
  730. text-align: center;
  731. margin-bottom: 2px;
  732. }
  733. .num {
  734. width: 100%;
  735. height: 30px;
  736. text-align: center;
  737. border-top: 2px solid #50c8fc;
  738. border-radius: 4px;
  739. background-image: linear-gradient(#2e4d5955, #3780b499, #2e465955);
  740. }
  741. }
  742. }
  743. .pool-box {
  744. width: 327px;
  745. height: 65px;
  746. padding: 0 5px;
  747. background: url('/@/assets/images/vent/pump1.png') no-repeat;
  748. background-size: cover;
  749. background-origin: content-box;
  750. margin-top: 2px;
  751. .num {
  752. color: aqua;
  753. }
  754. .center {
  755. padding-right: 5px;
  756. }
  757. }
  758. }
  759. .player-box {
  760. position: absolute;
  761. height: 100%;
  762. width: 100%;
  763. padding: 0 20px 0 20px;
  764. z-index: 9999;
  765. display: flex;
  766. align-items: end;
  767. bottom: 80px;
  768. :deep(#LivePlayerBox) {
  769. display: flex;
  770. justify-content: end;
  771. }
  772. }
  773. .input-box {
  774. width: calc(100%);
  775. display: flex;
  776. flex-direction: row !important;
  777. flex-wrap: wrap !important;
  778. .input-item {
  779. width: calc(50% - 8px);
  780. padding: 0 2px;
  781. &:nth-child(2n) {
  782. margin-left: 4px;
  783. }
  784. }
  785. }
  786. .btn-group {
  787. display: flex;
  788. justify-content: space-around;
  789. .btn-item {
  790. width: 82px;
  791. text-align: center;
  792. }
  793. }
  794. .top-btn {
  795. .btn-group {
  796. margin-bottom: 8px;
  797. .btn-item {
  798. width: calc(50% - 16px);
  799. margin: 0 4px;
  800. }
  801. }
  802. .control-item {
  803. margin-left: 10px;
  804. margin-bottom: 8px;
  805. display: flex;
  806. .control-title {
  807. width: 80px;
  808. color: var(--vent-font-action-link);
  809. }
  810. .control-container {
  811. display: flex;
  812. }
  813. }
  814. }
  815. .btn-box {
  816. display: flex;
  817. .btn {
  818. padding: 0 8px !important;
  819. margin: 0 2px;
  820. }
  821. }
  822. .state-header {
  823. display: flex;
  824. color: var(--vent-font-action-link);
  825. .header-item {
  826. width: 25%;
  827. text-align: center;
  828. }
  829. }
  830. .device-row {
  831. display: flex;
  832. margin-top: 10px;
  833. .state {
  834. width: 25%;
  835. text-align: center;
  836. font-size: 13px;
  837. }
  838. }
  839. :deep(.@{ventSpace}-tabs-tabpane-active) {
  840. overflow: auto;
  841. }
  842. :deep(.list-item__background) {
  843. background-image: linear-gradient(to right, #39deff15, #3977e500) !important;
  844. line-height: 30px !important;
  845. height: 30px !important;
  846. }
  847. </style>