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>
|