| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329 | <!-- 我的积分 --><template>	<s-layout class="wallet-wrap" :bgStyle="{'backgroundColor':'#ffffff'}" title="我的积分" navbar="normal">		<view class="score-box bg-white ss-flex-col ss-row-center ss-col-center">			<view class="ss-m-b-40 value-box " @tap="showModel()">				<view class="all-title ss-m-r-8">#</view>			</view>			<view class="ss-m-b-40 ss-font-40">				<text class="all-title ss-m-r-8">#{{ points2point(userWallet.integralDO.currentQuota) }}</text>			</view>			<view class="ss-m-b-40 ss-font-32 text-center">				<view class="all-title ss-m-r-8 ss-m-b-10 ">					当前可兑换积分:#{{ points2point(userWallet.integralDO.currentQuota) }}</view>				<view class="all-title ss-m-r-8" style="color: var(--ui-BG-Main)" @tap="showQueModel()">					待确权积分:#{{points2point(userWallet.integralDO.freezeQuota)}}</view>			</view>			<view class="ss-m-b-80">				<view class="all-title ss-m-r-8 ss-m-b-10">可兑换积分得计算规则</view>				<view class="all-title ss-m-r-8 text-center">[点击查看说明]</view>			</view>			<view class="ss-m-b-40">				<view class="all-title ss-m-r-8">					<button class="btn ss-reset-button ui-Shadow-Main"						@tap="sheep.$router.go('/pages/user/wallet/scoreToMoney')">						兑换					</button>				</view>			</view>			<!-- <view class="ss-m-b-40">				<view class="all-title ss-m-r-8">					<button class="btn ss-reset-button ui-Shadow-Main">						代购NFR					</button>				</view>			</view> -->		</view>		<!-- 积分来源 -->		<su-popup :show="state.showModel" type="center" round="10" :isMaskClick="false" showClose @close="close">			<view class="model-box ss-flex-col">				<scroll-view class="list-box" style="width: 600rpx;" scroll-y="true" @touchmove.stop>					<view v-if="state.pagination.total > 0" style="padding: 20rpx 0;">						<view class="list-item ss-flex ss-col-center ss-row-between "							v-for="(item,index)  in state.pagination.list" :key="item.id" style="padding:0;padding: 20rpx 0;border-bottom: 1px solid #c4c4c4;">							<view class="ss-flex ss-col-center" style="width: 100%;">								<view class="ss-flex ss-m-t-10"									style="flex-direction: column;align-items: flex-start;width: 100%;">									<view class="name" style="width: 100%;"> {{ item.profitStatusName || '空' }} <text											style="float: right;" class="color-red" :class="{'color-green':item.amount < 0}">{{item.amount > 0 ? '+'+points2point(item.amount):+points2point(item.amount)}}</text></view>									<view class="time " style="width: 100%;">										{{sheep.$helper.timeFormat(item.createTime, 'yyyy-mm-dd hh:MM')}}										<text style="float: right;">余额:{{points2point(item.afterAmount)}}</text>									</view>								</view>							</view>						</view>					</view>					<s-empty v-else text="暂无数据" paddingTop="120" icon="/static/data-empty.png" />				</scroll-view>			</view>		</su-popup>				<!-- 积分确权 -->		<su-popup :show="state.showQueModel" type="center" round="10" :isMaskClick="false" showClose @close="close">			<view class="model-box ss-flex-col">				<scroll-view class="list-box" style="width: 600rpx;" scroll-y="true" @touchmove.stop>					<view v-if="state.pagination.total > 0" style="padding: 20rpx 0;">						<view class="list-item ss-flex ss-col-center ss-row-between "							v-for="(item,index)  in state.pagination.list" :key="item.id" style="padding:0;padding: 20rpx 0;border-bottom: 1px solid #c4c4c4;">							<view class="ss-flex ss-col-center" style="width: 100%;">								<view class="ss-flex ss-m-t-10"									style="flex-direction: column;align-items: flex-start;width: 100%;">									<view class="name" style="width: 100%;"> {{ item.profitStatusName || '空' }} <text											style="float: right;" class="color-red" :class="{'color-green':item.amount < 0}">{{item.amount > 0 ? '+'+points2point(item.amount):+points2point(item.amount)}}</text></view>									<view class="time " style="width: 100%;">										{{sheep.$helper.timeFormat(item.createTime, 'yyyy-mm-dd hh:MM')}}										<text style="float: right;">余额:{{points2point(item.afterAmount)}}</text>									</view>								</view>							</view>						</view>					</view>					<s-empty v-else text="暂无数据" paddingTop="120" icon="/static/data-empty.png" />				</scroll-view>			</view>		</su-popup>	</s-layout></template><script setup>	import sheep from '@/sheep';	import {		onLoad,		onReachBottom	} from '@dcloudio/uni-app';	import {		computed,		reactive	} from 'vue';	import {		points2point	} from '@/sheep/hooks/useGoods';	import _ from 'lodash';	import dayjs from 'dayjs';	import PointApi from '@/sheep/api/member/point';	import {		resetPagination	} from '@/sheep/util';	import ScoreApi from '@/sheep/api/distri/score';	const userWallet = computed(() => sheep.$store('user').userWallet);	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: [],			total: 0,			pageSize: 1000,			pageNo: 1,		},		loadStatus: '',		showModel:false,		showQueModel:false	});	function close(){		state.showModel = false;		state.showQueModel = false;	}	function showModel(){		getLogList(false);		state.showModel = true;			}	function showQueModel(){		getLogList(true);		state.showQueModel = true;			}	async function getLogList(isFreeze) {		state.loadStatus = 'loading';		// isFreeze为true是冻结积分 isFreeze为false是已拿到的积分		let {			code,			data		} = await ScoreApi.getScoreApi({			pageNo: state.pagination.pageNo,			pageSize: state.pagination.pageSize,			isFreeze: isFreeze		});		if (code !== 0) {			return;		}		state.pagination.list = data.list;		state.pagination.total = data.total;		state.loadStatus = state.pagination.list.length < state.pagination.total ? 'more' : 'noMore';	}	onLoad(() => {		// getLogList(true);		// getLogList(false);		console.log(state.pagination.list)	});	function onLoadMore() {		if (state.loadStatus === 'noMore') {			return;		}		state.pagination.pageNo++;		getLogList();	}	onReachBottom(() => {		onLoadMore();	});</script><style lang="scss" scoped>	.color-red{		color: red;	}	.color-green{		color: green;	}	.score-box {		margin: 20rpx;		border-radius: 20rpx;		padding-top: 100rpx;	}	.avatar-box {		width: 100rpx;		height: 100rpx;		border-radius: 50%;		overflow: hidden;		.avatar-img {			width: 100%;			height: 100%;		}	}	.value-box {		width: 100rpx;		height: 100rpx;		line-height: 100rpx;		text-align: center;		border-radius: 50%;		border: 2px solid #f6f6f6;	}	.btn {		width: 300rpx;		background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));		border-radius: 20rpx;		font-size: 30rpx;		font-weight: 500;		line-height: 80rpx;		color: $white;		position: relative;		z-index: 1;	}	.header-box {		width: 100%;		background: linear-gradient(180deg, var(--ui-BG-Main) 0%, var(--ui-BG-Main-gradient) 100%) no-repeat;		background-size: 750rpx 100%;		padding: 0 0 120rpx 0;		box-sizing: border-box;		.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;		.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 {		width: 500rpx;		height: 600rpx;		padding: 0 30rpx;		overflow-y: auto;		.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>
 |