// nova-werun/pages/home/ranking/index.js const Parse = getApp().Parse; const company = getApp().globalData.company; Page({ /** * 页面的初始数据 */ data: { //屏幕高度 statusBarHeight: 0, // 状态栏高度 screenHeight: 0, // 屏幕高度 customHeight: 0, // 自定义导航栏高度(如小程序右上角胶囊按钮) bottomNavHeight: 0, // 底部导航栏高度 contentHeight: 0, // 可用内容高度 contentHeight2: 0, contentpadding: 0, //顶部padding高度 // changetitle:'today', //本日排行 todayList:[], myList:[] }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { // 计算 const systemInfo = wx.getSystemInfoSync(); const statusBarHeight = systemInfo.statusBarHeight || 0; const screenHeight = systemInfo.screenHeight || 0; const custom = wx.getMenuButtonBoundingClientRect(); const customHeight = custom.height + 10 + 2 || 0; const bottomNavHeight = systemInfo.screenHeight - systemInfo.safeArea.bottom || 0; const contentpadding = (statusBarHeight + customHeight) * 750 / systemInfo.windowWidth; const contentHeight = (screenHeight - bottomNavHeight - statusBarHeight - customHeight) * 750 / systemInfo.windowWidth; this.setData({ statusBarHeight, screenHeight, customHeight, bottomNavHeight, contentpadding, contentHeight }); this.gettoday() }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { }, change() { // 使用数组来简化切换逻辑 const titles = ['today', 'weekdday', 'month']; const currentIndex = titles.indexOf(this.data.changetitle);//获取index const nextIndex = (currentIndex + 1) % titles.length; // 循环切换 this.setData({ changetitle: titles[nextIndex] }); if(this.data.changetitle=='today'){ this.gettoday() } if(this.data.changetitle=='weekdday'){ console.log('weekdday'); } if(this.data.changetitle=='month'){ console.log('month'); } }, // 获取本日排行 async gettoday() { const currentUser = Parse.User.current(); let ActivityDataquery = new Parse.Query('ActivityData'); 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); // 根据 steps 字段进行降序排序 ActivityDataquery.descending('steps'); ActivityDataquery.include('user'); try { let P = await ActivityDataquery.find(); let todayList = P.map(item => item.toJSON()); // 初始化 myList let myList = []; // 找到当前用户的数据并计算排名 todayList.forEach((item, index) => { if (item.user.objectId === currentUser.id) { myList.push({ ...item, // 包含用户数据 rank: index + 1 // 计算排名(index 从 0 开始,所以加 1) }); } }); // 更新页面数据 this.setData({ todayList, myList }); console.log(this.data.todayList, this.data.myList); } catch (error) { console.error('Error fetching today\'s data:', error); } }, })