stationIndex.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960
  1. <template>
  2. <view class="stationpower">
  3. <view class="box-bg">
  4. <uni-nav-bar :fixed="true" dark left-icon="left" background-color='#202246' :title="stationName"
  5. @clickLeft="back" />
  6. </view>
  7. <view class="power_main">
  8. <view class="flex justify-center">
  9. <view class="power_tab">
  10. <text v-for="(item,index) in powerTabData" :key="index" @click="changePowerTab(item)"
  11. :style="item.showColor ? 'background: #4287FF;color:#fff': ''">{{item.nameZN}}</text>
  12. </view>
  13. </view>
  14. <view class="fdwcl" v-if="powerTab === 'DL'">
  15. <view class="fdwcl_DataAll" v-for="(item,index) in powerProgressData" :key="index">
  16. <uni-row class="fdwcl_Data flex justify-between">
  17. <uni-col :span="8" class="fdwcl_Data_1 flex">
  18. <image src="../../static/jnImage/indexPage/windIcon.png" mode=""></image>
  19. <text>{{item.inPower}}万kWh</text>
  20. </uni-col>
  21. <uni-col :span="8" class="fdwcl_Data_2">
  22. <text>{{item.name}}</text>
  23. </uni-col>
  24. <uni-col :span="8" class="fdwcl_Data_3 flex justify-end">
  25. <text>{{item.allPower}}万kWh</text>
  26. </uni-col>
  27. </uni-row>
  28. <view class="fdwcl_Data_msg">
  29. <view class="show_msg" :style="showProgress(item, index)">
  30. </view>
  31. </view>
  32. </view>
  33. </view>
  34. <view class="ycdl" v-else>
  35. <view class="ycdl_tits flex justify-center">
  36. <image src="../../static/jnImage/powerPage/sqrfdl.png" mode=""></image>
  37. <text>本期预测电量</text>
  38. </view>
  39. <view class="ycdl_station">
  40. <uni-row class="ycdl_station_row">
  41. <uni-col :span="8" v-for="(item,index) in powerBQData" :key="index">
  42. <view class="ycdl_station_col">
  43. <view class="ycdl_data_col_top ">
  44. <text>{{item.inPower}}</text>
  45. <text>kWh</text>
  46. </view>
  47. <view class="ycdl_data_col_bot flex">
  48. <image src="../../static/jnImage/powerPage/clockW.png" mode=""></image>
  49. <text>{{item.date}}</text>
  50. </view>
  51. </view>
  52. </uni-col>
  53. </uni-row>
  54. </view>
  55. <view class="ycdl_tits flex justify-center">
  56. <image src="../../static/jnImage/powerPage/sqrfdl.png" mode=""></image>
  57. <text>上期日发电量</text>
  58. </view>
  59. <view class="ycdl_msg" v-for="(item,index) in powerSQData" :key="index">
  60. <view class="ycdl_title flex">
  61. <image src="../../static/jnImage/powerPage/clock.png" mode=""></image>
  62. <text>{{item.date}}</text>
  63. </view>
  64. <view class="ycdl_data">
  65. <uni-row class="ycdl_data_row">
  66. <uni-col :span="12" v-for="(it, idx) in dayPowerSS" :key="idx+5">
  67. <view class="ycdl_data_col flex">
  68. <view class="ycdl_data_col_left">
  69. <text>{{it}}</text>
  70. </view>
  71. <view class="ycdl_data_col_right flex justify-between">
  72. <text>{{Math.ceil(item.inPower/10000)}}</text>
  73. <text>万MW</text>
  74. </view>
  75. </view>
  76. </uni-col>
  77. </uni-row>
  78. </view>
  79. </view>
  80. <view class="ycdl_tits flex justify-center">
  81. <image src="../../static/jnImage/powerPage/tqrfdl.png" mode=""></image>
  82. <text>同期日发电量</text>
  83. </view>
  84. <view class="ycdl_msg" v-for="(item,index) in powerTQData" :key="index">
  85. <view class="ycdl_title flex">
  86. <image src="../../static/jnImage/powerPage/clock.png" mode=""></image>
  87. <text>{{item.date}}</text>
  88. </view>
  89. <view class="ycdl_data">
  90. <uni-row class="ycdl_data_row">
  91. <uni-col :span="12" v-for="(it,idx) in dayPowerSS" :key="idx+2">
  92. <view class="ycdl_data_col flex">
  93. <view class="ycdl_data_col_left">
  94. <text>{{it}}</text>
  95. </view>
  96. <view class="ycdl_data_col_right flex justify-between">
  97. <text>{{item.inPower}}</text>
  98. <text>MW</text>
  99. </view>
  100. </view>
  101. </uni-col>
  102. </uni-row>
  103. </view>
  104. </view>
  105. </view>
  106. <view class="rdldb" v-if="powerTab === 'DL'">
  107. <view class="rdldb_title flex justify-center">
  108. <image src="../../static/jnImage/powerPage/powerDayIcon.png" mode=""></image>
  109. <text>日发电量</text>
  110. </view>
  111. <view class="qiun-charts">
  112. <qiun-data-charts type="column" :opts="optsDay" :chartData="chartDataDay" />
  113. </view>
  114. <view class="rdldb_title flex justify-center">
  115. <image src="../../static/jnImage/powerPage/powerDayIcon.png" mode=""></image>
  116. <text>月发电量</text>
  117. </view>
  118. <view class="qiun-charts">
  119. <qiun-data-charts type="column" :opts="optsMonth" :chartData="chartDataMonth" />
  120. </view>
  121. </view>
  122. <view class="xsfsgl" v-else>
  123. <view class="xsfsgl_title flex justify-center">
  124. <image src="../../static/jnImage/powerPage/72clock.png" mode=""></image>
  125. <text>未来3小时风速功率</text>
  126. </view>
  127. <view class="qiun-chartsLine">
  128. <qiun-data-charts type="mix" :opts="optsLine" :chartData="chartDataLine" />
  129. </view>
  130. </view>
  131. </view>
  132. <station-bar ref="stationBar"></station-bar>
  133. </view>
  134. </template>
  135. <script>
  136. import stationBar from '../common/stationTab.vue'
  137. import {
  138. electricityStatisticsApi,
  139. statisticsHisdataApi,
  140. bulletinappCzforecastApi,
  141. forecastShortApi
  142. } from '../../api/power.js'
  143. import {
  144. bulletinappBulletinApi
  145. } from '../../api/report.js'
  146. var uChartsInstance = {};
  147. export default {
  148. onLoad: function(e) {
  149. },
  150. components: {
  151. stationBar
  152. },
  153. data() {
  154. return {
  155. stationName: '',
  156. stationWpid: '',
  157. stationTab: '',
  158. powerTab: 'DL',
  159. yearTab: 'month',
  160. powerTabData: [],
  161. yearData: [],
  162. powerProgressData: [],
  163. powerBQData: [],
  164. powerSQData: [],
  165. powerTQData: [],
  166. chartDataDay: {},
  167. chartDataMonth: {},
  168. chartDataLine: {},
  169. optsDay: {},
  170. optsMonth: {},
  171. optsLine: {},
  172. dayPowerSS: ['预测电量', '实发电量'],
  173. }
  174. },
  175. created() {
  176. this.stationName = uni.getStorageSync('stationName')
  177. this.stationWpid = uni.getStorageSync('stationWpid')
  178. this.getReportData()
  179. this.powerTabData = [{
  180. nameZN: '电量',
  181. nameEN: 'DL',
  182. showColor: true
  183. },
  184. {
  185. nameZN: '预测',
  186. nameEN: 'YC',
  187. showColor: false
  188. }
  189. ]
  190. this.yearData = [{
  191. nameZN: '月',
  192. nameEN: 'month',
  193. showColor: true
  194. },
  195. {
  196. nameZN: '年',
  197. nameEN: 'year',
  198. showColor: false
  199. }
  200. ]
  201. },
  202. mounted() {
  203. this.$refs.stationBar.showTab = '电量预测'
  204. // this.getPowerBar()
  205. this.getStationDayPowerData()
  206. this.getStationMonthPowerData()
  207. },
  208. methods: {
  209. back() {
  210. this.$tab.switchTab('/pages/home/index')
  211. },
  212. stationTabXY(it) {
  213. this.stationTab = it
  214. },
  215. // 获取场站日发电量
  216. getStationDayPowerData() {
  217. let that = this
  218. let params = {
  219. wpid: that.stationWpid
  220. }
  221. statisticsHisdataApi(params).then(res => {
  222. if (res && res.data) {
  223. that.getPowerBar('day', res.data.data)
  224. }
  225. })
  226. },
  227. // 获取场站月发电量
  228. getStationMonthPowerData() {
  229. let that = this
  230. let params = {
  231. wpId: that.stationWpid,
  232. timetype: 'month',
  233. year: new Date().getFullYear()
  234. }
  235. electricityStatisticsApi(params).then(res => {
  236. if (res && res.data) {
  237. that.getPowerBar('month', res.data.value)
  238. }
  239. })
  240. },
  241. getPowerBar(type, values) {
  242. let opts = {
  243. color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4",
  244. "#ea7ccc"
  245. ],
  246. padding: [15, 15, 0, 5],
  247. enableScroll: false,
  248. legend: {
  249. show: false
  250. },
  251. xAxis: {
  252. disableGrid: true,
  253. rotateLabel: true,
  254. axisLineColor: "#A49EAC",
  255. fontColor: "#A49EAC",
  256. fontSize: 10,
  257. marginTop: 5,
  258. titleFontColor: "#A49EAC",
  259. titleFontSize: 10,
  260. titleOffsetY: -18
  261. },
  262. yAxis: {
  263. showTitle: true,
  264. data: [{
  265. min: 0,
  266. fontColor: "#A49EAC",
  267. title: "(万kwh)",
  268. titleFontColor: "#A49EAC",
  269. titleFontSize: 10
  270. }]
  271. },
  272. extra: {
  273. column: {
  274. type: "group",
  275. width: 15,
  276. activeBgColor: "#000000",
  277. activeBgOpacity: 0.08
  278. }
  279. }
  280. }
  281. let proColor = ['#6C4B9E', '#323A97', '#4951B2', '#4287FF', '#3CB8FE', '#1AA7B5', '#5183B6', '#9F65C1',
  282. '#766FF1', '#4951B2',
  283. ]
  284. //模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
  285. if (type === 'day') {
  286. let valData = []
  287. if (values.length === 0) {
  288. valData = [{
  289. rfdldb: 250000,
  290. recordDate: '2023-12-05'
  291. }]
  292. } else {
  293. valData = values
  294. }
  295. this.dayBarData(opts, proColor, valData)
  296. } else if (type === 'month') {
  297. this.monthBarData(opts, proColor, values)
  298. }
  299. },
  300. dayBarData(opts, proColor, values) {
  301. let xAxis = []
  302. let series = []
  303. values.forEach((item, index) => {
  304. xAxis.push(item.recordDate.substring(5))
  305. let obj = {
  306. color: '',
  307. name: '',
  308. textSize: 10,
  309. textColor: "#A49EAC",
  310. value: item.rfdldb / 1000
  311. }
  312. proColor.forEach((it, idx) => {
  313. if (index.toString().length > 1) {
  314. obj.color = proColor[index.toString().slice(-1)]
  315. } else {
  316. obj.color = proColor[index]
  317. }
  318. })
  319. series.push(obj)
  320. })
  321. let res = {
  322. categories: xAxis,
  323. series: [{
  324. name: '日发电量',
  325. textColor: "#FFFFFF",
  326. textSize: 12,
  327. data: series
  328. }]
  329. };
  330. this.optsDay = opts
  331. this.chartDataDay = JSON.parse(JSON.stringify(res));
  332. },
  333. monthBarData(opts, proColor, values) {
  334. let xAxis = []
  335. let series = []
  336. values.forEach((item, index) => {
  337. xAxis.push((index + 1) + '月')
  338. let obj = {
  339. color: '',
  340. name: '',
  341. textSize: 10,
  342. textColor: "#A49EAC",
  343. value: item.sjdl
  344. }
  345. proColor.forEach((it, idx) => {
  346. if (index.toString().length > 1) {
  347. obj.color = proColor[index.toString().slice(-1)]
  348. } else {
  349. obj.color = proColor[index]
  350. }
  351. })
  352. series.push(obj)
  353. })
  354. let res = {
  355. categories: xAxis,
  356. series: [{
  357. name: '实发电量',
  358. textColor: "#FFFFFF",
  359. textSize: 12,
  360. data: series
  361. }]
  362. };
  363. opts.xAxis.title = '月'
  364. this.optsMonth = opts
  365. this.chartDataMonth = JSON.parse(JSON.stringify(res));
  366. },
  367. //获取场站预测数据
  368. getPowerAllData() {
  369. let that = this
  370. bulletinappCzforecastApi({
  371. wpId: that.stationWpid
  372. }).then(res => {
  373. if (res && res.data) {
  374. res.data.forEach(item => {
  375. let objBQ = {
  376. date: item.date,
  377. inPower: item.ycdl
  378. }
  379. that.powerBQData.push(objBQ)
  380. let objSQ = {
  381. date: item.date,
  382. inPower: item.sqrfdl,
  383. allPower: item.sqycdl
  384. }
  385. that.powerSQData.push(objSQ)
  386. let objTQ = {
  387. date: item.date,
  388. inPower: item.tqrfdl,
  389. allPower: item.tqycdl
  390. }
  391. that.powerTQData.push(objTQ)
  392. })
  393. }
  394. })
  395. },
  396. getSevenTwoData() {
  397. let that = this
  398. let threeDays = new Date(new Date().getTime() + 24 * 60 * 60 * 1000)
  399. let params = {
  400. wpId: that.stationWpid,
  401. beginDate: new Date().getFullYear() + '-' + (new Date().getMonth() + 1) + '-' + new Date()
  402. .getDate(),
  403. endDate: threeDays.getFullYear() + '-' + (threeDays.getMonth() + 1) + '-' + threeDays.getDate()
  404. }
  405. forecastShortApi(params).then(res => {
  406. if (res && res.data) {
  407. let nowDate = new Date(that.getTimeDaya()).getTime()
  408. let showData = []
  409. if (res.data[that.stationWpid].length > 0) {
  410. res.data[that.stationWpid].forEach((it, index) => {
  411. if (nowDate === it.hours) {
  412. showData = res.data[that.stationWpid].slice(index, index + 10)
  413. }
  414. })
  415. }
  416. // that.getLineBar(res.data[that.stationWpid])
  417. that.getLineBar(showData)
  418. }
  419. })
  420. },
  421. //获取时间
  422. getTimeDaya() {
  423. let currentDate = new Date()
  424. let year = currentDate.getFullYear()
  425. let month = currentDate.getMonth() + 1
  426. let day = currentDate.getDate()
  427. let hour = currentDate.getHours()
  428. let minute = currentDate.getMinutes() < 10 ? '0' + currentDate.getMinutes() : currentDate
  429. .getMinutes()
  430. let min = ''
  431. if (minute > 0 && minute < 15) {
  432. min = '00'
  433. } else if (minute > 14 && minute < 30) {
  434. min = '15'
  435. } else if (minute > 29 && minute < 45) {
  436. min = '30'
  437. } else if (minute > 44 && minute < 59) {
  438. min = '45'
  439. }
  440. return year + '-' + month + '-' + day + ' ' + hour + ':' + min + ':00'
  441. },
  442. getLineBar(values) {
  443. let opts = {
  444. color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4",
  445. "#ea7ccc"
  446. ],
  447. padding: [15, 15, 0, 5],
  448. enableScroll: false,
  449. legend: {
  450. show: true
  451. },
  452. xAxis: {
  453. rotateLabel: true,
  454. scrollShow: true,
  455. rotateAngle: 90,
  456. axisLineColor: "#A49EAC",
  457. fontColor: "#A49EAC",
  458. fontSize: 10,
  459. marginTop: 5
  460. },
  461. yAxis: {
  462. showTitle: true,
  463. disabled: false,
  464. disableGrid: false,
  465. splitNumber: 5,
  466. gridType: "dash",
  467. dashLength: 4,
  468. gridColor: "#CCCCCC",
  469. padding: 10,
  470. data: [{
  471. position: "left",
  472. title: "MW",
  473. fontColor: "#A49EAC",
  474. titleFontColor: "#A49EAC",
  475. titleFontSize: 10
  476. },
  477. {
  478. position: "right",
  479. min: 0,
  480. max: 20,
  481. title: "m/s",
  482. textAlign: "left",
  483. fontColor: "#A49EAC",
  484. titleFontColor: "#A49EAC",
  485. titleFontSize: 10
  486. }
  487. ]
  488. },
  489. extra: {
  490. mix: {
  491. column: {
  492. width: 20
  493. }
  494. }
  495. }
  496. }
  497. let sjglArr = []
  498. let ycglArr = []
  499. let sjfsArr = []
  500. let xAxisArr = []
  501. if (values.length > 0) {
  502. values.forEach(item => {
  503. xAxisArr.push(this.changTime(item.hours))
  504. sjglArr.push(item.sjgl)
  505. ycglArr.push(item.ycgl)
  506. sjfsArr.push(item.pjfs)
  507. })
  508. }
  509. let res = {
  510. categories: xAxisArr,
  511. series: [{
  512. name: "实际功率",
  513. type: "line",
  514. color: "#25a1ff",
  515. data: sjglArr
  516. },
  517. {
  518. name: "预测功率",
  519. type: "line",
  520. color: "#bc39aa",
  521. data: ycglArr
  522. },
  523. {
  524. name: "实际风速",
  525. index: 2,
  526. type: "line",
  527. color: "#00bd4c",
  528. data: sjfsArr
  529. }
  530. ]
  531. };
  532. this.optsLine = opts
  533. this.chartDataLine = JSON.parse(JSON.stringify(res));
  534. },
  535. //时间转换
  536. changTime(date) {
  537. // let str = (new Date(date).getMonth() + 1) + '-' + new Date(date).getDate() + ' ' + new Date(date)
  538. // .getHours() + ':'
  539. let str = new Date(date).getHours() + ':' + (new Date(date).getMinutes() < 10 ? '0' + new Date(date)
  540. .getMinutes() : new Date(date).getMinutes())
  541. return str
  542. },
  543. changePowerTab(item) {
  544. this.powerTabData.forEach(it => {
  545. it.showColor = false
  546. if (it.nameEN === item.nameEN) {
  547. item.showColor = true
  548. this.powerTab = it.nameEN
  549. }
  550. })
  551. if (this.powerTab === 'DL') {
  552. this.getReportData()
  553. this.getStationDayPowerData()
  554. this.getStationMonthPowerData()
  555. } else {
  556. this.getPowerAllData()
  557. this.getSevenTwoData()
  558. }
  559. },
  560. changeYearTab(item) {
  561. this.yearData.forEach(it => {
  562. it.showColor = false
  563. if (it.nameEN === item.nameEN) {
  564. item.showColor = true
  565. this.yearTab = it.nameEN
  566. }
  567. })
  568. },
  569. showProgress(item, index) {
  570. let indexX = index
  571. if (index > 9) {
  572. indexX = index - 9
  573. }
  574. let proColor = ['#6C4B9E', '#323A97', '#4951B2', '#4287FF', '#3CB8FE', '#1AA7B5', '#5183B6', '#9F65C1',
  575. '#766FF1'
  576. ]
  577. let pro = ((item.inPower / item.allPower).toFixed(2)) * 100 + '%'
  578. let showColor = proColor[indexX]
  579. let ss = `width: ${pro};background: ${showColor}`
  580. return ss
  581. },
  582. getReportData() {
  583. let that = this
  584. bulletinappBulletinApi({
  585. wpId: that.stationWpid
  586. }).then(res => {
  587. if (res && res.data) {
  588. that.reportDataAll = res.data
  589. let datas = res.data
  590. that.powerProgressData = [{
  591. type: 'wind',
  592. inPower: datas['月发电量'],
  593. allPower: datas['月计划发电量'],
  594. name: '月发电完成率'
  595. },
  596. {
  597. type: 'wind',
  598. inPower: datas['年发电量'],
  599. allPower: datas['年计划发电量'],
  600. name: '年发电完成率'
  601. }
  602. ]
  603. }
  604. })
  605. },
  606. },
  607. }
  608. </script>
  609. <style lang="scss">
  610. page {
  611. background-color: #202246;
  612. }
  613. .stationpower {
  614. width: 100vw;
  615. background: url('../../static/jnImage/loginPage/windBack.png'), url('../../static/jnImage/loginPage/backWav.png');
  616. background-repeat: no-repeat, repeat;
  617. background-size: 100% 260px, 100% 5px;
  618. .box-bg {
  619. width: 100vw;
  620. padding: 0;
  621. .uni-navbar {
  622. .uni-navbar__content {
  623. padding: 5px 0;
  624. height: 50px;
  625. }
  626. }
  627. }
  628. .power_main {
  629. padding: 25px;
  630. // margin: 20px 0;
  631. .power_tab {
  632. text {
  633. display: inline-block;
  634. width: 80px;
  635. height: 25px;
  636. border: 1px solid #4287FF;
  637. text-align: center;
  638. color: #4287FF;
  639. line-height: 25px;
  640. letter-spacing: 2px;
  641. }
  642. }
  643. .fdwcl {
  644. .fdwcl_title {
  645. width: 130px;
  646. height: 45px;
  647. padding-left: 10px;
  648. margin-top: 10px;
  649. background: linear-gradient(90deg, #333976, transparent);
  650. align-items: center;
  651. image {
  652. width: 24px;
  653. height: 22px;
  654. }
  655. text {
  656. margin-left: 10px;
  657. font-size: 16px;
  658. color: #fff;
  659. }
  660. }
  661. .yearTab {
  662. width: 80px;
  663. height: 25px;
  664. border-radius: 20px;
  665. background: #0B143E;
  666. margin-top: 20px;
  667. text {
  668. display: inline-block;
  669. width: 40px;
  670. height: 25px;
  671. border-radius: 20px;
  672. text-align: center;
  673. color: #4287FF;
  674. line-height: 25px;
  675. }
  676. }
  677. .fdwcl_DataAll {
  678. margin-top: 10px;
  679. .fdwcl_Data {
  680. .fdwcl_Data_1 {
  681. image {
  682. width: 18px;
  683. height: 18px;
  684. }
  685. text {
  686. margin-left: 5px;
  687. font-size: 28upx;
  688. color: #A49EAC;
  689. position: relative;
  690. top: 0px;
  691. }
  692. }
  693. .fdwcl_Data_2 {
  694. text {
  695. font-size: 32upx;
  696. color: #A49EAC;
  697. }
  698. }
  699. .fdwcl_Data_3 {
  700. text {
  701. font-size: 28upx;
  702. color: #A49EAC;
  703. }
  704. }
  705. }
  706. .fdwcl_Data_msg {
  707. width: 100%;
  708. height: 20px;
  709. border-radius: 5px;
  710. background: #0B143E;
  711. .show_msg {
  712. height: 20px;
  713. background: #6C4B9E;
  714. border-radius: 5px 0 0 5px;
  715. }
  716. }
  717. }
  718. }
  719. .rdldb {
  720. padding-bottom: 20px;
  721. .rdldb_title {
  722. width: 130px;
  723. height: 45px;
  724. padding-left: 10px;
  725. margin-top: 10px;
  726. background: linear-gradient(90deg, #333976, transparent);
  727. align-items: center;
  728. image {
  729. width: 24px;
  730. height: 22px;
  731. }
  732. text {
  733. margin-left: 10px;
  734. font-size: 16px;
  735. color: #fff;
  736. }
  737. }
  738. .qiun-charts {
  739. width: 100%;
  740. height: 300px;
  741. margin: 10px 0;
  742. }
  743. }
  744. .ycdl {
  745. margin-top: 10px;
  746. .ycdl_tits {
  747. width: 160px;
  748. height: 45px;
  749. padding-left: 10px;
  750. margin-top: 10px;
  751. background: linear-gradient(90deg, #333976, transparent);
  752. align-items: center;
  753. image {
  754. width: 24px;
  755. height: 22px;
  756. }
  757. text {
  758. margin-left: 10px;
  759. font-size: 16px;
  760. color: #fff;
  761. }
  762. }
  763. .ycdl_station {
  764. .ycdl_station_row {
  765. margin: 10px 0;
  766. .ycdl_station_col {
  767. height: 65px;
  768. width: 95%;
  769. background-color: #2E336D;
  770. .ycdl_data_col_top {
  771. height: 40px;
  772. text {
  773. display: inline-block;
  774. font-size: 28upx;
  775. margin-left: 10px;
  776. }
  777. text:nth-of-type(1) {
  778. color: #fff;
  779. width: 100%;
  780. position: relative;
  781. top: 8px;
  782. font-size: 36upx;
  783. }
  784. text:nth-of-type(2) {
  785. color: #6274A1;
  786. position: relative;
  787. top: 10px;
  788. right: -50px;
  789. }
  790. }
  791. .ycdl_data_col_bot {
  792. height: 25px;
  793. background: #1AA7B5;
  794. image {
  795. width: 15px;
  796. height: 15px;
  797. position: relative;
  798. top: 5px;
  799. left: 5px;
  800. }
  801. text {
  802. font-size: 28upx;
  803. color: #fff;
  804. margin-left: 10px;
  805. line-height: 25px;
  806. }
  807. }
  808. }
  809. }
  810. }
  811. .ycdl_msg {
  812. .ycdl_title {
  813. image {
  814. width: 15px;
  815. height: 15px;
  816. position: relative;
  817. top: 3px;
  818. }
  819. text {
  820. font-size: 32upx;
  821. color: #676D9C;
  822. margin-left: 10px;
  823. }
  824. }
  825. .ycdl_data {
  826. margin-top: 5px;
  827. .ycdl_data_row {
  828. .ycdl_data_col {
  829. width: 98%;
  830. height: 20px;
  831. margin-bottom: 5px;
  832. background: #2E336D;
  833. border-radius: 5px;
  834. .ycdl_data_col_left {
  835. width: 50%;
  836. height: 20px;
  837. color: #fff;
  838. font-size: 30upx;
  839. background: #3F4572;
  840. border-radius: 5px;
  841. text {
  842. margin-left: 5px;
  843. }
  844. }
  845. .ycdl_data_col_right {
  846. height: 20px;
  847. color: #fff;
  848. font-size: 32upx;
  849. width: 48%;
  850. text:nth-of-type(1) {
  851. margin-left: 5px;
  852. width: 50%;
  853. font-size: 32upx;
  854. color: #fff;
  855. position: relative;
  856. top: 3px;
  857. }
  858. text:nth-of-type(2) {
  859. font-size: 22upx;
  860. color: #96B5D5;
  861. position: relative;
  862. top: 4px;
  863. }
  864. }
  865. }
  866. }
  867. }
  868. }
  869. }
  870. .xsfsgl {
  871. padding-bottom: 20px;
  872. .xsfsgl_title {
  873. width: 160px;
  874. height: 45px;
  875. padding-left: 10px;
  876. margin-top: 10px;
  877. background: linear-gradient(90deg, #333976, transparent);
  878. align-items: center;
  879. image {
  880. width: 24px;
  881. height: 22px;
  882. }
  883. text {
  884. margin-left: 10px;
  885. font-size: 16px;
  886. color: #fff;
  887. }
  888. }
  889. .qiun-chartsLine {
  890. width: 100%;
  891. height: 300px;
  892. margin: 10px 0;
  893. }
  894. }
  895. }
  896. }
  897. </style>