Files
ysdH5/pages/giftPack/logs.vue
2024-03-04 15:10:46 +08:00

326 lines
7.6 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="content">
<view class="title">
<view class="title-name">消费金账户余额</view>
</view>
<view class="redBack">
<view class="list">
<view class="label">
<view class="label-title">可用余额<image src="/static/icon/giftPack-show.png" mode="widthFix"></image></view>
<view class="label-number">{{account.gold}}</view>
<view class="label-go">可用余额入账记录 </view>
</view>
<view class="label">
<view class="label-title">待发放</view>
<view class="label-number">{{blockeds}}</view>
<navigator hover-class="none" :url="'/pages/giftPack/logsFrozen?type=gold' + '&blockeds=' + blockeds" class="label-go">立即查询 > </navigator>
</view>
</view>
</view>
<view class="integra-cont">
<view class="integra-title">
<view class="integra-title-name">明细记录</view>
<view class="integra-title-picker">
<picker @change="screenBind" :value="screenIndex" :range-key="'name'" :range="screenArray">
{{screenArray[screenIndex].name}}
</picker>
<image class="integra-title-icon" src="/static/icon/arrow_down.png"></image>
</view>
</view>
<view class="integra-cont-list" v-if="accounts.length > 0">
<view class="integra-cont-label" v-for="(item, index) in accounts" :key="index">
<view class="integra-cont-title">
<view class="integra-cont-name">{{item.title}}</view>
<view class="integra-cont-tips">消费金余额</view>
</view>
<view class="integra-cont-time">扣除时间{{item.created_at}}</view>
<view class="integra-cont-number">{{item.variable}}</view>
</view>
</view>
<!-- 暂无内容 -->
<view class="recommend-hint" v-else>
<image src="/static/img/legal_tips.png"></image>
<view>抱歉目前暂无内容~</view>
</view>
</view>
</view>
</template>
<script>
import { logs } from '@/apis/interfaces/giftPack'
import { index } from '@/apis/interfaces/user'
export default {
data() {
return {
blockeds : '',
account : '',
accounts : '', // 账户列表
screenArray : [
{
channel: 'all',
name: '全部'
},
{
channel: 'in',
name: '入账'
},
{
channel: 'out',
name: '出账'
}
], //账变记录筛选数组
screenChannel: '', //账变记录筛选数组标识
screenIndex : 0 , //账变记录筛选index
page : 1, //分页
lodingStats : false //加载状态
}
},
// 生命周期函数--监听页面显示
onShow() {
// 存储环境-月兑活动
getApp().globalData.envType = 'giftPEnv'
// 获取账变记录
this.accountInfo();
},
methods: {
// 账变记录
accountInfo(page) {
logs({
type : 'gold',
page : page || '',
channel : this.screenChannel
}).then(res=>{
let newStores = this.accounts,
newData = []
if(page == 1 || page == undefined) newStores = []
newData = newStores.concat(res.data)
this.accounts = newData
this.blockeds = res.blockeds
this.account = res.account
this.page = res.page
this.lodingStats = false
uni.stopPullDownRefresh()
})
},
// 筛选账变记录-条件
screenBind(e) {
this.screenIndex = e.detail.value,
this.screenChannel= this.screenArray[e.detail.value].channel
// 获取账变记录
this.accountInfo();
},
// 页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh() {
// 获取账变记录
this.accountInfo();
},
// 上拉加载
onReachBottom(){
this.lodingStats = true
let pageNumber = this.page.current
if(this.page.has_more){
pageNumber++
// 获取账变记录
this.accountInfo(pageNumber);
}
}
}
}
</script>
<style lang="scss" scoped>
.content {
padding: 30rpx;
box-sizing: border-box;
background-color: #fff9f9;
height: 100vh;
overflow-y: scroll;
}
.title {
font-size: 34rpx;
font-weight: 600;
text-align: center;
.title-name {
text-align: center;
position: relative;
width: 440rpx;
margin: 0 auto;
color: #27314d;
line-height: 60rpx;
&::after,
&::before {
position: absolute;
content: '';
top: calc(50% - 14rpx);
background-image: url('/static/img/giftPackArrow.png');
background-size: 100%;
background-position: center;
width: 80rpx;
height: 28rpx;
display: block;
}
&::after {
left: 0;
transform: rotate(180deg);
}
&::before {
right: 0;
}
}
}
.redBack {
// background-image: linear-gradient(to top, #fe796f, #f25549);
background-image: linear-gradient(to top, #494e75, #27314d);
border-radius: 30rpx;
padding: 30rpx 0 40rpx;
box-sizing: border-box;
margin: 30rpx 0;
position: relative;
}
.redBack::after,
.redBack::before {
position: absolute;
content: '';
left: 20rpx;
border-radius: 0 0 20rpx 20rpx;
}
.redBack::after {
background-color: rgba(39,49,77,.4);
z-index: 2;
width: calc(100% - 40rpx);
left: 20rpx;
bottom: -14px;
height: 14px;
}
.redBack::before {
background-color: rgba(39,49,77,.4);
z-index: 1;
width: calc(100% - 80rpx);
left: 40rpx;
bottom: -50rpx;
height: 50rpx;
}
.list {
display: flex;
.label {
flex: 2;
color: #ffffff;
box-sizing: border-box;
&:last-child {
padding-left: 60rpx;
position: relative;
}
&:first-child {
padding-left: 40rpx;
padding-right: 20rpx;
}
&:last-child::after {
position: absolute;
content: '';
left: 0;
top: 15%;
width: 2rpx;
height: 70%;
background-color: #ffffff;
opacity: .6;
}
}
.label-title {
line-height: 54rpx;
display: flex;
image {
width: 32rpx;
margin: 14rpx 0 0 15rpx;
}
}
.label-number {
margin: 10rpx 0 30rpx;
font-size: 48rpx;
font-weight: 600;
}
.label-go {
font-size: 26rpx;
opacity: .9;
}
}
.integra-cont {
margin-top: 100rpx;
.integra-title {
display: flex;
margin-bottom: 30rpx;
.integra-title-name {
font-size: 36rpx;
font-weight: 600;
flex: 1;
}
.integra-title-picker {
display: flex;
color: #797979;
font-size: 32rpx;
.integra-title-icon {
width: 28rpx;
height: 28rpx;
margin: 6rpx 0 0 10rpx;
}
}
}
.integra-cont-label {
background-color: #ffffff;
padding: 30rpx;
box-sizing: border-box;
border-radius: 20rpx;
margin-bottom: 30rpx;
position: relative;
.integra-cont-title {
display: flex;
line-height: 40rpx;
.integra-cont-tips {
margin-left: 20rpx;
color: #ff9833;
border: 2rpx solid #ff9833;
border-radius: 80rpx;
font-size: 26rpx;
padding: 0 15rpx;
}
}
.integra-cont-time {
font-size: 26rpx;
color: #666666;
margin-top: 20rpx;
}
.integra-cont-number {
position: absolute;
top: 50rpx;
right: 30rpx;
color: #27314d;
font-size: 38rpx;
}
}
}
/* 暂无内容 */
.recommend-hint {
text-align: center;
color: #999;
padding: 100rpx 0;
}
.recommend-hint image {
width: 200rpx;
height: 200rpx;
}
</style>