fire-detail-ckq.vue 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811
  1. <template>
  2. <view class="fire-detail-ckq">
  3. <view class="top-area">
  4. <view class="top-card">
  5. <view class="card-box" v-for="(item, index) in cardList" :key="index">
  6. <view class="box-item">
  7. <view class="box-val">{{ item.value }}</view>
  8. <view class="box-name">{{ item.name }}</view>
  9. </view>
  10. </view>
  11. </view>
  12. </view>
  13. <view class="center-area">
  14. <view class="bot-title">
  15. <view style="font-weight: bold;">光钎测温系统温度实时监测</view>
  16. </view>
  17. <view class="echartBox">
  18. <canvas id="myChart" :style="{ width: '100%', height: '220px' }"></canvas>
  19. </view>
  20. </view>
  21. <view class="bot-area">
  22. <view class="bot-title">
  23. <view style="font-weight: bold;">束管系统监测</view>
  24. </view>
  25. <view class="bot-content" v-for="(item, index) in botContentList" :key="index">
  26. <view class="content-title">{{ item.title }}</view>
  27. <view class="content-item-box">
  28. <view class="content-item">
  29. <view class="item-l">
  30. <view class="item-value">{{ item.value }}</view>
  31. <view class="item-label">浓度</view>
  32. </view>
  33. <view class="item-r">
  34. <view class="item-value">{{ item.time }}</view>
  35. <view class="item-label">时间</view>
  36. </view>
  37. </view>
  38. </view>
  39. <view class="echartbox1">
  40. <canvas :id="`myChartH${index}`" :style="{ width: '100%', height: '220px' }"></canvas>
  41. </view>
  42. </view>
  43. </view>
  44. </view>
  45. </template>
  46. <script>
  47. import api from "@/api/api";
  48. export default {
  49. name: 'fireDetailCkq',
  50. props: {
  51. detailCkq: {
  52. type: Object,
  53. default: () => {
  54. return {}
  55. }
  56. }
  57. },
  58. data() {
  59. return {
  60. myChart: null,
  61. xData: [],
  62. yData: [],
  63. cardList: [
  64. { name: '最高温度()', value: 0 },
  65. { name: '最低温度()', value: 0 },
  66. { name: '平均温度()', value: 0 },
  67. { name: '状态', value: '' },
  68. { name: '回风隅角-O2', value: 0 },
  69. { name: '回风隅角-CO', value: 0 },
  70. ],
  71. myChartH: null,
  72. legendName: '',
  73. axisDw: '',
  74. xDataH: [],
  75. yDataH: [],
  76. botContentList: [
  77. { title: 'O₂', value: 0, time: '', address: '' },
  78. { title: 'C₂H₄', value: 0, time: '', address: '' },
  79. { title: 'CO', value: 0, time: '', address: '' },
  80. { title: 'CH₄', value: 0, time: '', address: '' },
  81. { title: 'CO₂', value: 0, time: '', address: '' },
  82. { title: 'C₂H₂', value: 0, time: '', address: '' },
  83. ]
  84. };
  85. },
  86. watch: {
  87. detailCkq: {
  88. handler(newC, oldC) {
  89. console.log(newC, 'newC--------------')
  90. let that = this
  91. that.xData = []
  92. that.yData = []
  93. if (JSON.stringify(newC) != '{}') {
  94. if (newC.fiber.length != 0) {
  95. that.cardList[0].value = newC.fiber[0].readData.fmax;
  96. that.cardList[1].value = newC.fiber[0].readData.fmin;
  97. that.cardList[2].value = newC.fiber[0].readData.favg;
  98. that.cardList[3].value = newC.fiber[0].warnFlag ? '报警' : '正常';
  99. JSON.parse(newC.fiber[0].readData.fibreTemperature).forEach((el) => {
  100. that.xData.push(el.pos);
  101. that.yData.push(el.value);
  102. });
  103. that.initChart()
  104. } else {
  105. that.cardList[0].value = '--';
  106. that.cardList[1].value = '--';
  107. that.cardList[2].value = '--';
  108. that.cardList[3].value = '正常';
  109. }
  110. if (newC.bundletube.length != 0) {
  111. that.botContentList[0].value = newC.bundletube[0].readData.o2val;
  112. that.botContentList[1].value = newC.bundletube[0].readData.ch2val;
  113. that.botContentList[2].value = newC.bundletube[0].readData.coval;
  114. that.botContentList[3].value = newC.bundletube[0].readData.chval;
  115. that.botContentList[4].value = newC.bundletube[0].readData.co2val;
  116. that.botContentList[5].value = newC.bundletube[0].readData.gasval;
  117. that.botContentList.forEach((el, index) => {
  118. el.time = newC.bundletube[0].readTime;
  119. if (el.title == 'O₂') {
  120. that.xDataH = newC.bundletube[0].history.map(x => x.time)
  121. that.yDataH = newC.bundletube[0].history.map(y => y.o2val)
  122. that.legendName = 'O₂'
  123. that.axisDw = '%'
  124. } else if (el.title == 'C₂H₄') {
  125. that.xDataH = newC.bundletube[0].history.map(x => x.time)
  126. that.yDataH = newC.bundletube[0].history.map(y => y.ch2val)
  127. that.legendName = 'C₂H₄'
  128. that.axisDw = 'ppm'
  129. } else if (el.title == 'CO') {
  130. that.xDataH = newC.bundletube[0].history.map(x => x.time)
  131. that.yDataH = newC.bundletube[0].history.map(y => y.coval)
  132. that.legendName = 'CO'
  133. that.axisDw = 'ppm'
  134. } else if (el.title == 'CH₄') {
  135. that.xDataH = newC.bundletube[0].history.map(x => x.time)
  136. that.yDataH = newC.bundletube[0].history.map(y => y.chval)
  137. that.legendName = 'CH₄'
  138. that.axisDw = 'ppm'
  139. } else if (el.title == 'CO₂') {
  140. that.xDataH = newC.bundletube[0].history.map(x => x.time)
  141. that.yDataH = newC.bundletube[0].history.map(y => y.co2val)
  142. that.legendName = 'CO₂'
  143. that.axisDw = '%'
  144. } else if (el.title == 'C₂H₂') {
  145. that.xDataH = newC.bundletube[0].history.map(x => x.time)
  146. that.yDataH = newC.bundletube[0].history.map(y => y.gasval)
  147. that.legendName = 'C₂H₂'
  148. that.axisDw = 'ppm'
  149. }
  150. that.initChartH(index)
  151. })
  152. } else {
  153. that.botContentList[0].value = '--';
  154. that.botContentList[1].value = '--';
  155. that.botContentList[2].value = '--';
  156. that.botContentList[3].value = '--';
  157. that.botContentList[4].value = '--';
  158. that.botContentList[5].value = '--';
  159. that.botContentList.forEach(el => {
  160. el.time = '--';
  161. })
  162. }
  163. }
  164. },
  165. immediate: true,
  166. deep: true
  167. }
  168. },
  169. mounted() { },
  170. methods: {
  171. //初始化echarts实例
  172. initChart() {
  173. let canvas = document.getElementById('myChart');
  174. this.myChart = this.$echarts.init(canvas)
  175. let option = {
  176. grid: {
  177. top: '20%',
  178. left: '4%',
  179. bottom: '4%',
  180. right: '2%',
  181. containLabel: true,
  182. },
  183. tooltip: {
  184. trigger: 'item',
  185. backgroundColor: 'rgba(0, 0, 0, .6)',
  186. textStyle: {
  187. color: '#fff',
  188. fontSize: 12,
  189. },
  190. },
  191. legend: {
  192. // align: 'center',
  193. right: 'center',
  194. top: '0%',
  195. type: 'plain',
  196. textStyle: {
  197. color: '#0eb4fc',
  198. fontSize: 12,
  199. },
  200. // icon:'rect',
  201. itemGap: 25,
  202. itemWidth: 20,
  203. icon: 'path://M0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v0a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z',
  204. data: [
  205. {
  206. name: '当前温度',
  207. },
  208. ],
  209. },
  210. xAxis: [
  211. {
  212. type: 'category',
  213. boundaryGap: false,
  214. axisLabel: {
  215. // formatter: '{value}',
  216. fontSize: 12,
  217. margin: 10,
  218. textStyle: {
  219. color: '#b3b8cc',
  220. },
  221. formatter: function (params) {
  222. let newParamsName = '' // 最终拼接成的字符串
  223. let paramsNameNumber = params.length // 实际标签的个数
  224. let provideNumber = 10 // 每行能显示的字的个数
  225. let rowNumber = Math.ceil(paramsNameNumber / provideNumber) // 换行的话,需要显示几行,向上取整
  226. /**
  227. * 判断标签的个数是否大于规定的个数, 如果大于,则进行换行处理 如果不大于,即等于或小于,就返回原标签
  228. */
  229. // 条件等同于rowNumber>1
  230. if (paramsNameNumber > provideNumber) {
  231. /** 循环每一行,p表示行 */
  232. for (var p = 0; p < rowNumber; p++) {
  233. var tempStr = '' // 表示每一次截取的字符串
  234. var start = p * provideNumber // 开始截取的位置
  235. var end = start + provideNumber // 结束截取的位置
  236. // 此处特殊处理最后一行的索引值
  237. if (p == rowNumber - 1) {
  238. // 最后一次不换行
  239. tempStr = params.substring(start, paramsNameNumber)
  240. } else {
  241. // 每一次拼接字符串并换行
  242. tempStr = params.substring(start, end) + '\n'
  243. }
  244. newParamsName += tempStr // 最终拼成的字符串
  245. }
  246. } else {
  247. // 将旧标签的值赋给新标签
  248. newParamsName = params
  249. }
  250. //将最终的字符串返回
  251. return newParamsName
  252. }
  253. },
  254. axisLine: {
  255. lineStyle: {
  256. color: '#f1f5f6',
  257. },
  258. },
  259. axisTick: {
  260. show: false,
  261. },
  262. data: this.xData || [],
  263. },
  264. ],
  265. yAxis: [
  266. {
  267. boundaryGap: false,
  268. type: 'value',
  269. max: 2000,
  270. axisLabel: {
  271. textStyle: {
  272. color: '#b3b8cc',
  273. },
  274. formatter: '{value}'
  275. },
  276. name: '(­°C)',
  277. nameTextStyle: {
  278. color: '#b3b8cc',
  279. fontSize: 12,
  280. lineHeight: 0,
  281. },
  282. splitLine: {
  283. lineStyle: {
  284. color: '#f1f5f6',
  285. },
  286. },
  287. axisLine: {
  288. show: true,
  289. lineStyle: {
  290. color: '#f1f5f6',
  291. },
  292. },
  293. axisTick: {
  294. show: false,
  295. },
  296. },
  297. {
  298. boundaryGap: false,
  299. type: 'value',
  300. max: 2000,
  301. axisLabel: {
  302. textStyle: {
  303. color: '#b3b8cc',
  304. },
  305. formatter: '{value}'
  306. },
  307. name: '(­°C)',
  308. nameTextStyle: {
  309. color: '#fff',
  310. fontSize: 12,
  311. lineHeight: 10,
  312. },
  313. splitLine: {
  314. lineStyle: {
  315. color: '#f1f5f6',
  316. },
  317. },
  318. axisLine: {
  319. show: true,
  320. lineStyle: {
  321. color: '#f1f5f6',
  322. },
  323. },
  324. axisTick: {
  325. show: false,
  326. },
  327. },
  328. ],
  329. series: [
  330. {
  331. name: '当前温度',
  332. type: 'line',
  333. smooth: true,
  334. showSymbol: true,
  335. symbolSize: 8,
  336. zlevel: 3,
  337. itemStyle: {
  338. color: '#19a3df',
  339. borderColor: '#a3c8d8',
  340. },
  341. lineStyle: {
  342. normal: {
  343. width: 2,
  344. color: '#19a3df',
  345. },
  346. },
  347. data: this.yData || [],
  348. },
  349. ],
  350. };
  351. this.myChart.setOption(option)
  352. window.addEventListener('resize', () => {
  353. this.myChart.resize()
  354. })
  355. },
  356. initChartH(ind) {
  357. let canvas = document.getElementById(`myChartH${ind}`);
  358. this.myChartH = this.$echarts.init(canvas)
  359. let option = {
  360. grid: {
  361. top: '20%',
  362. left: '4%',
  363. bottom: '4%',
  364. right: '2%',
  365. containLabel: true,
  366. },
  367. tooltip: {
  368. trigger: 'item',
  369. backgroundColor: 'rgba(0, 0, 0, .6)',
  370. textStyle: {
  371. color: '#fff',
  372. fontSize: 12,
  373. },
  374. },
  375. legend: {
  376. // align: 'center',
  377. right: 'center',
  378. top: '0%',
  379. type: 'plain',
  380. textStyle: {
  381. color: '#0eb4fc',
  382. fontSize: 12,
  383. },
  384. // icon:'rect',
  385. itemGap: 25,
  386. itemWidth: 20,
  387. icon: 'path://M0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v0a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z',
  388. data: [
  389. {
  390. name: this.legendName || '',
  391. },
  392. ],
  393. },
  394. xAxis: [
  395. {
  396. type: 'category',
  397. boundaryGap: false,
  398. axisLabel: {
  399. // formatter: '{value}',
  400. fontSize: 12,
  401. margin: 10,
  402. textStyle: {
  403. color: '#b3b8cc',
  404. },
  405. formatter: function (params) {
  406. let newParamsName = '' // 最终拼接成的字符串
  407. let paramsNameNumber = params.length // 实际标签的个数
  408. let provideNumber = 10 // 每行能显示的字的个数
  409. let rowNumber = Math.ceil(paramsNameNumber / provideNumber) // 换行的话,需要显示几行,向上取整
  410. /**
  411. * 判断标签的个数是否大于规定的个数, 如果大于,则进行换行处理 如果不大于,即等于或小于,就返回原标签
  412. */
  413. // 条件等同于rowNumber>1
  414. if (paramsNameNumber > provideNumber) {
  415. /** 循环每一行,p表示行 */
  416. for (var p = 0; p < rowNumber; p++) {
  417. var tempStr = '' // 表示每一次截取的字符串
  418. var start = p * provideNumber // 开始截取的位置
  419. var end = start + provideNumber // 结束截取的位置
  420. // 此处特殊处理最后一行的索引值
  421. if (p == rowNumber - 1) {
  422. // 最后一次不换行
  423. tempStr = params.substring(start, paramsNameNumber)
  424. } else {
  425. // 每一次拼接字符串并换行
  426. tempStr = params.substring(start, end) + '\n'
  427. }
  428. newParamsName += tempStr // 最终拼成的字符串
  429. }
  430. } else {
  431. // 将旧标签的值赋给新标签
  432. newParamsName = params
  433. }
  434. //将最终的字符串返回
  435. return newParamsName
  436. }
  437. },
  438. axisLine: {
  439. lineStyle: {
  440. color: '#f1f5f6',
  441. },
  442. },
  443. axisTick: {
  444. show: false,
  445. },
  446. data: this.xDataH || [],
  447. },
  448. ],
  449. yAxis: [
  450. {
  451. boundaryGap: false,
  452. type: 'value',
  453. max: 50,
  454. axisLabel: {
  455. textStyle: {
  456. color: '#b3b8cc',
  457. },
  458. formatter: '{value}'
  459. },
  460. name: `(${this.axisDw})`,
  461. nameTextStyle: {
  462. color: '#b3b8cc',
  463. fontSize: 12,
  464. lineHeight: 0,
  465. },
  466. splitLine: {
  467. lineStyle: {
  468. color: '#f1f5f6',
  469. },
  470. },
  471. axisLine: {
  472. show: true,
  473. lineStyle: {
  474. color: '#f1f5f6',
  475. },
  476. },
  477. axisTick: {
  478. show: false,
  479. },
  480. },
  481. {
  482. boundaryGap: false,
  483. type: 'value',
  484. max: 50,
  485. axisLabel: {
  486. textStyle: {
  487. color: '#b3b8cc',
  488. },
  489. formatter: '{value}'
  490. },
  491. name: `(${this.axisDw})`,
  492. nameTextStyle: {
  493. color: '#fff',
  494. fontSize: 12,
  495. lineHeight: 10,
  496. },
  497. splitLine: {
  498. lineStyle: {
  499. color: '#f1f5f6',
  500. },
  501. },
  502. axisLine: {
  503. show: true,
  504. lineStyle: {
  505. color: '#f1f5f6',
  506. },
  507. },
  508. axisTick: {
  509. show: false,
  510. },
  511. },
  512. ],
  513. series: [
  514. {
  515. name: this.legendName || '',
  516. type: 'line',
  517. smooth: true,
  518. showSymbol: true,
  519. symbolSize: 8,
  520. zlevel: 3,
  521. itemStyle: {
  522. color: '#19a3df',
  523. borderColor: '#a3c8d8',
  524. },
  525. lineStyle: {
  526. normal: {
  527. width: 2,
  528. color: '#19a3df',
  529. },
  530. },
  531. data: this.yDataH || [],
  532. },
  533. ],
  534. };
  535. this.myChartH.setOption(option)
  536. window.addEventListener('resize', () => {
  537. this.myChartH.resize()
  538. })
  539. },
  540. },
  541. computed: {
  542. },
  543. };
  544. </script>
  545. <style lang="scss" scoped>
  546. .fire-detail-ckq {
  547. width: 100%;
  548. height: 100%;
  549. // box-sizing: border-box;
  550. // overflow-y: auto;
  551. .top-area {
  552. width: 100%;
  553. padding: 10px;
  554. background-color: #FFF;
  555. margin-bottom: 2px;
  556. box-sizing: border-box;
  557. .top-card {
  558. width: 100%;
  559. display: flex;
  560. justify-content: flex-start;
  561. align-items: flex-start;
  562. flex-wrap: wrap;
  563. .card-box {
  564. width: 31.5%;
  565. height: 60px;
  566. border-radius: 5px;
  567. background: linear-gradient(to right, rgba(55, 135, 254, 0.08), rgba(4, 184, 255, 0.08), rgba(60, 161, 237, 0.08));
  568. &:nth-child(1) {
  569. margin-bottom: 10px;
  570. }
  571. &:nth-child(2) {
  572. margin-bottom: 10px;
  573. margin-left: 10px;
  574. margin-right: 10px;
  575. }
  576. &:nth-child(3) {
  577. margin-bottom: 10px;
  578. }
  579. &:nth-child(5) {
  580. margin-left: 10px;
  581. margin-right: 10px;
  582. }
  583. }
  584. .card-box:nth-child(1) .box-item {
  585. display: flex;
  586. flex-direction: column;
  587. justify-content: center;
  588. align-items: flex-start;
  589. width: 100%;
  590. height: 100%;
  591. padding: 0px 15px;
  592. background: url('/static/zgwd.png') no-repeat right;
  593. background-size: 40% 80%;
  594. }
  595. .card-box:nth-child(2) .box-item {
  596. display: flex;
  597. flex-direction: column;
  598. justify-content: center;
  599. align-items: flex-start;
  600. width: 100%;
  601. height: 100%;
  602. padding: 0px 15px;
  603. background: url('/static/zdwd.png') no-repeat right;
  604. background-size: 40% 80%;
  605. }
  606. .card-box:nth-child(3) .box-item {
  607. display: flex;
  608. flex-direction: column;
  609. justify-content: center;
  610. align-items: flex-start;
  611. width: 100%;
  612. height: 100%;
  613. padding: 0px 15px;
  614. background: url('/static/pjwd.png') no-repeat right;
  615. background-size: 40% 80%;
  616. }
  617. .card-box:nth-child(4) .box-item {
  618. display: flex;
  619. flex-direction: column;
  620. justify-content: center;
  621. align-items: flex-start;
  622. width: 100%;
  623. height: 100%;
  624. padding: 0px 15px;
  625. background: url('/static/zt.png') no-repeat right;
  626. background-size: 40% 80%;
  627. }
  628. .card-box:nth-child(5) .box-item {
  629. display: flex;
  630. flex-direction: column;
  631. justify-content: center;
  632. align-items: flex-start;
  633. width: 100%;
  634. height: 100%;
  635. padding: 0px 15px;
  636. background: url('/static/O₂.png') no-repeat right;
  637. background-size: 40% 80%;
  638. }
  639. .card-box:nth-child(6) .box-item {
  640. display: flex;
  641. flex-direction: column;
  642. justify-content: center;
  643. align-items: flex-start;
  644. width: 100%;
  645. height: 100%;
  646. padding: 0px 15px;
  647. background: url('/static/CO.png') no-repeat right;
  648. background-size: 40% 80%;
  649. }
  650. }
  651. .box-item .box-val {
  652. height: 28px;
  653. line-height: 28px;
  654. color: #0eb4fc;
  655. font-weight: bold;
  656. }
  657. .box-item .box-name {
  658. font-size: 12px;
  659. }
  660. }
  661. .center-area {
  662. width: 100%;
  663. padding: 10px;
  664. background-color: #FFF;
  665. margin-bottom: 2px;
  666. box-sizing: border-box;
  667. .bot-title {
  668. height: 28px;
  669. margin-bottom: 5px;
  670. display: flex;
  671. justify-content: space-between;
  672. align-items: center;
  673. }
  674. .echartBox {
  675. width: 100%;
  676. height: 220px;
  677. }
  678. }
  679. .bot-area {
  680. width: 100%;
  681. padding: 0px 10px;
  682. background-color: #FFF;
  683. margin-bottom: 2px;
  684. box-sizing: border-box;
  685. .bot-title {
  686. height: 28px;
  687. margin-bottom: 5px;
  688. display: flex;
  689. justify-content: space-between;
  690. align-items: center;
  691. }
  692. .bot-content {
  693. margin-bottom: 15px;
  694. .content-title {
  695. height: 26px;
  696. line-height: 26px;
  697. padding: 0px 20px;
  698. font-size: 12px;
  699. background: url('/static/warndata/title.png') no-repeat;
  700. background-size: 100% 100%;
  701. }
  702. .content-item-box {
  703. padding: 5px 0px;
  704. .content-item {
  705. height: 50px;
  706. display: flex;
  707. justify-content: space-between;
  708. align-items: center;
  709. // background: linear-gradient(to right, rgba(55, 135, 254, 0.08), rgba(4, 184, 255, 0.08), rgba(60, 161, 237, 0.08));
  710. // border-radius: 10px;
  711. margin-bottom: 5px;
  712. .item-l {
  713. width: calc(50% - 10px);
  714. height: 100%;
  715. display: flex;
  716. flex-direction: column;
  717. justify-content: center;
  718. align-items: flex-start;
  719. border-radius: 10px;
  720. padding: 0px 15px;
  721. background: url('/static/nd.png'), linear-gradient(to right, rgba(55, 135, 254, 0.08), rgba(4, 184, 255, 0.08), rgba(60, 161, 237, 0.08));
  722. background-size: auto 100%;
  723. background-position: right;
  724. background-repeat: no-repeat;
  725. }
  726. .item-r {
  727. width: calc(50% - 10px);
  728. height: 100%;
  729. display: flex;
  730. flex-direction: column;
  731. justify-content: center;
  732. align-items: flex-start;
  733. border-radius: 10px;
  734. padding: 0px 15px;
  735. background: url('/static/time.png'), linear-gradient(to right, rgba(55, 135, 254, 0.08), rgba(4, 184, 255, 0.08), rgba(60, 161, 237, 0.08));
  736. background-size: auto 100%;
  737. background-position: right;
  738. background-repeat: no-repeat;
  739. }
  740. .item-value {
  741. height: 20px;
  742. line-height: 20px;
  743. color: #0eb4fc;
  744. font-weight: bold;
  745. }
  746. .item-label {
  747. font-size: 12px;
  748. }
  749. }
  750. }
  751. .echartbox1 {
  752. width: 100%;
  753. height: 220px;
  754. margin-bottom: 10px;
  755. }
  756. }
  757. }
  758. }
  759. </style>