index.js 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. // nova-werun/pages/home/signin/index.js
  2. const Parse = getApp().Parse;
  3. const company = getApp().globalData.company;
  4. Page({
  5. /**
  6. * 页面的初始数据
  7. */
  8. data: {
  9. //屏幕高度
  10. statusBarHeight: 0, // 状态栏高度
  11. screenHeight: 0, // 屏幕高度
  12. customHeight: 0, // 自定义导航栏高度(如小程序右上角胶囊按钮)
  13. bottomNavHeight: 0, // 底部导航栏高度
  14. contentHeight: 0, // 可用内容高度
  15. contentHeight2: 0,
  16. contentpadding: 0, //顶部padding高度
  17. //是否打卡
  18. issigin: false,
  19. images: [
  20. 'https://tse2-mm.cn.bing.net/th/id/OIP-C.kACuwmhGcHKV4G4Og9AFqgHaLG?rs=1&pid=ImgDetMain',
  21. 'https://tse1-mm.cn.bing.net/th/id/OIP-C.LYrbU3wnasLo4nvoAqs_HQHaLH?rs=1&pid=ImgDetMain',
  22. 'https://tse3-mm.cn.bing.net/th/id/OIP-C.KKzj-pCKvzmWJ9MU5pE5KwHaKq?rs=1&pid=ImgDetMain',
  23. 'https://ts1.cn.mm.bing.net/th/id/R-C.d8333a26a5494dfe1dc88e9fdd04fb31?rik=08fpnYZSbboHfQ&riu=http%3a%2f%2fpic.ibaotu.com%2fspiders%2f33817-59a6262d3ff70.jpg&ehk=fKs2FTTgk2k0kqet%2fVO%2bAS3D0Q6zlNyUPmT8UE%2bvpdY%3d&risl=&pid=ImgRaw&r=0',
  24. 'https://pic.nximg.cn/file/20230420/12106414_122949747127_2.jpg'
  25. ],
  26. randomImage: '',
  27. accumulateChink:0,
  28. continuousChink:0
  29. },
  30. /**
  31. * 生命周期函数--监听页面加载
  32. */
  33. onLoad: function (options) {
  34. // 计算
  35. const systemInfo = wx.getSystemInfoSync();
  36. const statusBarHeight = systemInfo.statusBarHeight || 0;
  37. const screenHeight = systemInfo.screenHeight || 0;
  38. const custom = wx.getMenuButtonBoundingClientRect();
  39. const customHeight = custom.height + 10 + 2 || 0;
  40. const bottomNavHeight = systemInfo.screenHeight - systemInfo.safeArea.bottom || 0;
  41. const contentpadding = (statusBarHeight + customHeight) * 750 / systemInfo.windowWidth;
  42. const contentHeight = (screenHeight - bottomNavHeight - statusBarHeight - customHeight) * 750 / systemInfo.windowWidth;
  43. this.setData({
  44. statusBarHeight,
  45. screenHeight,
  46. customHeight,
  47. bottomNavHeight,
  48. contentpadding,
  49. contentHeight
  50. });
  51. this.showRandomImage()
  52. this.order()
  53. this.accumulateChink()
  54. this.continuousChink()
  55. },
  56. /**
  57. * 生命周期函数--监听页面初次渲染完成
  58. */
  59. onReady: function () {
  60. },
  61. /**
  62. * 生命周期函数--监听页面显示
  63. */
  64. onShow: function () {
  65. },
  66. /**
  67. * 生命周期函数--监听页面隐藏
  68. */
  69. onHide: function () {
  70. },
  71. /**
  72. * 生命周期函数--监听页面卸载
  73. */
  74. onUnload: function () {
  75. },
  76. /**
  77. * 页面相关事件处理函数--监听用户下拉动作
  78. */
  79. onPullDownRefresh: function () {
  80. },
  81. /**
  82. * 页面上拉触底事件的处理函数
  83. */
  84. onReachBottom: function () {
  85. },
  86. /**
  87. * 用户点击右上角分享
  88. */
  89. onShareAppMessage: function () {
  90. },
  91. //检查当天是否签到
  92. async order() {
  93. const currentUser = Parse.User.current();
  94. let EventLogquery = new Parse.Query('EventLog');
  95. EventLogquery.equalTo('user', currentUser.id);
  96. EventLogquery.equalTo('company', company);
  97. EventLogquery.notEqualTo('isDeleted', true)
  98. // 获取今天的日期
  99. const today = new Date();
  100. const todayStart = new Date(today.getFullYear(), today.getMonth(), today.getDate()); // 今天的开始时间
  101. const todayEnd = new Date(todayStart);
  102. todayEnd.setHours(23, 59, 59, 999); // 今天的结束时间
  103. // 在查询条件中添加对 createdAt 的限制
  104. EventLogquery.greaterThanOrEqualTo('createdAt', todayStart);
  105. EventLogquery.lessThanOrEqualTo('createdAt', todayEnd);
  106. let P = await EventLogquery.first();
  107. if (P) {
  108. this.setData({
  109. issigin: true
  110. })
  111. return;
  112. }
  113. },
  114. async submit() {
  115. const currentUser = Parse.User.current();
  116. let EventLogquery = new Parse.Query('EventLog');
  117. EventLogquery.equalTo('user', currentUser.id);
  118. EventLogquery.equalTo('company', company);
  119. EventLogquery.notEqualTo('isDeleted', true)
  120. // 获取今天的日期
  121. const today = new Date();
  122. const todayStart = new Date(today.getFullYear(), today.getMonth(), today.getDate()); // 今天的开始时间
  123. const todayEnd = new Date(todayStart);
  124. todayEnd.setHours(23, 59, 59, 999); // 今天的结束时间
  125. // 在查询条件中添加对 createdAt 的限制
  126. EventLogquery.greaterThanOrEqualTo('createdAt', todayStart);
  127. EventLogquery.lessThanOrEqualTo('createdAt', todayEnd);
  128. let P = await EventLogquery.first();
  129. if (P) {
  130. this.setData({
  131. issigin: true
  132. })
  133. console.log('今日已打卡');
  134. return;
  135. } else {
  136. const currentUser = Parse.User.current();
  137. let userquery = new Parse.Query('_User');
  138. userquery.equalTo('company', company);
  139. userquery.equalTo('objectId', currentUser.id);
  140. userquery.notEqualTo('isDeleted', true)
  141. let user = await userquery.first();
  142. let companyPointer = Parse.Object.extend('Company').createWithoutData(company);
  143. let EventLog = new Parse.Object('EventLog');
  144. EventLog.set('points', 10)
  145. EventLog.set('company', companyPointer);
  146. EventLog.set('user', user.toPointer());
  147. try {
  148. let saveDate = await EventLog.save();
  149. console.log(saveDate);
  150. this.accumulateChink()
  151. this.setData({
  152. issigin: true
  153. })
  154. console.log("打卡成功");
  155. } catch (error) {
  156. console.error("保存数据时出现错误:", error);
  157. }
  158. }
  159. },
  160. //随机展示图片
  161. showRandomImage: function () {
  162. const randomIndex = Math.floor(Math.random() * this.data.images.length);
  163. this.setData({
  164. randomImage: this.data.images[randomIndex]
  165. });
  166. },
  167. //积累打卡
  168. async accumulateChink(){
  169. const currentUser = Parse.User.current();
  170. let EventLogquery = new Parse.Query('EventLog');
  171. EventLogquery.equalTo('user', currentUser.id);
  172. EventLogquery.equalTo('company', company);
  173. EventLogquery.notEqualTo('isDeleted', true)
  174. let P = await EventLogquery.find();
  175. let chickList = P.map(item => item.toJSON());
  176. this.setData({
  177. accumulateChink:chickList.length
  178. })
  179. },
  180. //连续打卡
  181. async continuousChink() {
  182. }
  183. })