You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							292 lines
						
					
					
						
							6.7 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							292 lines
						
					
					
						
							6.7 KiB
						
					
					
				
								<template>
							 | 
						|
									<view>
							 | 
						|
										<lf-nav title="余额" :showIcon="true" :spreadOut="false" bgColor="transparent" titleColor="#fff"></lf-nav>
							 | 
						|
										<view class="head">
							 | 
						|
											<view class="bg-left"></view>
							 | 
						|
											<view class="bg-right"></view>
							 | 
						|
											<view class="head-content">
							 | 
						|
												<view>
							 | 
						|
													<text class="lf-iconfont icon-yuebao lf-font-50"></text>
							 | 
						|
												</view>
							 | 
						|
												<view class="point">
							 | 
						|
													<text>{{ num || 0 }}</text>
							 | 
						|
													<text class="label">(元)</text>
							 | 
						|
												</view>
							 | 
						|
											</view>
							 | 
						|
										</view>
							 | 
						|
										<view class="main">
							 | 
						|
											<view class="lf-row-between lf-m-b-30">
							 | 
						|
												<view class="lf-font-32 lf-color-black lf-font-bold">余额变动明细</view>
							 | 
						|
												<picker mode='date' :value="date" @change="dateChange">
							 | 
						|
													<view style="width: 440rpx; text-align: right;">
							 | 
						|
														<text>{{ date || '2021-09-01' }}</text>
							 | 
						|
														<text class="lf-iconfont icon-xiangyou lf-font-24 lf-m-l-10"></text>
							 | 
						|
													</view>
							 | 
						|
												</picker>
							 | 
						|
											</view>
							 | 
						|
											<view class="item" v-for="(item, index) in 10" :key="index">
							 | 
						|
												<view class="lf-row-between">
							 | 
						|
													<text class="lf-font-36 lf-color-black lf-font-bold" :class="{'lf-color-price': index % 2}">{{ index % 2 ? '-250' : '+80' }}</text>
							 | 
						|
													<text class="lf-font-24 lf-color-555">线上-商城内消费</text>
							 | 
						|
												</view>
							 | 
						|
												<view class="lf-row-between lf-m-t-20">
							 | 
						|
													<text class="lf-font-24 lf-color-555">¥374.38</text>
							 | 
						|
													<text class="lf-font-24 lf-color-777">2021-09-01 18:27:58</text>
							 | 
						|
												</view>
							 | 
						|
											</view>
							 | 
						|
										</view>
							 | 
						|
									</view>
							 | 
						|
								</template>
							 | 
						|
								
							 | 
						|
								<script>
							 | 
						|
									import { pageLogin, getUrl, config, is } from '@/common/js/utils.js';
							 | 
						|
									export default {
							 | 
						|
										data(){
							 | 
						|
											return {
							 | 
						|
												date: '',
							 | 
						|
												// activeIndex: 0,
							 | 
						|
												// tabList: [{
							 | 
						|
												//   id: 0,
							 | 
						|
												//   name: "收入",
							 | 
						|
												//   init: false,
							 | 
						|
												//   page: 0,
							 | 
						|
												//   more: true,
							 | 
						|
												//   show: false
							 | 
						|
												// }, {
							 | 
						|
												//   id: 1,
							 | 
						|
												//   name: "支出",
							 | 
						|
												//   init: false,
							 | 
						|
												//   page: 0,
							 | 
						|
												//   more: true,
							 | 
						|
												//   show: false
							 | 
						|
												// }],
							 | 
						|
												// dataList: {
							 | 
						|
												//   0: [],
							 | 
						|
												//   1: []
							 | 
						|
												// },
							 | 
						|
												list: [],
							 | 
						|
												show: false,
							 | 
						|
												page: 0,
							 | 
						|
												more: true,
							 | 
						|
												token: this.getToken(),
							 | 
						|
												num: "",
							 | 
						|
												showText: '正在加载下一页数据',
							 | 
						|
												config: ''
							 | 
						|
											}
							 | 
						|
										},
							 | 
						|
										onLoad(e){
							 | 
						|
											// TODO 将list数据渲染到页面上,,根据date请求筛选
							 | 
						|
											// 第三方平台配置颜色
							 | 
						|
											var bgConfig = this.$cookieStorage.get('globalConfig') || '';
							 | 
						|
											this.setData({
							 | 
						|
											  config: bgConfig
							 | 
						|
											}); // var status=0,page=1;
							 | 
						|
											// this.queryBalanceList(token);
							 | 
						|
											
							 | 
						|
											// var status = e.type ? e.type : 0;
							 | 
						|
											// var page = this.tabList[status].page;
							 | 
						|
											// pageLogin(getUrl(), token => {
							 | 
						|
											//   this.setData({
							 | 
						|
											//     'token': token
							 | 
						|
											//   });
							 | 
						|
											//   this.queryBalanceList(token, status, page);
							 | 
						|
											//   this.queryUserSum(token);
							 | 
						|
											// });
							 | 
						|
											this.queryBalanceList();
							 | 
						|
											this.queryUserSum(this.token);
							 | 
						|
										},
							 | 
						|
										methods: {
							 | 
						|
											dateChange(event){
							 | 
						|
												this.date = event.detail.value;
							 | 
						|
											},
							 | 
						|
											
							 | 
						|
											queryBalanceList() {
							 | 
						|
											  // var type = status ? 'consume' : 'recharge';
							 | 
						|
											  // var params = type ? {
							 | 
						|
											  //   type
							 | 
						|
											  // } : {};
							 | 
						|
											  // params.page = page;
							 | 
						|
											  let token = this.token;
							 | 
						|
											  let params = {
							 | 
						|
												  page: this.page
							 | 
						|
											  };
							 | 
						|
											  this.$http.get({
							 | 
						|
											    api: 'api/users/balance/list',
							 | 
						|
											    header: {
							 | 
						|
											      Authorization: token
							 | 
						|
											    },
							 | 
						|
											    data: params
							 | 
						|
											  }).then(res => {
							 | 
						|
											    if (res.statusCode == 200) {
							 | 
						|
											      res = res.data;
							 | 
						|
											      // this.result(res, status);
							 | 
						|
												   var page = res.meta.pagination;
							 | 
						|
												   this.list = res.data;
							 | 
						|
												   this.page = page.current_page;
							 | 
						|
												   this.more = page.current_page < page.total_pages;
							 | 
						|
												   this.show = false;
							 | 
						|
											    } else {
							 | 
						|
											      wx.showModal({
							 | 
						|
											        title: '提示',
							 | 
						|
											        content: '数据请求失败',
							 | 
						|
											        success: res => {}
							 | 
						|
											      });
							 | 
						|
											    }
							 | 
						|
											
							 | 
						|
											    wx.hideLoading();
							 | 
						|
											  }).catch(rej => {
							 | 
						|
											    wx.showToast({
							 | 
						|
											      title: "请求失败",
							 | 
						|
											      image: '../../../static/error.png'
							 | 
						|
											    });
							 | 
						|
											    wx.hideLoading();
							 | 
						|
											  });
							 | 
						|
											},
							 | 
						|
											// 获取总余额
							 | 
						|
											queryUserSum(token) {
							 | 
						|
											  this.$http.get({
							 | 
						|
											    api: "api/users/balance/sum",
							 | 
						|
											    header: {
							 | 
						|
											      Authorization: token
							 | 
						|
											    }
							 | 
						|
											  }).then(res => {
							 | 
						|
											    if (res.statusCode == 200) {
							 | 
						|
											      res = res.data;
							 | 
						|
											      this.setData({
							 | 
						|
											        "num": res.data.sum
							 | 
						|
											      });
							 | 
						|
											    } else {
							 | 
						|
											      wx.showModal({
							 | 
						|
											        title: '提示',
							 | 
						|
											        content: '数据请求失败',
							 | 
						|
											        success: res => {}
							 | 
						|
											      });
							 | 
						|
											    }
							 | 
						|
											  });
							 | 
						|
											},
							 | 
						|
											
							 | 
						|
											setData: function (obj) {
							 | 
						|
											  let that = this;
							 | 
						|
											  let keys = [];
							 | 
						|
											  let val, data;
							 | 
						|
											  Object.keys(obj).forEach(function (key) {
							 | 
						|
											    keys = key.split('.');
							 | 
						|
											    val = obj[key];
							 | 
						|
											    data = that.$data;
							 | 
						|
											    keys.forEach(function (key2, index) {
							 | 
						|
											      if (index + 1 == keys.length) {
							 | 
						|
											        that.$set(data, key2, val);
							 | 
						|
											      } else {
							 | 
						|
											        if (!data[key2]) {
							 | 
						|
											          that.$set(data, key2, {});
							 | 
						|
											        }
							 | 
						|
											      }
							 | 
						|
											
							 | 
						|
											      data = data[key2];
							 | 
						|
											    });
							 | 
						|
											  });
							 | 
						|
											}
							 | 
						|
										},
							 | 
						|
										onReachBottom(e) {
							 | 
						|
										  // var status = this.activeIndex;
							 | 
						|
										  // var page = this.tabList[status].page + 1;
							 | 
						|
										  // var tabList = `tabList[${status}]`;
							 | 
						|
										 
							 | 
						|
										
							 | 
						|
										  if (this.more) {
							 | 
						|
											   this.page++;
							 | 
						|
											   this.show = true;
							 | 
						|
											   this.queryBalanceList();
							 | 
						|
										    // this.setData({
							 | 
						|
										    //   [`${tabList}.show`]: true
							 | 
						|
										    // });
							 | 
						|
										    // var token = this.token;
							 | 
						|
										    // this.queryBalanceList(token, status, page);
							 | 
						|
										  } else {
							 | 
						|
										    wx.showToast({
							 | 
						|
										      image: '../../../static/error.png',
							 | 
						|
										      title: '再拉也没有啦'
							 | 
						|
										    });
							 | 
						|
										  }
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
								</script>
							 | 
						|
								
							 | 
						|
								<style>
							 | 
						|
									page{
							 | 
						|
										overflow-x: hidden;
							 | 
						|
									}
							 | 
						|
								</style>
							 | 
						|
								<style lang="scss" scoped>
							 | 
						|
									.head{
							 | 
						|
										width: 750rpx;
							 | 
						|
										// height: 512rpx;
							 | 
						|
										height: 429rpx;
							 | 
						|
										background: linear-gradient(90deg, #22A2A0 0%, #187B7A 100%);
							 | 
						|
										position: relative;
							 | 
						|
										overflow: hidden;
							 | 
						|
										display: flex;
							 | 
						|
										align-items: flex-end;
							 | 
						|
										box-sizing: border-box;
							 | 
						|
										padding: 60rpx 32rpx;
							 | 
						|
										color: #FFFFFF;
							 | 
						|
										.bg-left{
							 | 
						|
											position: absolute;
							 | 
						|
											width: 196rpx;
							 | 
						|
											height: 196rpx;
							 | 
						|
											border-radius: 50%;
							 | 
						|
											background-color: rgba(255,255,255,0.04);
							 | 
						|
											left: -92rpx;
							 | 
						|
											bottom: 60rpx;
							 | 
						|
										}
							 | 
						|
										.bg-right{
							 | 
						|
											position: absolute;
							 | 
						|
											width: 520rpx;
							 | 
						|
											height: 520rpx;
							 | 
						|
											border-radius: 50%;
							 | 
						|
											background-color: rgba(255,255,255,0.04);
							 | 
						|
											right: -168rpx;
							 | 
						|
											top: -122rpx;
							 | 
						|
										}
							 | 
						|
										.head-content{
							 | 
						|
											width: 100%;
							 | 
						|
											display: flex;
							 | 
						|
											flex-direction: column;
							 | 
						|
											justify-content: center;
							 | 
						|
											align-items: center;
							 | 
						|
											&>view{
							 | 
						|
												width: 100%;
							 | 
						|
												text-align: center;
							 | 
						|
											}
							 | 
						|
											.point{
							 | 
						|
												font-size: 72rpx;
							 | 
						|
												letter-spacing: 2rpx;
							 | 
						|
												font-weight: bold;
							 | 
						|
												word-break: break-all;
							 | 
						|
												line-height: 1;
							 | 
						|
												margin-top: 10rpx;
							 | 
						|
												.label{
							 | 
						|
													font-size: 36rpx;
							 | 
						|
													font-weight: initial;
							 | 
						|
												}
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									.main{
							 | 
						|
										padding: 30rpx 32rpx;
							 | 
						|
										width: 750rpx;
							 | 
						|
										height: max-content;
							 | 
						|
										box-sizing: border-box;
							 | 
						|
										.item{
							 | 
						|
											width: 686rpx;
							 | 
						|
											height: max-content;
							 | 
						|
											background: #F4F8F8;
							 | 
						|
											border-radius: 10rpx;
							 | 
						|
											margin-bottom: 26rpx;
							 | 
						|
											padding: 30rpx;
							 | 
						|
											box-sizing: border-box;
							 | 
						|
											line-height: 1;
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
								</style>
							 |