moreData.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919
  1. <template>
  2. <view class="container">
  3. <u-navbar titleStyle="color:#333;fontSize:36rpx;" :autoBack="true" bgColor="#fff" :placeholder="true"
  4. title="更多数据"></u-navbar>
  5. <view class="content">
  6. <view class="tab-wrap">
  7. <view class="tab">
  8. <u-tabs :list="tabList" :activeStyle="{color: '#333',fontWeight: 'bold',fontSize:'36rpx'}"
  9. :inactiveStyle="{fontSize:'32rpx'}" :scrollable="false" :current="current" @click="tabClick"
  10. lineColor="#2C6FF3">
  11. </u-tabs>
  12. </view>
  13. </view>
  14. <view class="total-content today" v-if="current==0">
  15. <view class="time-tab flex align-center justify-between">
  16. <!-- <view class="time-item" :class="[dayTimeCurrent==0?'time-item time-show':'time-item']"
  17. @click="dayTimeClick(0)">
  18. 今日
  19. </view> -->
  20. <!-- <view class="time-item" :class="[dayTimeCurrent==1?'time-item time-show':'time-item']" -->
  21. <view class="time-item time-show" @click="dayTimeClick(0)">
  22. {{date}}
  23. </view>
  24. <view class="flex">
  25. <view class="change-day" @tap="changeDay(0)">
  26. <xbutton>今日</xbutton>
  27. </view>
  28. <view class="change-day" @tap="changeDay(-1)">
  29. <xbutton>前一天</xbutton>
  30. </view>
  31. <view class="change-day" @tap="changeDay(1)">
  32. <xbutton>后一天</xbutton>
  33. </view>
  34. </view>
  35. </view>
  36. <u-datetime-picker :show="timeShow" mode="date" v-model="datePicker" @confirm="confirm"
  37. :closeOnClickOverlay="true" @close="close" @cancel="close"></u-datetime-picker>
  38. <view class="today-receive">
  39. <view>今日总收益</view>
  40. <view>
  41. ¥<view>{{$xy.delMoney(dayData.dayTotalRevenue)}}</view>
  42. </view>
  43. <view>
  44. 今日销售+今日补收
  45. </view>
  46. </view>
  47. <view class="sale-refund card">
  48. <view class="sr-title">
  49. <image src="../../static/images/global/total-before.png" mode="widthFix"></image>
  50. 订单销售
  51. </view>
  52. <view class="sr-head">
  53. <view>
  54. ¥<view>{{$xy.delMoney(dayData.dayOrderRealMoney)}}</view>
  55. </view>
  56. <view>
  57. 到账金额
  58. </view>
  59. </view>
  60. <view class="sr-total flex justify-between">
  61. <view class="sr-item">
  62. <view class="sr-num" style="color:#2C6FF3;">
  63. ¥<text>{{$xy.delMoney(dayData.dayOrderTotalMoney)}}</text>
  64. </view>
  65. <view class="sr-name">
  66. 订单金额
  67. </view>
  68. </view>
  69. <view class="sr-item" style="color: #FF0000;">
  70. <view class="sr-num">
  71. ¥<text>{{$xy.delMoney(dayData.dayRefundMoney)}}</text>
  72. </view>
  73. <view class="sr-name">
  74. 退款金额
  75. </view>
  76. </view>
  77. <view class="sr-item">
  78. <view class="sr-num">
  79. ¥<text>{{$xy.delMoney(dayData.dayPayFailedMoney)}}</text>
  80. </view>
  81. <view class="sr-name">
  82. 挂账金额
  83. </view>
  84. </view>
  85. <view class="sr-item">
  86. <view class="sr-num">
  87. <text>{{dayData.dayToBeConfirmedNum||0}}</text>笔
  88. </view>
  89. <view class="sr-name">
  90. 待确认
  91. </view>
  92. </view>
  93. </view>
  94. <view class="sr-total flex justify-between">
  95. <view class="sr-item">
  96. <view class="sr-num">
  97. <text>{{dayData.dayOrderNum||0}}</text>笔
  98. </view>
  99. <view class="sr-name">
  100. 订单数量
  101. </view>
  102. </view>
  103. <view class="sr-item">
  104. <view class="sr-num">
  105. <text>{{dayData.dayRefundNum||0}}</text>笔
  106. </view>
  107. <view class="sr-name">
  108. 退款数量
  109. </view>
  110. </view>
  111. <view class="sr-item">
  112. <view class="sr-num">
  113. <text>{{dayData.dayPayFailedNum||0}}</text>
  114. </view>
  115. <view class="sr-name">
  116. 挂账数量
  117. </view>
  118. </view>
  119. <view class="sr-item">
  120. <view class="sr-num">
  121. <text>{{dayData.dayAbnormalOrderNum||0}}</text>笔
  122. </view>
  123. <view class="sr-name">
  124. 异常数量
  125. </view>
  126. </view>
  127. </view>
  128. </view>
  129. <view class="sale-refund card" style="padding:30rpx 20rpx;">
  130. <view class="sr-title" style="margin-left: 14rpx;">
  131. <image src="../../static/images/global/total-before.png" mode="widthFix"></image>
  132. 历史订单补退和补收
  133. </view>
  134. <view class="sr-head">
  135. <view>
  136. ¥<view>{{$xy.delMoney(dayData.dayHisFillMoney-dayData.dayHisRefundMoney)}}</view>
  137. </view>
  138. <view>
  139. 补收合计
  140. </view>
  141. </view>
  142. <view class="sr-content flex justify-between">
  143. <view class="sr-content-item sr-content-left">
  144. <view class="sc-top">
  145. 今日补收
  146. </view>
  147. <view class="sc-bot flex">
  148. <view class="sc-item">
  149. <view class="sc-num">
  150. ¥<text>{{$xy.delMoney(dayData.dayHisFillMoney)}}</text>
  151. </view>
  152. <view class="sc-name">
  153. 金额
  154. </view>
  155. </view>
  156. <view class="sc-item">
  157. <view class="sc-num">
  158. <text>{{dayData.dayHisFillNum||0}}</text>笔
  159. </view>
  160. <view class="sc-name">
  161. 订单数量
  162. </view>
  163. </view>
  164. </view>
  165. </view>
  166. <view class="sr-content-item sr-content-right">
  167. <view class="sc-top">
  168. 今日补退
  169. </view>
  170. <view class="sc-bot flex">
  171. <view class="sc-item">
  172. <view class="sc-num">
  173. ¥<text>{{$xy.delMoney(dayData.dayHisRefundMoney)}}</text>
  174. </view>
  175. <view class="sc-name">
  176. 金额
  177. </view>
  178. </view>
  179. <view class="sc-item">
  180. <view class="sc-num">
  181. <text>{{dayData.dayHisRefundNum||0}}</text>笔
  182. </view>
  183. <view class="sc-name">
  184. 订单数量
  185. </view>
  186. </view>
  187. </view>
  188. </view>
  189. </view>
  190. </view>
  191. <view class="sale-refund card" style="padding:30rpx 20rpx;">
  192. <view class="sr-title" style="margin-left: 14rpx;">
  193. <image src="../../static/images/global/total-before.png" mode="widthFix"></image>
  194. 风险订单
  195. </view>
  196. <view class="sr-head" @click="$tab.navigateTo('/pages/order/riskOrder')">
  197. <view style="color: #FF0000;">
  198. <view style="padding-right:12rpx;">{{dayData.toDoRiskCount}}</view>笔
  199. </view>
  200. <view>
  201. 待处理风险订单
  202. </view>
  203. </view>
  204. <view class="sr-content flex justify-between">
  205. <view class="sr-content-item sr-content-left1">
  206. <view class="sc-top">
  207. 今日新增
  208. </view>
  209. <view class="sc-val">
  210. {{dayData.dayRiskAddCount}}
  211. </view>
  212. </view>
  213. <view class="sr-content-item sr-content-right1">
  214. <view class="sc-top">
  215. 今日处理
  216. </view>
  217. <view class="sc-val">
  218. {{dayData.dayRiskHandleCount}}
  219. </view>
  220. </view>
  221. </view>
  222. </view>
  223. </view>
  224. <view class="total-content month" v-else>
  225. <view class="time-tab flex align-center justify-between">
  226. <view class="time-item time-show" @click="dayTimeClick(0)">
  227. {{month}}
  228. </view>
  229. <view class="flex">
  230. <view class="change-day" @tap="changeMonth(0)">
  231. <xbutton>本月</xbutton>
  232. </view>
  233. <view class="change-day" @tap="changeMonth(-1)">
  234. <xbutton>上一月</xbutton>
  235. </view>
  236. <view class="change-day" @tap="changeMonth(1)">
  237. <xbutton>下一月</xbutton>
  238. </view>
  239. </view>
  240. </view>
  241. <u-datetime-picker :show="monthShow" mode="month" v-model="monthPicker" @confirm="monthConfirm"
  242. :closeOnClickOverlay="true" @close="monthClose" @cancel="monthClose"></u-datetime-picker>
  243. <view class="today-receive">
  244. <view>本月总收益</view>
  245. <view>
  246. ¥<view>{{$xy.delMoney(monthData.monthTotalRevenue)}}</view>
  247. </view>
  248. </view>
  249. <view class="chart card">
  250. <view class="chart-title">
  251. 日收益明细
  252. </view>
  253. <view class="chart-content">
  254. <block v-for="(item,index) in monthData.revenueList" :key="item.date">
  255. <view class="chart-item flex align-center" @click="detail(item.date)">
  256. <view class="chart-time">
  257. {{item.date}}
  258. </view>
  259. <view class="chart-bar-box flex justify-between align-center">
  260. <view class="chart-bar" :style="{width:item.width}"></view>
  261. <view class="chart-num">
  262. ¥{{$xy.delMoney(item.dayTotalRevenue)}}
  263. </view>
  264. </view>
  265. </view>
  266. </block>
  267. </view>
  268. </view>
  269. </view>
  270. </view>
  271. </view>
  272. </template>
  273. <script>
  274. import {
  275. countByMonth,
  276. countByDay
  277. } from "@/api/order/order.js"
  278. export default {
  279. data() {
  280. return {
  281. tabList: [{
  282. name: '今日统计'
  283. },
  284. {
  285. name: '本月统计'
  286. }
  287. ],
  288. current: 0,
  289. dayData: {
  290. "dayTotalRevenue": 0,
  291. "dayOrderRealMoney": 0,
  292. "dayOrderTotalMoney": 0,
  293. "dayOrderNum": 0,
  294. "dayRefundMoney": 0,
  295. "dayRefundNum": 0,
  296. "dayPayFailedMoney": 0,
  297. "dayPayFailedNum": 0,
  298. "dayToBeConfirmedNum": 0,
  299. "dayAbnormalOrderNum": 0,
  300. "dayHisFillMoney": 0,
  301. "dayHisFillNum": 0,
  302. "dayHisRefundMoney": 0,
  303. "dayHisRefundNum": 0,
  304. "toDoRiskCount": 0,
  305. "dayRiskHandleCount": 0,
  306. "dayRiskAddCount": 0
  307. },
  308. monthData: {
  309. "monthTotalRevenue": 0,
  310. "revenueList": []
  311. },
  312. monthTimeCurrent: 0,
  313. timeShow: false,
  314. date: null,
  315. datePicker: null,
  316. dateDx: 0,
  317. monthDx: 0,
  318. month: null,
  319. monthShow: false,
  320. monthPicker: null,
  321. }
  322. },
  323. onLoad(o) {
  324. this.datePicker = new Date()
  325. this.date = uni.$u.timeFormat(this.datePicker, 'yyyy-mm-dd')
  326. this.month = uni.$u.timeFormat(this.datePicker, 'yyyy-mm')
  327. this.tabList[0].name = `今日统计`
  328. this.tabList[1].name = `本月统计`
  329. },
  330. onShow() {
  331. this.getData()
  332. },
  333. methods: {
  334. tabClick(e) {
  335. this.current = e.index
  336. this.getData()
  337. },
  338. getData() {
  339. if (this.current == 0) {
  340. this.getDayData()
  341. } else {
  342. this.getMonthData()
  343. }
  344. },
  345. dayTimeClick(e) {
  346. this.timeShow = true
  347. },
  348. confirm(e) {
  349. this.date = uni.$u.timeFormat(e.value, 'yyyy-mm-dd')
  350. this.isToday()
  351. this.getData()
  352. this.timeShow = false;
  353. },
  354. close() {
  355. this.timeShow = false
  356. },
  357. // 是否今日
  358. isToday(day) {
  359. let nowDate = uni.$u.timeFormat(new Date(), 'yyyy-mm-dd')
  360. if (this.date == nowDate) {
  361. this.tabList[0].name = `今日统计`
  362. } else {
  363. this.tabList[0].name = `按日统计`
  364. }
  365. },
  366. isNowMonth(month) {
  367. let nowMonth = uni.$u.timeFormat(new Date(), 'yyyy-mm')
  368. if (this.month == nowMonth) {
  369. this.tabList[1].name = `本月统计`
  370. } else {
  371. this.tabList[1].name = `按月统计`
  372. }
  373. },
  374. changeDay(add) {
  375. if (add == 0) {
  376. this.dateDx = 0;
  377. } else {
  378. //处理超过当前时间的情况
  379. if (add > 0) {
  380. if (this.dateDx == 0) {
  381. this.$modal.msg('别点了,没有数据啦~')
  382. return
  383. }
  384. }
  385. this.dateDx += add;
  386. }
  387. let date = new Date().getTime();
  388. let newDate = date + this.dateDx * (24 * 60 * 60 * 1000);
  389. this.date = uni.$u.timeFormat(newDate, 'yyyy-mm-dd')
  390. this.isToday()
  391. this.getData()
  392. },
  393. changeMonth(add) {
  394. if (add == 0) {
  395. this.monthDx = 0;
  396. } else {
  397. //处理超过当前时间的情况
  398. if (add > 0) {
  399. if (this.monthDx == 0) {
  400. this.$modal.msg('别点了,没有数据啦~')
  401. return
  402. }
  403. }
  404. this.monthDx += add;
  405. }
  406. let today = new Date();
  407. let month = new Date(today.getFullYear(), today.getMonth() + this.monthDx, today.getDate());
  408. this.month = uni.$u.timeFormat(month, 'yyyy-mm')
  409. this.isNowMonth()
  410. this.getData()
  411. },
  412. monthTimeClick(e) {
  413. this.monthTimeCurrent = e
  414. },
  415. getMonthData() {
  416. countByMonth({
  417. date: this.month + '-01'
  418. }).then(res => {
  419. let data = res.data;
  420. let max = 0;
  421. let revenueList = data.revenueList
  422. for (let i = 0; i < revenueList.length; i++) {
  423. let item = revenueList[i];
  424. if (item.dayTotalRevenue > max) {
  425. max = item.dayTotalRevenue
  426. }
  427. }
  428. for (let i = 0; i < revenueList.length; i++) {
  429. let item = revenueList[i];
  430. if (item.dayTotalRevenue > 0) {
  431. item.width = (item.dayTotalRevenue / (max / 0.78)) * 100 + '%'
  432. } else {
  433. item.width = '0%'
  434. }
  435. }
  436. this.monthData = data
  437. console.log(this.monthData)
  438. })
  439. },
  440. getDayData() {
  441. countByDay({
  442. date: this.date
  443. }).then(res => {
  444. if (res.data) {
  445. this.dayData = res.data
  446. } else {
  447. this.dayData = {
  448. "dayTotalRevenue": 0,
  449. "dayOrderRealMoney": 0,
  450. "dayOrderTotalMoney": 0,
  451. "dayOrderNum": 0,
  452. "dayRefundMoney": 0,
  453. "dayRefundNum": 0,
  454. "dayPayFailedMoney": 0,
  455. "dayPayFailedNum": 0,
  456. "dayToBeConfirmedNum": 0,
  457. "dayAbnormalOrderNum": 0,
  458. "dayHisFillMoney": 0,
  459. "dayHisFillNum": 0,
  460. "dayHisRefundMoney": 0,
  461. "dayHisRefundNum": 0,
  462. "toDoRiskCount": 0,
  463. "dayRiskHandleCount": 0,
  464. "dayRiskAddCount": 0
  465. }
  466. }
  467. })
  468. },
  469. detail(time) {
  470. this.current = 0;
  471. this.date = time;
  472. this.tabList[0].name = `按日统计`
  473. this.getData()
  474. },
  475. monthConfirm(e) {
  476. this.month = uni.$u.timeFormat(e.value, 'yyyy-mm')
  477. // this.isToday()
  478. // this.getData()
  479. this.monthShow = false;
  480. },
  481. }
  482. }
  483. </script>
  484. <style lang="scss" scoped>
  485. .container {
  486. min-height: 100vh;
  487. background-color: #fff !important;
  488. .content {
  489. color: #333;
  490. .tab-wrap {
  491. background-color: #fff;
  492. .tab {
  493. width: 90%;
  494. margin-left: -12rpx;
  495. }
  496. }
  497. .time-tab {
  498. margin-top: 24rpx;
  499. padding: 0 13rpx;
  500. .time-item {
  501. padding: 0 64rpx;
  502. height: 62rpx;
  503. background: #F7F7F7;
  504. border-radius: 10rpx;
  505. font-size: 28rpx;
  506. font-weight: 500;
  507. color: #777777;
  508. margin-right: 20rpx;
  509. line-height: 62rpx;
  510. &.time-show {
  511. background: #F4F8FF;
  512. color: #2C6FF3;
  513. }
  514. }
  515. .change-day {
  516. margin-left: 12rpx;
  517. }
  518. }
  519. .total-content {
  520. .today-receive {
  521. width: 724rpx;
  522. margin-left: 13rpx;
  523. background: #2C6FF3;
  524. box-shadow: 0px 0px 10rpx 0px rgba(174, 201, 255, 0.2);
  525. border-radius: 14rpx;
  526. color: #fff;
  527. padding: 28rpx 18rpx;
  528. margin-top: 20rpx;
  529. >view:nth-child(1) {
  530. font-size: 30rpx;
  531. line-height: 30rpx;
  532. font-weight: 500;
  533. }
  534. >view:nth-child(2) {
  535. font-size: 32rpx;
  536. line-height: 64rpx;
  537. margin-top: 32rpx;
  538. text-align: center;
  539. >view {
  540. font-size: 64rpx;
  541. padding-left: 12rpx;
  542. display: inline-block;
  543. font-weight: bold;
  544. }
  545. }
  546. >view:nth-child(3) {
  547. font-size: 26rpx;
  548. line-height: 26rpx;
  549. font-weight: 500;
  550. margin-top: 28rpx;
  551. text-align: center;
  552. }
  553. }
  554. .risk-order {
  555. padding: 0 12rpx;
  556. .risk-item {
  557. width: 230rpx;
  558. height: 120rpx;
  559. background: #F1F6FF;
  560. border-radius: 14rpx;
  561. padding: 24rpx 10rpx 18rpx 12rpx;
  562. .risk-name {
  563. font-size: 26rpx;
  564. padding-left: 16rpx;
  565. position: relative;
  566. line-height: 26rpx;
  567. &::before {
  568. content: '';
  569. width: 6rpx;
  570. height: 20rpx;
  571. position: absolute;
  572. left: 0;
  573. top: 2rpx;
  574. background-color: #2C6FF3;
  575. }
  576. &.risk-name2::before {
  577. background-color: #FB360F;
  578. }
  579. &.risk-name3::before {
  580. background-color: #5804E2;
  581. }
  582. }
  583. .risk-num {
  584. font-size: 32rpx;
  585. text-align: center;
  586. margin-top: 26rpx;
  587. line-height: 32rpx;
  588. font-weight: bold;
  589. }
  590. &.to-month {
  591. width: 354rpx;
  592. height: 149rpx;
  593. background: #F1F6FF;
  594. border-radius: 14rpx;
  595. .risk-num {
  596. font-size: 24rpx;
  597. margin-top: 40rpx;
  598. line-height: 32rpx;
  599. text-align: left;
  600. padding-left: 12rpx;
  601. >text {
  602. font-size: 32rpx;
  603. font-weight: bold;
  604. }
  605. }
  606. }
  607. }
  608. }
  609. .card {
  610. box-shadow: 0px 0px 10px 0px rgba(174, 201, 255, 0.2);
  611. border-radius: 14rpx;
  612. }
  613. .sale-refund {
  614. width: 724rpx;
  615. background: #FFFFFF;
  616. margin-left: 12rpx;
  617. margin-top: 30rpx;
  618. padding: 34rpx 34rpx 47rpx;
  619. .sr-title {
  620. font-size: 30rpx;
  621. font-weight: 800;
  622. line-height: 30rpx;
  623. position: relative;
  624. padding-left: 24rpx;
  625. >image {
  626. width: 14rpx;
  627. height: 25rpx;
  628. position: absolute;
  629. left: 0;
  630. top: 2rpx;
  631. }
  632. }
  633. .sr-head {
  634. color: #333;
  635. >view:nth-child(1) {
  636. font-size: 24rpx;
  637. line-height: 44rpx;
  638. margin-top: 43rpx;
  639. font-weight: bold;
  640. text-align: center;
  641. >view {
  642. font-size: 44rpx;
  643. display: inline-block;
  644. padding-left: 12rpx;
  645. }
  646. }
  647. >view:nth-child(2) {
  648. font-size: 26rpx;
  649. line-height: 26rpx;
  650. margin-top: 22rpx;
  651. text-align: center;
  652. }
  653. }
  654. .sr-content {
  655. margin-top: 20rpx;
  656. .sr-content-item {
  657. width: 334rpx;
  658. background: #F1F6FF;
  659. border-radius: 14rpx;
  660. padding: 24rpx 18rpx;
  661. &.sr-content-right {
  662. background-color: #FFF7F7;
  663. }
  664. &.sr-content-left1 {
  665. background-color: #FFF7F7;
  666. padding-bottom: 58rpx;
  667. }
  668. &.sr-content-right1 {
  669. background-color: #F9F9F9;
  670. padding-bottom: 58rpx;
  671. }
  672. .sc-top {
  673. font-size: 28rpx;
  674. line-height: 28rpx;
  675. font-weight: 800;
  676. }
  677. .sc-bot {
  678. .sc-item {
  679. width: 228rpx;
  680. text-align: center;
  681. margin-top: 40rpx;
  682. .sc-name {
  683. font-size: 26rpx;
  684. color: #555555;
  685. line-height: 26rpx;
  686. margin-top: 24rpx;
  687. }
  688. .sc-num {
  689. font-size: 24rpx;
  690. font-weight: 800;
  691. line-height: 32rpx;
  692. >text {
  693. font-size: 32rpx;
  694. }
  695. }
  696. }
  697. }
  698. .sc-val {
  699. font-size: 32rpx;
  700. line-height: 32rpx;
  701. margin-top: 45rpx;
  702. font-weight: 800;
  703. color: #333333;
  704. text-align: center;
  705. }
  706. }
  707. }
  708. .sr-total {
  709. margin-top: 42rpx;
  710. .sr-item {
  711. width: 25%;
  712. text-align: center;
  713. .sr-name {
  714. font-size: 26rpx;
  715. color: #555555;
  716. line-height: 26rpx;
  717. margin-top: 24rpx;
  718. }
  719. .sr-num {
  720. font-size: 24rpx;
  721. font-weight: 800;
  722. line-height: 32rpx;
  723. >text {
  724. font-size: 32rpx;
  725. }
  726. }
  727. }
  728. }
  729. }
  730. .sub-rec-ref {
  731. width: 724rpx;
  732. margin-left: 13rpx;
  733. margin-top: 30rpx;
  734. .card {
  735. width: 354rpx;
  736. padding: 26rpx 22rpx;
  737. &.srr-rec {
  738. background-color: #2C6FF3;
  739. color: #fff;
  740. }
  741. .srr-title {
  742. font-size: 30rpx;
  743. line-height: 30rpx;
  744. }
  745. .srr-total {
  746. margin-top: 36rpx;
  747. .srr-item {
  748. width: 182rpx;
  749. .srr-name {
  750. font-size: 26rpx;
  751. line-height: 26rpx;
  752. }
  753. .srr-num {
  754. font-size: 24rpx;
  755. font-weight: 800;
  756. line-height: 32rpx;
  757. margin-top: 24rpx;
  758. >text {
  759. font-size: 32rpx;
  760. }
  761. }
  762. }
  763. }
  764. }
  765. }
  766. }
  767. .month {
  768. .chart {
  769. width: 724rpx;
  770. margin-left: 13rpx;
  771. margin-top: 12rpx;
  772. padding-bottom: 24rpx;
  773. .chart-title {
  774. font-size: 28rpx;
  775. font-weight: 500;
  776. color: #333333;
  777. padding: 30rpx 25rpx 20rpx;
  778. }
  779. .chart-content {
  780. padding: 0 15rpx;
  781. .chart-item {
  782. height: 54rpx;
  783. margin-top: 10rpx;
  784. .chart-time {
  785. margin-right: 10rpx;
  786. width: 190rpx;
  787. }
  788. .chart-bar-box {
  789. background: #F6F6F6;
  790. border-radius: 8rpx 27rpx 27rpx 8rpx;
  791. width: 620rpx;
  792. .chart-bar {
  793. height: 54rpx;
  794. border-radius: 8rpx 27rpx 27rpx 8rpx;
  795. background-color: #98C0FC;
  796. transition: all 1s linear;
  797. }
  798. .chart-num {
  799. color: #df6b73;
  800. margin-right: 12rpx;
  801. font-size: 26rpx;
  802. }
  803. }
  804. }
  805. }
  806. }
  807. }
  808. }
  809. }
  810. </style>