云链智安app
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

index.vue 24KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059
  1. <template>
  2. <view class="container">
  3. <!-- -->
  4. <view class="container_title">
  5. <l-liquid v-model:current="modelVale" :percent="target" :outline="true" background="#007545"
  6. waveColor="#007545" innerColor="rgba(#007545, 0.1)">
  7. <text class="liquid_text">{{devicedata.soc*1}} <text class="income_unit">%</text></text>
  8. </l-liquid>
  9. </view>
  10. <view class="container_box">
  11. <view class="income_box">
  12. <view class="income_top">
  13. <view class="income_yesterday_discharge">
  14. <image class="income_image" src="/static/put.png" mode="aspectFit" />
  15. <view class="income_yesterday1" v-if="devicedata.conscolidationType==0">
  16. <!-- 空闲 -->
  17. {{$t('hostdetails.idle')}}
  18. </view>
  19. <view class="income_yesterday1" v-if="devicedata.conscolidationType==1">
  20. <!-- 充电 -->
  21. {{$t('hostdetails.charging')}}
  22. </view>
  23. <view class="income_yesterday1" v-if="devicedata.conscolidationType==2">
  24. <!-- 放电 -->
  25. {{$t('hostdetails.discharging')}}
  26. </view>
  27. <view class="income_yesterday1" v-if="devicedata.conscolidationType==3">
  28. <!-- 充满 -->
  29. {{$t('hostdetails.full')}}
  30. </view>
  31. <view class="income_yesterday1" v-if="devicedata.conscolidationType==4">
  32. <!-- 放空 -->
  33. {{$t('hostdetails.empty')}}
  34. </view>
  35. <view class="income_yesterday1" v-if="devicedata.conscolidationType==5">
  36. <!-- 故障 -->
  37. {{$t('hostdetails.fault')}}
  38. </view>
  39. <!-- <view class="income_yesterday2">-1元</view> -->
  40. </view>
  41. <view class="income_tired_soc">
  42. <image class="income_image" src="/static/soc.png" mode="aspectFit" />
  43. <!-- <view class="income_tired1">今日放电</view> -->
  44. <view class="income_tired2">{{devicedata.soc*1}} <text class="income_unit">%</text></view>
  45. </view>
  46. </view>
  47. <view class="income">
  48. <view class="income_yesterday">
  49. <view class="income_yesterday1">{{$t('hostdetails.va')}}:</view>
  50. <view class="income_yesterday2">{{devicedata.abLinevoltage*1}} <text class="income_unit">V</text></view>
  51. </view>
  52. <view class="income_tired">
  53. <view class="income_tired1">{{$t('hostdetails.ia')}}:</view>
  54. <view class="income_tired2">{{devicedata.aphasecurrent*1}} <text class="income_unit">A</text></view>
  55. </view>
  56. </view>
  57. <view class="income">
  58. <view class="income_yesterday">
  59. <view class="income_yesterday1">{{$t('hostdetails.vb')}}:</view>
  60. <view class="income_yesterday2">{{devicedata.bcLinevoltage*1}} <text class="income_unit">V</text></view>
  61. </view>
  62. <view class="income_tired">
  63. <view class="income_tired1">{{$t('hostdetails.ib')}}:</view>
  64. <view class="income_tired2">{{devicedata.bphasecurrent*1}} <text class="income_unit">A</text></view>
  65. </view>
  66. </view>
  67. <view class="income">
  68. <view class="income_yesterday">
  69. <view class="income_yesterday1">{{$t('hostdetails.vc')}}:</view>
  70. <view class="income_yesterday2">{{devicedata.caLinevoltage*1}} <text class="income_unit">V</text></view>
  71. </view>
  72. <view class="income_tired">
  73. <view class="income_tired1">{{$t('hostdetails.ic')}}:</view>
  74. <view class="income_tired2">{{devicedata.cphasecurrent*1}} <text class="income_unit">A</text></view>
  75. </view>
  76. </view>
  77. <view class="income">
  78. <view class="income_yesterday" style="margin-left: 20rpx;">
  79. <view class="income_yesterday1">{{$t('hostdetails.ac')}}:</view>
  80. <view class="income_yesterday2">{{devicedata.acPower*1}} <text class="income_unit">kWh</text></view>
  81. </view>
  82. <view class="income_tired">
  83. <!-- <view class="income_tired1">C相电流:</view>
  84. <view class="income_tired2">143.80A</view> -->
  85. </view>
  86. </view>
  87. </view>
  88. </view>
  89. <view class="energy_hostbox">
  90. <view class="energy_host">
  91. <view class="energy_title">
  92. {{$t('hostdetails.myDevices')}}
  93. </view>
  94. <view class="energy_box" v-for="item in devicedata.emssytem" :key="item.emsDeviceId" @click="ondetails(item)">
  95. <image class="energy_boximage" src="/static/powerdian.png" mode=""></image>
  96. <view class="energy_boxtitle">
  97. <view class="energy_boxtitle1">
  98. {{item.emsDeviceId}}
  99. </view>
  100. <view class="energy_boxtitle2">
  101. {{$t('hostdetails.ac')}}:{{item.communicationPower*1}} <text class="income_unit">kW</text>
  102. </view>
  103. </view>
  104. <view class="energy_right">
  105. <view class="energy_boxright">
  106. <view class="energy_boxright1" v-if="item.batteryStatus==0">
  107. <!-- 空闲 -->
  108. {{$t('hostdetails.idle')}}
  109. </view>
  110. <view class="energy_boxright1" v-if="item.batteryStatus==1">
  111. <!-- 充电 -->
  112. {{$t('hostdetails.charging')}}
  113. </view>
  114. <view class="energy_boxright1" v-if="item.batteryStatus==2">
  115. <!-- 放电 -->
  116. {{$t('hostdetails.discharging')}}
  117. </view>
  118. <view class="energy_boxright1" v-if="item.batteryStatus==3">
  119. <!-- 充满 -->
  120. {{$t('hostdetails.full')}}
  121. </view>
  122. <view class="energy_boxright1" v-if="item.batteryStatus==4">
  123. <!-- 放空 -->
  124. {{$t('hostdetails.empty')}}
  125. </view>
  126. <view class="energy_boxright1" v-if="item.batteryStatus==5">
  127. <!-- 故障 -->
  128. {{$t('hostdetails.fault')}}
  129. </view>
  130. <view class="energy_boxright2">
  131. SOC:{{item.soc*1}} <text class="income_unit">%</text>
  132. </view>
  133. </view>
  134. <image class="energy_jumpto" src="/static/jumpto.png" mode=""></image>
  135. </view>
  136. <view class="micro" v-if="item.conscolidationType==1">
  137. </view>
  138. </view>
  139. </view>
  140. </view>
  141. <view class="energy">
  142. <view class="energy_title">
  143. <!-- 运行计划 -->
  144. {{$t('hostdetails.schedule')}}
  145. </view>
  146. <view class="energy_calendar">
  147. <uni-calendar
  148. :insert="true"
  149. :lunar="true"
  150. :selected="selecteddata"
  151. @change="oncalendar"
  152. @monthSwitch="oncalendar"
  153. />
  154. </view>
  155. </view>
  156. <view class="container_box">
  157. <view class="income_box">
  158. <view class="incomeweekday">
  159. <view class="weekday1" @click="weekday(1)" :style="weekdaytype==1?'border: 1rpx solid #2979ff;color:#2979ff':'border: 1rpx solid #fff'">
  160. <view class="weekday"></view>
  161. <view class="income_yesterday1" :style="weekdaytype==1?'color:#2979ff':'color: #999999;'">{{$t('hostdetails.weekdays')}}</view>
  162. </view>
  163. <view class="restday1" @click="weekday(2)" :style="weekdaytype==2?'border: 1rpx solid #2979ff;color:#2979ff':'border: 1rpx solid #fff'">
  164. <view class="restday"></view>
  165. <view class="income_moon1" :style="weekdaytype==2?'color:#2979ff':'color: #999999;'">{{$t('hostdetails.weekends')}}</view>
  166. </view>
  167. <view class="restday2"> </view>
  168. <view class="restday2"> </view>
  169. </view>
  170. </view>
  171. </view>
  172. <view class="power_box1">
  173. <view class="powerstation">
  174. <view class="power_yesterdaystrategy" @click="ondevices">
  175. <view class="strategybox">
  176. <image class="strategycalendar" src="/static/calendar.png" mode=""></image>
  177. <view class="power_iconstrategy">
  178. <view class="power_yesterday11">{{date}}</view>
  179. <view class="power_yesterday11">{{$t('hostdetails.listTitle')}}:{{weekdaytype==1?$t('hostdetails.weekdays'):$t('hostdetails.weekends')}}</view>
  180. </view>
  181. </view>
  182. <view class="power_strategy">{{$t('hostdetails.detailTitle')}}<image class="energy_jumpto" src="/static/jumpto.png" mode=""></image></view>
  183. </view>
  184. </view>
  185. </view>
  186. <view class="power_box2">
  187. <view class="powerstation">
  188. <view class="power_yesterdaystrategy">
  189. <view class="strategybox">
  190. <image class="strategy" src="/static/startstop.png" mode=""></image>
  191. <view class="power_iconstrategy">
  192. <view class="power_yesterday11">{{$t('hostdetails.powerControl')}}</view>
  193. <!-- <view class="power_yesterday1">2024-09-13</view> -->
  194. </view>
  195. </view>
  196. <l-switch v-model="defaultValue" disabled="false" :placeholder="[$t('hostdetails.on'), $t('hostdetails.off')]" dotSize="14px" height="22px" width="32px"></l-switch>
  197. <!-- <view class="power_strategy1" @click="toggle('center')">开启<image class="energy_jumpto" src="/static/jumpto.png" mode=""></image></view> -->
  198. <!-- <view class="power_strategy2" @click="toggle('center')">停止<image class="energy_jumpto" src="/static/jumpto.png" mode=""></image></view> -->
  199. </view>
  200. </view>
  201. </view>
  202. <!-- 普通弹窗-->
  203. <uni-popup ref="popupRef" background-color="#fff" @change="change" borderRadius="10rpx">
  204. <view class="popup-content" :class="{ 'popup-height': devicetype === 'left' || devicetype === 'right' }">
  205. <view class="popuptext">
  206. 是否开启?
  207. </view>
  208. <view class="popupbutton">
  209. <button class="cancel-button" size="mini" @click="handleCancel">取消</button>
  210. <button class="confirm-button" @click="handleConfirm">确认</button>
  211. </view>
  212. </view>
  213. </uni-popup>
  214. </view>
  215. </template>
  216. <!-- -->
  217. <script setup>
  218. import {
  219. onMounted,
  220. ref
  221. } from 'vue';
  222. import topTabbar from '@/components/top-tabbar.vue';
  223. import KDatePicker from '../../components/k-date-picker/KDatePicker.vue';
  224. import { formatAmount,Accumulateddischarge } from '@/utils/format.js'; // 引入格式化函数
  225. import request from '@/utils/request';
  226. import {
  227. getMonthRange,
  228. getMonth
  229. } from '@/utils/date.js';
  230. import { onLoad,onHide,onShow,onUnload } from '@dcloudio/uni-app';
  231. const date = ref();
  232. const deviceid = ref();
  233. const optionsinfo = ref();
  234. onLoad((options) => {
  235. console.log('页面加载,参数为:', options);
  236. if (options) {
  237. optionsinfo.value = options;
  238. // uni.setNavigationBarTitle({
  239. // title: options.name||'并网点'
  240. // });
  241. uni.setNavigationBarTitle({
  242. title: '并网点'
  243. });
  244. }
  245. });
  246. const interval = ref(null)
  247. onHide(() => {
  248. // 页面隐藏时也可以选择清理定时器
  249. if (interval.value) {
  250. clearInterval(interval.value);
  251. interval.value = null
  252. }
  253. });
  254. onUnload(() => {
  255. // 页面隐藏时也可以选择清理定时器
  256. if (interval.value) {
  257. clearInterval(interval.value);
  258. interval.value = null
  259. }
  260. });
  261. onShow(() => {
  262. // 页面再次显示时重新启动定时器
  263. if (!interval.value) {
  264. setIntervalDemo();
  265. }
  266. });
  267. const setIntervalDemo =() => {
  268. interval.value = setInterval(() => {
  269. const monthRange = getMonthRange();
  270. date.value = monthRange.firstDay.substring(0, 7);
  271. getoverview(date); // 首页收益充电
  272. }, 10000)
  273. };
  274. onMounted(() => {
  275. const monthRange = getMonthRange();
  276. date.value = monthRange.firstDay.substring(0, 7);
  277. console.log(date.value);
  278. getoverview(date); // 首页收益充电
  279. getelectricity(); // 运行计划
  280. });
  281. const target = ref(0)
  282. const modelVale = ref(0)
  283. const devicedata = ref({})
  284. const getoverview = async () => {
  285. try {
  286. const response = await request({
  287. url: `/connectionapp/energyblock?grid=${optionsinfo.value.id}`,
  288. method: 'get',
  289. header: {
  290. 'Content-Type': 'application/x-www-form-urlencoded'
  291. }
  292. });
  293. console.log(response);
  294. devicedata.value = response.data
  295. target.value =response.data.soc*1
  296. } catch (error) {
  297. console.error('登录失败:', error);
  298. }
  299. }
  300. // 运行计划
  301. const selecteddata = ref()
  302. const getelectricity = async () => {
  303. console.log(deviceid.value);
  304. try {
  305. const response = await request({
  306. url: `/connectionapp/plan`,
  307. method: 'get',
  308. header: {
  309. 'Content-Type': 'application/x-www-form-urlencoded'
  310. },
  311. data:{
  312. grid:optionsinfo.value.id,
  313. month:date.value
  314. }
  315. });
  316. // console.log(response);
  317. selecteddata.value = response.data
  318. } catch (error) {
  319. console.error('登录失败:', error);
  320. }
  321. }
  322. // 策略详情
  323. const ondevices = () => {
  324. if(weekdaytype.value==1){
  325. uni.navigateTo({
  326. url: `/pages/strategy/index?id=${optionsinfo.value.id}&type=1`
  327. })
  328. }else{
  329. uni.navigateTo({
  330. url: `/pages/strategy/index?id=${optionsinfo.value.id}&type=2`
  331. })
  332. }
  333. }
  334. // change
  335. // 日历
  336. const oncalendar = (e) => {
  337. // console.log(e);
  338. let month = 0
  339. if(e.month*1<10){
  340. month = '0' + e.month
  341. }else{
  342. month = e.month
  343. }
  344. date.value = e.year +'-'+month
  345. getelectricity();
  346. }
  347. const weekdaytype =ref(1);
  348. // 工作日 休息日
  349. const weekday = (e) => {
  350. // console.log(e);
  351. weekdaytype.value =e
  352. }
  353. // 设备启停
  354. const defaultValue =ref(1)
  355. const devicetype =ref('center')
  356. const msgType= ref('success')
  357. const messageText=ref('这是一条成功提示')
  358. const value= ref('')
  359. const popupRef = ref(null)
  360. const toggle=(type)=> {
  361. // console.log(type);
  362. devicetype.value = type
  363. // open 方法传入参数 等同在 uni-popup 组件上绑定 type属性
  364. if (popupRef.value) {
  365. popupRef.value.open(type);
  366. }
  367. };
  368. // 处理取消按钮点击事件
  369. const handleCancel=()=> {
  370. console.log('用户点击了取消');
  371. $refs.popupRef.value.close(); // 关闭弹出层
  372. };
  373. // 处理确认按钮点击事件
  374. const handleConfirm=()=> {
  375. console.log('用户点击了确认');
  376. $refs.popupRef.value.close(); // 关闭弹出层
  377. // 在这里添加确认后的逻辑
  378. };
  379. // popup 状态变化事件
  380. const change=(e)=> {
  381. console.log('弹出层状态变化:', e);
  382. }
  383. const ondetails =(e)=>{
  384. uni.navigateTo({
  385. url: `/pages/devicedetails/index?id=${e.emsDeviceId}`
  386. })
  387. }
  388. </script>
  389. <style scoped>
  390. .uni-page {
  391. width: 100%;
  392. height: 100%;
  393. }
  394. .container {
  395. background: linear-gradient(to bottom, #007545 -40%, #f0f5f5 40%, #f0f5f5 100%);
  396. box-sizing: border-box;
  397. padding-bottom:1rpx;
  398. }
  399. .l-liquid {
  400. /* background-color: #007545; */
  401. border: 10rpx solid #007545;
  402. }
  403. .liquid_text {
  404. font-size: 38rpx;
  405. color: #fff;
  406. }
  407. .container_title {
  408. width: 100%;
  409. height: 400rpx;
  410. display: flex;
  411. justify-content: center;
  412. align-items: center;
  413. }
  414. .container_box {
  415. width: 100%;
  416. padding: 0rpx 20rpx;
  417. box-sizing: border-box;
  418. }
  419. .container_box1{
  420. width: 100%;
  421. padding: 0rpx 20rpx;
  422. box-sizing: border-box;
  423. margin-top: 20rpx;
  424. }
  425. .container_parameter {
  426. width: 100%;
  427. height: 500rpx;
  428. background-color: #ffffff;
  429. border-radius: 10rpx;
  430. }
  431. .income_box {
  432. width: 100%;
  433. background-color: #ffffff;
  434. box-sizing: border-box;
  435. border-radius: 16rpx;
  436. padding-bottom: 10rpx;
  437. }
  438. .income_top{
  439. width: 100%;
  440. height: 80rpx;
  441. display: flex;
  442. align-items: center;
  443. justify-content: space-around;
  444. }
  445. .income {
  446. width: 100%;
  447. height: 46rpx;
  448. display: flex;
  449. align-items: center;
  450. justify-content: space-around;
  451. }
  452. .income_image {
  453. width: 40rpx;
  454. height: 40rpx;
  455. margin-right: 10rpx;
  456. box-sizing: border-box;
  457. }
  458. .income_yesterday_discharge{
  459. flex: 1;
  460. display: flex;
  461. align-items: center;
  462. justify-content: center;
  463. }
  464. .income_tired_soc{
  465. flex: 1;
  466. display: flex;
  467. align-items: center;
  468. justify-content: center;
  469. }
  470. .income_yesterday,
  471. .income_moon,
  472. .income_tired {
  473. flex: 1;
  474. display: flex;
  475. align-items: center;
  476. justify-content: center;
  477. }
  478. .income_yesterday1,
  479. .income_moon1,
  480. .income_tired1 {
  481. font-size: 28rpx;
  482. color: #999999;
  483. }
  484. .income_yesterday2,
  485. .income_moon2,
  486. .income_tired2 {
  487. font-size: 28rpx;
  488. font-weight: 400;
  489. }
  490. .qiun_data {
  491. width: 100%;
  492. padding: 16rpx;
  493. overflow: auto;
  494. box-sizing: border-box;
  495. }
  496. .qiun_title {
  497. height: 12%;
  498. font-size: 28rpx;
  499. margin-left: 20rpx;
  500. }
  501. .power_box {
  502. width: 100%;
  503. padding: 0rpx 20rpx;
  504. box-sizing: border-box;
  505. margin-bottom: 30rpx;
  506. }
  507. .power_box1 {
  508. width: 100%;
  509. padding: 0rpx 20rpx;
  510. box-sizing: border-box;
  511. }
  512. .power_box2{
  513. width: 100%;
  514. padding: 0rpx 20rpx;
  515. box-sizing: border-box;
  516. margin-bottom: 30rpx;
  517. }
  518. .powerstation {
  519. width: 100%;
  520. display: flex;
  521. align-items: center;
  522. justify-content: space-between;
  523. overflow: hidden;
  524. }
  525. .power_yesterday,
  526. .power_moon,
  527. .power_tired {
  528. width: 31%;
  529. padding: 20rpx 0rpx;
  530. display: flex;
  531. flex-direction: column;
  532. align-items: center;
  533. justify-content: center;
  534. border-radius: 10rpx;
  535. background-color: #ffffff;
  536. }
  537. .power_yesterday image,
  538. .power_moon image,
  539. .power_tired image {
  540. width: 40rpx;
  541. height: 40rpx;
  542. }
  543. .power_yesterday image {
  544. /* background-color: #007544; */
  545. }
  546. .power_moon image {
  547. /* background-color: #3774f3; */
  548. }
  549. .power_tired image {
  550. /* background-color: #b3cef9; */
  551. }
  552. .power_icon{
  553. display: flex;
  554. }
  555. .power_yesterday1,
  556. .power_moon1,
  557. .power_tired1 {
  558. font-size: 28rpx;
  559. margin-left:10rpx;
  560. color: #999999;
  561. }
  562. .power_yesterday11{
  563. font-size: 26rpx;
  564. margin-left:10rpx;
  565. color: #222;
  566. }
  567. .power_moon2,.power_yesterday2,.power_tired2{
  568. margin-top:10rpx;
  569. font-size: 24rpx;
  570. }
  571. .toptabbar {
  572. width: 100%;
  573. height: 80rpx;
  574. margin-top: 20px;
  575. padding: 10rpx 20rpx;
  576. box-sizing: border-box;
  577. }
  578. /deep/ .uni-scroll-view-content {
  579. display: flex;
  580. justify-content: center;
  581. }
  582. .datecalendar {
  583. display: flex;
  584. justify-content: space-between;
  585. padding: 0rpx 24rpx;
  586. margin-top: 60rpx;
  587. }
  588. .datecalendar_1 {
  589. width: 320rpx;
  590. height: 60rpx;
  591. display: flex;
  592. font-size: 28rpx;
  593. border: 0.2rpx solid #999999;
  594. border-radius: 40rpx;
  595. overflow: overlay;
  596. }
  597. .datecalendar_1sun {
  598. flex: 1;
  599. display: flex;
  600. align-items: center;
  601. justify-content: center;
  602. color: #222222;
  603. background-color: #ffffff;
  604. }
  605. .datecalendar_1moon {
  606. flex: 1;
  607. display: flex;
  608. align-items: center;
  609. justify-content: center;
  610. background-color: #ffffff;
  611. border-left: 0.2rpx solid #999999;
  612. border-right: 0.2rpx solid #999999;
  613. }
  614. .datecalendar_1year {
  615. flex: 1;
  616. display: flex;
  617. align-items: center;
  618. justify-content: center;
  619. background-color: #ffffff;
  620. }
  621. .datecalendar_2 {
  622. width: 180rpx;
  623. height: 60rpx;
  624. display: flex;
  625. align-items: center;
  626. justify-content: center;
  627. font-size: 28rpx;
  628. border: 0.2rpx solid #999999;
  629. border-radius: 40rpx;
  630. }
  631. .qiun_data {
  632. width: 100%;
  633. height: 600rpx;
  634. padding: 16rpx;
  635. overflow: auto;
  636. box-sizing: border-box;
  637. }
  638. .qiun_title {
  639. height: 12%;
  640. font-size: 28rpx;
  641. margin-left: 20rpx;
  642. }
  643. /* --------------------------------------- */
  644. .energy {
  645. width: 100%;
  646. padding: 20rpx;
  647. box-sizing: border-box;
  648. }
  649. .energy_hostbox{
  650. padding: 20rpx;
  651. box-sizing: border-box;
  652. }
  653. .energy_host {
  654. width: 100%;
  655. padding: 20rpx;
  656. box-sizing: border-box;
  657. background-color: #ffffff;
  658. margin-bottom: 10rpx;
  659. border-radius: 10rpx;
  660. }
  661. .energy_title {
  662. width: 100%;
  663. }
  664. .energy_box {
  665. width: 100%;
  666. background-color: #B2D5CB;
  667. border-radius: 10rpx;
  668. margin-top: 20rpx;
  669. padding: 30rpx 16rpx;
  670. display: flex;
  671. align-items: center;
  672. box-sizing: border-box;
  673. position: relative;
  674. overflow: hidden;
  675. }
  676. .micro{
  677. width: 50rpx;
  678. height: 50rpx;
  679. display: flex;
  680. align-items: center;
  681. justify-content: center;
  682. position: absolute;
  683. top: -5rpx;
  684. right: -4rpx;
  685. background-color: #007545;
  686. color: #fff;
  687. border-radius: 12rpx;
  688. }
  689. .energy_boximage {
  690. width: 88rpx;
  691. height: 88rpx;
  692. }
  693. .energy_boxtitle {
  694. flex: 1;
  695. display: flex;
  696. flex-direction: column;
  697. margin-left: 20rpx;
  698. }
  699. .energy_boxtitle1 {
  700. font-size: 28rpx;
  701. }
  702. .energy_boxtitle2 {
  703. font-size: 28rpx;
  704. margin-top: 4rpx;
  705. }
  706. .energy_right {
  707. display: flex;
  708. align-items: center;
  709. }
  710. .energy_boxright {
  711. display: flex;
  712. flex-direction: column;
  713. align-items: center;
  714. justify-content: center;
  715. }
  716. .energy_boxright1 {
  717. padding: 8rpx 30rpx;
  718. font-size: 26rpx;
  719. border-radius: 50rpx;
  720. display: flex;
  721. align-items: center;
  722. justify-content: center;
  723. background-color: rgba(0, 116, 84, .3);
  724. color: #fff;
  725. }
  726. .energy_boxright2 {
  727. font-size: 24rpx;
  728. margin-top: 10rpx;
  729. }
  730. .energy_jumpto {
  731. width: 30rpx;
  732. height: 30rpx;
  733. margin-left: 8rpx;
  734. }
  735. .energy_calendar{
  736. margin-top:30rpx;
  737. border-radius: 10rpx;
  738. overflow: hidden;
  739. }
  740. .incomeweekday{
  741. width: 100%;
  742. height: 100rpx;
  743. display: flex;
  744. align-items: center;
  745. /* justify-content: space-around; */
  746. }
  747. .weekday{
  748. width: 20rpx;
  749. height: 20rpx;
  750. border-radius: 50rpx;
  751. background-color: red;
  752. margin-right: 10rpx;
  753. }
  754. .restday1{
  755. display: flex;
  756. align-items: center;
  757. margin-left: 40rpx;
  758. padding: 10rpx;
  759. border-radius: 100rpx;
  760. box-sizing: border-box;
  761. }
  762. .restday2{
  763. display: flex;
  764. align-items: center;
  765. margin-left: 40rpx;
  766. border: 1rpx solid #fff;
  767. padding: 10rpx;
  768. border-radius: 100rpx;
  769. box-sizing: border-box;
  770. }
  771. .weekday1{
  772. display: flex;
  773. align-items: center;
  774. margin-left: 20rpx;
  775. padding: 10rpx;
  776. border-radius: 100rpx;
  777. box-sizing: border-box;
  778. }
  779. .restday{
  780. width: 20rpx;
  781. height: 20rpx;
  782. border-radius: 50rpx;
  783. background-color: #007545;
  784. margin-right: 10rpx;
  785. }
  786. .power_yesterdaystrategy{
  787. width: 100%;
  788. padding: 20rpx 20rpx;
  789. display: flex;
  790. align-items: center;
  791. justify-content: space-between;
  792. border-radius: 10rpx;
  793. background-color: #ffffff;
  794. margin-top: 20rpx;
  795. }
  796. .power_iconstrategy{
  797. flex-direction: column;
  798. }
  799. .strategy{
  800. width: 60rpx;
  801. height: 60rpx;
  802. }
  803. .strategycalendar{
  804. width: 60rpx;
  805. height: 60rpx;
  806. padding: 6rpx;
  807. box-sizing: border-box;
  808. }
  809. .strategybox{
  810. display: flex;
  811. align-items: center;
  812. }
  813. .power_strategy{
  814. font-size: 24rpx;
  815. color: #ccc;
  816. display: flex;
  817. align-items: center;
  818. }
  819. .power_strategy1{
  820. font-size: 24rpx;
  821. color: #B2D5CB;
  822. display: flex;
  823. align-items: center;
  824. }
  825. .power_strategy2{
  826. font-size: 24rpx;
  827. color: red;
  828. display: flex;
  829. align-items: center;
  830. }
  831. @mixin flex {
  832. /* #ifndef APP-NVUE */
  833. display: flex;
  834. /* #endif */
  835. flex-direction: row;
  836. }
  837. @mixin height {
  838. /* #ifndef APP-NVUE */
  839. height: 100%;
  840. /* #endif */
  841. /* #ifdef APP-NVUE */
  842. flex: 1;
  843. /* #endif */
  844. }
  845. .box {
  846. @include flex;
  847. }
  848. .button {
  849. @include flex;
  850. align-items: center;
  851. justify-content: center;
  852. flex: 1;
  853. height: 35px;
  854. margin: 0 5px;
  855. border-radius: 5px;
  856. }
  857. .example-body {
  858. background-color: #fff;
  859. padding: 10px 0;
  860. }
  861. .button-text {
  862. color: #fff;
  863. font-size: 12px;
  864. }
  865. .popup-content {
  866. @include flex;
  867. align-items: center;
  868. justify-content: center;
  869. padding: 15px;
  870. background-color: #fff;
  871. }
  872. .popup-height {
  873. @include height;
  874. width: 400px;
  875. }
  876. .text {
  877. font-size: 12px;
  878. color: #333;
  879. }
  880. .popup-success {
  881. color: #fff;
  882. background-color: #e1f3d8;
  883. }
  884. .popup-warn {
  885. color: #fff;
  886. background-color: #faecd8;
  887. }
  888. .popup-error {
  889. color: #fff;
  890. background-color: #fde2e2;
  891. }
  892. .popup-info {
  893. color: #fff;
  894. background-color: #f2f6fc;
  895. }
  896. .success-text {
  897. color: #09bb07;
  898. }
  899. .warn-text {
  900. color: #e6a23c;
  901. }
  902. .error-text {
  903. color: #f56c6c;
  904. }
  905. .info-text {
  906. color: #909399;
  907. }
  908. .dialog,
  909. .share {
  910. /* #ifndef APP-NVUE */
  911. display: flex;
  912. /* #endif */
  913. flex-direction: column;
  914. }
  915. .dialog-box {
  916. padding: 10px;
  917. }
  918. .dialog .button,
  919. .share .button {
  920. /* #ifndef APP-NVUE */
  921. width: 100%;
  922. /* #endif */
  923. margin: 0;
  924. margin-top: 10px;
  925. padding: 3px 0;
  926. flex: 1;
  927. }
  928. .dialog-text {
  929. font-size: 14px;
  930. color: #333;
  931. }
  932. /* 弹出层内容样式 */
  933. .popup-content {
  934. padding: 20px;
  935. text-align: center;
  936. border-radius: 20rpx;
  937. }
  938. /* 文本样式 */
  939. .popuptext {
  940. font-size: 26rpx;
  941. color: #333;
  942. margin-bottom: 20rpx;
  943. }
  944. /* 取消按钮样式 */
  945. .cancel-button {
  946. width: 120rpx;
  947. height: 60rpx;
  948. margin-top: 10rpx;
  949. font-size: 24rpx;
  950. background-color: #f0f0f0;
  951. color: #333;
  952. margin-right: 40rpx;
  953. }
  954. /* 确认按钮样式 */
  955. .confirm-button {
  956. width: 120rpx;
  957. height: 60rpx;
  958. margin-top: 10rpx;
  959. font-size: 24rpx;
  960. background-color: #007aff;
  961. color: #fff;
  962. }
  963. /* 根据设备类型调整高度 */
  964. .popup-height {
  965. height: 200px;
  966. }
  967. .popupbutton{
  968. display: flex;
  969. }
  970. .income_unit{
  971. font-size: 20rpx;
  972. }
  973. </style>
  974. /* */