From 9fb9e0b5b7c2664552f06a683fe1204525d8fd4e Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期三, 11 二月 2026 15:59:56 +0800
Subject: [PATCH] 合并
---
mini-program/pagesA/pages/shop_points/shop_points.vue | 329 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 329 insertions(+), 0 deletions(-)
diff --git a/mini-program/pagesA/pages/shop_points/shop_points.vue b/mini-program/pagesA/pages/shop_points/shop_points.vue
new file mode 100644
index 0000000..15ae9ff
--- /dev/null
+++ b/mini-program/pagesA/pages/shop_points/shop_points.vue
@@ -0,0 +1,329 @@
+<template>
+ <view class="points">
+
+ <view class="info-rule" @click="jumpService">绉垎瑙勫垯</view>
+ <view class="head" :style="{ backgroundImage: 'url(' + backImage + ')', height: 'calc(' + (navHeight + statusbarHeight + 'px + 376rpx)') }">
+ <view :style="{ width: '100%', height: navHeight + statusbarHeight + 'px' }"></view>
+ <view class="head-bar" :style="{ height: navHeight + statusbarHeight + 'px' , backgroundImage: 'url(' + backHeadImage + ')'}">
+ <view :style="{ width: '100%', height: statusbarHeight + 'px' }"></view>
+ <view class="head-bar-nav" :style="{ height: navHeight + 'px' }" >
+ <image src="/static/icon/nav_ic_bac@2x.png" mode="widthFix" @click="jumpBack"></image>
+ <text>鎴戠殑绉垎</text>
+ <image src="/static/icon/nav_ic_bac@2x.png" mode="widthFix" style="opacity: 0;"></image>
+ </view>
+ </view>
+ <view class="info">
+ <view class="info-a">褰撳墠绉垎</view>
+ <view class="info-b">{{countData.surplusIntegral || 0}}</view>
+ <view class="info-c">
+ <image src="/static/icon/ic_tixing@2x.png" mode="widthFix"></image>
+ <text>{{countData.expiredIntegral || 0}}绉垎鍗冲皢杩囨湡</text>
+ </view>
+ </view>
+ <view class="list">
+ <view class="list-title">
+ <view class="list-title-name">绉垎鏄庣粏</view>
+ <view class="list-title-cate">
+ <view :class="'list-title-cate-row '+(active ==0?'active':'')" @click="changeActive(0)" >鍏ㄩ儴</view>
+ <view :class="'list-title-cate-row '+(active ==1?'active':'')" @click="changeActive(1)">鑾峰緱</view>
+ <view :class="'list-title-cate-row '+(active ==2?'active':'')" @click="changeActive(2)">鎵i櫎</view>
+ </view>
+ </view>
+ <view class="list-item" v-for="(item, index) in dataList" :key="index">
+ <view class="list-item-left">
+ <text>{{item.content || ''}}</text>
+ <text>{{item.createDate || ''}}</text>
+ </view>
+ <view class="list-item-num" :style="item.type==1?'color:red':''">{{item.type==1?'-':'+'}}{{item.num||0}}</view>
+ </view>
+ <view v-if="!hasNext" class="nomore">宸插姞杞藉叏閮�</view>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ import { mapState } from 'vuex'
+ export default {
+ computed: {
+ ...mapState(['navHeight', 'statusbarHeight','shopInfo', 'shopToken'])
+ },
+ data() {
+ return {
+ currentPage:1,
+ total:0,
+ shop:{},
+ active:0,
+ hasNext:true,
+ dataList:[],
+ countData:{},
+ backHeadImage:'',
+ backImage: require('@/static/images/jifen_bg@2x.png')
+ };
+ },
+ onReachBottom(){
+ this.getDataList( );
+ },
+ onPageScroll(e){
+ console.log('鍏ㄥ眬椤甸潰婊氬姩', e);
+ if(e.scrollTop >= 20){
+ this.backHeadImage = this.backImage
+ }else{
+ this.backHeadImage = ''
+ }
+ },
+ onShow() {
+ this.shop ={}
+ this.checkShopLogin()
+ this.active=0
+ this.shop = this.shopInfo || {}
+ this.getCountData()
+ this.getFirstPageData()
+ },
+ methods:{
+ getFirstPageData(){
+ this.currentPage = 0
+ this.hasNext=true
+ this.total=0
+ this.dataList=[]
+ this.getDataList()
+ },
+ changeActive(index){
+ this.active=index
+ this.getFirstPageData()
+ },
+ showRule(){
+ console.log("==================================",this.showPhone)
+ },
+ async getCountData(){
+ var that =this
+ let res = await that.$u.api.getIntegralData({ userType: 1, tokenType:1 })
+ if (res.code === 200) {
+ this.countData = res.data
+ }
+ },
+ async getDataList(){
+ if(this.loading || !this.hasNext){
+ return
+ }
+ this.loading=true
+ this.currentPage = this.currentPage+1
+ if(this.currentPage == 1){
+ this.hasNext =true
+ this.dataList=[]
+ }
+ var that =this
+ let res = await that.$u.api.findIntegralRecordPage({
+ capacity:10,
+ model: {
+ type: this.active === 1?0:(this.active===2?1:''),
+ userType: 1
+ },
+ page:this.currentPage
+ });
+ console.log(res)
+ if (res.code === 200 ) {
+ if ( res.data && res.data.page ===this.currentPage) {
+ res.data.records = res.data.records||[]
+ that.dataList.push(...res.data.records)
+ that.total=res.data.total
+ if( this.currentPage >= res.data.pageCount||0){
+ that.hasNext=false
+ }else{
+ that.hasNext=true
+ }
+ }
+ }
+ this.loading=false
+ },
+ jumpBack(){
+ uni.navigateBack({ delta: 1 });
+ },
+ jumpService() {
+ uni.navigateTo({
+ url: '/pagesA/pages/rich-text-page/rich-text-page?flag='+2
+ })
+ },
+ checkShopLogin(){
+ var that =this
+ if( this.shopInfo ==null || this.shopInfo.id==null || this.shopToken==null || this.shopToken==''){
+ uni.navigateTo({
+ url: '/pages/login/login'
+ })
+ }
+ }
+ }
+ }
+</script>
+
+<style>
+ page {
+ background-color: #F9F9FB;
+ }
+</style>
+<style lang="scss" scoped>
+ .points {
+ width: 100%;
+ .info-rule{
+ float: right;
+ margin-top:214rpx;
+ width: 140rpx;
+ // height: 52rpx;
+ padding: 5px 0;
+ background: #FFFFFF;
+ border-radius: 36rpx 0rpx 0rpx 36rpx;
+
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 400;
+ font-size: 24rpx;
+ color: #333333;
+ line-height: 34rpx;
+ text-align: center;
+ font-style: normal;
+ }
+ .head {
+ width: 100%;
+ height: 424rpx;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+ background-repeat: no-repeat;
+ background-size: 100% 100%;
+
+ .list {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ background: #FFFFFF;
+ border-radius: 16rpx;
+ margin-top: 30rpx;
+ padding: 34rpx 30rpx;
+ padding-bottom: 60rpx;
+ box-sizing: border-box;
+ .list-title {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .list-title-name {
+ font-weight: 600;
+ font-size: 32rpx;
+ color: #222222;
+ }
+ .active {
+ color: #004096 !important;
+ background: #F8F9FB !important;
+ }
+ .list-title-cate {
+ display: flex;
+ align-items: center;
+ .list-title-cate-row {
+ width: 96rpx;
+ height: 56rpx;
+ line-height: 56rpx;
+ text-align: center;
+ background: #F8F9FB;
+ border-radius: 28rpx;
+ font-weight: 400;
+ font-size: 24rpx;
+ color: #333333;
+ margin-left: 20rpx;
+ }
+ }
+ }
+ .list-item {
+ width: 100%;
+ height: 154rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ border-bottom: 1rpx solid #E5E5E5;
+ .list-item-left {
+ flex: 1;
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-evenly;
+ text {
+ &:nth-child(1) {
+ font-weight: 400;
+ font-size: 28rpx;
+ color: #222222;
+ }
+ &:nth-child(2) {
+ font-weight: 400;
+ font-size: 24rpx;
+ color: #999999;
+ }
+ }
+ }
+ .list-item-num {
+ flex-shrink: 0;
+ margin-left: 30rpx;
+ font-weight: 500;
+ font-size: 32rpx;
+ color: #222222;
+ }
+ }
+ }
+ .info {
+ width: 100%;
+ padding: 30rpx 0;
+ box-sizing: border-box;
+ .info-a {
+ font-weight: 400;
+ font-size: 26rpx;
+ color: #333333;
+ }
+ .info-b {
+ font-weight: bold;
+ font-size: 72rpx;
+ color: #222222;
+ }
+ .info-c {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ margin-top: 20rpx;
+ image {
+ width: 28rpx;
+ height: 28rpx;
+ margin-right: 10rpx;
+ }
+ text {
+ font-weight: 400;
+ font-size: 24rpx;
+ color: #777777;
+ }
+ }
+ }
+
+ .head-bar {
+ width: 100%;
+ position: fixed;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+ top: 0;
+ left: 0;
+ z-index: 999;
+
+ .head-bar-nav {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ image {
+ width: 44rpx;
+ height: 44rpx;
+ }
+
+ text {
+ font-weight: 500;
+ font-size: 32rpx;
+ color: #111111;
+ }
+ }
+ }
+ }
+ }
+</style>
\ No newline at end of file
--
Gitblit v1.9.3