Explorar o código

用户积分查看

jiayubo hai 3 meses
pai
achega
e0d1995755

+ 1 - 1
api/qrcode.js

@@ -15,7 +15,7 @@ export function getUnlimitedQRCode(params) {
       // line_color: data.line_color || { r: 0, g: 0, b: 0 }, // 使用 rgb 设置颜色
       // is_hyaline: data.is_hyaline || false, // 是否需要透明底色
       referrerType: 1,
-      referrerId: 130,
+      referrerId: 111,
       page: 'pages/index/index',
       scene: '1234567890',
     },

+ 1 - 1
components/Client/new_file.vue

@@ -2,7 +2,7 @@
 	<view>
 		<template>
 			<view class="Wrapper-grid">
-				<view class="serve-title client-title" v-if="userType == 2">注册专区</view>
+				<view class="serve-title client-title" v-if="userType == 2"></view>
 				<up-grid :border="false" col="3">
 					<up-grid-item v-for="(item, index) in serveiceList" :key="index" @click="handleGridClick(item)">
 						<view class="grid-box">

+ 1 - 1
components/QRCode/index.vue

@@ -59,7 +59,7 @@ const generateQRCode = async () => {
       // line_color: props.lineColor,
       // is_hyaline: props.isHyaline
       referrerType: 1,
-      referrerId: 130,
+      referrerId: 111,
       page: 'pages/index/index',
     })
 

+ 74 - 93
pages/index.vue

@@ -10,53 +10,30 @@
     <view class="home-box" :style="`margin-top: ${globalData.navBarHeight}px `">
       <view class="home-main">
         <view class="custom-swiper" v-if="list3.length > 0">
-          <up-swiper
-            :list="list3"
-            indicator
-            indicatorMode="line"
-            circular
-            :height="'554rpx'"
-          ></up-swiper>
+          <up-swiper :list="list3" indicator indicatorMode="line" circular :height="'554rpx'"></up-swiper>
         </view>
       </view>
-      <up-loadmore
-        style="margin-top: 40rpx"
-        :status="loadmoreInfo.status"
-        :loadmoreText="loadmoreInfo.loadingText"
-        :loadingText="loadmoreInfo.loadmoreText"
-        :nomoreText="loadmoreInfo.nomoreText"
-        @loadmore="handleLoadmore"
-        v-if="userType == 1"
-      />
+      <up-loadmore style="margin-top: 40rpx" :status="loadmoreInfo.status" :loadmoreText="loadmoreInfo.loadingText"
+        :loadingText="loadmoreInfo.loadmoreText" :nomoreText="loadmoreInfo.nomoreText" @loadmore="handleLoadmore"
+        v-if="userType == 1" />
     </view>
 
     <view class="Wrapper">
-       <view class="home-g-bgc">
+      <view class="home-g-bgc">
         <Client />
       </view>
 
-        <view class="home-grid2">
-          <view class="hot-swiper" v-if="ValueZone.length > 0">
-            <up-swiper
-              :list="ValueZone"
-              :indicator="false"
-              indicatorMode="line"
-              circular
-            ></up-swiper>
-          </view>
-        </view>
-        
-        <view class="home-ranking home-grid2">
-          <ServIces
-            :leftList="leftList"
-            :rightList="rightList"
-            v-if="userType == 1"
-          ></ServIces>
-          <RankingList v-if="userType === 2" />
-        </view>
+      <view class="hot-swiper" v-if="ValueZone.length > 0">
+        <up-swiper :list="ValueZone" :indicator="false" indicatorMode="line" circular></up-swiper>
+      </view>
+
+      <view class="home-ranking">
+        <ServIces :leftList="leftList" :rightList="rightList" v-if="userType == 1"></ServIces>
+        <RankingList v-if="userType === 2" />
+      </view>
 
     </view>
-    <custom-tab-bar page="home" />
+    <custom-tab-bar page="home" class="customTabBar" />
   </view>
 </template>
 
@@ -288,69 +265,78 @@ onMounted(async () => {
   }
 })
 
-onUnload(() => {})
+onUnload(() => { })
 </script>
 
 <style scoped lang="scss">
+.customTabBar {
+  position: fixed;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  z-index: 9999;
+}
 
+.home-banner {
+  display: flex;
+  align-items: flex-end;
+  justify-content: space-between;
+  padding: 20rpx 16rpx;
+  color: #fff;
+  // position: fixed;
+  // top: 0px;
+  // left: 0px;
+  // right: 0;
+  z-index: 99;
+  // bottom: 150rpx;
+}
 
