closeWall.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874
  1. <template>
  2. <div class="closeWall">
  3. <div class="title">
  4. <div class="box-container">
  5. <div class="contents">
  6. <div class="text">
  7. <div class="text-label">位置: </div>
  8. <!-- <div class="text-value">{{ topContent.position }}</div> -->
  9. <div class="text-value">
  10. <a-select v-model:value="selectData" style="width: 360px" @change="changeSelect">
  11. <a-select-option v-for="file in selectList" :key="file.label" :value="file.value">{{ file.label }}</a-select-option>
  12. </a-select>
  13. </div>
  14. </div>
  15. <div class="text">
  16. <span class="text-label">时间 : </span>
  17. <span class="text-value">{{ topContent.time }}</span>
  18. </div>
  19. </div>
  20. <div class="contents">
  21. <img src="@/assets/images/fire/pie.png" alt="" />
  22. <span class="text">{{ topContent.temperature }}</span>
  23. <span class="dw">°C</span>
  24. </div>
  25. </div>
  26. <div class="box-container">
  27. <div class="text1">
  28. <span>预警等级 : </span>
  29. <span
  30. :class="{
  31. value1: topContent.warnLevel == '绿色预警',
  32. value2: topContent.warnLevel == '黄色预警',
  33. value3: topContent.warnLevel == '红色预警',
  34. }"
  35. >{{ topContent.warnLevel || '-' }}</span
  36. >
  37. </div>
  38. <div class="text1">
  39. <span>煤自燃阶段 : </span>
  40. <span>{{ topContent.smokeJd || '-' }}</span>
  41. </div>
  42. </div>
  43. <div class="pl-10px pr-10px">
  44. <div class="mb-10px">
  45. <APopconfirm title="确认操作?" @confirm="controlDevice('dianwei', 'zhi')">
  46. <AButton class="w-full" type="primary">超值启动注氮机</AButton>
  47. </APopconfirm>
  48. </div>
  49. <div>
  50. <APopconfirm title="确认操作?" @confirm="controlDevice('dianwei', 'zhi')">
  51. <AButton class="w-full" type="primary">启动应急控制</AButton>
  52. </APopconfirm>
  53. </div>
  54. </div>
  55. </div>
  56. <div class="content">
  57. <div class="title-b">采空区密闭参数</div>
  58. <div class="card-btn">
  59. <div
  60. :class="activeIndex == index ? 'box-container1' : 'box-container'"
  61. v-for="(item, index) in mbList"
  62. :key="index"
  63. @click="btnClick(item, index)"
  64. >
  65. <div class="box-label">
  66. <span> {{ item.label }}</span>
  67. <span>{{ item.dw }}</span>
  68. </div>
  69. <div class="box-item box-item1">
  70. <span class="text-t">{{ `${item.label1}:` }}</span>
  71. <span class="text-v">{{ item.nd }}</span>
  72. </div>
  73. <div class="box-item box-item2">
  74. <span class="text-t">{{ `${item.label2}:` }}</span>
  75. <span class="text-v">{{ item.time1 }}</span>
  76. </div>
  77. <div class="box-item box-item3">
  78. <span class="text-t">{{ `${item.label3}:` }}</span>
  79. <span class="text-v">{{ item.address }}</span>
  80. </div>
  81. </div>
  82. </div>
  83. <div class="echart-box">
  84. <div class="left-echartbox">
  85. <div class="title-f">
  86. <div class="title-text">
  87. {{ `${type}趋势` }}&nbsp; <span style="color: red">{{ netStatus != 1 ? '(设备未连接)' : '' }}</span>
  88. </div>
  89. <!-- <BaseTab
  90. style="width: 180px; color: var(--vent-font-color)"
  91. :tabs="[
  92. { name: '实时监测', id: 'default' },
  93. { name: '预测曲线', id: 'predict' },
  94. ]"
  95. v-model:id="shownChart"
  96. /> -->
  97. </div>
  98. <div class="echarts-box">
  99. <PredictionCurve v-if="shownChart === 'default'" :chart="curveConfig" />
  100. <echartLine1 v-if="shownChart === 'predict'" :echartDataSg="echartDataSg1" :lengedDataName="echartDataSg1.lengedDataName" :maxY="maxY" />
  101. </div>
  102. </div>
  103. <div class="right-echartbox">
  104. <warnZb
  105. :widthV="widthV"
  106. :heightV="heightV"
  107. :coordDw="coordDw"
  108. :widthCanvas="widthCanvas"
  109. :heightCanvas="heightCanvas"
  110. :warnLevel="topContent.warnLevel"
  111. />
  112. </div>
  113. </div>
  114. </div>
  115. </div>
  116. </template>
  117. <script lang="ts" setup>
  118. import { ref, reactive, watch, defineProps, inject } from 'vue';
  119. import echartLine1 from './echartLine1.vue';
  120. import warnZb from './warnZb.vue';
  121. import PredictionCurve from './predictionCurve.vue';
  122. import { message } from 'ant-design-vue';
  123. import { deviceControlApi } from '/@/api/vent/index';
  124. let props = defineProps({
  125. listData: Object,
  126. });
  127. const globalConfig = inject('globalConfig');
  128. const shownChart = ref('default');
  129. let maxY = ref<any>(0);
  130. let selectSj = ref<any[]>([]);
  131. let selectData = ref('');
  132. let selectList = reactive<any[]>([]);
  133. let widthV = ref('75%');
  134. let heightV = ref('80%');
  135. let coordDw = ref<any[]>([31, 62, 110]);
  136. let widthCanvas = ref(562);
  137. let heightCanvas = ref(316);
  138. //设备连接状态
  139. let netStatus = ref(0);
  140. //密闭-顶部区域数据
  141. let topContent = reactive({
  142. temperature: 0,
  143. position: '',
  144. time: '',
  145. warnLevel: '',
  146. smokeJd: '',
  147. });
  148. //密闭参数列表
  149. let mbList = reactive([
  150. {
  151. label: 'O₂',
  152. dw: '(%)',
  153. label1: '浓度',
  154. label2: '时间',
  155. label3: '位置',
  156. nd: '0',
  157. time1: '',
  158. address: '',
  159. },
  160. {
  161. label: 'CO',
  162. dw: '(ppm)',
  163. label1: '浓度',
  164. label2: '时间',
  165. label3: '位置',
  166. nd: '0',
  167. time1: '',
  168. address: '',
  169. },
  170. {
  171. label: 'CO₂',
  172. dw: '(%)',
  173. label1: '浓度',
  174. label2: '时间',
  175. label3: '位置',
  176. nd: '0',
  177. time1: '',
  178. address: '',
  179. },
  180. {
  181. label: 'CH₄',
  182. dw: '(%)',
  183. label1: '浓度',
  184. label2: '时间',
  185. label3: '位置',
  186. nd: '0',
  187. time1: '',
  188. address: '',
  189. },
  190. {
  191. label: 'C₂H₂',
  192. dw: '(ppm)',
  193. label1: '浓度',
  194. label2: '时间',
  195. label3: '位置',
  196. nd: '0',
  197. time1: '',
  198. address: '',
  199. },
  200. {
  201. label: 'C₂H₄',
  202. dw: '(ppm)',
  203. label1: '浓度',
  204. label2: '时间',
  205. label3: '位置',
  206. nd: '0',
  207. time1: '',
  208. address: '',
  209. },
  210. ]);
  211. //当前密闭参数激活选项
  212. let activeIndex = ref(0);
  213. //当前激活密闭参数类型
  214. let type = ref('O₂');
  215. let echartDataSg1 = reactive({
  216. xData: [],
  217. yData: [],
  218. lengedData: 'O₂',
  219. lengedDataName: '(%)',
  220. });
  221. let echartDataSgList = reactive<any[]>([]);
  222. function getmaxY() {
  223. maxY.value = echartDataSg1.yData.reduce((acr, cur) => {
  224. return acr > cur ? acr : cur;
  225. });
  226. maxY.value =
  227. maxY.value.toString().indexOf('.') == -1 ? maxY.value.toString() : maxY.value.toString().substring(0, maxY.value.toString().indexOf('.'));
  228. if (maxY.value.length < 2 && Number(maxY.value) < 1) {
  229. maxY.value = 1;
  230. } else if (maxY.value.length < 2 && Number(maxY.value) >= 1) {
  231. maxY.value = 10;
  232. } else if (maxY.value.length < 3) {
  233. maxY.value = (Number(maxY.value[0]) + 1) * 10;
  234. } else if (maxY.value.length < 4) {
  235. maxY.value = (Number(maxY.value[0]) + 1) * 100;
  236. } else if (maxY.value.length < 5) {
  237. maxY.value = (Number(maxY.value[0]) + 1) * 1000;
  238. } else if (maxY.value.length < 6) {
  239. maxY.value = (Number(maxY.value[0]) + 1) * 10000;
  240. }
  241. }
  242. //密闭参数选项切换
  243. function btnClick(item, ind) {
  244. debugger;
  245. activeIndex.value = ind;
  246. type.value = item.label;
  247. echartDataSg1.xData.length = 0;
  248. echartDataSg1.yData.length = 0;
  249. echartDataSg1.lengedData = type.value;
  250. echartDataSg1.lengedDataName = item.dw;
  251. const data = selectSj.value.filter((v) => v.strinstallpos == selectData.value)[0];
  252. switch (type.value) {
  253. case 'O₂':
  254. echartDataSgList.forEach((el) => {
  255. echartDataSg1.xData.push(el.time);
  256. echartDataSg1.yData.push(el.o2val);
  257. });
  258. curveConfig.value = {
  259. id: 'o2',
  260. label: 'O₂',
  261. time: echartDataSg1.xData,
  262. data: [
  263. // 氧气预测曲线
  264. data.avgParam?.avg_o2_value || 0,
  265. data.avgParam?.max_o2_value || 0,
  266. data.avgParam?.min_o2_value || 0,
  267. // data.readData?.o2val,
  268. ],
  269. monitorData: echartDataSg1.yData,
  270. };
  271. getmaxY();
  272. break;
  273. case 'C₂H₄':
  274. echartDataSgList.forEach((el) => {
  275. echartDataSg1.xData.push(el.time);
  276. echartDataSg1.yData.push(el.ch2val);
  277. });
  278. curveConfig.value = {
  279. id: 'ch2',
  280. label: 'C₂H₄',
  281. time: echartDataSg1.xData,
  282. data: [
  283. // 预测曲线
  284. data.avgParam?.avg_c2h4_value || 0,
  285. data.avgParam?.max_c2h4_value || 0,
  286. data.avgParam?.min_c2h4_value || 0,
  287. // data.readData?.ch2val,
  288. ],
  289. monitorData: echartDataSg1.yData,
  290. };
  291. getmaxY();
  292. break;
  293. case 'CO':
  294. echartDataSgList.forEach((el) => {
  295. echartDataSg1.xData.push(el.time);
  296. echartDataSg1.yData.push(el.coval);
  297. });
  298. curveConfig.value = {
  299. id: 'co',
  300. label: 'CO',
  301. time: echartDataSg1.xData,
  302. data: [
  303. // 预测曲线
  304. data.avgParam?.avg_co_value || 0,
  305. data.avgParam?.max_co_value || 0,
  306. data.avgParam?.min_co_value || 0,
  307. // data.readData?.coval,
  308. ],
  309. monitorData: echartDataSg1.yData,
  310. };
  311. getmaxY();
  312. break;
  313. case 'CH₄':
  314. echartDataSgList.forEach((el) => {
  315. echartDataSg1.xData.push(el.time);
  316. echartDataSg1.yData.push(el.gasval);
  317. });
  318. curveConfig.value = {
  319. id: 'ch',
  320. label: 'CH₄',
  321. time: echartDataSg1.xData,
  322. data: [
  323. // 预测曲线
  324. data.avgParam?.avg_ch4_value || 0,
  325. data.avgParam?.max_ch4_value || 0,
  326. data.avgParam?.min_ch4_value || 0,
  327. // data.readData?.chval,
  328. ],
  329. monitorData: echartDataSg1.yData,
  330. };
  331. getmaxY();
  332. break;
  333. case 'CO₂':
  334. echartDataSgList.forEach((el) => {
  335. echartDataSg1.xData.push(el.time);
  336. echartDataSg1.yData.push(el.co2val);
  337. });
  338. curveConfig.value = {
  339. id: 'co2',
  340. label: 'CO₂',
  341. time: echartDataSg1.xData,
  342. data: [
  343. // 预测曲线
  344. data.avgParam?.avg_co2_value || 0,
  345. data.avgParam?.max_co2_value || 0,
  346. data.avgParam?.min_co2_value || 0,
  347. // data.readData?.co2val,
  348. ],
  349. monitorData: echartDataSg1.yData,
  350. };
  351. getmaxY();
  352. break;
  353. case 'C₂H₂':
  354. echartDataSgList.forEach((el) => {
  355. echartDataSg1.xData.push(el.time);
  356. echartDataSg1.yData.push(el.chval);
  357. });
  358. curveConfig.value = {
  359. id: 'gas',
  360. label: 'C₂H₂',
  361. time: echartDataSg1.xData,
  362. data: [
  363. // 预测曲线
  364. data.avgParam?.avg_c2h2_value || 0,
  365. data.avgParam?.max_c2h2_value || 0,
  366. data.avgParam?.min_c2h2_value || 0,
  367. // data.readData?.gasval,
  368. ],
  369. monitorData: echartDataSg1.yData,
  370. };
  371. getmaxY();
  372. break;
  373. }
  374. }
  375. function changeSelect(val) {
  376. selectData.value = val;
  377. let data = selectSj.value.filter((v) => v.strinstallpos == selectData.value)[0];
  378. topContent.time = data.readTime || '--';
  379. topContent.warnLevel = data.syswarnLevel_str;
  380. topContent.smokeJd = data.syswarnLevel_des;
  381. mbList[0].nd = data.readData.o2val || '--';
  382. mbList[1].nd = data.readData.coval || '--';
  383. mbList[2].nd = data.readData.co2val || '--';
  384. mbList[3].nd = data.readData.chval || '--';
  385. mbList[4].nd = data.readData.ch2val || '--';
  386. mbList[5].nd = data.readData.gasval || '--';
  387. mbList.forEach((el) => {
  388. el.time1 = data ? data.readTime.substring(0, data.readTime.lastIndexOf(':')) : '--';
  389. el.address = data ? data.strinstallpos : '--';
  390. });
  391. netStatus.value = data['netStatus'];
  392. }
  393. // 设备控制
  394. function controlDevice(code, value?) {
  395. // Promise.all(
  396. // [].map(({ deviceID, deviceType }) => {
  397. // return deviceControlApi({
  398. // deviceid: deviceID,
  399. // devicetype: deviceType,
  400. // paramcode: code,
  401. // value,
  402. // // password: passWord || globalConfig?.simulatedPassword,
  403. // });
  404. // })
  405. // ).then((res) => {
  406. // // 模拟时开启
  407. // if (res.success) {
  408. // if (globalConfig.History_Type == 'remote') {
  409. // message.success('指令已下发至生产管控平台成功!');
  410. // } else {
  411. // message.success('指令已下发成功!');
  412. // }
  413. // } else {
  414. // message.error(res.message);
  415. // }
  416. // });
  417. }
  418. /** 预测曲线的配置,数据分别为平均、最大、最小、当前值 */
  419. const curveConfig = ref<any>({ id: '0', label: '', time: new Date(), data: [0, 0, 0, 0] });
  420. watch(
  421. () => props.listData,
  422. (val: any) => {
  423. echartDataSg1.xData.length = 0;
  424. echartDataSg1.yData.length = 0;
  425. echartDataSgList.length = 0;
  426. selectList.length = 0;
  427. if (JSON.stringify(val) === '{}') return;
  428. if (val.bundletube.length != 0) {
  429. selectSj.value = val.bundletube;
  430. selectSj.value.forEach((el) => {
  431. selectList.push({ label: el.strinstallpos, value: el.strinstallpos });
  432. });
  433. selectData.value = selectData.value ? selectData.value : selectList[0].value;
  434. let dataVal = selectData.value ? selectSj.value.filter((v) => v.strinstallpos == selectData.value)[0] : selectSj.value[0];
  435. topContent.temperature = val.temperature[0] ? val.temperature[0].readData.temperature : '--';
  436. // topContent.position = dataVal.strinstallpos || '--';
  437. topContent.time = dataVal.readTime || '--';
  438. topContent.warnLevel = dataVal.syswarnLevel_str;
  439. topContent.smokeJd = dataVal.syswarnLevel_des;
  440. mbList[0].nd = dataVal.readData.o2val || '--';
  441. mbList[1].nd = dataVal.readData.coval || '--';
  442. mbList[2].nd = dataVal.readData.co2val || '--';
  443. mbList[3].nd = dataVal.readData.chval || '--';
  444. mbList[4].nd = dataVal.readData.ch2val || '--';
  445. mbList[5].nd = dataVal.readData.gasval || '--';
  446. mbList.forEach((el) => {
  447. el.time1 = dataVal ? dataVal.readTime.substring(0, dataVal.readTime.lastIndexOf(':')) : '--';
  448. el.address = dataVal ? dataVal.strinstallpos : '--';
  449. });
  450. netStatus.value = dataVal['netStatus'];
  451. echartDataSgList = dataVal.history;
  452. btnClick(
  453. {
  454. label: type.value,
  455. dw: echartDataSg1.lengedDataName,
  456. },
  457. activeIndex.value
  458. );
  459. // dataVal.history.forEach((v) => {
  460. // echartDataSg1.xData.push(v.time);
  461. // if (echartDataSg1.lengedData == 'O₂') {
  462. // echartDataSg1.yData.push(v.o2val);
  463. // } else if (echartDataSg1.lengedData == 'C₂H₄') {
  464. // echartDataSg1.yData.push(v.ch2val);
  465. // } else if (echartDataSg1.lengedData == 'CO') {
  466. // echartDataSg1.yData.push(v.coval);
  467. // } else if (echartDataSg1.lengedData == 'CH₄') {
  468. // echartDataSg1.yData.push(v.chval);
  469. // } else if (echartDataSg1.lengedData == 'CO₂') {
  470. // echartDataSg1.yData.push(v.co2val);
  471. // } else if (echartDataSg1.lengedData == 'C₂H₂') {
  472. // echartDataSg1.yData.push(v.gasval);
  473. // }
  474. // echartDataSgList.push(v);
  475. // });
  476. getmaxY();
  477. } else {
  478. topContent.temperature = 0;
  479. // topContent.position = '--';
  480. topContent.time = '--';
  481. topContent.warnLevel = '--';
  482. topContent.smokeJd = '--';
  483. mbList[0].nd = '--';
  484. mbList[1].nd = '--';
  485. mbList[2].nd = '--';
  486. mbList[3].nd = '--';
  487. mbList[4].nd = '--';
  488. mbList[5].nd = '--';
  489. mbList.forEach((el) => {
  490. el.time1 = '--';
  491. el.address = '--';
  492. });
  493. }
  494. },
  495. { immediate: true, deep: true }
  496. );
  497. </script>
  498. <style lang="less" scoped>
  499. @import '/@/design/theme.less';
  500. @{theme-deepblue} {
  501. .closeWall {
  502. --image-bj1: url('/@/assets/images/themify/deepblue/fire/bj1.png');
  503. --image-pj: url('/@/assets/images/themify/deepblue/fire/pj.svg');
  504. --image-1: url('/@/assets/images/themify/deepblue/fire/1.png');
  505. --image-contetn: url('/@/assets/images/themify/deepblue/fire/contetn.png');
  506. --image-2: url('/@/assets/images/themify/deepblue/fire/2.png');
  507. }
  508. }
  509. .closeWall {
  510. --image-bj1: url('/@/assets/images/fire/bj1.png');
  511. --image-pj: url('/@/assets/images/fire/pj.svg');
  512. --image-1: url('/@/assets/images/fire/1.png');
  513. --image-contetn: url('/@/assets/images/fire/contetn.png');
  514. --image-2: url('/@/assets/images/fire/2.png');
  515. --border-image-2: linear-gradient(to bottom, transparent, #024688, transparent);
  516. width: 100%;
  517. height: 100%;
  518. padding: 20px;
  519. box-sizing: border-box;
  520. .title {
  521. width: 100%;
  522. height: 17%;
  523. margin-bottom: 20px;
  524. display: flex;
  525. justify-content: space-between;
  526. background: var(--image-bj1) no-repeat center;
  527. background-size: 100% 100%;
  528. align-items: center;
  529. .box-container {
  530. display: flex;
  531. &:nth-child(1) {
  532. justify-content: space-between;
  533. align-items: center;
  534. padding: 0px 40px;
  535. flex: 2;
  536. height: 100%;
  537. border-right: 2px solid;
  538. border-image: var(--border-image-2) 1 1 1;
  539. }
  540. &:nth-child(2) {
  541. flex-direction: column;
  542. flex: 1;
  543. justify-content: space-around;
  544. align-items: center;
  545. height: 73%;
  546. border-right: 2px solid;
  547. border-image: var(--border-image-2) 1 1 1;
  548. }
  549. .contents {
  550. height: 73%;
  551. &:nth-child(1) {
  552. width: 50%;
  553. display: flex;
  554. flex-direction: column;
  555. justify-content: space-around;
  556. .text {
  557. font-size: 14px;
  558. display: flex;
  559. align-items: center;
  560. .text-label {
  561. color: #b3b8cc;
  562. font-weight: bold;
  563. }
  564. .text-value {
  565. font-family: 'douyuFont';
  566. color: var(--vent-table-action-link);
  567. margin-left: 10px;
  568. }
  569. }
  570. }
  571. &:nth-child(2) {
  572. width: 50%;
  573. display: flex;
  574. justify-content: center;
  575. align-items: center;
  576. img {
  577. position: relative;
  578. width: 90px;
  579. height: 100%;
  580. background: var(--image-pj) no-repeat center;
  581. background-size: 90px 50%;
  582. }
  583. .text {
  584. font-family: 'douyuFont';
  585. font-size: 28px;
  586. margin: 0px 15px;
  587. color: var(--vent-table-action-link);
  588. }
  589. .dw {
  590. font-size: 14px;
  591. color: #b3b8cc;
  592. }
  593. }
  594. }
  595. .text1 {
  596. width: 90%;
  597. height: 30px;
  598. line-height: 30px;
  599. font-size: 14px;
  600. color: #b3b8cc;
  601. font-weight: bold;
  602. span {
  603. display: inline-block;
  604. &:nth-child(1) {
  605. width: 160px;
  606. text-align: right;
  607. }
  608. &:nth-child(2) {
  609. font-family: 'douyuFont';
  610. color: var(--vent-table-action-link);
  611. margin-left: 10px;
  612. }
  613. }
  614. .value1 {
  615. color: rgb(145, 230, 9) !important;
  616. }
  617. .value2 {
  618. // color: rgb(0, 242, 255) !important;
  619. color: #ffff35 !important;
  620. }
  621. .value3 {
  622. // color: #ffff35 !important;
  623. color: #ff0000 !important;
  624. }
  625. .value4 {
  626. color: #ffbe69 !important;
  627. }
  628. .value5 {
  629. color: #ff6f00 !important;
  630. }
  631. .value6 {
  632. color: #ff0000 !important;
  633. }
  634. }
  635. }
  636. }
  637. .content {
  638. width: 100%;
  639. height: calc(83% - 20px);
  640. padding: 10px;
  641. background: var(--image-bj1) no-repeat center;
  642. background-size: 100% 100%;
  643. box-sizing: border-box;
  644. .title-b {
  645. height: 30px;
  646. line-height: 30px;
  647. font-family: 'douyuFont';
  648. font-size: 14px;
  649. color: #fff;
  650. // color: var(--vent-table-action-link);
  651. }
  652. .card-btn {
  653. height: 28%;
  654. margin-bottom: 10px;
  655. display: flex;
  656. justify-content: space-between;
  657. .box-container {
  658. position: relative;
  659. width: 16%;
  660. height: 100%;
  661. background: var(--image-1) no-repeat center;
  662. background-size: 100% 100%;
  663. cursor: pointer;
  664. .box-label {
  665. position: absolute;
  666. left: 50%;
  667. top: 2px;
  668. transform: translate(-50%);
  669. color: #fff;
  670. }
  671. .box-item {
  672. position: absolute;
  673. left: 50%;
  674. transform: translate(-50%, 0);
  675. width: 89%;
  676. height: 16%;
  677. padding: 0px 10px;
  678. display: flex;
  679. justify-content: space-between;
  680. align-items: center;
  681. background: var(--image-contetn) no-repeat center;
  682. background-size: 100% 100%;
  683. .text-t {
  684. width: 17%;
  685. color: #fff;
  686. font-size: 12px;
  687. }
  688. .text-v {
  689. width: 83%;
  690. font-family: 'douyuFont';
  691. font-size: 10px;
  692. color: var(--vent-table-action-link);
  693. display: flex;
  694. justify-content: flex-end;
  695. }
  696. }
  697. .box-item1 {
  698. top: 24%;
  699. }
  700. .box-item2 {
  701. top: 50%;
  702. }
  703. .box-item3 {
  704. top: 75%;
  705. }
  706. }
  707. .box-container1 {
  708. position: relative;
  709. width: 16%;
  710. height: 100%;
  711. background: var(--image-2) no-repeat center;
  712. background-size: 100% 100%;
  713. cursor: pointer;
  714. .box-label {
  715. position: absolute;
  716. left: 50%;
  717. top: 2px;
  718. transform: translate(-50%);
  719. color: #fff;
  720. }
  721. .box-item {
  722. position: absolute;
  723. left: 50%;
  724. transform: translate(-50%, 0);
  725. width: 89%;
  726. height: 16%;
  727. padding: 0px 10px;
  728. display: flex;
  729. justify-content: space-between;
  730. align-items: center;
  731. background: var(--image-contetn) no-repeat center;
  732. background-size: 100% 100%;
  733. .text-t {
  734. width: 17%;
  735. color: #fff;
  736. font-size: 12px;
  737. }
  738. .text-v {
  739. width: 83%;
  740. font-family: 'douyuFont';
  741. font-size: 10px;
  742. color: var(--vent-table-action-link);
  743. display: flex;
  744. justify-content: flex-end;
  745. }
  746. }
  747. .box-item1 {
  748. top: 19%;
  749. }
  750. .box-item2 {
  751. top: 41%;
  752. }
  753. .box-item3 {
  754. top: 63%;
  755. }
  756. }
  757. }
  758. .echart-box {
  759. display: flex;
  760. height: calc(72% - 41px);
  761. .left-echartbox {
  762. width: calc(50% - 6px);
  763. margin-right: 6px;
  764. border: 1px solid #114aac;
  765. border-radius: 5px;
  766. .title-f {
  767. height: 40px;
  768. padding: 0px 10px;
  769. box-sizing: border-box;
  770. display: flex;
  771. justify-content: space-between;
  772. align-items: center;
  773. .title-text {
  774. font-family: 'douyuFont';
  775. font-size: 14px;
  776. color: #fff;
  777. // color: var(--vent-table-action-link);
  778. }
  779. }
  780. .echarts-box {
  781. height: calc(100% - 40px);
  782. padding: 0px 10px;
  783. box-sizing: border-box;
  784. }
  785. }
  786. .right-echartbox {
  787. width: calc(50% - 6px);
  788. margin-left: 6px;
  789. border: 1px solid #114aac;
  790. border-radius: 5px;
  791. }
  792. }
  793. }
  794. }
  795. :deep(.zxm-select:not(.zxm-select-customize-input) .zxm-select-selector) {
  796. border: 1px solid #3ad8ff77 !important;
  797. background-color: #ffffff00 !important;
  798. }
  799. :deep(.zxm-select-selection-item) {
  800. color: #fff !important;
  801. }
  802. :deep(.zxm-select-arrow) {
  803. color: #fff;
  804. }
  805. </style>