Index.vue 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390
  1. <template>
  2. <div class="main-container" v-loading="isLoading">
  3. <Header :title="title"></Header>
  4. <div class="container">
  5. <div class="content">
  6. <div class="top">
  7. <div class="amount">
  8. <div class="item item1">
  9. <img :src="staticImg + 'index-01.png'" alt="" />
  10. <div class="num">
  11. <span>{{
  12. sumData.yesterdayEarnings
  13. ? sumData.yesterdayEarnings.toFixed(2)
  14. : "0.00"
  15. }}</span>
  16. 昨日收入
  17. </div>
  18. </div>
  19. <div class="item">
  20. <img :src="staticImg + 'index-02.png'" alt="" />
  21. <div class="num">
  22. <span>{{ sumData.yesterdayOrdersNum }}</span>
  23. 昨日新增订单
  24. </div>
  25. </div>
  26. <div class="item">
  27. <img :src="staticImg + 'index-03.png'" alt="" />
  28. <div class="num">
  29. <span>{{ sumData.waitDeliveryOrdersNum }}</span>
  30. 待发货订单数
  31. </div>
  32. </div>
  33. </div>
  34. <div class="amount amount2">
  35. <div class="amount-left">
  36. <div class="item">
  37. <img :src="staticImg + 'index-01.png'" alt="" />
  38. <div class="num">
  39. <span>{{ sumData2.totalIntegral }}</span>
  40. 全网积分总量池
  41. </div>
  42. </div>
  43. <div class="item">
  44. <img :src="staticImg + 'index-02.png'" alt="" />
  45. <div class="num">
  46. <span>{{ sumData2.releasedIntegral }}</span>
  47. 全网已释放积分数
  48. </div>
  49. </div>
  50. <div class="item">
  51. <img :src="staticImg + 'index-03.png'" alt="" />
  52. <div class="num">
  53. <span>{{ sumData2.freezeIntegral }}</span>
  54. 全网冻结中积分数
  55. </div>
  56. </div>
  57. </div>
  58. <!-- <div class="amount-right">
  59. <div class="item">
  60. <img :src="staticImg + 'index-01.png'" alt="" />
  61. <div class="num">
  62. <span>{{ sumData2.totalGold }}</span>
  63. 绿通总量池
  64. </div>
  65. </div>
  66. <div class="item">
  67. <img :src="staticImg + 'index-02.png'" alt="" />
  68. <div class="num">
  69. <span>{{ sumData2.releasedGold }}</span>
  70. 绿通释放池
  71. </div>
  72. </div>
  73. <div class="item">
  74. <img :src="staticImg + 'index-03.png'" alt="" />
  75. <div class="num">
  76. <span>{{ sumData2.remainGold }}</span>
  77. 绿通剩余释放池
  78. </div>
  79. </div>
  80. </div> -->
  81. </div>
  82. </div>
  83. <div class="bottom">
  84. <div class="echart" id="echart"></div>
  85. </div>
  86. </div>
  87. </div>
  88. </div>
  89. </template>
  90. <script type="text/ecmascript-6">
  91. import Header from '../components/common/header';
  92. import { staticImg } from '@/config'; // oss 图片地址
  93. export default {
  94. components: {
  95. Header
  96. },
  97. name: 'Index',
  98. data() {
  99. return {
  100. isLoading: 0,
  101. title: {
  102. // 页面标题
  103. firstTitile: '工作台'
  104. },
  105. staticImg: staticImg,
  106. sumData: {},
  107. sumData2: {},
  108. option: {
  109. // echarts配置
  110. title: {
  111. text: '近30日每日平台订单收入',
  112. textStyle: {
  113. fontSize: 18,
  114. fontWeight: '600'
  115. }
  116. },
  117. tooltip: {
  118. trigger: 'item',
  119. backgroundColor: '#FF8703',
  120. fontSize: 14,
  121. // formatter: (params) => {
  122. // console.log(params.data);
  123. // return `{b0}<span style="padding: 6px 8px;display: flex;align-items:center">当日订单收入 <span style="font-size: 22px;margin-left: 3px">${params.data}</span></span>`;
  124. // }
  125. formatter: `<span style="padding: 6px 8px;display: flex;align-items:center">{b0}<br/>当日订单收入 {c0}<span style="font-size: 22px;margin-left: 3px"></span></span>`
  126. },
  127. grid: {
  128. left: 80,
  129. right: 35,
  130. bottom: 30
  131. },
  132. xAxis: {
  133. type: 'category',
  134. data: [],
  135. // boundaryGap: false, // 坐标轴两边留白
  136. axisLine: {
  137. lineStyle: {
  138. color: '#916096',
  139. width: 3
  140. }
  141. },
  142. axisTick: {
  143. show: false
  144. },
  145. splitLine: {
  146. show: true,
  147. lineStyle: {
  148. color: 'rgba(0, 0, 0, 0.06)'
  149. },
  150. interval: (index, value) => {
  151. return index !== 0;
  152. }
  153. },
  154. axisLabel: {
  155. // 坐标轴刻度标签的相关设置
  156. fontSize: 15,
  157. color: '#333333',
  158. margin: 15 // 刻度标签与轴线之间的距离
  159. }
  160. },
  161. yAxis: {
  162. type: 'value',
  163. axisLine: {
  164. show: false
  165. },
  166. axisTick: {
  167. show: false
  168. },
  169. splitLine: {
  170. show: true,
  171. lineStyle: {
  172. color: 'rgba(0, 0, 0, 0.06)'
  173. }
  174. },
  175. axisLabel: {
  176. color: '#B494C5',
  177. fontWeight: 600,
  178. fontSize: 14,
  179. // 坐标轴刻度标签的相关设置
  180. margin: 15 // 刻度标签与轴线之间的距离
  181. }
  182. },
  183. series: [
  184. {
  185. data: [],
  186. type: 'line',
  187. symbolSize: 10,
  188. itemStyle: {
  189. normal: {
  190. color: '#704C99',
  191. lineStyle: {
  192. color: '#B494C5'
  193. }
  194. }
  195. }
  196. }
  197. ]
  198. }
  199. };
  200. },
  201. mounted() {
  202. this.getDataSum();
  203. this.getDataSum2();
  204. this.getPayDaySum().then(() => {
  205. this.$nextTick(() => {
  206. this.initEcharts();
  207. });
  208. });
  209. },
  210. methods: {
  211. initEcharts() {
  212. this.myChart = this.$echarts.init(document.getElementById('echart'));
  213. this.myChart.setOption(this.option);
  214. },
  215. getDataSum() {
  216. this.loading++;
  217. this.httpGet(this.$root.getDataSum, {}).then(
  218. (res) => {
  219. this.loading--;
  220. this.sumData = res;
  221. },
  222. () => {
  223. this.loading--;
  224. }
  225. );
  226. },
  227. getDataSum2() {
  228. this.loading++;
  229. this.httpGet(this.$root.getDataSum2, {}).then(
  230. (res) => {
  231. this.loading--;
  232. this.sumData2 = res;
  233. },
  234. () => {
  235. this.loading--;
  236. }
  237. );
  238. },
  239. getPayDaySum() {
  240. this.loading++;
  241. return this.httpGet(this.$root.getPayDaySum, {
  242. page: 1,
  243. size: 30
  244. }).then(
  245. (res) => {
  246. this.loading--;
  247. this.option.xAxis.data = res.list.map((item) => {
  248. return item.day;
  249. })
  250. this.option.series[0].data = res.list.map((item) => {
  251. return item.amount;
  252. })
  253. },
  254. () => {
  255. this.loading--;
  256. }
  257. );
  258. }
  259. }
  260. };
  261. </script>
  262. <style lang="stylus" rel="stylesheet/stylus" scoped>
  263. @import '~assets/main.styl';
  264. @import '~assets/public.styl';
  265. .container {
  266. padding: 0 !important;
  267. }
  268. .content {
  269. background: #F6F6F6 !important;
  270. padding: 24px !important;
  271. flex-y();
  272. }
  273. .top {
  274. width: 100%;
  275. height: 260px;
  276. flex-x(flex-start);
  277. .amount {
  278. width: 530px;
  279. height: 100%;
  280. background: #fff;
  281. border-radius: 10px;
  282. flex-x();
  283. flex-wrap: wrap;
  284. box-sizing: border-box;
  285. padding: 36px;
  286. .item {
  287. width: 50%;
  288. flex-x(flex-start);
  289. img {
  290. width: 36px;
  291. height: auto;
  292. }
  293. .num {
  294. flex-y(center, flex-start);
  295. word(14px, #999);
  296. margin-left: 15px;
  297. span {
  298. word(28px, #333);
  299. font-weight: bold;
  300. margin-bottom: 8px;
  301. }
  302. }
  303. }
  304. .item1 {
  305. width: 100%;
  306. .num {
  307. span {
  308. font-size: 36px;
  309. }
  310. }
  311. }
  312. }
  313. .amount2 {
  314. margin-left: 16px;
  315. padding: 0;
  316. background: transparent;
  317. flex: 1;
  318. flex-x();
  319. .amount-left, .amount-right{
  320. flex: 1;
  321. height: 100%;
  322. background: #fff;
  323. border-radius: 10px;
  324. flex-y(center, flex-start);
  325. .item{
  326. padding: 0 50px;
  327. flex: 1;
  328. }
  329. }
  330. .amount-left{
  331. margin-right: 15px;
  332. }
  333. }
  334. }
  335. // }
  336. .right {
  337. width: 600px;
  338. background: #fff;
  339. height: 100%;
  340. border-radius: 10px;
  341. box-sizing: border-box;
  342. padding: 20px 30px;
  343. word(18px, #333);
  344. overflow: hidden;
  345. font-weight: 550;
  346. flex-shrink: 1;
  347. .user-info {
  348. word(14px, #333);
  349. flex-x(flex-start);
  350. img {
  351. height: 28px;
  352. height: 28px;
  353. margin-right: 12px;
  354. border-radius: 14px;
  355. }
  356. }
  357. }
  358. .bottom {
  359. flex: 1;
  360. width: 100%;
  361. margin-top: 20px;
  362. background: #fff;
  363. border-radius: 10px;
  364. padding: 30px;
  365. box-sizing: border-box;
  366. .echart {
  367. width: 100%;
  368. height: 100%;
  369. }
  370. }
  371. </style>