-  .home-banner {
-    display: flex;
-    align-items: flex-end;
-    justify-content: space-between;
-    // background: rgba(255, 255, 255, 1);
-    // background-color: #ED806A;
-    // background-color: rgba(221, 60, 62, 1);
-    // box-shadow: 0rpx 0rpx 0rpx rgba(0, 0, 0, 0), 0rpx 0rpx 0rpx rgba(0, 0, 0, 0),
-    //   0rpx 2.08rpx 4.17rpx rgba(0, 0, 0, 0.05);
-    padding: 20rpx 16rpx;
-    color: #fff;
-    // position: fixed;
-    top: 0px;
-    left: 0px;
-    right: 0;
-    z-index: 99;
-    bottom: 150rpx;
-  }
-
-  .home-box {
-    padding-bottom: 150rpx;
-  }
+.home-box {
+  padding-bottom: 150rpx;
+}
 
-  .home-banner-left {
-    display: flex;
-    align-items: center;
-    width: 30%;
-    z-index: 110;
-  }
+.home-banner-left {
+  display: flex;
+  align-items: center;
+  width: 30%;
+  z-index: 110;
+}
 
-  .Wrapper{
-    background: rgba(255, 255, 255, 1);
-      // background: red;
-    // position: absolute;
-    // top: 309px;
-    // left: 0;
-    // right: 0;
-    // bottom: 0;
-    border-radius: 20rpx 20rpx 0rpx 0rpx;
-    z-index: 130;
+.Wrapper {
+  background: rgba(255, 255, 255, 1);
+  // background: red;
+  position: absolute;
+  top: 309px;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  border-radius: 20rpx 20rpx 0rpx 0rpx;
+  z-index: 130;
 }
 
-  .home-main {
-    padding: 12px 16px 0;
-    z-index: 99;
-  }
+.home-main {
+  padding: 12px 16px 0;
+  z-index: 99;
+}
 
-  .home-ranking {
-    padding: 24rpx 16px;
-  }
+.home-ranking {
+  padding: 24rpx 16px;
+}
 
 .hot-box-title {
+  margin-top: 24rpx;
   padding: 0 32rpx;
 }
 
 .hot-swiper {
-  padding: 24rpx 32rpx 0;
+  // padding: 24rpx 32rpx 0;
+  width: 704rpx;
+  height: 180rpx;
+  border-radius: 16rpx;
+  background: linear-gradient(180deg, #FEF9ED 0%, #FFF9F3 100%);
+  margin-top: 40rpx;
+  margin-right: 23rpx;
+  margin-left: 23rpx;
 }
 
 .hot-box {
@@ -365,20 +351,15 @@ onUnload(() => {})
   }
 }
 
-.home-grid{
+.home-grid {
   margin-top: 220rpx;
 }
 
-// .home-grid2 {
-//   margin-bottom: 32rpx;
-//   background: #fff;
-//   padding: 12px 0;
-//   border-radius: 8px;
-// }
+
 
 .home-g-bgc {
-  background: #f7f7f7;
-  padding: 24rpx;
+  background: rgba(255, 255, 255, 1);
+  padding: -2rpx;
 }
 
 .custom-swiper {

+ 1 - 1
pages/login.vue

@@ -69,7 +69,7 @@ const loginForm = reactive({
   code: '',
   uuid: '',
   referrerType: 1,
-  referrerId: 129,
+  referrerId: 111,
 })
 
 const checkboxValue = ref(false)

+ 89 - 8
pages_mine/pages/integral/index.vue

@@ -14,8 +14,22 @@
       </view>
       <view class="integral-rate-row">
         <view class="integral-rate">1积分=1人民币</view>
-        <view class="integral-desc">收益说明</view>
+        <view class="integral-desc" @click="open" style="cursor: pointer;">收益说明
+          <up-icon name="question-circle"></up-icon>
+        </view>
       </view>
+
+      <up-popup :show="show" mode="center" @close="close" @open="open">
+        <view class="popup-content">
+          <view class="popup-title">收益说明</view>
+          <view class="popup-text">用户积分:用户通过平台生成的二维码进行分享,以拉取新用户或志愿者(服务者)并获得相应积分。</view>
+          <view class="popup-text">积分规则:拉取一个新用户可获得1分,拉取一个新志愿者(服务者)可获得5分。</view>
+          <view class="popup-text">积分兑换:所获积分可以兑换等价值的商品或购买各类居家服务。</view>
+          <view class="popup-text">积分生效:用户积分的兑换,以所拉取用户在平台上产生交易为准,即产生了交易的用户或志愿者(服务者)其相应的积分才可实现兑换。</view>
+          <view class="popup-close" @click="close">关闭</view>
+        </view>
+      </up-popup>
+
     </view>
 
     <!-- 积分明细 -->
@@ -24,8 +38,8 @@
       <view class="integral-detail-list">
         <view class="integral-detail-item">
           <view class="integral-detail-type">用户推广积分</view>
-          <view class="integral-detail-date">{{ Data.createTime }}</view>
-          <view class="integral-detail-value add">{{ Data.changePoint }}积分</view>
+          <!-- <view class="integral-detail-date">{{ Data.createTime }}</view> -->
+          <!-- <view class="integral-detail-value add">{{ Data.changePoint }}积分</view> -->
         </view>
         <!-- 可循环渲染多条明细 -->
       </view>
@@ -37,16 +51,32 @@
 </template>
 
 <script setup>
-import { onMounted ,ref} from 'vue'
-import { getUserPointInfoData ,coreUserPointChangeData} from '@/api/userPoints'
+import { onMounted, ref } from 'vue'
+import { getUserPointInfoData, coreUserPointChangeData } from '@/api/userPoints'
 
 const List = ref({})//可用积分
 const Data = ref({})//积分明细
+
+// 创建响应式数据  
+const show = ref(false);  
+  
+// 定义方法  
+function open() {  
+  show.value = true;
+  console.log('弹窗打开', show.value);
+}  
+  
+function close() {  
+  show.value = false;
+  console.log('弹窗关闭', show.value);
+}  
+
+
 // 可用积分
 const getData = async () => {
   const params = {
     totalPoint: 0,//总积分
-    availablePoint:0,//可兑换积分
+    availablePoint: 0,//可兑换积分
   }
   const res = await getUserPointInfoData(params)
   List.value = res.data
@@ -76,57 +106,72 @@ onMounted(() => {
   min-height: 100vh;
   padding-bottom: 120rpx;
 }
+
 .integral-header {
   background: #f8f8f8;
   border-radius: 20rpx;
   padding: 32rpx 24rpx 24rpx 24rpx;
   margin-bottom: 32rpx;
 }
+
 .integral-header-row {
   display: flex;
   justify-content: space-between;
   margin-bottom: 16rpx;
 }
+
 .integral-header-item {
   flex: 1;
   text-align: center;
 }
+
 .integral-header-label {
   color: #888;
   font-size: 28rpx;
   margin-bottom: 8rpx;
 }
+
 .integral-header-value {
   color: #333;
   font-size: 40rpx;
   font-weight: bold;
 }
+
 .integral-rate-row {
   display: flex;
   justify-content: space-between;
   align-items: center;
 }
+
 .integral-rate {
   color: #888;
   font-size: 24rpx;
 }
+
 .integral-desc {
   color: #1a73e8;
   font-size: 24rpx;
+  display: flex;
+  align-items: center;
+  margin-left: 20rpx;
 }
+
 .integral-detail-section {
   margin-bottom: 32rpx;
 }
+
 .integral-detail-title {
   font-size: 32rpx;
   font-weight: bold;
   margin-bottom: 16rpx;
 }
+
 .integral-detail-list {
   background: #f8f8f8;
   border-radius: 16rpx;
   padding: 16rpx;
 }
+
 .integral-detail-item {
   display: flex;
   align-items: center;
@@ -135,30 +180,37 @@ onMounted(() => {
   border-bottom: 1rpx solid #eee;
   font-size: 28rpx;
 }
+
 .integral-detail-item:last-child {
   border-bottom: none;
 }
+
 .integral-detail-type {
   color: #333;
   flex: 2;
 }
+
 .integral-detail-date {
   color: #aaa;
   flex: 3;
   font-size: 24rpx;
   text-align: center;
 }
+
 .integral-detail-value {
   flex: 1;
   text-align: right;
   font-weight: bold;
 }
+
 .integral-detail-value.add {
   color: #1a73e8;
 }
+
 .integral-detail-value.minus {
   color: #e81a1a;
 }
+
 .integral-tip-footer {
   position: fixed;
   left: 0;
@@ -169,8 +221,37 @@ onMounted(() => {
   font-size: 24rpx;
   text-align: center;
   padding: 24rpx 0 32rpx 0;
-  box-shadow: 0 -4rpx 24rpx rgba(0,0,0,0.04);
+  box-shadow: 0 -4rpx 24rpx rgba(0, 0, 0, 0.04);
   z-index: 99;
 }
-</style>
 
+.popup-content {
+  background: #fff;
+  padding: 30rpx;
+  border-radius: 12rpx;
+  width: 600rpx;
+}
+
+.popup-title {
+  font-size: 32rpx;
+  font-weight: bold;
+  text-align: center;
+  margin-bottom: 30rpx;
+}
+
+.popup-text {
+  font-size: 28rpx;
+  color: #333;
+  line-height: 1.6;
+  margin-bottom: 20rpx;
+}
+
+.popup-close {
+  text-align: center;
+  color: #1a73e8;
+  font-size: 28rpx;
+  margin-top: 30rpx;
+  padding: 20rpx;
+  border-top: 1rpx solid #eee;
+}
+</style>