index.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. // pages/match/details/index.js
  2. const app = getApp();
  3. Page({
  4. /**
  5. * 页面的初始数据
  6. */
  7. data: {
  8. appAssetsUrl2: app.appAssetsUrl2,
  9. matchDetail: {
  10. id: '',
  11. title: '2025年夏季创业大赛',
  12. author: '程洁',
  13. publishTime: '2025年08月13日 06:30',
  14. bannerImage: '',
  15. targetAudience: '本次创业大赛面向年满18周岁的中国公民或合法注册的企业团队,无论在校大学生群体,还是已步入社会的创业者,只要期待合要求的创业项目,均可报名参与。',
  16. description: '青年创业大赛是为怀揣梦想的年轻人打造的实践舞台,聚焦科技创新、社会服务、文化创意等领域。本届大赛将通过项目路演、专家评审、线上线下相结合的形式,为参赛者提供全方位的创业指导和资源对接。',
  17. registrationMethod: '参赛者可通过微信小程序、官方网站或线下指定地点进行报名。报名时需提交个人信息、项目计划书等相关材料,报名截止时间为2025年9月30日。',
  18. awards: '本次大赛设置一等奖、3名,奖金10万元;二等奖、5名,奖金5万元;三等奖、10名,奖金2万元。另设最佳创意奖、最佳商业价值奖等单项奖。'
  19. }
  20. },
  21. /**
  22. * 立即报名按钮点击事件
  23. */
  24. onRegisterTap() {
  25. const { matchDetail } = this.data;
  26. console.log('点击报名:', matchDetail.id);
  27. // TODO: 跳转到报名页面或调用报名接口
  28. wx.showToast({
  29. title: '正在跳转到报名页面...',
  30. icon: 'none',
  31. duration: 1500
  32. });
  33. // 示例:跳转到报名页面
  34. // wx.navigateTo({
  35. // url: `/pages/match/register?id=${matchDetail.id}`
  36. // });
  37. },
  38. /**
  39. * 分享赛事按钮点击事件
  40. */
  41. onShareTap() {
  42. const { matchDetail } = this.data;
  43. wx.showShareMenu({
  44. withShareTicket: true,
  45. menus: ['shareAppMessage', 'shareTimeline']
  46. });
  47. wx.showToast({
  48. title: '请点击右上角分享',
  49. icon: 'none',
  50. duration: 1500
  51. });
  52. },
  53. /**
  54. * 加载赛事详情数据
  55. */
  56. loadMatchDetail(matchId) {
  57. wx.showLoading({
  58. title: '加载中...'
  59. });
  60. // TODO: 调用API获取赛事详情
  61. // app._get(`match/detail/${matchId}`, {}, (res) => {
  62. // if (res.code === 0) {
  63. // this.setData({
  64. // matchDetail: res.data
  65. // });
  66. // }
  67. // wx.hideLoading();
  68. // });
  69. // 模拟API调用
  70. setTimeout(() => {
  71. wx.hideLoading();
  72. console.log('赛事详情加载完成:', matchId);
  73. }, 1000);
  74. },
  75. /**
  76. * 生命周期函数--监听页面加载
  77. */
  78. onLoad(options) {
  79. const { id } = options;
  80. if (id) {
  81. this.setData({
  82. 'matchDetail.id': id
  83. });
  84. this.loadMatchDetail(id);
  85. }
  86. },
  87. /**
  88. * 生命周期函数--监听页面初次渲染完成
  89. */
  90. onReady() {
  91. // 设置分享菜单
  92. wx.showShareMenu({
  93. withShareTicket: true,
  94. menus: ['shareAppMessage', 'shareTimeline']
  95. });
  96. },
  97. /**
  98. * 生命周期函数--监听页面显示
  99. */
  100. onShow() {
  101. // 页面显示时的操作
  102. },
  103. /**
  104. * 生命周期函数--监听页面隐藏
  105. */
  106. onHide() {
  107. // 页面隐藏时的操作
  108. },
  109. /**
  110. * 生命周期函数--监听页面卸载
  111. */
  112. onUnload() {
  113. // 页面卸载时的清理工作
  114. },
  115. /**
  116. * 页面相关事件处理函数--监听用户下拉动作
  117. */
  118. onPullDownRefresh() {
  119. // 下拉刷新重新加载数据
  120. const { matchDetail } = this.data;
  121. if (matchDetail.id) {
  122. this.loadMatchDetail(matchDetail.id);
  123. }
  124. wx.stopPullDownRefresh();
  125. },
  126. /**
  127. * 页面上拉触底事件的处理函数
  128. */
  129. onReachBottom() {
  130. // 详情页面不需要上拉加载
  131. },
  132. /**
  133. * 用户点击右上角分享
  134. */
  135. onShareAppMessage() {
  136. const { matchDetail } = this.data;
  137. return {
  138. title: matchDetail.title || '青云慧 - 创业赛事详情',
  139. path: `/pages/match/details/index?id=${matchDetail.id}`,
  140. imageUrl: matchDetail.bannerImage || '/assets/images/share/match-detail-share.jpg'
  141. };
  142. },
  143. /**
  144. * 用户点击右上角分享到朋友圈
  145. */
  146. onShareTimeline() {
  147. const { matchDetail } = this.data;
  148. return {
  149. title: matchDetail.title || '青云慧 - 创业赛事详情',
  150. query: `id=${matchDetail.id}`,
  151. imageUrl: matchDetail.bannerImage || '/assets/images/share/match-detail-share.jpg'
  152. };
  153. }
  154. });