Ver código fonte

feat: 活动统计接口对接

xyh 5 meses atrás
pai
commit
70562f983b

+ 15 - 32
src/api/points/rules_api.js

@@ -28,7 +28,6 @@ export function getActivityList(query) {
  * @param {Object} query - 查询参数对象,包含查询条件
  */
 export function getActivityById(query) {
-  console.log(query)
   return request({
     url: '/point/activity/'+query.id,
     method: 'get',
@@ -59,41 +58,25 @@ export function addActivity(data) {
   })
 }
 
+/**
+ * 编辑积分活动时效
+ * @param {Object} data - 查询参数对象,包含查询条件
+ */
+export function editValidity(data) {
+  return request({
+    url: '/point/activity/validity',
+    method: 'put',
+    data: data
+  })
+}
 
 /**
  * 获取单一活动统计信息
  * @param {Object} query - 查询参数对象,包含查询条件
  */
 export function getActivityStatistics(query) {
-  let res = {
-    "data": {
-      "basicInfo": {
-        name: "2029签到活动第一期",
-        type: "活动任务",
-        time: "2026-03-01 - 2027-03-01",
-        city: "太原"
-      },
-      "overviewData": {
-        totalPeople: 1280,
-        completedPeople: 885,
-        completedTimes: 3420,
-        issuedPoints: 46800
-      },
-      "detailData": [
-        {taskName: "完成订单", completedPeople: 885, completedTimes: 3420, issuedPoints: 46800},
-        {taskName: "充值任务", completedPeople: 885, completedTimes: 3420, issuedPoints: 46800},
-        {taskName: "分享服务号", completedPeople: 885, completedTimes: 3420, issuedPoints: 46800},
-        {taskName: "浏览动态", completedPeople: 885, completedTimes: 3420, issuedPoints: 46800},
-        {taskName: "浏览商户", completedPeople: 885, completedTimes: 3420, issuedPoints: 46800}
-      ]
-    },
-    "code": 200,
-    "msg": "查询成功"
-  }
-  return new Promise((resolve, reject) => {
-    // 模拟网络延迟 1000ms
-    setTimeout(() => {
-      resolve(res)
-    }, 1000);
-  });
+  return request({
+    url: '/point/activity/stat/'+query.id,
+    method: 'get',
+  })
 }

+ 36 - 3
src/views/pointsManagement/pointsRules/compontents/Activity_editBox.vue

@@ -390,6 +390,7 @@ export default {
         }
         this.form.isPermanent = this.form.isPermanent?.toString();
         this.form.breakRule = this.form.breakRule?.toString();
+        this.form.cityCode = this.form.cityCode?.toString();
         this.form.dateRange = [this.form.startTime, this.form.endTime];
       }
       this.pointsActivity = true;
@@ -497,10 +498,42 @@ export default {
       this.validateForm(() => {
         this.form = this.DateRange(this.form,this.form.dateRange || [],['startTime','endTime'])
         let paramsUrl = ['add','copy'].includes(this.type) ? addActivity : submitActivity;
-          paramsUrl({
-          ...this.form,
+        let params = {
+          id: this.form.id || '',
+          name:this.form.name,
+          description:this.form.description,
+          cityCode:this.form.cityCode,
+          activityType:this.form.activityType,
+          timeConfig:{
+            isPermanent:this.form.isPermanent,
+            startTime:this.form.startTime,
+            endTime:this.form.endTime,
+          },
           status:type
-        }).then(response => {
+        };
+        if(params.activityType == 0){
+          let signTaskDTO = {
+              basePoints: this.form.basePoints,
+              breakRule: this.form.breakRule,
+              signRewardList: this.form.signRewardList,
+            }
+          params = {...params,signTaskDTO:signTaskDTO}
+        }else{
+          let task = this.form.activityTaskList.map((item) => {
+              return {
+                taskName:item.taskName,
+                triggerValue:item.triggerValue,
+                rewardPoints:item.rewardPoints,
+                frequencyLimitValue:item.frequencyLimitValue,
+                status:item.status,
+              }
+            })
+          params = {...params,task:task}
+        }
+        if(['add','copy'].includes(this.type)){
+          delete params.id;
+        }
+          paramsUrl(params).then(response => {
           this.$message.success('草稿已保存');
           this.pointsActivity = false;
         })

+ 21 - 14
src/views/pointsManagement/pointsRules/compontents/Activity_statistics.vue

@@ -25,7 +25,7 @@
             <span class="info-label">活动类型:</span>
             <span class="info-value">
               <el-skeleton v-if="loading" :rows="1" animated />
-              <template v-else>{{ basicInfo.type || '--'  }}</template>
+              <template v-else>{{ basicInfo.activityName || '--'  }}</template>
             </span>
           </div>
           <div class="info-item">
@@ -33,7 +33,7 @@
             <span class="info-label">活动时间:</span>
             <span class="info-value">
               <el-skeleton v-if="loading" :rows="1" animated />
-              <template v-else>{{ basicInfo.time || '--' }}</template>
+              <template v-else> {{ parseTime(basicInfo.startTime, '{y}-{m}-{d}') }} - {{ parseTime(basicInfo.endTime, '{y}-{m}-{d}') }}</template>
             </span>
           </div>
           <div class="info-item">
@@ -41,7 +41,7 @@
             <span class="info-label">活动城市:</span>
             <span class="info-value">
               <el-skeleton v-if="loading" :rows="1" animated />
-              <template v-else>{{ basicInfo.city || '--'  }}</template>
+              <template v-else>{{ basicInfo.cityName || '--'  }}</template>
             </span>
           </div>
         </el-card>
@@ -55,7 +55,7 @@
                 <div class="overview-label">参与总人数</div>
                 <div class="overview-value">
                   <el-skeleton v-if="loading" :rows="1" animated />
-                  <template v-else>{{ overviewData.totalPeople || '--'  }}</template>
+                  <template v-else>{{ overviewData.totalParticipants }}</template>
                 </div>
               </el-card>
             </el-col>
@@ -65,7 +65,7 @@
                 <div class="overview-label">完成总人数</div>
                 <div class="overview-value">
                   <el-skeleton v-if="loading" :rows="1" animated />
-                  <template v-else>{{ overviewData.completedPeople || '--'  }}</template>
+                  <template v-else>{{ overviewData.totalCompleted }}</template>
                 </div>
               </el-card>
             </el-col>
@@ -75,7 +75,7 @@
                 <div class="overview-label">任务完成人次</div>
                 <div class="overview-value">
                   <el-skeleton v-if="loading" :rows="1" animated />
-                  <template v-else>{{ overviewData.completedTimes || '--'  }}</template>
+                  <template v-else>{{ overviewData.totalTaskTimes }}</template>
                 </div>
               </el-card>
             </el-col>
@@ -85,7 +85,7 @@
                 <div class="overview-label">已发放积分</div>
                 <div class="overview-value">
                   <el-skeleton v-if="loading" :rows="1" animated />
-                  <template v-else>{{ overviewData.issuedPoints || '--'  }}</template>
+                  <template v-else>{{ overviewData.totalPoints }}</template>
                 </div>
               </el-card>
             </el-col>
@@ -97,9 +97,9 @@
           <el-card shadow="hover">
             <el-table v-if="!loading" :data="detailData" style="width: 100%">
               <el-table-column prop="taskName" label="任务名称" width="180"></el-table-column>
-              <el-table-column prop="completedPeople" label="完成人数" width="120" align="center"></el-table-column>
+              <el-table-column prop="completedCount" label="完成人数" width="120" align="center"></el-table-column>
               <el-table-column prop="completedTimes" label="完成人次" width="120" align="center"></el-table-column>
-              <el-table-column prop="issuedPoints" label="发放积分" align="center"></el-table-column>
+              <el-table-column prop="points" label="发放积分" align="center"></el-table-column>
             </el-table>
             <el-skeleton v-else :rows="5" animated style="width: 100%"></el-skeleton>
           </el-card>
@@ -113,6 +113,7 @@
 import { getActivityStatistics } from "@/api/points/rules_api";
 export default {
   name: "Activity_statistics",
+  props: ['activityTypeOption', 'cityOptions'],
   data() {
     return {
       drawerVisible: false,
@@ -135,12 +136,18 @@ export default {
     },
     async getActivityInfo(id) {
       try {
-        const res = await getActivityStatistics(id)
+        const res = await getActivityStatistics({id})
         if (res.data) {
-          let {basicInfo, overviewData, detailData} = res.data;
-          this.basicInfo = basicInfo || {};
-          this.overviewData = overviewData || {};
-          this.detailData = detailData || [];
+          let {dataOverview, taskDetailList} = res.data;
+          this.basicInfo = {
+            name:res.data.name,
+            activityName: this.activityTypeOption.filter(item=>item.value == res.data.activityType)[0].label,
+            startTime: res.data.startTime,
+            endTime: res.data.endTime,
+            cityName: this.cityOptions.filter(item=>item.value == res.data.cityCode)[0].label,
+          };
+          this.overviewData = dataOverview;
+          this.detailData = taskDetailList;
         }
       } catch (error) {
         this.$message.error('获取数据失败,请稍后重试');

+ 3 - 1
src/views/pointsManagement/pointsRules/index.vue

@@ -77,7 +77,9 @@
     <!-- 积分时效 -->
     <expiration-points ref="expirationPointsRef" />
     <!-- 活动统计 -->
-    <activity-statistics ref="activityStatisticsRef" />
+    <activity-statistics ref="activityStatisticsRef"
+                         :activityTypeOption="activityTypeOption"
+                         :cityOptions="cityOptions"/>
     <!-- 活动编辑 -->
     <activity-edit-box ref="activityEditBoxRef"
                        :activityTypeOption="activityTypeOption"