Pārlūkot izejas kodu

home-statistics page

邹能昇 1 nedēļu atpakaļ
vecāks
revīzija
e04959b48e

+ 98 - 29
nova-werun/pages/home/statistics/index.js

@@ -20,7 +20,14 @@ Page({
         //
         day: '7',
         target: '',
-        sharList:[]
+        sharList: [],
+        //生涯数据
+        stardate: '',
+        daysDifference: "",
+        totalSteps: 0,
+        totalDistance: 0,
+        totalBurnCalories: 0,
+        totalsportDate:0
     },
 
     /**
@@ -47,6 +54,7 @@ Page({
         });
         this.gettarget()
         this.order()
+        this.allorder()
     },
 
     /**
@@ -128,32 +136,93 @@ Page({
             console.log('当前步数', this.data.target);
         }
     },
-        //获取当天运动数据
-        async order() {
-            const currentUser = Parse.User.current();
-            let ActivityDataquery = new Parse.Query('ActivityData');
-            ActivityDataquery.equalTo('user', currentUser.id);
-            ActivityDataquery.equalTo('company', company);
-            ActivityDataquery.equalTo('type', 'today');
-            ActivityDataquery.notEqualTo('isDeleted', true);
-    
-            // 获取今天的日期
-            const today = new Date();
-            const todayStart = new Date(today.getFullYear(), today.getMonth(), today.getDate()); // 今天的开始时间
-            const todayEnd = new Date(todayStart);
-            todayEnd.setHours(23, 59, 59, 999); // 今天的结束时间
-    
-            // 在查询条件中添加对 createdAt 的限制
-            ActivityDataquery.greaterThanOrEqualTo('createdAt', todayStart);
-            ActivityDataquery.lessThanOrEqualTo('createdAt', todayEnd);
-            ActivityDataquery.include('user');
-    
-            let r = await ActivityDataquery.find();
-            let sharList = r.map(item => item.toJSON());
-    
-            this.setData({
-                sharList
-            });
-            console.log(this.data.sharList);
-        },
+    //获取当天运动数据
+    async order() {
+        const currentUser = Parse.User.current();
+        let ActivityDataquery = new Parse.Query('ActivityData');
+        ActivityDataquery.equalTo('user', currentUser.id);
+        ActivityDataquery.equalTo('company', company);
+        ActivityDataquery.equalTo('type', 'today');
+        ActivityDataquery.notEqualTo('isDeleted', true);
+
+        // 获取今天的日期
+        const today = new Date();
+        const todayStart = new Date(today.getFullYear(), today.getMonth(), today.getDate()); // 今天的开始时间
+        const todayEnd = new Date(todayStart);
+        todayEnd.setHours(23, 59, 59, 999); // 今天的结束时间
+
+        // 在查询条件中添加对 createdAt 的限制
+        ActivityDataquery.greaterThanOrEqualTo('createdAt', todayStart);
+        ActivityDataquery.lessThanOrEqualTo('createdAt', todayEnd);
+        ActivityDataquery.include('user');
+
+        let r = await ActivityDataquery.find();
+        let sharList = r.map(item => item.toJSON());
+
+        this.setData({
+            sharList
+        });
+        console.log(this.data.sharList);
+    },
+    //获取生涯运动数据
+    async allorder() {
+        const currentUser = Parse.User.current();
+        let ActivityDataquery = new Parse.Query('ActivityData');
+        ActivityDataquery.equalTo('user', currentUser.id);
+        ActivityDataquery.equalTo('company', company);
+        ActivityDataquery.equalTo('type', 'today');
+        ActivityDataquery.notEqualTo('isDeleted', true);
+
+        let r = await ActivityDataquery.find();
+        let allList = r.map(item => item.toJSON());
+
+        // 根据 createdAt 日期从以前到现在排列
+        allList.sort((a, b) => new Date(a.createdAt) - new Date(b.createdAt));
+
+        // 获取最早的 createdAt 日期
+        const earliestDate = new Date(allList[0].createdAt);
+
+        // 格式化为 YYYY年MM月DD日
+        const formattedDate = `${earliestDate.getFullYear()}年${String(earliestDate.getMonth() + 1).padStart(2, '0')}月${String(earliestDate.getDate()).padStart(2, '0')}日`;
+
+        // 计算从最早日期到今天的天数
+        const today = new Date();
+
+        // 清零时间部分
+        earliestDate.setHours(0, 0, 0, 0); // 将最早日期的时间部分清零
+        today.setHours(0, 0, 0, 0); // 将今天的时间部分清零
+
+        // 计算日期差值
+        const timeDifference = today - earliestDate; // 时间差(毫秒)
+        const daysDifference = Math.floor(timeDifference / (1000 * 60 * 60 * 24)); // 转换为天数
+
+        // 计算 steps、distance 和 burnCalories 的总和
+        let totalSteps = 0;
+        let totalDistance = 0;
+        let totalBurnCalories = 0;
+        let totalsportDate = 0;
+
+        allList.forEach(item => {
+            totalSteps += Number(item.steps) || 0; // 确保为数字类型,避免 NaN
+            totalDistance += Number(item.distance) || 0; // 确保为数字类型,避免 NaN
+            totalBurnCalories += Number(item.burnCalories) || 0; // 确保为数字类型,避免 NaN
+            totalsportDate += Number(item.sportDate) || 0;
+        });
+
+        // 将总运动时间转换为天、小时、分钟
+        const days = Math.floor(totalsportDate / (60 * 24)); // 转换为天数
+        const hours = Math.floor((totalsportDate % (60 * 24)) / 60); // 剩余小时
+        const minutes = totalsportDate % 60; // 剩余分钟
+        // 设置 stardate 和 daysDifference
+        this.setData({
+            stardate: formattedDate,
+            daysDifference: daysDifference,
+            totalSteps,
+            totalDistance,
+            totalBurnCalories,
+            totalsportDate: `${days}天 ${hours}小时 ${minutes}分钟` // 格式化为字符串
+        });
+
+        console.log(allList, this.data.totalsportDate);
+    }
 })

+ 6 - 6
nova-werun/pages/home/statistics/index.wxml

@@ -59,22 +59,22 @@
             <view>|</view>
             生涯合计
         </view>
-        <view class="card1-in">自2024年08月17日开始,共31天,您走了</view>
+        <view class="card1-in">自{{stardate}}开始,共{{daysDifference}}天,您走了</view>
         <view class="card1-card">
-            <view class="card1card-number">620000</view>
+            <view class="card1card-number">{{totalSteps}}</view>
             <view class="card1card-text">步,相当于</view>
         </view>
         <view class="card1-card2">
             <view class="card1-c2c">
-                <view class="card1-c2cnum">6666666</view>
+                <view class="card1-c2cnum">{{totalBurnCalories}}</view>
                 <view class="card1-c2ctex">卡路里</view>
             </view>
             <view class="card1-c2c">
-                <view class="card1-c2cnum">15天17小时</view>
+                <view class="card1-c2cnum">{{totalsportDate}}</view>
                 <view class="card1-c2ctex">时间</view>
             </view>
             <view class="card1-c2c">
-                <view class="card1-c2cnum">666</view>
+                <view class="card1-c2cnum">{{totalDistance}}</view>
                 <view class="card1-c2ctex">公里</view>
             </view>
 
@@ -86,7 +86,7 @@
                 <view>|</view>
                 生涯合计
             </view>
-            <view class="card2-title2">今日17777步</view>
+            <view class="card2-title2">今日{{sharList[0].steps}}步</view>
         </view>
         <view class="card2-bottom">
             <view class="card2-bottom1">今日步数已超过</view>