Explorar o código

feat:我的积分接口对接(做任务赚积分-首页)

xyh hai 5 meses
pai
achega
b54455e725
Modificáronse 3 ficheiros con 155 adicións e 52 borrados
  1. 13 0
      src/api/points.js
  2. 50 35
      src/points/components/task-list/task-list.vue
  3. 92 17
      src/points/home/index.vue

+ 13 - 0
src/api/points.js

@@ -26,6 +26,19 @@ export function signPoint(data) {
     });
     });
 }
 }
 
 
+//首页 - 任务列表
+export function getHomeTask(data) {
+    return request({
+        method: 'get',
+        url: '/user/point/activity/list',
+        data
+    });
+}
+
+
+
+
+
 // 积分商品列表
 // 积分商品列表
 export function getPointShopList(data) {
 export function getPointShopList(data) {
     // 模拟数据返回
     // 模拟数据返回

+ 50 - 35
src/points/components/task-list/task-list.vue

@@ -5,31 +5,29 @@
     </view>
     </view>
     <view class="task-list">
     <view class="task-list">
       <view 
       <view 
-        v-for="(task, index) in tasks" 
+        v-for="(task, index) in taskData"
         :key="index"
         :key="index"
-        class="task-item"
-        @click="handleTask(task, index)"
-      >
+        class="task-item">
         <view class="task-item-left">
         <view class="task-item-left">
-          <view class="task-icon" :class="task.iconClass">
-            <ImageItem src="/static/points/task_order.png"/>
-<!--            <ImageItem src="/static/points/task_shop.png"/>-->
-<!--            <ImageItem src="/static/points/task_trend.png"/>-->
-<!--            <ImageItem src="/static/points/task_wx.png"/>-->
-<!--            <ImageItem src="/static/points/task_account.png"/>-->
+          <view class="task-icon">
+            <ImageItem src="/static/points/task_order.png" v-if="task.taskName.includes('订单')"/>
+            <ImageItem src="/static/points/task_shop.png" v-if="task.taskName.includes('商户')"/>
+            <ImageItem src="/static/points/task_trend.png" v-if="task.taskName.includes('动态')"/>
+            <ImageItem src="/static/points/task_wx.png" v-if="task.taskName.includes('服务号')"/>
+            <ImageItem src="/static/points/task_account.png" v-if="task.taskName.includes('账号充值')"/>
           </view>
           </view>
 
 
           <view class="task-info">
           <view class="task-info">
-            <view class="task-name">{{ task.name }}</view>
+            <view class="task-name">{{ task.taskName }}</view>
             <view class="task-reward">
             <view class="task-reward">
               <ImageItem src="/static/points/point.png"/>
               <ImageItem src="/static/points/point.png"/>
-              <text>+{{ task.reward }}</text>
+              <text>+{{ task.rewardPoints }}</text>
             </view>
             </view>
           </view>
           </view>
         </view>
         </view>
         <view class="task-item-right">
         <view class="task-item-right">
-          <button class="task-btn" @click.stop="handleTask(task, index)">
-            {{ task.status === 'completed' ? '已完成' : '去完成' }}
+          <button :class="task.completedStatus == 1 ? 'task-btn' : 'no-task-btn'" @click.stop="handleTask(task, index)">
+            {{ task.completedStatus == 1 ? '已完成' : '去完成' }}
           </button>
           </button>
         </view>
         </view>
       </view>
       </view>
@@ -45,36 +43,42 @@ import ImageItem from "@/components/swiper/components/image.vue";
 
 
 export default {
 export default {
   components: {ImageItem},
   components: {ImageItem},
+  props: {
+    taskData: {
+      type: Array,
+      default: () => []
+    }
+  },
   data() {
   data() {
     return {
     return {
-      tasks: [
-        {
-          id: 1,
-          name: '完成一次订单',
-          reward: 20,
-          status: 'pending',
-          icon: 'order',
-          iconClass: 'order-icon'
-        },
-        {
-          id: 2,
-          name: '浏览动态',
-          reward: 20,
-          status: 'pending',
-          icon: 'browse',
-          iconClass: 'browse-icon'
-        }
-      ]
     }
     }
   },
   },
   methods: {
   methods: {
     handleTask(task, index) {
     handleTask(task, index) {
-      if (task.status !== 'completed') {
-        this.$emit('task', task)
+      if (task.completedStatus != 1) {
+        if(task.taskName.includes('订单')){
+          this.$emit('scrollToSearch');
+        }else if(task.taskName.includes('商户')){
+          uni.switchTab({
+            url: '/pages/identify/identify',
+          })
+        }else if(task.taskName.includes('动态')){
+          uni.switchTab({
+            url: '/pages/discover/discover',
+          })
+        }else if(task.taskName.includes('服务号')){
+
+        }else if(task.taskName.includes('账号充值')){
+          uni.navigateTo({
+            url: '/pages/my/pay'
+          });
+        }
       }
       }
     },
     },
     handleMoreTasks() {
     handleMoreTasks() {
-      this.$emit('moreTasks')
+      uni.navigateTo({
+        url: '/points/pointInfo/taskList'
+      });
     }
     }
   }
   }
 }
 }
@@ -151,6 +155,17 @@ export default {
       
       
       .task-item-right {
       .task-item-right {
         .task-btn {
         .task-btn {
+          height: 48rpx;
+          background: #EEEEEE;
+          border-radius: 98rpx;
+          font-family: PingFang SC, PingFang SC;
+          font-weight: 500;
+          font-size: 26rpx;
+          color: #999999;
+          line-height: 48rpx;
+          border: 1px solid #EEEEEE;
+        }
+        .no-task-btn{
           height: 48rpx;
           height: 48rpx;
           background: #03C1B8;
           background: #03C1B8;
           border-radius: 98rpx;
           border-radius: 98rpx;

+ 92 - 17
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 ProductList from '../components/product-list/product-list.vue'
 import ImageItem from "@/components/swiper/components/image.vue";
 import ImageItem from "@/components/swiper/components/image.vue";
 import { mapState, mapActions } from 'vuex';
 import { mapState, mapActions } from 'vuex';
-import {getSignPoint,signPoint} from '@/api/points'
+import {getSignPoint,signPoint,getHomeTask} from '@/api/points'
 export default {
 export default {
   components: {
   components: {
     ImageItem,
     ImageItem,
@@ -27,13 +27,15 @@ export default {
     return {
     return {
       // 滚动距离
       // 滚动距离
       scrollTop: 0,
       scrollTop: 0,
-      signData:[]
+      signData:[],
+      taskData:[]
     }
     }
   },
   },
   mounted() {
   mounted() {
     // 获取积分信息
     // 获取积分信息
     this.getPointsInfo();
     this.getPointsInfo();
     this.getSignList();
     this.getSignList();
+    this.getTaskList();
     // 在H5端添加滚动事件监听器
     // 在H5端添加滚动事件监听器
     if (process.env.UNI_PLATFORM === 'h5') {
     if (process.env.UNI_PLATFORM === 'h5') {
       // 使用this.$el获取当前组件的根元素
       // 使用this.$el获取当前组件的根元素
@@ -98,11 +100,52 @@ export default {
     },
     },
     /** 签到领积分 */
     /** 签到领积分 */
     async getSignList() {
     async getSignList() {
-      const res = await getSignPoint({
-        cityName: uni.getStorageSync('selectCity'),
-        cityCode:uni.getStorageSync('selectCitycode'),
-      });
-      this.signData = res.date;
+      // const res = await getSignPoint({
+      //   cityName: uni.getStorageSync('selectCity'),
+      //   cityCode:uni.getStorageSync('selectCitycode'),
+      // });
+      const res = {
+        data: [
+          {
+            "date": "01-30",
+            "points": 1,
+            "status": 1
+          },
+          {
+            "date": "02-01",
+            "points": 0,
+            "status": 0
+          },
+          {
+            "date": "02-02",
+            "points": 1,
+            "status": 1
+          },
+          {
+            "date": "02-03",
+            "points": 1,
+            "status": 0
+          },
+          {
+            "date": "02-04",
+            "points": 1,
+            "status": 0
+          },
+          {
+            "date": "02-05",
+            "points": 1,
+            "status": 0
+          },
+          {
+            "date": "02-06",
+            "points": 3,
+            "status": 0
+          }
+        ],
+        code: 200,
+        msg: "查询成功"
+      }
+      this.signData = res.data;
     },
     },
     handleSign(index) {
     handleSign(index) {
       signPoint().then(res => {
       signPoint().then(res => {
@@ -111,16 +154,36 @@ export default {
         }
         }
       })
       })
     },
     },
+
     /** 任务逻辑 */
     /** 任务逻辑 */
-    handleTask(task) {
-      // 处理任务逻辑
-      console.log('任务:', task)
-      // 这里可以跳转到对应的任务页面
-    },
-    handleMoreTasks() {
-      uni.navigateTo({
-        url: '/points/pointInfo/taskList'
-      });
+    async getTaskList() {
+      // const res = await getHomeTask({
+      //   cityName: uni.getStorageSync('selectCity'),
+      //   cityCode:uni.getStorageSync('selectCitycode'),
+      // });
+      const res = {
+        data: [
+          {
+            "activityId": 21,
+            "taskName": "浏览动态",
+            "rewardPoints": 10,
+            "completedCount": 1,
+            "triggerValue": 2,
+            "completedStatus": 0
+          },
+          {
+            "activityId": 22,
+            "taskName": "完成一次订单",
+            "rewardPoints": 20,
+            "completedCount": 3,
+            "triggerValue": 2,
+            "completedStatus": 1
+          }
+        ],
+        code: 200,
+        msg: "查询成功"
+      }
+      this.taskData = res.data;
     },
     },
     goBillPage(){
     goBillPage(){
       uni.navigateTo({
       uni.navigateTo({
@@ -131,6 +194,18 @@ export default {
       uni.navigateTo({
       uni.navigateTo({
         url: '/points/order/orderList'
         url: '/points/order/orderList'
       });
       });
+    },
+    // 滚动到搜索框
+    scrollToSearch() {
+      // 计算滚动距离,使搜索框触底顶
+      const homeEl = this.$el;
+      if (homeEl) {
+        // 滚动到商品列表的位置,使搜索框显示在顶部
+        const scrollDistance = 470; // 积分任务区域的高度
+        homeEl.scrollTop = scrollDistance;
+        // 更新滚动距离
+        this.scrollTop = scrollDistance;
+      }
     }
     }
   }
   }
 }
 }
@@ -152,7 +227,7 @@ export default {
       <!-- 签到组件 -->
       <!-- 签到组件 -->
       <SignIn @sign="handleSign" :signData="signData"/>
       <SignIn @sign="handleSign" :signData="signData"/>
       <!-- 任务组件 -->
       <!-- 任务组件 -->
-      <TaskList @task="handleTask" @moreTasks="handleMoreTasks"/>
+      <TaskList :taskData="taskData" @scrollToSearch="scrollToSearch"/>
     </view>
     </view>
     <!-- 商品列表组件 -->
     <!-- 商品列表组件 -->
     <ProductList ref="productRef" :scrollTop="scrollTop" />
     <ProductList ref="productRef" :scrollTop="scrollTop" />