zyejMAll-mobile/pages/user/wallet/score.vue

441 lines
9.8 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>
<s-layout class="wallet-wrap" title="我的积分" navbar="inner">
<view class="header-box ss-flex ss-flex-col ss-row-center ss-col-center" :style="[
{
marginTop: '-' + Number(statusBarHeight + 88) + 'rpx',
paddingTop: Number(statusBarHeight + 88) + 'rpx',
},
]">
<view class="header-bg">
<view class="bg" />
</view>
<view class="score-box ss-flex-col ss-row-center ss-col-center">
<view class="ss-m-b-30">
<text class="all-title ss-m-r-8">当前积分</text>
</view>
<text class="all-num">{{ userInfo.point || 0 }}</text>
</view>
<view class="new-point">
<view class="l">
<view class="b">1000</view>
<view class="c">累计积分带对接接口</view>
</view>
<view class="l">
<view class="b">1000</view>
<view class="c">累计消费带对接接口</view>
</view>
<view class="l">
<view class="b">0</view>
<view class="c">冻结积分</view>
</view>
</view>
<view class='new-tab'>
<view class="l l " :class="state.isShow == 1 ? 'on': ''" @click="state.isShow = 1">
<image
src="https://zysc.fjptzykj.com:3000/shangcheng/6fcdf0863d8665f2857ebfef5bb4a1d13df5d0ac8fa2517b16c3fa06f0b93a8a.png"
class="img2"></image>
<image
src="https://zysc.fjptzykj.com:3000/shangcheng/9e5801a7825e99274b7963f87c2044839640fe3b3e706c49238157449385cc87.png"
class="img"></image>
<text class="tx">分值明细</text>
</view>
<view class="l r" :class="state.isShow == 2 ? 'on': ''" @click="state.isShow = 2">
<image
src="https://zysc.fjptzykj.com:3000/shangcheng/0c9af735ebcd6a6b9c480b237c20331747cf69f8991150be10de4eef1f7c9173.png"
class="img2"></image>
<image
src="https://zysc.fjptzykj.com:3000/shangcheng/00bc0a57ca7f7a9ba79415b6f48a671669e7ed5f930e4b6e5096bcd8101d499e.png"
class="img"></image>
<text class="tx">分值提升</text>
</view>
</view>
</view>
<!-- tab -->
<!-- <su-sticky :customNavHeight="sys_navBar"> -->
<!-- 统计 -->
<view class="filter-box ss-p-x-30 ss-flex ss-col-center ss-row-between" v-if="state.isShow == 1">
<uni-datetime-picker v-model="state.date" type="daterange" @change="onChangeTime" :end="state.today">
<button class="ss-reset-button date-btn">
<text>{{ dateFilterText }}</text>
<text class="cicon-drop-down ss-seldate-icon"></text>
</button>
</uni-datetime-picker>
<!-- TODO 芋艿:优化 -->
<!-- <view class="total-box">-->
<!-- <view class="ss-m-b-10">总收入¥{{ state.pagination.income }}</view>-->
<!-- <view>总支出¥{{ -state.pagination.expense }}</view>-->
<!-- </view>-->
</view>
<!-- <su-tabs :list="tabMaps" @change="onChange" :scrollable="false" :current="state.currentTab"></su-tabs> -->
<!-- </su-sticky> -->
<!-- icon -->
<view class="icon-img" v-if="state.isShow == 2">
<view class="list" @click="sheep.$router.go('/pages/goods/list')">
<image
src="https://zysc.fjptzykj.com:3000/shangcheng/90eef89176c26da9a605a7b22c4b0beea07d970fc5da7204effb51e970546112.png"
class="img"></image>
<view class="c">购买商品可获得积分奖励</view>
<view class="b">赚积分</view>
</view>
<view class="list" @click="sheep.$router.go('/pages/app/sign')">
<image
src="https://zysc.fjptzykj.com:3000/shangcheng/90eef89176c26da9a605a7b22c4b0beea07d970fc5da7204effb51e970546112.png"
class="img"></image>
<view class="c">每日签到可获得积分奖励</view>
<view class="b">赚积分</view>
</view>
</view>
<!-- list -->
<view class="list-box" v-if="state.isShow == 1">
<view v-if="state.pagination.total > 0">
<view class="list-item ss-flex ss-col-center ss-row-between" v-for="item in state.pagination.list"
:key="item.id">
<view class="ss-flex-col">
<view class="name">{{ item.title }}{{ item.description ? ' - ' + item.description : '' }}</view>
<view class="time">{{
sheep.$helper.timeFormat(item.createTime, 'yyyy-mm-dd hh:MM:ss')
}}</view>
</view>
<view class="add" v-if="item.point > 0">+{{ item.point }}</view>
<view class="minus" v-else>{{ item.point }}</view>
</view>
</view>
<s-empty v-else text="暂无数据" icon="/static/data-empty.png" />
</view>
<uni-load-more v-if="state.pagination.total > 0 && state.isShow == 1" :status="state.loadStatus" :content-text="{
contentdown: '上拉加载更多',
}" @tap="onLoadMore" />
</s-layout>
</template>
<script setup>
import sheep from '@/sheep';
import {
onLoad,
onReachBottom
} from '@dcloudio/uni-app';
import {
computed,
reactive
} from 'vue';
import _ from 'lodash';
import dayjs from 'dayjs';
import PointApi from '@/sheep/api/member/point';
import {
resetPagination
} from '@/sheep/util';
const statusBarHeight = sheep.$platform.device.statusBarHeight * 2;
const userInfo = computed(() => sheep.$store('user').userInfo);
const sys_navBar = sheep.$platform.navbar;
const state = reactive({
currentTab: 0,
pagination: {
list: 0,
total: 0,
pageSize: 6,
pageNo: 1,
},
loadStatus: '',
date: [],
today: '',
isShow: 1
});
const tabMaps = [{
name: '全部',
value: 'all',
},
{
name: '收入',
value: 'true',
},
{
name: '支出',
value: 'false',
},
];
const dateFilterText = computed(() => {
if (state.date[0] === state.date[1]) {
return state.date[0];
} else {
return state.date.join('~');
}
});
async function getLogList() {
state.loadStatus = 'loading';
let {
code,
data
} = await PointApi.getPointRecordPage({
pageNo: state.pagination.pageNo,
pageSize: state.pagination.pageSize,
addStatus: state.currentTab > 0 ? tabMaps[state.currentTab].value : undefined,
'createTime[0]': state.date[0] + ' 00:00:00',
'createTime[1]': state.date[1] + ' 23:59:59',
});
if (code !== 0) {
return;
}
state.pagination.list = _.concat(state.pagination.list, data.list);
state.pagination.total = data.total;
state.loadStatus = state.pagination.list.length < state.pagination.total ? 'more' : 'noMore';
}
onLoad(() => {
state.today = dayjs().format('YYYY-MM-DD');
state.date = [state.today, state.today];
getLogList();
});
function onChange(e) {
state.currentTab = e.index;
resetPagination(state.pagination);
getLogList();
}
function onChangeTime(e) {
state.date[0] = e[0];
state.date[1] = e[e.length - 1];
resetPagination(state.pagination);
getLogList();
}
function onLoadMore() {
if (state.loadStatus === 'noMore') {
return;
}
state.pagination.pageNo++;
getLogList();
}
onReachBottom(() => {
onLoadMore();
});
</script>
<style lang="scss" scoped>
.icon-img {
background-color: white;
padding-top: 20px;
display: grid;
.list {
display: flex;
width: 89%;
margin: 0 auto;
padding: 20px 12px;
justify-content: space-around;
align-items: center;
border-radius: 10px;
background: rgba(255, 251, 242);
margin-bottom: 20px;
font-size: 16px;
color: rgba(198, 179, 114);
.img {
width: 40px;
height: 60px;
}
.c {
font-size: 18px;
color: rgba(198, 179, 114);
width: 50%;
font-weight: 700;
line-height: 26px;
}
.b {
border: 1px solid rgba(183, 175, 128);
padding: 4px 18px;
border-radius: 15px;
}
}
}
.header-box {
width: 100%;
// background: linear-gradient(180deg, var(--ui-BG-Main) 0%, var(--ui-BG-Main-gradient) 100%)
// no-repeat;
background: rgb(193, 145, 81);
background-size: 750rpx 100%;
padding: 0 0 0 0;
box-sizing: border-box;
.new-tab {
width: 100%;
display: flex;
justify-content: center;
margin-top: 22px;
.l {
display: flex;
align-items: center;
justify-content: center;
width: 45%;
padding: 13px 0;
background: rgba(247, 247, 247);
border-radius: 10px 0 0 0;
.img2 {
display: none;
}
.img,
.img2 {
width: 25px;
height: 25px;
margin-right: 5px;
}
&.on {
background: white;
.img2 {
display: block;
}
.img {
display: none;
}
.tx {
color: #c19151;
}
}
.tx {
font-size: 18px;
font-weight: 700;
}
}
.r {
border-radius: 0 10px 0 0;
}
}
.new-point {
display: flex;
justify-content: space-around;
width: 100%;
margin-top: 20px;
.l {
&>view {
color: white;
text-align: center;
}
.b {
margin-bottom: 7px;
font-size: 40rpx;
font-weight: 700;
}
.c {
font-size: 25rpx;
font-weight: 700;
}
}
}
.score-box {
height: 100%;
.all-num {
font-size: 50rpx;
font-weight: bold;
color: #fff;
font-family: OPPOSANS;
}
.all-title {
font-size: 26rpx;
font-weight: 500;
color: #fff;
}
.cicon-help-o {
color: #fff;
font-size: 28rpx;
}
}
}
// 筛选
.filter-box {
height: 114rpx;
background-color: $bg-page;
background: rgb(193, 145, 81);
.total-box {
font-size: 24rpx;
font-weight: 500;
color: $dark-9;
}
.date-btn {
background-color: $white;
line-height: 54rpx;
border-radius: 27rpx;
padding: 0 20rpx;
font-size: 24rpx;
font-weight: 500;
color: $dark-6;
.ss-seldate-icon {
font-size: 50rpx;
color: $dark-9;
}
}
}
.list-box {
.list-item {
background: #fff;
border-bottom: 1rpx solid #dfdfdf;
padding: 30rpx;
.name {
font-size: 28rpx;
font-weight: 500;
color: rgba(102, 102, 102, 1);
line-height: 28rpx;
margin-bottom: 20rpx;
}
.time {
font-size: 24rpx;
font-weight: 500;
color: rgba(196, 196, 196, 1);
line-height: 24px;
}
.add {
font-size: 30rpx;
font-weight: 500;
color: #e6b873;
}
.minus {
font-size: 30rpx;
font-weight: 500;
color: $dark-3;
}
}
}
</style>