nitrogenHome_ln.vue 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797
  1. <template>
  2. <div class="zd-model">
  3. <ModelTip :modelType="moduleTypeName" :statusData="monitorData"></ModelTip>
  4. </div>
  5. <div class="nitrogen-home">
  6. <div class="nitrogen-container">
  7. <!-- <div v-if="monitorNetStatus == 0" class="device-state">网络断开</div> -->
  8. <div class="top-box">
  9. <!-- 左边监测数据 -->
  10. <div class="lr-box left-box">
  11. <template v-if="moduleTypeName == 'KYJ'">
  12. <div class="item item-l" v-for="(groupNum, index) in monitorDataGroupKyjL" :key="index">
  13. <ventBox1>
  14. <template #title>
  15. <div>{{ groupNum }}号压风机</div>
  16. </template>
  17. <template #container>
  18. <div class="monitor-box">
  19. <div class="parameter-title group-parameter-title">
  20. <SvgIcon class="icon" size="38" name="device-group-paramer" /><span>机组参数</span>
  21. </div>
  22. <div class="state-item">
  23. <div class="item-col" v-for="(preFan, preFanIndex) in preFanMonitorData" :key="preFanIndex">
  24. <span class="state-title">{{
  25. preFan.title + (preFan.unit && preFan.unit !== 'signal' && preFan.unit !== 'warning' ?
  26. `(${preFan.unit})` :
  27. '')
  28. }}</span>
  29. <span v-if="preFan.unit !== 'signal' && preFan.unit !== 'warning'" class="state-val">{{
  30. monitorData[preFan.code.replace(prefix[0], prefix[0] + groupNum)] >= 0
  31. ? formatNum(Number(monitorData[preFan.code.replace(prefix[0], prefix[0] + groupNum)]))
  32. : preFan.value
  33. ? preFan.value
  34. : '-'
  35. }}</span>
  36. <span v-else :class="{
  37. 'signal-round': true,
  38. 'signal-round-run':
  39. preFan.unit == 'signal' && monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] != '1',
  40. 'signal-round-warning':
  41. preFan.unit == 'warning' && monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] == '1',
  42. 'signal-round-gry': monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] != '1',
  43. }"></span>
  44. </div>
  45. </div>
  46. </div>
  47. <div class="monitor-box">
  48. <div class="parameter-title device-parameter-title">
  49. <SvgIcon class="icon" size="32" name="device-paramer" /><span>电机数据</span>
  50. </div>
  51. <div class="state-item">
  52. <div class="item-col" v-for="(preFan, preFanIndex) in preFanMonitorDjData" :key="preFanIndex">
  53. <span class="state-title">{{
  54. preFan.title + (preFan.unit && preFan.unit !== 'signal' && preFan.unit !== 'warning' ?
  55. `(${preFan.unit})` :
  56. '')
  57. }}</span>
  58. <span v-if="preFan.unit !== 'signal' && preFan.unit !== 'warning'" class="state-val">{{
  59. monitorData[preFan.code.replace(prefix[0], prefix[0] + groupNum)] >= 0
  60. ? formatNum(Number(monitorData[preFan.code.replace(prefix[0], prefix[0] + groupNum)]))
  61. : preFan.value
  62. ? preFan.value
  63. : '-'
  64. }}</span>
  65. <span v-else :class="{
  66. 'signal-round': true,
  67. 'signal-round-run':
  68. preFan.unit == 'signal' && monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] != '1',
  69. 'signal-round-warning':
  70. preFan.unit == 'warning' && monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] == '1',
  71. 'signal-round-gry': monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] != '1',
  72. }"></span>
  73. </div>
  74. </div>
  75. </div>
  76. </template>
  77. </ventBox1>
  78. </div>
  79. </template>
  80. <template v-else>
  81. <div class="item item-l" v-for="(groupNum, index) in monitorDataGroupZdjL" :key="index">
  82. <ventBox1>
  83. <template #title>
  84. <div>{{ groupNum }}号压风机</div>
  85. </template>
  86. <template #container>
  87. <div class="monitor-box">
  88. <div class="parameter-title group-parameter-title">
  89. <SvgIcon class="icon" size="38" name="device-group-paramer" /><span>机组参数</span>
  90. </div>
  91. <div class="state-item">
  92. <div class="item-col" v-for="(preFan, preFanIndex) in preFanMonitorData" :key="preFanIndex">
  93. <span class="state-title">{{
  94. preFan.title + (preFan.unit && preFan.unit !== 'signal' && preFan.unit !== 'warning' ?
  95. `(${preFan.unit})` :
  96. '')
  97. }}</span>
  98. <span v-if="preFan.unit !== 'signal' && preFan.unit !== 'warning'" class="state-val">{{
  99. monitorData[preFan.code.replace(prefix[0], prefix[0] + groupNum)] >= 0
  100. ? formatNum(Number(monitorData[preFan.code.replace(prefix[0], prefix[0] + groupNum)]))
  101. : preFan.value
  102. ? preFan.value
  103. : '-'
  104. }}</span>
  105. <span v-else :class="{
  106. 'signal-round': true,
  107. 'signal-round-run':
  108. preFan.unit == 'signal' && monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] != '1',
  109. 'signal-round-warning':
  110. preFan.unit == 'warning' && monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] == '1',
  111. 'signal-round-gry': monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] != '1',
  112. }"></span>
  113. </div>
  114. </div>
  115. </div>
  116. <div class="monitor-box">
  117. <div class="parameter-title device-parameter-title">
  118. <SvgIcon class="icon" size="32" name="device-paramer" /><span>电机数据</span>
  119. </div>
  120. <div class="state-item">
  121. <div class="item-col" v-for="(preFan, preFanIndex) in preFanMonitorDjData" :key="preFanIndex">
  122. <span class="state-title">{{
  123. preFan.title + (preFan.unit && preFan.unit !== 'signal' && preFan.unit !== 'warning' ?
  124. `(${preFan.unit})` :
  125. '')
  126. }}</span>
  127. <span v-if="preFan.unit !== 'signal' && preFan.unit !== 'warning'" class="state-val">{{
  128. monitorData[preFan.code.replace(prefix[0], prefix[0] + groupNum)] >= 0
  129. ? formatNum(Number(monitorData[preFan.code.replace(prefix[0], prefix[0] + groupNum)]))
  130. : preFan.value
  131. ? preFan.value
  132. : '-'
  133. }}</span>
  134. <span v-else :class="{
  135. 'signal-round': true,
  136. 'signal-round-run':
  137. preFan.unit == 'signal' && monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] != '1',
  138. 'signal-round-warning':
  139. preFan.unit == 'warning' && monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] == '1',
  140. 'signal-round-gry': monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] != '1',
  141. }"></span>
  142. </div>
  143. </div>
  144. </div>
  145. </template>
  146. </ventBox1>
  147. </div>
  148. </template>
  149. </div>
  150. <!-- 右边控制状态 -->
  151. <div class="lr-box right-box">
  152. <template v-if="moduleTypeName == 'KYJ'">
  153. <div class="item item-l" v-for="(groupNum, index) in monitorDataGroupKyjR" :key="index">
  154. <ventBox1>
  155. <template #title>
  156. <div>3号压风机</div>
  157. </template>
  158. <template #container>
  159. <div class="monitor-box">
  160. <div class="parameter-title group-parameter-title">
  161. <SvgIcon class="icon" size="38" name="device-group-paramer" /><span>机组参数</span>
  162. </div>
  163. <div class="state-item">
  164. <div class="item-col" v-for="(preFan, preFanIndex) in preFanMonitorData" :key="preFanIndex">
  165. <span class="state-title">{{
  166. preFan.title + (preFan.unit && preFan.unit !== 'signal' && preFan.unit !== 'warning' ?
  167. `(${preFan.unit})` :
  168. '')
  169. }}</span>
  170. <span v-if="preFan.unit !== 'signal' && preFan.unit !== 'warning'" class="state-val">{{
  171. monitorData[preFan.code.replace(prefix[0], prefix[0] + groupNum)] >= 0
  172. ? formatNum(Number(monitorData[preFan.code.replace(prefix[0], prefix[0] + groupNum)]))
  173. : preFan.value
  174. ? preFan.value
  175. : '-'
  176. }}</span>
  177. <span v-else :class="{
  178. 'signal-round': true,
  179. 'signal-round-run':
  180. preFan.unit == 'signal' && monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] != '1',
  181. 'signal-round-warning':
  182. preFan.unit == 'warning' && monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] == '1',
  183. 'signal-round-gry': monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] != '1',
  184. }"></span>
  185. </div>
  186. </div>
  187. </div>
  188. <div class="monitor-box">
  189. <div class="parameter-title device-parameter-title">
  190. <SvgIcon class="icon" size="32" name="device-paramer" /><span>电机数据</span>
  191. </div>
  192. <div class="state-item">
  193. <div class="item-col" v-for="(preFan, preFanIndex) in preFanMonitorDjData" :key="preFanIndex">
  194. <span class="state-title">{{
  195. preFan.title + (preFan.unit && preFan.unit !== 'signal' && preFan.unit !== 'warning' ?
  196. `(${preFan.unit})` :
  197. '')
  198. }}</span>
  199. <span v-if="preFan.unit !== 'signal' && preFan.unit !== 'warning'" class="state-val">{{
  200. monitorData[preFan.code.replace(prefix[0], prefix[0] + groupNum)] >= 0
  201. ? formatNum(Number(monitorData[preFan.code.replace(prefix[0], prefix[0] + groupNum)]))
  202. : preFan.value
  203. ? preFan.value
  204. : '-'
  205. }}</span>
  206. <span v-else :class="{
  207. 'signal-round': true,
  208. 'signal-round-run':
  209. preFan.unit == 'signal' && monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] != '1',
  210. 'signal-round-warning':
  211. preFan.unit == 'warning' && monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] == '1',
  212. 'signal-round-gry': monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] != '1',
  213. }"></span>
  214. </div>
  215. </div>
  216. </div>
  217. </template>
  218. </ventBox1>
  219. </div>
  220. </template>
  221. <template v-else>
  222. <div class="item item-l" v-for="(groupNum, index) in monitorDataGroupZdjR" :key="index">
  223. <ventBox1>
  224. <template #title>
  225. <div>{{ groupNum }}号制氮机</div>
  226. </template>
  227. <template #container>
  228. <div class="monitor-box">
  229. <div class="parameter-title group-parameter-title">
  230. <SvgIcon class="icon" size="38" name="device-group-paramer" /><span>机组参数</span>
  231. </div>
  232. <div class="state-item">
  233. <div class="item-col" v-for="(preFan, preFanIndex) in preFanMonitorDataZD" :key="preFanIndex">
  234. <span class="state-title">{{
  235. preFan.title + (preFan.unit && preFan.unit !== 'signal' && preFan.unit !== 'warning' ?
  236. `(${preFan.unit})` :
  237. '')
  238. }}</span>
  239. <span v-if="preFan.unit !== 'signal' && preFan.unit !== 'warning'" class="state-val">{{
  240. monitorData[preFan.code.replace(prefix[1], prefix[1] + groupNum)] >= 0
  241. ? formatNum(Number(monitorData[preFan.code.replace(prefix[1], prefix[1] + groupNum)]))
  242. : preFan.value
  243. ? preFan.value
  244. : '-'
  245. }}</span>
  246. <span v-else :class="{
  247. 'signal-round': true,
  248. 'signal-round-run':
  249. preFan.unit == 'signal' && monitorData[preFan.code.replace(prefix[1], `${prefix[1]}${groupNum}`)] != '1',
  250. 'signal-round-warning':
  251. preFan.unit == 'warning' && monitorData[preFan.code.replace(prefix[1], `${prefix[1]}${groupNum}`)] == '1',
  252. 'signal-round-gry': monitorData[preFan.code.replace(prefix[1], `${prefix[1]}${groupNum}`)] != '1',
  253. }"></span>
  254. </div>
  255. </div>
  256. </div>
  257. </template>
  258. </ventBox1>
  259. </div>
  260. </template>
  261. <!-- <ventBox1 class="vent-margin-t-10">
  262. <template #title>
  263. <div>设备实时监测曲线</div>
  264. </template>
  265. <template #container>
  266. <BarAndLineCustom xAxisPropType="readTime" :chartData="monitorData" height="240px"
  267. :propTypeArr="['flowRate']" :option="zhudanOption" />
  268. </template>
  269. </ventBox1> -->
  270. <div class="vent-margin-t-10">
  271. <!-- <LivePlayer id="fm-player1" style="height: 250px;" ref="player1" :videoUrl="flvURL1()" muted live loading controls /> -->
  272. </div>
  273. </div>
  274. </div>
  275. </div>
  276. </div>
  277. </template>
  278. <script lang="ts" setup name="nitrogenHome">
  279. import { computed, onMounted, onUnmounted, ref, watch, reactive, nextTick, watchEffect } from 'vue';
  280. import ventBox1 from '/@/components/vent/ventBox1.vue';
  281. import { list } from '../nitrogen.api';
  282. import { SvgIcon } from '/@/components/Icon';
  283. import LivePlayer from '@liveqing/liveplayer-v3';
  284. import BarAndLineCustom from '/@/components/chart/BarAndLineCustom.vue';
  285. import { zhudanOption } from '../nitrogen.data.ts';
  286. import { preFanMonitorDataZD, prefix, preFanMonitorData, preFanMonitorDjData } from '../nitrogen.data.ln'
  287. import { formatNum } from '/@/utils/ventutil';
  288. import ModelTip from './model-tip.vue'
  289. const props = defineProps({
  290. deviceId: {
  291. type: String,
  292. require: true,
  293. },
  294. modalType: {
  295. type: String,
  296. require: true,
  297. },
  298. moduleTypeName: {
  299. type: String,
  300. default: ''
  301. }
  302. });
  303. const monitorDataGroupKyjL = ref(2)
  304. const monitorDataGroupKyjR = ref(1)
  305. const monitorDataGroupZdjL = ref(2)
  306. const monitorDataGroupZdjR = ref(2)
  307. const loading = ref(true);
  308. const flvURL1 = () => {
  309. return `https://sf1-hscdn-tos.pstatp.com/obj/media-fe/xgplayer_doc_video/flv/xgplayer-demo-360p.flv`;
  310. // return ''
  311. };
  312. const monitorNetStatus = ref(0);
  313. const monitorData = reactive({});
  314. // https获取监测数据
  315. let timer: null | NodeJS.Timeout = null;
  316. async function getMonitor(flag?) {
  317. if (Object.prototype.toString.call(timer) === '[object Null]') {
  318. timer = await setTimeout(
  319. async () => {
  320. if (props.deviceId) {
  321. await getDataSource(props.deviceId);
  322. }
  323. if (timer) {
  324. timer = null;
  325. }
  326. await getMonitor();
  327. },
  328. flag ? 0 : 1000
  329. );
  330. }
  331. }
  332. async function getDataSource(systemID) {
  333. const res = await list({ devicetype: 'sys',systemID:'', type: 'all' });
  334. const result = res.msgTxt;
  335. if (!result || result.length < 1) return;
  336. let dataSource: any = [];
  337. if (props.moduleTypeName == 'KYJ') {
  338. dataSource = res.msgTxt[0] && res.msgTxt[0].datalist ? res.msgTxt[0].datalist[1] : {};
  339. } else {
  340. dataSource = res.msgTxt[0] && res.msgTxt[0].datalist ? res.msgTxt[0].datalist[0] : {};
  341. }
  342. if (dataSource) {
  343. Object.assign(monitorData, dataSource, dataSource.readData);
  344. }
  345. }
  346. onMounted(async () => {
  347. await getMonitor(true);
  348. });
  349. onUnmounted(() => {
  350. if (timer) {
  351. clearTimeout(timer);
  352. timer = undefined;
  353. }
  354. });
  355. </script>
  356. <style lang="less" scoped>
  357. @ventSpace: zxm;
  358. .zd-model {
  359. // width: calc(100% - 695px);
  360. // height: calc(100% - 100px);
  361. width: calc(100% - 705px);
  362. height: calc(100% - 110px);
  363. position: absolute;
  364. left: 365px;
  365. top: 90px;
  366. padding-right: 25px;
  367. box-sizing: border-box;
  368. }
  369. // .nitrogen-box {
  370. // width: 100%;
  371. // height: 100%;
  372. // display: flex;
  373. // justify-content: center;
  374. // }
  375. // #nitrogenCss3D {
  376. // .modal-monitor {
  377. // width: 200px;
  378. // position: absolute;
  379. // left: 0px;
  380. // top: 0px;
  381. // }
  382. // &:deep(.win) {
  383. // margin: 0 !important;
  384. // background: #00000044;
  385. // }
  386. // }
  387. .nitrogen-home {
  388. width: 100%;
  389. height: 100%;
  390. position: fixed;
  391. z-index: 9999;
  392. display: flex;
  393. flex-direction: column;
  394. justify-content: center;
  395. align-items: center;
  396. pointer-events: none;
  397. top: 60px;
  398. .nitrogen-container {
  399. width: 100%;
  400. height: calc(100% - 100px);
  401. display: flex;
  402. justify-content: space-between;
  403. margin-bottom: 100px;
  404. .device-state {
  405. width: 100%;
  406. position: absolute;
  407. top: 70px;
  408. color: #e90000;
  409. display: flex;
  410. justify-content: center;
  411. font-size: 20px;
  412. }
  413. .top-box {
  414. width: 100%;
  415. padding: 10px;
  416. overflow: hidden;
  417. display: flex;
  418. justify-content: space-between;
  419. .lr-box {
  420. //height: fit-content;
  421. display: flex;
  422. flex-direction: column;
  423. position: relative;
  424. overflow: hidden;
  425. z-index: 9999;
  426. pointer-events: auto;
  427. overflow-y: auto;
  428. transform: scaleX(-1);
  429. }
  430. .item {
  431. width: 335px;
  432. height: auto;
  433. position: relative;
  434. border-radius: 5px;
  435. margin-top: 10px;
  436. margin-bottom: 0px;
  437. pointer-events: auto;
  438. color: #fff;
  439. transform: scaleX(-1);
  440. //overflow: hidden;
  441. &:first-child {
  442. margin-top: 0px;
  443. }
  444. .base-title {
  445. color: #fff;
  446. margin-bottom: 8px;
  447. padding-left: 10px;
  448. position: relative;
  449. font-size: 16px;
  450. &::after {
  451. content: '';
  452. position: absolute;
  453. display: block;
  454. width: 4px;
  455. height: 12px;
  456. top: 7px;
  457. left: 0px;
  458. background: #45d3fd;
  459. border-radius: 4px;
  460. }
  461. }
  462. .state-item {
  463. display: flex;
  464. flex-direction: row;
  465. padding: 5px;
  466. flex-wrap: wrap;
  467. .item-col {
  468. width: calc(50% - 5px);
  469. display: flex;
  470. justify-content: center;
  471. align-items: center;
  472. padding-right: 4px;
  473. background-image: linear-gradient(to right, #39a3ff00, #39a3ff10);
  474. // &:first-child {
  475. // margin-right: 10px;
  476. // }
  477. .state-title {
  478. color: #ffffffcc;
  479. flex: 9;
  480. font-size: 14px;
  481. }
  482. .state-val {
  483. flex: 1;
  484. color: #00eefffe;
  485. margin-right: 5px;
  486. text-align: right;
  487. font-size: 14px;
  488. }
  489. }
  490. }
  491. .signal-box {
  492. margin: 5px 0;
  493. display: flex;
  494. align-items: center;
  495. .signal-title {
  496. color: #7af5ff;
  497. margin: 0 5px;
  498. }
  499. &:last-child {
  500. margin-right: 0px;
  501. }
  502. }
  503. .list-item {
  504. padding: 0 10px;
  505. display: flex;
  506. justify-content: space-between;
  507. align-items: center;
  508. .item-data-key {
  509. color: #ffffff99;
  510. }
  511. }
  512. .item-data-box {
  513. color: #fff;
  514. .state-icon {
  515. display: inline-block;
  516. width: 12px;
  517. height: 12px;
  518. border-radius: 12px;
  519. }
  520. .open {
  521. border: 5px solid #133a56;
  522. background: #4ecb73;
  523. }
  524. .close {
  525. border: 5px solid #192961;
  526. background: #6d7898;
  527. }
  528. }
  529. }
  530. .item-l {
  531. width: 100%;
  532. .monitor-box {
  533. width: 100%;
  534. .parameter-title {
  535. position: relative;
  536. width: 100%;
  537. height: 14px;
  538. margin-top: 10px;
  539. .icon,
  540. span {
  541. position: absolute;
  542. top: -10px;
  543. }
  544. }
  545. .group-parameter-title {
  546. background-image: linear-gradient(to right, #39a3ff50, #39a3ff00);
  547. .icon {
  548. left: -12px;
  549. top: -17px;
  550. }
  551. span {
  552. left: 18px;
  553. }
  554. .item-col {
  555. background-image: linear-gradient(to right, #39a3ff00, #39a3ff10);
  556. }
  557. }
  558. .device-parameter-title {
  559. background-image: linear-gradient(to right, #3df6ff40, #3df6ff00);
  560. .icon {
  561. left: -10px;
  562. top: -14px;
  563. }
  564. span {
  565. left: 18px;
  566. }
  567. .item-col {
  568. background-image: linear-gradient(to right, #3df6ff10, #3df6ff00);
  569. }
  570. }
  571. }
  572. }
  573. .right-box {
  574. width: 330px;
  575. margin-top: 50px;
  576. // .control-group {
  577. // display: flex;
  578. // // justify-content: space-around;
  579. // flex-wrap: wrap;
  580. // .control-item {
  581. // display: flex;
  582. // flex-direction: column;
  583. // justify-content: center;
  584. // align-items: center;
  585. // padding: 0 4px;
  586. // .control-item-title {
  587. // color: #a6dce9;
  588. // position: relative;
  589. // top: 5px;
  590. // }
  591. // .control-item-state {
  592. // width: 94px;
  593. // height: 47px;
  594. // background: url('/@/assets/images/vent/control-switch-bg.png');
  595. // display: flex;
  596. // justify-content: center;
  597. // align-items: center;
  598. // color: #fff;
  599. // }
  600. // .button-box {
  601. // position: relative;
  602. // padding: 5px;
  603. // border: 1px transparent solid;
  604. // background-clip: border-box;
  605. // border-radius: 5px;
  606. // margin-left: 8px;
  607. // }
  608. // .a-button {
  609. // pointer-events: auto;
  610. // }
  611. // &::v-deep .a-button--mini {
  612. // padding: 6px 10px;
  613. // }
  614. // &::v-deep .a-button--mini.is-round {
  615. // padding: 6px 10px;
  616. // }
  617. // }
  618. // }
  619. }
  620. .left-box {
  621. width: 365px;
  622. margin-top: 45px;
  623. }
  624. }
  625. &:deep(.win) {
  626. width: 100%;
  627. margin: 0 !important;
  628. }
  629. }
  630. }
  631. // &:deep(.main) {
  632. // .title {
  633. // height: 34px;
  634. // text-align: center;
  635. // font-weight: 600;
  636. // color: #7af5ff;
  637. // // background-image: url('../../../assets/img/yfj/light.png');
  638. // background-repeat: no-repeat;
  639. // background-position-x: center;
  640. // background-position-y: 100%;
  641. // background-size: 80%;
  642. // font-size: 16px;
  643. // }
  644. // .monitor-item {
  645. // width: 200px;
  646. // display: flex;
  647. // flex-direction: row;
  648. // width: auto;
  649. // margin-bottom: 3px;
  650. // .monitor-val {
  651. // color: #ffb700;
  652. // display: flex;
  653. // width: auto;
  654. // .val {
  655. // width: 80px;
  656. // font-size: 14px;
  657. // }
  658. // .unit {
  659. // color: #ffffffbb;
  660. // font-size: 14px;
  661. // }
  662. // }
  663. // }
  664. // .monitor-title {
  665. // width: 100px;
  666. // color: #7af5ff;
  667. // font-weight: 400;
  668. // font-size: 14px;
  669. // }
  670. // .signal-item {
  671. // display: flex;
  672. // justify-content: space-between;
  673. // // margin-bottom: 5px;
  674. // .signal-round {
  675. // display: inline-block;
  676. // width: 8px;
  677. // height: 8px;
  678. // border-radius: 50%;
  679. // margin: 0 10px;
  680. // position: relative;
  681. // &::after {
  682. // display: block;
  683. // content: '';
  684. // position: absolute;
  685. // width: 12px;
  686. // height: 12px;
  687. // top: -2px;
  688. // left: -2px;
  689. // border-radius: 50%;
  690. // }
  691. // }
  692. // .signal-round-gry {
  693. // background-color: #858585;
  694. // &::after {
  695. // background-color: #85858544;
  696. // box-shadow: 0 0 1px 1px #85858599;
  697. // }
  698. // }
  699. // .signal-round-run {
  700. // background-color: #67fc00;
  701. // &::after {
  702. // background-color: #67fc0044;
  703. // box-shadow: 0 0 1px 1px #c6ff77;
  704. // }
  705. // }
  706. // .signal-round-warning {
  707. // background-color: #e9170b;
  708. // &::after {
  709. // background-color: #e9170b44;
  710. // box-shadow: 0 0 1px 1px #e9170b;
  711. // }
  712. // }
  713. // }
  714. // }
  715. :deep(.zxm-radio-wrapper) {
  716. color: #fff !important;
  717. }
  718. </style>