fragmentsList.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395
  1. // pages/fragmentsList/fragmentsList.js
  2. var net = require('../../utils/net.js')
  3. var url = require('../../utils/url.js')
  4. var common = require('../../utils/common.js')
  5. var lock = require('../../utils/lock.js')
  6. const app = getApp()
  7. // const fragments = [
  8. // { id: 0, fragment: '胎教期', star: 1, consume: '100万' },
  9. // { id: 1, fragment: '幼儿园', star: 4, consume: '200万' },
  10. // { id: 2, fragment: '小学', star: 6, consume: '500万' },
  11. // { id: 3, fragment: '初中', star: 3, consume: '900万' },
  12. // { id: 4, fragment: '高中', star: 3, consume: '1100万' },
  13. // { id: 5, fragment: '本科', star: 4, consume: '1500万' },
  14. // { id: 6, fragment: '硕士', star: 3, consume: '2000万' },
  15. // { id: 7, fragment: '博士', star: 3, consume: '2700万' },
  16. // { id: 8, fragment: '讲师', star: 5, consume: '3000万' },
  17. // { id: 9, fragment: '教授', star: 5, consume: '1亿' },
  18. // { id: 10, fragment: '院士', star: 0, consume: '3亿', top: true }]
  19. Page({
  20. /**
  21. * 页面的初始数据
  22. */
  23. data: {
  24. isFirstLoad: true,
  25. rankType: '1',
  26. rankInfo: {},
  27. rankStar: {},
  28. currentFragment: 0,//从0开始,跟接口文档不一致
  29. currentStarNum:0,
  30. isCurrentFragment: false,//是否在当前段位pk
  31. fragmentsList: [],
  32. allFragmentsNum: 0,//一共有多少个段位
  33. scrollBottomId: '',//列表最后一个id
  34. formId: '',
  35. dialogBrainLack: {
  36. hidden: true
  37. },
  38. dialogRank: {
  39. hidden: true
  40. },
  41. },
  42. showRankDialog: function () {
  43. this.setData({
  44. dialogRank: {
  45. hidden: false,
  46. headImg: '../../resource/head_rank.png'
  47. }
  48. })
  49. },
  50. hideRankDialog: function () {
  51. this.setData({
  52. dialogRank: { hidden: true }
  53. })
  54. },
  55. hideBrainLackDialog: function () {
  56. this.data.dialogBrainLack.hidden = true
  57. this.setData({
  58. dialogBrainLack: this.data.dialogBrainLack
  59. })
  60. },
  61. showNoBrainLackDialog: function () {
  62. this.setData({
  63. dialogBrainLack: {
  64. hidden: false,
  65. title: '脑力值不足',
  66. subtitle: '无法参加排位赛、冲刺院士荣誉并争夺至尊大奖哦',
  67. button: '赚更多脑力值',
  68. tap: 'goToTask',
  69. }
  70. })
  71. },
  72. showShareBrainLackDialog: function (cell) {
  73. this.setData({
  74. dialogBrainLack: {
  75. hidden: false,
  76. title: '哎呀,你的脑力值不足',
  77. subtitle: '无法参加排位赛、冲刺院士荣誉并争夺至尊大奖哦',
  78. button: '分享到群 赚取' + common.unit(cell) + '脑力值',
  79. openType: 'share'
  80. },
  81. })
  82. },
  83. goToTask: function (e) {
  84. if (lock.lockTapDelay()) {
  85. return
  86. }
  87. this.hideBrainLackDialog()
  88. wx.navigateTo({
  89. url: '../task/task'
  90. })
  91. },
  92. goToPK: function (e) {
  93. if (lock.lockTapDelay()) {
  94. return
  95. }
  96. if (app.globalData.timeDifference + new Date().getTime() > this.data.rankInfo.endTime) {
  97. this.showRankDialog()
  98. return
  99. }
  100. var rankDan = Number(e.currentTarget.id.substring(1)) + 1
  101. var fragment = rankDan - 1
  102. var cell = app.server.config.rankDanList[fragment].cellRankCost
  103. if (app.globalData.user.cell < cell) {
  104. var flag1 = this.data.rankType == '1' && app.server.rankStarMap.main.shareRankCellLack < app.server.config.shareRankCellLackMax
  105. var flag2 = this.data.rankType == '2' && app.server.rankStarMap.topic.shareRankCellLack < app.server.config.shareRankCellLackMax
  106. app.log(app.server.rankStarMap.topic.shareRankPkResult)
  107. app.log(app.server.config.shareRankPkResultMax)
  108. if (flag1 || flag2) {
  109. var c = app.server.config.rankDanList[this.data.currentFragment].cellRankCost
  110. this.showShareBrainLackDialog(c)
  111. } else {
  112. this.showNoBrainLackDialog()
  113. }
  114. return
  115. }
  116. if (rankDan - 1 == this.data.currentFragment) {
  117. this.data.isCurrentFragment = true
  118. } else {
  119. this.data.isCurrentFragment = false
  120. }
  121. wx.navigateTo({
  122. url: '/pages/pk/pk?type=1&rankDan=' + rankDan + '&rankGameId=' + this.data.rankInfo.gameId + '&rankType=' + this.data.rankType
  123. })
  124. },
  125. goToRecord: function () {
  126. wx.navigateTo({
  127. url: '../fragmentsRecord/fragmentsRecord?rankType=' + this.data.rankType,
  128. })
  129. },
  130. joinFragments: function () {
  131. net.connect({
  132. url: url.host + url.join_fragments,
  133. data: {
  134. formId: this.data.formId ,
  135. gameId: this.data.rankInfo.gameId
  136. },
  137. method: 'POST',
  138. success: res => {
  139. this.data.rankStar.rank = res.data.data.rank
  140. this.refreshGlobalRank()
  141. this.setData({
  142. rankStar: this.data.rankStar
  143. })
  144. },
  145. })
  146. },
  147. refreshGlobalRank: function () {
  148. switch (this.data.rankType) {
  149. case '1': {
  150. app.server.rankStarMap.main = this.data.rankStar
  151. break
  152. }
  153. case '2': {
  154. app.server.rankStarMap.topic = this.data.rankStar
  155. break
  156. }
  157. default: break
  158. }
  159. },
  160. goToPoster: function () {
  161. wx.previewImage({
  162. urls: [this.data.rankInfo.poster],
  163. })
  164. },
  165. confirmFragmentsList: function () {
  166. if (this.data.currentFragment + 3 >= this.data.allFragmentsNum) {
  167. this.data.fragmentsList = app.server.config.rankDanList.slice(0)
  168. var { ...item } = this.data.fragmentsList[this.data.allFragmentsNum - 1]
  169. item.star = 0
  170. this.data.fragmentsList[this.data.allFragmentsNum - 1] = item
  171. } else {
  172. this.data.fragmentsList = app.server.config.rankDanList.slice(0, this.data.currentFragment + 3)
  173. }
  174. },
  175. getFragmentsResult: function (result) {
  176. if (this.data.isCurrentFragment) {
  177. if (result) {
  178. this.data.rankStar.starC++
  179. var r = common.starToFragment(app.server.config.rankDanList, this.data.rankStar.starC)
  180. this.data.currentFragment = r[0]
  181. this.data.currentStarNum = r[1]
  182. } else {
  183. var r = common.decreaseStar(app.server.config.rankDanList, this.data.rankStar.starC)
  184. this.data.currentFragment = r[0]
  185. this.data.currentStarNum = r[1]
  186. this.data.rankStar.starC = r[2]
  187. }
  188. this.refreshGlobalRank()
  189. }
  190. },
  191. /**
  192. * 生命周期函数--监听页面加载
  193. */
  194. //rankType:1是排位赛,2是专场赛
  195. onLoad: function (options) {
  196. app.log(app.server)
  197. if (options.rankType) {
  198. this.data.rankType = options.rankType
  199. }
  200. var title
  201. switch (this.data.rankType) {
  202. case '1': {
  203. this.data.rankInfo = app.globalData.rankInfo
  204. this.data.rankStar = app.server.rankStarMap.main
  205. title = '排位赛'
  206. break
  207. }
  208. case '2': {
  209. this.data.rankInfo = app.globalData.rankOneInfo
  210. this.data.rankStar = app.server.rankStarMap.topic
  211. title = '专场排位赛'
  212. break
  213. }
  214. default: break
  215. }
  216. wx.setNavigationBarTitle({
  217. title: title,
  218. })
  219. app.log(this.data.rankInfo)
  220. // app.log(app.globalData.rankOneInfo)
  221. wx.hideShareMenu({})
  222. if (options.formId) {
  223. this.data.formId = options.formId
  224. }
  225. var f = common.starToFragment(app.server.config.rankDanList, this.data.rankStar.starC)
  226. this.data.currentFragment = f[0]
  227. this.data.currentStarNum = f[1]
  228. this.data.allFragmentsNum = app.server.config.rankDanList.length
  229. this.confirmFragmentsList()
  230. this.data.scrollBottomId = 'a' + this.data.currentFragment
  231. app.log(this.data.scrollBottomId)
  232. this.setData({
  233. rankStar: this.data.rankStar,
  234. rankInfo: this.data.rankInfo,
  235. fragmentsList: this.data.fragmentsList,
  236. currentFragment: this.data.currentFragment,
  237. currentStarNum: this.data.currentStarNum,
  238. allFragmentsNum: this.data.allFragmentsNum,
  239. scrollBottomId: this.data.scrollBottomId
  240. })
  241. },
  242. /**
  243. * 生命周期函数--监听页面初次渲染完成
  244. */
  245. onReady: function () {
  246. },
  247. /**
  248. * 生命周期函数--监听页面显示
  249. */
  250. onShow: function () {
  251. if (this.data.isFirstLoad) {
  252. //陈总叫每次掉的
  253. this.joinFragments()
  254. this.data.isFirstLoad = false
  255. } else {
  256. switch (this.data.rankType) {
  257. case '1': {
  258. this.data.rankStar = app.server.rankStarMap.main
  259. break
  260. }
  261. case '2': {
  262. this.data.rankStar = app.server.rankStarMap.topic
  263. break
  264. }
  265. default: break
  266. }
  267. this.confirmFragmentsList()
  268. this.setData({
  269. fragmentsList: this.data.fragmentsList,
  270. currentFragment: this.data.currentFragment,
  271. currentStarNum: this.data.currentStarNum,
  272. rankStar: this.data.rankStar
  273. })
  274. setTimeout(function () {
  275. this.getRank()
  276. }.bind(this), 500)
  277. }
  278. },
  279. getRank: function () {
  280. net.connect({
  281. url: url.host + url.get_my_ranking,
  282. data: { gameId: this.data.rankInfo.gameId },
  283. success: res => {
  284. if (this.data.rankStar.starC != res.data.data.starC) {
  285. app.log('change')
  286. this.data.rankStar.starC = res.data.data.starC
  287. this.data.rankStar.rank = res.data.data.rank
  288. this.refreshGlobalRank()
  289. }
  290. var r = common.starToFragment(app.server.config.rankDanList, this.data.rankStar.starC)
  291. this.data.currentFragment = r[0]
  292. this.data.currentStarNum = r[1]
  293. this.confirmFragmentsList()
  294. this.setData({
  295. fragmentsList: this.data.fragmentsList,
  296. currentFragment: this.data.currentFragment,
  297. currentStarNum: this.data.currentStarNum,
  298. rankStar: this.data.rankStar
  299. })
  300. }
  301. })
  302. },
  303. /**
  304. * 生命周期函数--监听页面隐藏
  305. */
  306. onHide: function () {
  307. },
  308. /**
  309. * 生命周期函数--监听页面卸载
  310. */
  311. onUnload: function () {
  312. },
  313. /**
  314. * 页面相关事件处理函数--监听用户下拉动作
  315. */
  316. onPullDownRefresh: function () {
  317. },
  318. /**
  319. * 页面上拉触底事件的处理函数
  320. */
  321. onReachBottom: function () {
  322. },
  323. /**
  324. * 用户点击右上角分享
  325. */
  326. onShareAppMessage: function () {
  327. wx.showShareMenu({
  328. withShareTicket: true
  329. })
  330. this.hideBrainLackDialog()
  331. return common.shareAction({
  332. title: app.globalData.userInfo.nickName + '邀请你来瓜分8万8千8百8十8元现金奖励!',
  333. path: '',
  334. type: 12,
  335. rankType: this.data.rankType,
  336. success: res => {
  337. if (res.data.data.addCell > 0) {
  338. wx.showToast({
  339. title: '分享+' + common.unit(res.data.data.addCell) + '脑力值',
  340. icon: 'none',
  341. duration: 2500
  342. })
  343. }
  344. this.setData({
  345. user: app.globalData.user
  346. })
  347. wx.hideShareMenu({})
  348. },
  349. fail: e =>{
  350. wx.hideShareMenu({})
  351. }
  352. })
  353. }
  354. })