// nova-werun/components/my/index.js const Parse = getApp().Parse; const company = getApp().globalData.company; const auth = require('../../service/auth.service') const uid = Parse?.User?.current()?.id let getSportData = require('../../service/getSportData') Component({ /** * 组件的属性列表 */ properties: { }, /** * 组件的初始数据 */ data: { //屏幕高度 statusBarHeight: 0, // 状态栏高度 screenHeight: 0, // 屏幕高度 customHeight: 0, // 自定义导航栏高度(如小程序右上角胶囊按钮) bottomNavHeight: 0, // 底部导航栏高度 contentHeight: 0, // 可用内容高度 contentpadding: 0, //顶部padding高度 navheight: 0, circlecount: 0, likesCount: 0, User1List: [], profile1List2: [], meChick:0,//当前用户累计签到天数 }, lifetimes: { detached: function () { // 在组件实例被从页面节点树移除时执行 }, attached: async function () { // 在组件实例进入页面节点树时执行 // 计算 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 - 50 - statusBarHeight - customHeight) * 750 / systemInfo.windowWidth; const navheight = (statusBarHeight + customHeight) * 750 / systemInfo.windowWidth; this.setData({ statusBarHeight, screenHeight: (screenHeight - 50 - bottomNavHeight) * 750 / systemInfo.windowWidth, customHeight, bottomNavHeight, contentHeight, contentpadding, navheight }); this.getcircle() this.getname() }, }, /** * 组件的方法列表 */ methods: { /**获取累计签到天数 */ async getMeChick() { let meChick = await getSportData.getChickCount(uid, 'ActivityData')||0 this.setData({ meChick }) }, gourl(e) { const url = e.currentTarget.dataset.url wx.navigateTo({ url: `${url}` // 目标页面的路径 }); }, gourl2(e) { const type = e.currentTarget.dataset.type const url = e.currentTarget.dataset.url wx.navigateTo({ url: `${url}?type=` + type // 目标页面的路径 }); }, //查全部朋友圈 // async getcircle() { // const currentUser = Parse.User.current(); // let Profilequery2 = new Parse.Query('Profile'); // Profilequery2.equalTo('company', company); // Profilequery2.equalTo('user', currentUser.id); // Profilequery2.equalTo('isCheck', true); // Profilequery2.notEqualTo('isDeleted', true) // let P2 = await Profilequery2.find(); // let profile1List2 = P2.map(item => item.toJSON()); // let Profilequery = new Parse.Query('AIMoment'); // Profilequery.equalTo('company', company); // Profilequery.equalTo('isVisible', true); // Profilequery.notEqualTo('isDeleted', true) // Profilequery.equalTo('profile', profile1List2[0].objectId); // Profilequery.descending('createdAt'); // let count = await Profilequery.count(); // if (count) { // this.setData({ // circlecount: count // }) // } // }, async getcircle() { const currentUser = Parse.User.current(); let Profilequery2 = new Parse.Query('Profile'); Profilequery2.equalTo('company', company); Profilequery2.equalTo('user', currentUser?.id); Profilequery2.equalTo('isCheck', true); Profilequery2.notEqualTo('isDeleted', true); Profilequery2.include('user'); Profilequery2.include('center'); Profilequery2.include('department'); let P2 = await Profilequery2.find(); let profile1List2 = P2.map(item => item.toJSON()); this.setData({ profile1List2, }) console.log('信息', this.data.profile1List2); let Profilequery = new Parse.Query('AIMoment'); Profilequery.equalTo('company', company); Profilequery.equalTo('isVisible', true); Profilequery.notEqualTo('isDeleted', true); // Profilequery.equalTo('profile', profile1List2[0].objectId); Profilequery.equalTo('user', currentUser.id); Profilequery.descending('createdAt'); let moments = await Profilequery.find(); // 查找所有动态 if (moments.length) { this.setData({ circlecount: moments.length }); // 获取所有动态的ID let momentIds = moments.map(moment => moment.id); // 创建对 AIMomentLike 表的查询 let LikeQuery = new Parse.Query('AIMomentLike'); LikeQuery.equalTo('isLiked', true); LikeQuery.equalTo('company', company); LikeQuery.notEqualTo('isDeleted', true); LikeQuery.containedIn('moment', momentIds); // 使用 containedIn 来一次性查询多个动态的点赞 // 统计点赞数量 let likesCount = await LikeQuery.count(); // 这里可以进一步处理 likesCount,按动态分配点赞数量 console.log(`总点赞数量: ${likesCount}`); this.setData({ likesCount, }) } }, //查看积分 async getpoint() { }, //获取头像名称 async getname() { const currentUser = Parse.User.current(); let Userquery = new Parse.Query('_User'); Userquery.equalTo('company', company); Userquery.equalTo('objectId', currentUser?.id); Userquery.notEqualTo('isDeleted', true) let P2 = await Userquery.find(); let User1List = P2.map(item => item.toJSON()); this.setData({ User1List }) console.log(this.data.User1List); }, /**退出登录 */ outLogin() { wx.showModal({ title: '提示', content: '你确定退出登录吗?', showCancel: true, cancelText: '取消', cancelColor: '#000000', confirmText: '确定', confirmColor: '#3CC51F', success: (result) => { if (result.confirm) { auth.logout() } }, fail: () => {}, complete: () => {} }); }, gourl(e) { const url = e.currentTarget.dataset.url wx.navigateTo({ url: `${url}` // 目标页面的路径 }); }, /**隐私协议 */ async getArticle() { let query = new Parse.Query("Article") query.equalTo("company", company) query.equalTo("type", 'home') query.equalTo("isEnabled", true) query.select("title", "attachment") let res = await query.first() if (res && res.id) { let r = res.toJSON() if (r.attachment && r.attachment.length > 0) { this.setData({ attachment: r }) } } }, //附件下载 async openFile() { await this.getArticle() let { attachment } = this.data let url = attachment.attachment[0].url, name = attachment.title const _this = this let rep = this.getFileType(url) wx.showLoading({ title: '加载中', }) wx.downloadFile({ url: url, //要预览的PDF的地址 filePath: wx.env.USER_DATA_PATH + `/${name}.${rep}`, success: function (res) { if (res.statusCode === 200) { //成功 var Path = res.filePath //返回的文件临时地址,用于后面打开本地预览所用 wx.openDocument({ filePath: Path, //要打开的文件路径 showMenu: true, success: function (res) { wx.hideLoading() }, fail: function (res) { wx.hideLoading() } }) } }, fail: function (res) { wx.hideLoading() }, }) }, //解析文件类型 getFileType(url) { let pdfReg = /^.+(\.pdf)$/ let txtReg = /^.+(\.txt)$/ let wordReg = /^.+(\.doc|\.docx)$/ let excelReg = /^.+(\.xls|\.xlsx)$/ let jpgPng = /^.+(\.png)$/ let jpgJpg = /^.+(\.jpg)$/ let jpgJpeg = /^.+(\.jpeg)$/ if (pdfReg.test(url)) { return 'pdf' } if (txtReg.test(url)) { return 'txt' } if (wordReg.test(url)) { return 'doc' } if (excelReg.test(url)) { return 'xls' } if (jpgPng.test(url)) { return 'png' } if (jpgJpg.test(url)) { return 'jpg' } if (jpgJpeg.test(url)) { return 'jpeg' } }, } })