Просмотр исходного кода

feat:我的积分接口对接(签到任务)

xyh 5 месяцев назад
Родитель
Сommit
c35607d799
3 измененных файлов с 48 добавлено и 26 удалено
  1. 18 0
      src/api/points.js
  2. 11 18
      src/points/components/sign-in/sign-in.vue
  3. 19 8
      src/points/home/index.vue

+ 18 - 0
src/api/points.js

@@ -8,6 +8,24 @@ export function getMyPoint(data) {
         data
     });
 }
+//周签到信息查询
+export function getSignPoint(data) {
+    return request({
+        method: 'get',
+        url: '/point/activity/sign/info',
+        data
+    });
+}
+
+//用户签到接口
+export function signPoint(data) {
+    return request({
+        method: 'get',
+        url: '/point/activity/sign',
+        data
+    });
+}
+
 // 积分商品列表
 export function getPointShopList(data) {
     // 模拟数据返回

+ 11 - 18
src/points/components/sign-in/sign-in.vue

@@ -5,15 +5,15 @@
     </view>
     <view class="sign-in-days">
       <view 
-        v-for="(day, index) in signDays" 
+        v-for="(day, index) in signData"
         :key="index"
         class="sign-day"
         @click="handleSign(day, index)"
       >
         <view class="sign-day-circle" :class="getSignCircleClass(day)">
-          <ImageItem src="/static/points/Signed.png" v-if="day.status === '1'"/>
+          <ImageItem src="/static/points/Signed.png" v-if="day.status == '1'"/>
           <ImageItem src="/static/points/notSigned.png" v-else/>
-          <text class="sign-day-number" v-if="day.status === ''">+{{ day.point }}</text>
+          <text class="sign-day-number" v-if="[0,2].includes(day.status)">+{{ day.points }}</text>
         </view>
         <text :class="day.status === '1' ? 'sign-day-text' : 'day-text'">{{ getSignText(day) }}</text>
       </view>
@@ -34,31 +34,24 @@ export default {
   },
   data() {
     return {
-      signDays: [
-        { day: '2.09', status: '1',point:'1' },
-        { day: '2.10', status: '0' ,point:'2' },
-        { day: '2.11', status: 'signed',point:'3' },
-        { day: '2.12', status: '',point:'1' },
-        { day: '2.13', status: '',point:'2' },
-        { day: '2.14', status: '',point:'5' },
-        { day: '2.15', status: '',point:'1' },
-      ]
+
     }
   },
   methods: {
     getSignCircleClass(day) {
       return {
-        'signed-circle': day.status === '1',
-        'select-circle': day.status === 'signed'
+        'signed-circle': day.status == '1',
+        'select-circle': day.status == '2'
       }
     },
     getSignText(day) {
-      if (day.status === '1') return '已签到'
-      if (day.status === '0') return '未签到'
-      return day.day
+      if (day.status == '1') return '已签到'
+      if (day.status == '3') return '未签到'
+      return day.date
     },
+    //0:未签, 1:已签, 2:今天未签到 , 3:断签,4:已过期
     handleSign(day, index) {
-      if (day.status === 'today') {
+      if (day.status == '2') {
         // 处理签到逻辑
         this.$emit('sign', index)
       }

+ 19 - 8
src/points/home/index.vue

@@ -4,7 +4,7 @@ import TaskList from '../components/task-list/task-list.vue'
 import ProductList from '../components/product-list/product-list.vue'
 import ImageItem from "@/components/swiper/components/image.vue";
 import { mapState, mapActions } from 'vuex';
-
+import {getSignPoint,signPoint} from '@/api/points'
 export default {
   components: {
     ImageItem,
@@ -26,13 +26,14 @@ export default {
   data() {
     return {
       // 滚动距离
-      scrollTop: 0
+      scrollTop: 0,
+      signData:[]
     }
   },
   mounted() {
     // 获取积分信息
     this.getPointsInfo();
-    
+    this.getSignList();
     // 在H5端添加滚动事件监听器
     if (process.env.UNI_PLATFORM === 'h5') {
       // 使用this.$el获取当前组件的根元素
@@ -95,13 +96,23 @@ export default {
         this.$refs.productRef.loadMore()
       }
     },
+    /** 签到领积分 */
+    async getSignList() {
+      const res = await getSignPoint({
+        cityName: uni.getStorageSync('selectCity'),
+        cityCode:uni.getStorageSync('selectCitycode'),
+      });
+      this.signData = res.date;
+    },
     handleSign(index) {
-      // 处理签到逻辑
-      console.log('签到:', index)
-      // 这里可以调用签到API
+      signPoint().then(res => {
+        if(res.code == 200){
+          this.signData[index].status = 1;
+        }
+      })
     },
+    /** 任务逻辑 */
     handleTask(task) {
-
       // 处理任务逻辑
       console.log('任务:', task)
       // 这里可以跳转到对应的任务页面
@@ -139,7 +150,7 @@ export default {
       <!-- 规则按钮 -->
       <view class="rule-btn">规则</view>
       <!-- 签到组件 -->
-      <SignIn @sign="handleSign" />
+      <SignIn @sign="handleSign" :signData="signData"/>
       <!-- 任务组件 -->
       <TaskList @task="handleTask" @moreTasks="handleMoreTasks"/>
     </view>