laboratoryData.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802
  1. <!-- 实验室实时数据 -->
  2. <template>
  3. <div class="laboratoryData">
  4. <title-page-img-components :propsData="propsData"></title-page-img-components>
  5. <div class="laboratoryDataPage">
  6. <div class="top-bxo">
  7. <div id="laboratoryDataECharts"></div>
  8. <div class="position-max-box position-top-left">
  9. <p class="position-title">I 级实验室</p>
  10. <div class="position-big-box">
  11. <dv-digital-flop :config="levelOneCount" class="dvDigitalFlop"/>
  12. <p class="position-right-p">间</p>
  13. </div>
  14. </div>
  15. <div class="position-max-box position-top-right">
  16. <p class="position-title">II 级实验室</p>
  17. <div class="position-big-box">
  18. <dv-digital-flop :config="levelTwoCount" class="dvDigitalFlop"/>
  19. <p class="position-right-p">间</p>
  20. </div>
  21. </div>
  22. <div class="position-max-box position-bottom-left">
  23. <p class="position-title">III 级实验室</p>
  24. <div class="position-big-box">
  25. <dv-digital-flop :config="levelThreeCount" class="dvDigitalFlop"/>
  26. <p class="position-right-p">间</p>
  27. </div>
  28. </div>
  29. <div class="position-max-box position-bottom-right">
  30. <p class="position-title">IV 级实验室</p>
  31. <div class="position-big-box">
  32. <dv-digital-flop :config="levelFourCount" class="dvDigitalFlop"/>
  33. <p class="position-right-p">间</p>
  34. </div>
  35. </div>
  36. <div class="position-center-num-box">
  37. <p class="position-title">总计</p>
  38. <dv-digital-flop :config="labTotal" class="dvDigitalFlop"/>
  39. </div>
  40. </div>
  41. <div class="bottomBox">
  42. <div class="back-box back-box-1">
  43. <div class="back-min-box">
  44. <p>使用</p>
  45. <dv-digital-flop :config="useTotal" class="dvDigitalFlop"/>
  46. <p>间</p>
  47. </div>
  48. </div>
  49. <div class="back-box back-box-2">
  50. <div class="back-min-box">
  51. <p>异常</p>
  52. <dv-digital-flop :config="exceptionalTotal" class="dvDigitalFlop"/>
  53. <p>间</p>
  54. </div>
  55. </div>
  56. <div class="back-box back-box-3">
  57. <div class="back-min-box">
  58. <p>空闲</p>
  59. <dv-digital-flop :config="availableTotal" class="dvDigitalFlop"/>
  60. <p>间</p>
  61. </div>
  62. </div>
  63. </div>
  64. <div class="bottom-box">
  65. <div class="bottom-min-box">
  66. <!--<p class="left-p">科研类:</p>-->
  67. <!--<p style="width:65px;color:#0183FA;text-align: right;line-height:50px;">- -</p>-->
  68. <p class="left-p">{{bottomDataName1}}:</p>
  69. <dv-digital-flop :config="bottomDataTotal1" class="dvDigitalFlop"/>
  70. <p class="right-p">间</p>
  71. </div>
  72. <div class="bottom-min-box">
  73. <!--<p class="left-p">教学类:</p>-->
  74. <!--<p style="width:65px;color:#25D748;text-align: right;line-height:50px;">- -</p>-->
  75. <p class="left-p">{{bottomDataName2}}:</p>
  76. <dv-digital-flop :config="bottomDataTotal2" class="dvDigitalFlop"/>
  77. <p class="right-p">间</p>
  78. </div>
  79. <div class="bottom-min-box">
  80. <!--<p class="left-p">公共平台:</p>-->
  81. <!--<p style="width:65px;color:#00FFFF;text-align: right;line-height:50px;">- -</p>-->
  82. <p class="left-p">{{bottomDataName3}}:</p>
  83. <dv-digital-flop :config="bottomDataTotal3" class="dvDigitalFlop"/>
  84. <p class="right-p">间</p>
  85. </div>
  86. </div>
  87. </div>
  88. <!--<add-page :propsData="propsData" v-if="pageType === 2"></add-page>-->
  89. </div>
  90. </template>
  91. <script>
  92. const configData0 = {
  93. content: '{nt}',
  94. textAlign: 'center',
  95. style: {
  96. fill: '#fff',
  97. fontSize: 20,
  98. fontWeight: 700,
  99. fontFamily: 'YouSheBiaoTiHei',
  100. gradientParams: [0, 0, 0, 30]
  101. }
  102. }
  103. const configData1 = {
  104. content: '{nt}',
  105. textAlign: 'right',
  106. style: {
  107. fill: '#fff',
  108. fontSize: 30,
  109. fontWeight: 700,
  110. fontFamily: 'YouSheBiaoTiHei',
  111. gradientColor: ['#fff', '#F38181'],
  112. gradientType: 'linear',//'linear' | 'radial'
  113. gradientWith: 'fill',//'stroke' | 'fill'
  114. gradientParams: [0, 0, 0, 45]
  115. }
  116. }
  117. const configData2 = {
  118. content: '{nt}',
  119. textAlign: 'right',
  120. style: {
  121. fill: '#fff',
  122. fontSize: 30,
  123. fontWeight: 700,
  124. fontFamily: 'YouSheBiaoTiHei',
  125. gradientColor: ['#fff', '#D8A746'],
  126. gradientType: 'linear',//'linear' | 'radial'
  127. gradientWith: 'fill',//'stroke' | 'fill'
  128. gradientParams: [0, 0, 0, 45]
  129. }
  130. }
  131. const configData3 = {
  132. content: '{nt}',
  133. textAlign: 'right',
  134. style: {
  135. fill: '#fff',
  136. fontSize: 30,
  137. fontWeight: 700,
  138. fontFamily: 'YouSheBiaoTiHei',
  139. gradientColor: ['#fff', '#539FFC'],
  140. gradientType: 'linear',//'linear' | 'radial'
  141. gradientWith: 'fill',//'stroke' | 'fill'
  142. gradientParams: [0, 0, 0, 45]
  143. }
  144. }
  145. const configData4 = {
  146. content: '{nt}',
  147. textAlign: 'right',
  148. style: {
  149. fill: '#fff',
  150. fontSize: 30,
  151. fontWeight: 700,
  152. fontFamily: 'YouSheBiaoTiHei',
  153. gradientColor: ['#fff', '#56A757'],
  154. gradientType: 'linear',//'linear' | 'radial'
  155. gradientWith: 'fill',//'stroke' | 'fill'
  156. gradientParams: [0, 0, 0, 45]
  157. }
  158. }
  159. const configData5 = {
  160. content: '{nt}',
  161. textAlign: 'center',
  162. style: {
  163. fill: '#0586FF',
  164. fontSize: 16,
  165. fontWeight: 700,
  166. fontFamily: 'AlimamaShuHeiTi',
  167. gradientParams: [0, 0, 0, 20]
  168. }
  169. }
  170. const configData6 = {
  171. content: '{nt}',
  172. textAlign: 'center',
  173. style: {
  174. fill: '#FF8C00',
  175. fontSize: 16,
  176. fontWeight: 700,
  177. fontFamily: 'AlimamaShuHeiTi',
  178. gradientParams: [0, 0, 0, 20]
  179. }
  180. }
  181. const configData7 = {
  182. content: '{nt}',
  183. textAlign: 'center',
  184. style: {
  185. fill: '#25D748',
  186. fontSize: 16,
  187. fontWeight: 700,
  188. fontFamily: 'AlimamaShuHeiTi',
  189. gradientParams: [0, 0, 0, 20]
  190. }
  191. }
  192. const configData8 = {
  193. content: '{nt}',
  194. textAlign: 'right',
  195. style: {
  196. fill: '#0183FA',
  197. fontSize: 16,
  198. fontFamily: 'AlimamaShuHeiTi',
  199. gradientParams: [0, 0, 0, 20]
  200. }
  201. }
  202. const configData9 = {
  203. content: '{nt}',
  204. textAlign: 'right',
  205. style: {
  206. fill: '#25D748',
  207. fontSize: 16,
  208. fontFamily: 'AlimamaShuHeiTi',
  209. gradientParams: [0, 0, 0, 20]
  210. }
  211. }
  212. const configData10 = {
  213. content: '{nt}',
  214. textAlign: 'right',
  215. style: {
  216. fill: '#00FFFF',
  217. fontSize: 16,
  218. fontFamily: 'AlimamaShuHeiTi',
  219. gradientParams: [0, 0, 0, 20]
  220. }
  221. }
  222. import { laboratorySubRelInfoLabStateStatisticsAll,
  223. laboratorySubRelInfoGetLabTypeStatistics,} from "@/api/index";
  224. import titlePageImgComponents from '@/components/titlePageImgComponents.vue'
  225. export default {
  226. name: 'index',
  227. components: {
  228. titlePageImgComponents
  229. },
  230. data() {
  231. return {
  232. //组件传参
  233. propsData: {
  234. title: '全校实验室实时统计数量'
  235. },
  236. //echarts数据
  237. echartsBox:null,
  238. // 定时器
  239. echartsTimer:null,
  240. labTotal: {
  241. number: [0],
  242. content: configData0.content,
  243. textAlign: configData0.textAlign,
  244. style: configData0.style
  245. },
  246. levelOneCount: {
  247. number: [0],
  248. content: configData1.content,
  249. textAlign: configData1.textAlign,
  250. style: configData1.style
  251. },
  252. levelTwoCount: {
  253. number: [0],
  254. content: configData2.content,
  255. textAlign: configData2.textAlign,
  256. style: configData2.style
  257. },
  258. levelThreeCount: {
  259. number: [0],
  260. content: configData3.content,
  261. textAlign: configData3.textAlign,
  262. style: configData3.style
  263. },
  264. levelFourCount: {
  265. number: [0],
  266. content: configData4.content,
  267. textAlign: configData4.textAlign,
  268. style: configData4.style
  269. },
  270. useTotal: {
  271. number: [0],
  272. content: configData5.content,
  273. textAlign: configData5.textAlign,
  274. style: configData5.style
  275. },
  276. exceptionalTotal: {
  277. number: [0],
  278. content: configData6.content,
  279. textAlign: configData6.textAlign,
  280. style: configData6.style
  281. },
  282. availableTotal: {
  283. number: [0],
  284. content: configData7.content,
  285. textAlign: configData7.textAlign,
  286. style: configData7.style
  287. },
  288. bottomDataTotal1: {
  289. number: [0],
  290. content: configData8.content,
  291. textAlign: configData8.textAlign,
  292. style: configData8.style
  293. },
  294. bottomDataTotal2: {
  295. number: [0],
  296. content: configData9.content,
  297. textAlign: configData9.textAlign,
  298. style: configData9.style
  299. },
  300. bottomDataTotal3: {
  301. number: [0],
  302. content: configData10.content,
  303. textAlign: configData10.textAlign,
  304. style: configData10.style
  305. },
  306. bottomDataName1:'',
  307. bottomDataName2:'',
  308. bottomDataName3:'',
  309. }
  310. },
  311. created() {
  312. },
  313. mounted() {
  314. this.getList()
  315. this.timeFunction();
  316. },
  317. methods: {
  318. getList() {
  319. laboratorySubRelInfoLabStateStatisticsAll().then(response => {
  320. this.$set(this, 'labTotal', {
  321. number: [response.data.labTotal],
  322. content: configData0.content,
  323. textAlign: configData0.textAlign,
  324. style: configData0.style
  325. })
  326. this.$set(this, 'levelOneCount', {
  327. number: [response.data.levelOneCount],
  328. content: configData1.content,
  329. textAlign: configData1.textAlign,
  330. style: configData1.style
  331. })
  332. this.$set(this, 'levelTwoCount', {
  333. number: [response.data.levelTwoCount],
  334. content: configData2.content,
  335. textAlign: configData2.textAlign,
  336. style: configData2.style
  337. })
  338. this.$set(this, 'levelThreeCount', {
  339. number: [response.data.levelThreeCount],
  340. content: configData3.content,
  341. textAlign: configData3.textAlign,
  342. style: configData3.style
  343. })
  344. this.$set(this, 'levelFourCount', {
  345. number: [response.data.levelFourCount],
  346. content: configData4.content,
  347. textAlign: configData4.textAlign,
  348. style: configData4.style
  349. })
  350. this.$set(this, 'useTotal', {
  351. number: [response.data.useTotal],
  352. content: configData5.content,
  353. textAlign: configData5.textAlign,
  354. style: configData5.style
  355. })
  356. this.$set(this, 'exceptionalTotal', {
  357. number: [response.data.exceptionalTotal],
  358. content: configData6.content,
  359. textAlign: configData6.textAlign,
  360. style: configData6.style
  361. })
  362. this.$set(this, 'availableTotal', {
  363. number: [response.data.availableTotal],
  364. content: configData7.content,
  365. textAlign: configData7.textAlign,
  366. style: configData7.style
  367. })
  368. const optionsData = [
  369. {
  370. name: 'I级',
  371. value: response.data.levelOneCount,
  372. itemStyle: {
  373. color: '#F38181'
  374. }
  375. },
  376. {
  377. name: 'II级',
  378. value: response.data.levelTwoCount,
  379. itemStyle: {
  380. color: '#D8A746'
  381. }
  382. },
  383. {
  384. name: 'III级',
  385. value: response.data.levelThreeCount,
  386. itemStyle: {
  387. color: '#539FFC'
  388. }
  389. },
  390. {
  391. name: 'IIII级',
  392. value: response.data.levelFourCount,
  393. itemStyle: {
  394. color: '#56A757'
  395. }
  396. }
  397. ]
  398. this.eChartsMethod(optionsData)
  399. })
  400. laboratorySubRelInfoGetLabTypeStatistics().then(response => {
  401. response.data.forEach((item,index)=>{
  402. if(index == 0){
  403. this.$set(this,'bottomDataName1',item.subType);
  404. this.$set(this, 'bottomDataTotal1', {
  405. number: [item.count],
  406. content: configData8.content,
  407. textAlign: configData8.textAlign,
  408. style: configData8.style
  409. })
  410. }else if(index == 1){
  411. this.$set(this,'bottomDataName2',item.subType);
  412. this.$set(this, 'bottomDataTotal2', {
  413. number: [item.count],
  414. content: configData9.content,
  415. textAlign: configData9.textAlign,
  416. style: configData9.style
  417. })
  418. }else if(index == 2){
  419. this.$set(this,'bottomDataName3',item.subType);
  420. this.$set(this, 'bottomDataTotal3', {
  421. number: [item.count],
  422. content: configData10.content,
  423. textAlign: configData10.textAlign,
  424. style: configData10.style
  425. })
  426. }
  427. })
  428. })
  429. },
  430. eChartsMethod(optionsData) {
  431. // 生成扇形的曲面参数方程,用于 series-surface.parametricEquation
  432. function getParametricEquation(startRatio, endRatio, isSelected, isHovered, k, height) {
  433. // 计算
  434. let midRatio = (startRatio + endRatio) / 2
  435. let startRadian = startRatio * Math.PI * 2
  436. let endRadian = endRatio * Math.PI * 2
  437. let midRadian = midRatio * Math.PI * 2
  438. // 如果只有一个扇形,则不实现选中效果。
  439. if (startRatio === 0 && endRatio === 1) {
  440. isSelected = false
  441. }
  442. // 通过扇形内径/外径的值,换算出辅助参数 k(默认值 1/3)
  443. k = typeof k !== 'undefined' ? k : 1 / 3
  444. // 计算选中效果分别在 x 轴、y 轴方向上的位移(未选中,则位移均为 0)
  445. let offsetX = isSelected ? Math.cos(midRadian) * 0.1 : 0
  446. let offsetY = isSelected ? Math.sin(midRadian) * 0.1 : 0
  447. // 计算高亮效果的放大比例(未高亮,则比例为 1)
  448. let hoverRate = isHovered ? 1.05 : 1
  449. // 返回曲面参数方程
  450. return {
  451. u: {
  452. min: -Math.PI,
  453. max: Math.PI * 3,
  454. step: Math.PI / 32
  455. },
  456. v: {
  457. min: 0,
  458. max: Math.PI * 2,
  459. step: Math.PI / 20
  460. },
  461. x: function(u, v) {
  462. if (u < startRadian) {
  463. return offsetX + Math.cos(startRadian) * (1.4 + Math.cos(v) * k) * hoverRate
  464. }
  465. if (u > endRadian) {
  466. return offsetX + Math.cos(endRadian) * (1.4 + Math.cos(v) * k) * hoverRate
  467. }
  468. return offsetX + Math.cos(u) * (1.4 + Math.cos(v) * k) * hoverRate
  469. },
  470. y: function(u, v) {
  471. if (u < startRadian) {
  472. return offsetY + Math.sin(startRadian) * (1.4 + Math.cos(v) * k) * hoverRate
  473. }
  474. if (u > endRadian) {
  475. return offsetY + Math.sin(endRadian) * (1.4 + Math.cos(v) * k) * hoverRate
  476. }
  477. return offsetY + Math.sin(u) * (1.4 + Math.cos(v) * k) * hoverRate
  478. },
  479. z: function(u, v) {
  480. if (u < -Math.PI * 0.5) {
  481. return Math.sin(u)
  482. }
  483. if (u > Math.PI * 2.5) {
  484. return Math.sin(u)
  485. }
  486. return Math.sin(v) > 0 ? 1 * height : -1
  487. }
  488. }
  489. }
  490. // 生成模拟 3D 饼图的配置项
  491. function getPie3D(pieData, internalDiameterRatio) {
  492. let series = []
  493. let sumValue = 0
  494. let startValue = 0
  495. let endValue = 0
  496. let legendData = []
  497. let k = typeof internalDiameterRatio !== 'undefined' ? (1 - internalDiameterRatio) / (1 + internalDiameterRatio) : 1 / 3
  498. // 为每一个饼图数据,生成一个 series-surface 配置
  499. for (let i = 0; i < pieData.length; i++) {
  500. sumValue += pieData[i].value
  501. let seriesItem = {
  502. name: typeof pieData[i].name === 'undefined' ? `series${i}` : pieData[i].name,
  503. type: 'surface',
  504. parametric: true,
  505. wireframe: {
  506. show: false
  507. },
  508. pieData: pieData[i],
  509. pieStatus: {
  510. selected: false,
  511. hovered: false,
  512. k: k
  513. }
  514. }
  515. if (typeof pieData[i].itemStyle != 'undefined') {
  516. let itemStyle = {}
  517. typeof pieData[i].itemStyle.color != 'undefined' ? itemStyle.color = pieData[i].itemStyle.color : null
  518. typeof pieData[i].itemStyle.opacity != 'undefined' ? itemStyle.opacity = pieData[i].itemStyle.opacity : null
  519. seriesItem.itemStyle = itemStyle
  520. }
  521. series.push(seriesItem)
  522. }
  523. // 使用上一次遍历时,计算出的数据和 sumValue,调用 getParametricEquation 函数,
  524. // 向每个 series-surface 传入不同的参数方程 series-surface.parametricEquation,也就是实现每一个扇形。
  525. for (let i = 0; i < series.length; i++) {
  526. endValue = startValue + series[i].pieData.value
  527. series[i].pieData.startRatio = startValue / sumValue
  528. series[i].pieData.endRatio = endValue / sumValue
  529. series[i].parametricEquation = getParametricEquation(series[i].pieData.startRatio, series[i].pieData.endRatio, false, false, k, 20)
  530. startValue = endValue
  531. legendData.push(series[i].name)
  532. }
  533. return series
  534. }
  535. // const series = getPie3D(optionsData, 0.8, 240, 28, 26, 0.5)
  536. const series = getPie3D(optionsData, 1.4, 240, 28, 26, 0.5)
  537. // 准备待返回的配置项,把准备好的 legendData、series 传入。
  538. let option = {
  539. legend: {
  540. show: false
  541. },
  542. animation: false,
  543. tooltip: {
  544. show: false
  545. },
  546. title: {
  547. show: false
  548. },
  549. labelLine: {
  550. show: false
  551. },
  552. label: {
  553. show: false
  554. },
  555. xAxis3D: {
  556. min: -1,
  557. max: 1
  558. },
  559. yAxis3D: {
  560. min: -1,
  561. max: 1
  562. },
  563. zAxis3D: {
  564. min: -1,
  565. max: 1
  566. },
  567. grid3D: {
  568. show: false,
  569. boxHeight: 1,
  570. //top: '30%',
  571. bottom: '50%',
  572. viewControl: {
  573. distance: 180,
  574. alpha: 30,
  575. beta: 60,
  576. autoRotate: false // 自动旋转
  577. }
  578. },
  579. series: series
  580. }
  581. this.echartsBox = this.$echarts.init(document.getElementById('laboratoryDataECharts'));
  582. this.echartsBox.clear();
  583. this.echartsBox.setOption(option);
  584. },
  585. //时间定时器
  586. timeFunction(){
  587. let self = this;
  588. this.echartsTimer = window.setInterval(showTime, 180000);
  589. function showTime() {
  590. self.getList();
  591. }
  592. },
  593. },
  594. beforeDestroy() {
  595. //清除定时器
  596. window.clearInterval(this.echartsTimer);
  597. },
  598. destroyed() {
  599. //清除定时器
  600. window.clearInterval(this.echartsTimer);
  601. }
  602. }
  603. </script>
  604. <style scoped lang="scss">
  605. .laboratoryData {
  606. width: 652px;
  607. height: 526px;
  608. overflow: hidden;
  609. .laboratoryDataPage {
  610. width: 650px;
  611. height: 467px;
  612. padding:20px 46px;
  613. background: linear-gradient( 180deg, rgba(4,117,129,0.2) 0%, rgba(0,15,22,0) 100%);
  614. .top-bxo {
  615. width: 553px;
  616. height: 245px;
  617. background: url("../../../assets/ZDimages/img_syssjbg@1x.png");
  618. background-size: 100%;
  619. position: relative;
  620. #laboratoryDataECharts {
  621. width:320px;
  622. height:189px;
  623. left:116px;
  624. top:0;
  625. }
  626. .position-max-box {
  627. width: 256px;
  628. height: 101px;
  629. position: absolute;
  630. .position-title {
  631. color: #fff;
  632. font-size: 14px;
  633. margin: 24px 0 0 17px;
  634. }
  635. .position-big-box {
  636. display: flex;
  637. margin: 15px 0 0 0;
  638. .dvDigitalFlop {
  639. line-height: 30px;
  640. height: 30px;
  641. width: 85px;
  642. }
  643. .position-right-p {
  644. font-size: 14px;
  645. line-height: 30px;
  646. margin-left: 5px;
  647. color: #fff;
  648. }
  649. }
  650. }
  651. .position-top-left {
  652. top: 0;
  653. left: 0;
  654. }
  655. .position-top-right {
  656. top: 0;
  657. right: 0;
  658. .position-title {
  659. text-align: right;
  660. margin-right:25px;
  661. }
  662. .dvDigitalFlop {
  663. width: 220px !important;
  664. }
  665. }
  666. .position-bottom-left {
  667. bottom: 0;
  668. left: 0;
  669. }
  670. .position-bottom-right {
  671. bottom: 0;
  672. right: 0;
  673. .position-title {
  674. text-align: right;
  675. margin-right:25px;
  676. }
  677. .dvDigitalFlop {
  678. width: 220px !important;
  679. }
  680. }
  681. .position-center-num-box{
  682. position: absolute;
  683. top:75px;
  684. left:170px;
  685. .position-title {
  686. color: #fff;
  687. font-size: 14px;
  688. text-align: center;
  689. }
  690. .dvDigitalFlop {
  691. line-height: 30px;
  692. height: 30px;
  693. width: 210px;
  694. }
  695. }
  696. }
  697. .bottomBox {
  698. display: flex;
  699. .back-box{
  700. width:178px;
  701. height:110px;
  702. .back-min-box{
  703. margin-top:38px;
  704. margin-left:75px;
  705. display: flex;
  706. p{
  707. color:#fff;
  708. font-size:14px;
  709. line-height:40px;
  710. }
  711. .dvDigitalFlop{
  712. width:50px;
  713. height:45px;
  714. line-height:45px;
  715. }
  716. }
  717. }
  718. .back-box-1{
  719. background: url("../../../assets/ZDimages/img_syssjbg_sy@1x.png");
  720. background-size: 100%;
  721. }
  722. .back-box-2{
  723. margin:0 15px;
  724. background: url("../../../assets/ZDimages/img_syssjbg_yc@1x.png");
  725. background-size: 100%;
  726. }
  727. .back-box-3{
  728. background: url("../../../assets/ZDimages/img_syssjbg_kx@1x.png");
  729. background-size: 100%;
  730. }
  731. }
  732. .bottom-box{
  733. display: flex;
  734. .bottom-min-box:nth-child(2){
  735. margin:0 8px;
  736. }
  737. .bottom-min-box{
  738. width:182px;
  739. height:50px;
  740. background: url("../../../assets/ZDimages/img_yjczbg.png");
  741. background-size: 100%;
  742. display: flex;
  743. .left-p{
  744. margin-left:14px;
  745. font-size:14px;
  746. color:#fff;
  747. text-align: left;
  748. line-height: 50px;
  749. /*width:80px;*/
  750. flex:1;
  751. }
  752. .dvDigitalFlop {
  753. line-height: 50px;
  754. height: 50px;
  755. width: 50px;
  756. }
  757. .right-p{
  758. font-size:14px;
  759. color:#fff;
  760. line-height: 50px;
  761. width:24px;
  762. margin-left:5px;
  763. }
  764. }
  765. }
  766. }
  767. }
  768. </style>