云链智安app
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

index.vue 20KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884
  1. <template>
  2. <view class="container_bj">
  3. <view class="container">
  4. <!-- <image class="account_numberimage" src="@/static/222.jpg" mode="aspectFill"></image> -->
  5. <!-- 顶部导航栏 -->
  6. <view class="navigation"></view>
  7. <!-- 储能信息 -->
  8. <view class="power">
  9. <view class="power_1">
  10. <view class="power_month">
  11. <image src="/static/chi.png" mode=""></image>
  12. <!-- 本月储放 -->
  13. {{$t('device.dischargeTitle')}}
  14. </view>
  15. <view class="power_monthkwh">{{unitelectricity(devicedata.monthExportKwh)}} <text class="power_kwh">{{unitwh(devicedata.monthExportKwh)}}</text></view>
  16. <view class="power_Cumulative">
  17. <image src="/static/dian.png" mode=""></image>
  18. <!-- 累计储放 -->
  19. {{$t('device.totalDischarge')}}
  20. </view>
  21. <view class="power_Cumulativekwh">{{unitelectricity(devicedata.accumulativeExportKwh)}} <text class="power_kwh">{{unitwh(devicedata.accumulativeExportKwh)}}</text></view>
  22. </view>
  23. <view class="power_2">
  24. <image src="@/static/ring.png" mode="aspectFit" class="rotating" />
  25. <view class="power_2txt">
  26. <view class="power_2txt1">
  27. <!-- 昨日放电 -->
  28. {{$t('device.yesterdayDischarge')}}
  29. </view>
  30. <view class="power_2txtmeasure">{{unitelectricity(devicedata.dayExportKwh)}} <text class="power_kwh">{{unitwh(devicedata.dayExportKwh)}}</text></view>
  31. </view>
  32. </view>
  33. </view>
  34. <!-- 收益信息 -->
  35. <view class="income_box">
  36. <view class="income">
  37. <view class="income_yesterday">
  38. <view class="income_yesterday1">
  39. <!-- 昨日收益 -->
  40. {{$t('device.yesterdayEarnings')}}
  41. </view>
  42. <view class="income_yesterday2">
  43. {{devicedata.yesterdaysearnings?devicedata.yesterdaysearnings.toFixed(2):''}} <text class="income_unit">元</text> </view>
  44. </view>
  45. <view class="income_moon">
  46. <view class="income_moon1">
  47. <!-- 当月收益 -->
  48. {{$t('device.monthlyEarnings')}}
  49. </view>
  50. <view class="income_moon2">{{unitprice(devicedata.monthProfit)}} <text class="income_unit">{{unitprice(devicedata.totalProfit)==devicedata.totalProfit?'元':'万元'}}</text></view>
  51. </view>
  52. <view class="income_tired">
  53. <view class="income_tired1">
  54. <!-- 累计收益 -->
  55. {{$t('device.totalEarnings')}}
  56. </view>
  57. <view class="income_tired2">{{unitprice(devicedata.totalProfit)}} <text class="income_unit">{{unitprice(devicedata.totalProfit)==devicedata.totalProfit?'元':'万元'}}</text></view>
  58. </view>
  59. </view>
  60. </view>
  61. <!-- 电站信息 -->
  62. <view class="power_box">
  63. <view class="powerstation">
  64. <view class="power_yesterday" @click="ondevices(0)">
  65. <image src="@/static/power.png" mode=""></image>
  66. <view class="power_yesterday1">
  67. <!-- 全部电站 -->
  68. {{$t('device.allStations')}}
  69. </view>
  70. <view class="power_yesterday2">{{muitiStationinfo.totalCnt}}</view>
  71. </view>
  72. <view class="power_moon" @click="ondevices(1)">
  73. <image src="@/static/power.png" mode=""></image>
  74. <view class="power_moon1">
  75. <!-- 在线电站 -->
  76. {{$t('device.onlineStations')}}
  77. </view>
  78. <view class="power_moon2">{{muitiStationinfo.onlineCnt}}</view>
  79. </view>
  80. <view class="power_tired" @click="ondevices(2)">
  81. <image src="@/static/power.png" mode=""></image>
  82. <view class="power_tired1">
  83. <!-- 离线电站 -->
  84. {{$t('device.offlineStations')}}
  85. </view>
  86. <view class="power_tired2">{{muitiStationinfo.offlineCnt||''}}</view>
  87. </view>
  88. </view>
  89. </view>
  90. <!-- 顶部标签栏 -->
  91. <view class="toptabbar">
  92. <top-tabbar :tabIndex="tabIndex" :tabBars="[
  93. { name: $t('device.batteryStatus'), id: 0 },
  94. { name: $t('device.earnings'), id: 1 },
  95. ]" @toggleToptab="toggleTab" selectedBottomColor="#30c58d" selectedTextColor="#343434" textColor="#7d7e80"
  96. bgColor="#ffffff"></top-tabbar>
  97. </view>
  98. <view class="datecalendar">
  99. <view class="datecalendar_1">
  100. <view @click="ondatecalendar(1)" class="datecalendar_1sun"
  101. :style="{
  102. backgroundColor: brightcalendar === 1 ? '#007544' : '#ffffff',
  103. color: brightcalendar === 1 ? '#ffffff' : 'inherit'
  104. }">
  105. <!-- 日 -->
  106. {{$t('device.daily')}}
  107. </view>
  108. <view @click="ondatecalendar(2)" class="datecalendar_1moon"
  109. :style="{
  110. backgroundColor: brightcalendar === 2 ? '#007544' : '#ffffff',
  111. color: brightcalendar === 2 ? '#ffffff' : 'inherit'
  112. }">
  113. <!-- 月 -->
  114. {{$t('device.monthly')}}
  115. </view>
  116. <view @click="ondatecalendar(3)" class="datecalendar_1year"
  117. :style="{
  118. backgroundColor: brightcalendar === 3 ? '#007544' : '#ffffff',
  119. color: brightcalendar === 3 ? '#ffffff' : 'inherit'
  120. }">
  121. <!-- 年 -->
  122. {{$t('device.yearly')}}
  123. </view>
  124. </view>
  125. <view v-if="brightcalendar!=3" class="datecalendar_2" @click="Dateselection">
  126. {{date}}
  127. </view>
  128. </view>
  129. <!-- 日历 -->
  130. <!-- <uni-calendar
  131. ref="calendar"
  132. class="uni-calendar--hook"
  133. :clear-date="true"
  134. :date="info.date"
  135. :insert="info.insert"
  136. :lunar="info.lunar"
  137. :start-date="info.startDate"
  138. :end-date="info.endDate"
  139. :range="info.range"
  140. @confirm="confirm"
  141. @close="close"
  142. /> -->
  143. <KDatePicker v-model="show" :type="selectiondata" :modelValue="date" :is-disabled="isDisabled"
  144. @change="handleChange" :formatter="formatter" />
  145. <!-- 图表 -->
  146. <view class="qiun_data">
  147. <view class="qiun_title">
  148. {{tabIndex==0?$t('device.batteryStatus'):$t('device.earnings')}}<text class="income_unit">{{tabIndex==0?'('+typewh+')':'('+ typefirst +')'}}</text>
  149. </view>
  150. <qiun-data-charts type="column" :opts="opts" :ontouch="true" :chartData="chartData" />
  151. </view>
  152. </view>
  153. </view>
  154. </template>
  155. <!-- -->
  156. <script setup>
  157. import {
  158. onMounted,
  159. ref
  160. } from 'vue';
  161. import topTabbar from '@/components/top-tabbar.vue';
  162. import KDatePicker from '../../components/k-date-picker/KDatePicker.vue';
  163. import request from '@/utils/request';
  164. import {
  165. getMonthRange,
  166. getMonth
  167. } from '@/utils/date.js';
  168. import {
  169. useI18n
  170. } from 'vue-i18n'
  171. const {
  172. t
  173. } = useI18n()
  174. const defaultValue = ref()
  175. const brightcalendar = ref(1);
  176. onMounted(() => {
  177. uni.setTabBarItem({
  178. index: 0,
  179. text: t('tabBar.publicize')
  180. })
  181. uni.setTabBarItem({
  182. index: 1,
  183. text: t('tabBar.products')
  184. })
  185. uni.setTabBarItem({
  186. index: 2,
  187. text: t('tabBar.Devices')
  188. })
  189. uni.setTabBarItem({
  190. index: 3,
  191. text: t('tabBar.My')
  192. })
  193. const monthRange = getMonthRange();
  194. params.value = {
  195. startDate: monthRange.firstDay,
  196. endDate: monthRange.lastDay
  197. }
  198. date.value = monthRange.firstDay.substring(0, 7);
  199. getoverview(); // 储放收益
  200. getmuitiStationinfo(); // 电站接口
  201. getelectricity(); // 充放电统计图
  202. });
  203. const devicedata = ref({})
  204. const getoverview = async () => {
  205. try {
  206. const response = await request({
  207. url: '/muitiStation/overview',
  208. method: 'POST',
  209. header: {
  210. 'Content-Type': 'application/x-www-form-urlencoded'
  211. },
  212. });
  213. devicedata.value = response.data
  214. } catch (error) {
  215. console.error('登录失败:', error);
  216. }
  217. }
  218. // 电站数量
  219. const muitiStationinfo = ref({})
  220. const onlineStatus = ref()
  221. const getmuitiStationinfo = async () => {
  222. try {
  223. const response = await request({
  224. url: '/muitiStation/page/info',
  225. method: 'POST',
  226. header: {
  227. 'Content-Type': 'application/x-www-form-urlencoded'
  228. },
  229. data: {
  230. state: '',
  231. city: '',
  232. country: '',
  233. county: '',
  234. keyword: '',
  235. keywordCategory: 0,
  236. countryCode: '',
  237. provinceCode: '',
  238. cityCode: '',
  239. countyCode: '',
  240. pn: 1,
  241. ps: 99,
  242. onlineStatus: ''
  243. }
  244. });
  245. muitiStationinfo.value = response.data.stationPicArray
  246. } catch (error) {
  247. console.error('登录失败:', error);
  248. }
  249. };
  250. // 图表数据
  251. const chartData = ref({});
  252. const opts = ref({
  253. enableScroll: true, //开启滚动条,X轴配置里需要配置itemCount单屏幕数据点数量
  254. color: ["#B2D5CB"],
  255. padding: [15, 10, 0, 15],
  256. backgroundColor: "#B2D5CB",
  257. legend: {},
  258. xAxis: {
  259. disableGrid: true,
  260. itemCount: 5, //单屏数据密度即图表可视区域内显示的X轴数据点数量,仅在启用enableScroll时有效
  261. scrollShow: false, //是否显示滚动条,配合拖拽滚动使用(即仅在启用【基本配置】的 enableScroll 时有效)
  262. },
  263. yAxis: {
  264. gridType: "dash",
  265. dashLength: 2,
  266. },
  267. extra: {
  268. line: {
  269. type: "straight",
  270. width: 2,
  271. activeType: "hollow",
  272. },
  273. column: {
  274. barBorderRadius: [4, 4, 0, 0],
  275. },
  276. }
  277. })
  278. // const firstDay = ref();
  279. // const lastDay = ref();
  280. const params = ref();
  281. const measureURL = ref('/stats/multStation/power/between/day');
  282. const incomeURL = ref('/stats/multStation/profit/between/day');
  283. // 多站电量
  284. const typewh =ref('kwh')
  285. const getelectricity = async () => {
  286. try {
  287. const response = await request({
  288. url: measureURL.value,
  289. method: 'POST',
  290. header: {
  291. 'Content-Type': 'application/x-www-form-urlencoded'
  292. },
  293. data: params.value
  294. });
  295. let arr1 = [];
  296. let arr2 = [];
  297. response.data.forEach((item, index) => {
  298. if (brightcalendar.value == 1) {
  299. const ymdSubstring = item.ymd.slice(5, 10);
  300. arr1.push(ymdSubstring);
  301. arr2.push(((item.dischargeTotal*1)/1000).toFixed(2));
  302. typewh.value = 'MWh'
  303. } else {
  304. arr1.push(item.ymd);
  305. arr2.push(((item.dischargeTotal*1)/1000).toFixed(2));
  306. typewh.value = 'MWh'
  307. }
  308. })
  309. setTimeout(() => {
  310. //模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
  311. let res = {
  312. categories: arr1,
  313. series: [{
  314. name: "电量" + typewh.value,
  315. data: arr2
  316. },
  317. ]
  318. };
  319. chartData.value = JSON.parse(JSON.stringify(res));
  320. }, 500);
  321. } catch (error) {
  322. console.error('登录失败:', error);
  323. };
  324. };
  325. // 多站收益
  326. const typefirst =ref('元')
  327. const getServerData = async () => {
  328. try {
  329. const response = await request({
  330. url: incomeURL.value,
  331. method: 'POST',
  332. header: {
  333. 'Content-Type': 'application/x-www-form-urlencoded'
  334. },
  335. data: params.value
  336. });
  337. let arr1 = [];
  338. let arr2 = [];
  339. response.data.forEach((item, index) => {
  340. if (brightcalendar.value == 1) {
  341. const ymdSubstring = item.ymd.slice(5, 10);
  342. arr1.push(ymdSubstring);
  343. arr2.push((item.profit*1 / 10000).toFixed(2));
  344. typefirst.value = '万元'
  345. } else {
  346. arr1.push(item.ymd);
  347. arr2.push((item.profit*1 / 10000).toFixed(2));
  348. typefirst.value = '万元'
  349. }
  350. })
  351. setTimeout(() => {
  352. //模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
  353. let res = {
  354. categories: arr1,
  355. series: [{
  356. name:'收益' + typefirst.value,
  357. data: arr2
  358. },
  359. ]
  360. };
  361. chartData.value = JSON.parse(JSON.stringify(res));
  362. }, 500);
  363. } catch (error) {
  364. console.error('登录失败:', error);
  365. };
  366. };
  367. // 选中标签的索引
  368. const tabIndex = ref(0);
  369. // 导航栏标签列表
  370. const tabBars = ref([{
  371. name: '电量',
  372. id: 0
  373. },
  374. {
  375. name: '收益',
  376. id: 1
  377. },
  378. ]);
  379. // 切换标签
  380. const toggleTab = (index) => {
  381. tabIndex.value = index;
  382. if (index == 0) {
  383. if (brightcalendar.value == 3) {
  384. date.value = new Date().getFullYear();
  385. params.value = {
  386. startYearMonth: '2024',
  387. endYearMonth: date.value
  388. }
  389. }
  390. getelectricity();
  391. } else {
  392. if (brightcalendar.value == 3) {
  393. date.value = new Date().getFullYear();
  394. params.value = {
  395. startDate: '2024',
  396. endDate: date.value
  397. }
  398. }
  399. getServerData(); // 收益统计图
  400. }
  401. };
  402. const show = ref(false)
  403. const date = ref('')
  404. const open = () => {
  405. show.value = true;
  406. toggleTab(tabIndex.value);
  407. };
  408. const isDisabled = (value) => {
  409. return value > new Date().getTime()
  410. }
  411. const handleChange = async (value) => {
  412. // 示例用法
  413. try {
  414. date.value = value
  415. if (brightcalendar.value == 1) {
  416. const monthRange = getMonth(value);
  417. params.value = {
  418. startDate: monthRange.firstDay,
  419. endDate: monthRange.lastDay
  420. }
  421. // firstDay.value = monthRange.firstDay;
  422. // lastDay.value = monthRange.lastDay;
  423. } else if (brightcalendar.value == 2) {
  424. params.value = {
  425. startDate: date.value + '-' + '01',
  426. endDate: date.value + '-' + '12'
  427. }
  428. // firstDay.value =date.value;
  429. // lastDay.value = date.value;
  430. } else if (brightcalendar.value == 3) {
  431. params.value = {
  432. startYearMonth: date.value,
  433. endYearMonth: date.value
  434. }
  435. // firstDay.value =date.value;
  436. // lastDay.value = date.value;
  437. }
  438. show.value = false
  439. toggleTab(tabIndex.value);
  440. // console.log('月初第一天:', monthRange.firstDay); // 输出: 2023-10-01
  441. // console.log('月末最后一天:', monthRange.lastDay); // 输出: 2023-10-31
  442. } catch (error) {
  443. console.error(error.message);
  444. }
  445. };
  446. const selectiondata = ref('month');
  447. const formatter = ref('YYYY-MM');
  448. const ondatecalendar = (e) => {
  449. console.log(e);
  450. brightcalendar.value = e
  451. if (e == 1) {
  452. const monthRange = getMonthRange();
  453. // firstDay.value = monthRange.firstDay;
  454. // lastDay.value = monthRange.lastDay;
  455. params.value = {
  456. startDate: monthRange.firstDay,
  457. endDate: monthRange.lastDay
  458. }
  459. date.value = monthRange.firstDay.substring(0, 7);
  460. selectiondata.value = 'month'
  461. formatter.value = 'YYYY-MM'
  462. incomeURL.value = '/stats/multStation/profit/between/day'
  463. measureURL.value = '/stats/multStation/power/between/day'
  464. } else if (e == 2) {
  465. const Year = new Date().getFullYear(); // 获取当前年份
  466. const Month = (new Date().getMonth() + 1).toString().padStart(2, '0'); // 获取当前月份并补零
  467. date.value = Year + '-' + Month
  468. // firstDay.value =date.value
  469. // lastDay.value =date.value
  470. params.value = {
  471. startDate: Year + '-' + '01',
  472. endDate: date.value
  473. }
  474. selectiondata.value = 'year'
  475. formatter.value = 'YYYY'
  476. incomeURL.value = '/stats/multStation/profit/between/Month'
  477. measureURL.value = '/stats/multStation/power/between/Month'
  478. } else if (e == 3) {
  479. date.value = new Date().getFullYear();
  480. if (tabIndex.value == 0) {
  481. params.value = {
  482. startYearMonth: '2024',
  483. endYearMonth: date.value
  484. }
  485. } else if (tabIndex.value == 1) {
  486. params.value = {
  487. startDate: '2024',
  488. endDate: date.value
  489. }
  490. }
  491. incomeURL.value = '/stats/multStation/profit/between/yearMonth'
  492. measureURL.value = '/stats/multStation/power/between/yearMonth'
  493. }
  494. toggleTab(tabIndex.value);
  495. }
  496. const Dateselection = (e) => {
  497. console.log(e);
  498. open();
  499. }
  500. // 电站列表
  501. const ondevices = (e) => {
  502. uni.navigateTo({
  503. url: `/pages/devices/index?type=${e}`
  504. })
  505. }
  506. // 金额进位
  507. const unitprice = (e) => {
  508. if(e*1>10000){
  509. return (e / 10000).toFixed(2)
  510. }else{
  511. return e
  512. }
  513. }
  514. // 放电进位
  515. const unitelectricity = (e) => {
  516. if(e*1>1000){
  517. return (e / 1000).toFixed(2)
  518. } else if(e*1>1000000) {
  519. return (e / 1000000).toFixed(2)
  520. } else{
  521. return e
  522. }
  523. }
  524. // 放电进位Wh
  525. const unitwh = (e) => {
  526. if(e*1>1000){
  527. return 'MWh'
  528. } else if(e*1>1000000) {
  529. return 'GWh'
  530. } else{
  531. return 'kWh'
  532. }
  533. }
  534. </script>
  535. <style scoped>
  536. .container_bj{
  537. }
  538. .container {
  539. background: linear-gradient(to bottom, #007545 -10%, #f0f5f5 40%, #f0f5f5 100%);
  540. /* background-image: url('@/static/222.jpg'); */
  541. /* background-size: 100% 600rpx; */
  542. /* background-repeat: no-repeat; */
  543. /* box-sizing: border-box; */
  544. }
  545. .navigation {
  546. width: 100%;
  547. height: 60px;
  548. }
  549. .power {
  550. width: 100%;
  551. height: 220px;
  552. padding: 0rpx 40rpx;
  553. display: flex;
  554. justify-content: space-between;
  555. box-sizing: border-box;
  556. }
  557. .power_kwh{
  558. font-size: 20rpx;
  559. }
  560. .power_1 {
  561. height: 180px;
  562. display: flex;
  563. flex-direction: column;
  564. justify-content: center;
  565. text-align: center;
  566. }
  567. .power_1 image {
  568. width: 32rpx;
  569. height: 32rpx;
  570. margin-right: 10rpx;
  571. }
  572. .power_month {
  573. font-size: 32rpx;
  574. color: #eee !important;
  575. display: flex;
  576. align-items: center;
  577. }
  578. .power_monthkwh {
  579. font-size: 32rpx;
  580. margin-top: 16rpx;
  581. color: #fff;
  582. }
  583. .power_Cumulative {
  584. font-size: 32rpx;
  585. display: flex;
  586. align-items: center;
  587. margin-top: 42rpx;
  588. color: #eee !important;
  589. }
  590. .power_Cumulativekwh {
  591. font-size: 32rpx;
  592. margin-top: 16rpx;
  593. color: #fff;
  594. }
  595. .power_2 {
  596. padding: 2px;
  597. width: 170px;
  598. height: 170px;
  599. border-radius: 50%;
  600. border: 3px solid #007545;
  601. box-sizing: border-box;
  602. display: flex;
  603. align-items: center;
  604. justify-content: center;
  605. position: relative;
  606. overflow: hidden;
  607. color: #fff
  608. }
  609. .power_2 image {
  610. width: 160px;
  611. height: 160px;
  612. }
  613. .power_2txt {
  614. position: absolute;
  615. top: 32%;
  616. color: #fff;
  617. }
  618. .power_2txt1 {
  619. color: #eee !important;
  620. font-size: 38rpx;
  621. }
  622. .power_2txtmeasure {
  623. font-size: 36rpx;
  624. margin-top: 10px;
  625. font-weight: 600;
  626. color: #fff;
  627. text-align: center;
  628. }
  629. /* 旋转动画 */
  630. @keyframes rotate {
  631. from {
  632. transform: rotate(0deg);
  633. }
  634. to {
  635. transform: rotate(360deg);
  636. }
  637. }
  638. .rotating {
  639. animation: rotate 12s linear infinite;
  640. transform-origin: 50% 50%;
  641. backface-visibility: hidden;
  642. width: 180px;
  643. height: 180px;
  644. /* border-radius: 100rpx; */
  645. /* background-color: #f0f5f5; */
  646. overflow: hidden;
  647. }
  648. .income_box {
  649. width: 100%;
  650. height: 200rpx;
  651. box-sizing: border-box;
  652. padding: 20rpx;
  653. }
  654. .income {
  655. width: 100%;
  656. height: 200rpx;
  657. border-radius: 16rpx;
  658. background-color: #ffffff;
  659. display: flex;
  660. align-items: center;
  661. justify-content: space-around;
  662. }
  663. .income_yesterday1,
  664. .income_moon1,
  665. .income_tired1 {
  666. font-size: 28rpx;
  667. color: #999999;
  668. }
  669. .income_yesterday2,
  670. .income_moon2,
  671. .income_tired2 {
  672. margin-top: 20rpx;
  673. font-size: 32rpx;
  674. font-weight: 600;
  675. }
  676. .income_unit{
  677. font-size: 22rpx;
  678. }
  679. .power_box {
  680. width: 100%;
  681. height: 220rpx;
  682. padding: 20rpx;
  683. box-sizing: border-box;
  684. margin-top: 20px;
  685. }
  686. .powerstation {
  687. width: 100%;
  688. height: 220rpx;
  689. display: flex;
  690. align-items: center;
  691. justify-content: space-between;
  692. }
  693. .power_yesterday,
  694. .power_moon,
  695. .power_tired {
  696. width: 31%;
  697. height: 100%;
  698. display: flex;
  699. border-radius: 10rpx;
  700. flex-direction: column;
  701. align-items: center;
  702. justify-content: center;
  703. background-color: #ffffff;
  704. }
  705. .power_yesterday image,
  706. .power_moon image,
  707. .power_tired image {
  708. width: 48rpx;
  709. height: 48rpx;
  710. padding: 13rpx;
  711. border-radius: 100%;
  712. }
  713. .power_yesterday image {
  714. background-color: #007544;
  715. }
  716. .power_moon image {
  717. background-color: #3774f3;
  718. }
  719. .power_tired image {
  720. background-color: #b3cef9;
  721. }
  722. .power_yesterday1,
  723. .power_moon1,
  724. .power_tired1 {
  725. margin: 10rpx 0rpx;
  726. font-size: 28rpx;
  727. color: #999999;
  728. }
  729. .toptabbar {
  730. width: 100%;
  731. height: 80rpx;
  732. margin-top: 20px;
  733. padding: 10rpx 20rpx;
  734. box-sizing: border-box;
  735. }
  736. /deep/ .uni-scroll-view-content {
  737. display: flex;
  738. justify-content: center;
  739. }
  740. .datecalendar {
  741. display: flex;
  742. justify-content: space-between;
  743. padding: 0rpx 24rpx;
  744. margin-top: 60rpx;
  745. }
  746. .datecalendar_1 {
  747. width: 320rpx;
  748. height: 60rpx;
  749. display: flex;
  750. font-size: 28rpx;
  751. border: 0.2rpx solid #999999;
  752. border-radius: 40rpx;
  753. overflow: overlay;
  754. }
  755. .datecalendar_1sun {
  756. flex: 1;
  757. display: flex;
  758. align-items: center;
  759. justify-content: center;
  760. color: #222222;
  761. background-color: #ffffff;
  762. }
  763. .datecalendar_1moon {
  764. flex: 1;
  765. display: flex;
  766. align-items: center;
  767. justify-content: center;
  768. background-color: #ffffff;
  769. border-left: 0.2rpx solid #999999;
  770. border-right: 0.2rpx solid #999999;
  771. }
  772. .datecalendar_1year {
  773. flex: 1;
  774. display: flex;
  775. align-items: center;
  776. justify-content: center;
  777. background-color: #ffffff;
  778. }
  779. .datecalendar_2 {
  780. width: 180rpx;
  781. height: 60rpx;
  782. display: flex;
  783. align-items: center;
  784. justify-content: center;
  785. font-size: 28rpx;
  786. border: 0.2rpx solid #999999;
  787. border-radius: 40rpx;
  788. }
  789. .qiun_data {
  790. width: 100%;
  791. height: 600rpx;
  792. padding: 16rpx;
  793. overflow: auto;
  794. box-sizing: border-box;
  795. }
  796. .qiun_title {
  797. height: 12%;
  798. font-size: 28rpx;
  799. margin-left: 20rpx;
  800. }
  801. .account_numberimage {
  802. width: 100%;
  803. padding: 0rpx;
  804. position: fixed;
  805. top: 0rpx;
  806. left: 0rpx;
  807. }
  808. </style>