vips.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. var app = getApp();
  2. Page({
  3. /**
  4. * 页面的初始数据
  5. */
  6. data: {
  7. userInfo: {},
  8. tab: {
  9. list: [],
  10. selectedId: 0,
  11. height: 50,
  12. scroll: true
  13. },
  14. vipInfo: {},
  15. vip: 0,
  16. pricedata: [],
  17. rightdata: [],
  18. selectIndex: [],
  19. isDisabled:false
  20. },
  21. /**
  22. * 生命周期函数--监听页面加载
  23. */
  24. onLoad: function (options) {
  25. options.vip && this.setData({
  26. vip: options.vip
  27. });
  28. if (app.globalData.userInfo) {
  29. this.setData({
  30. userInfo: app.globalData.userInfo
  31. });
  32. this.getVipIndex();
  33. } else {
  34. app.info('请先登录', function () {
  35. wx.navigateBack({
  36. delta: 1,
  37. })
  38. })
  39. }
  40. },
  41. /**
  42. * 生命周期函数--监听页面初次渲染完成
  43. */
  44. onReady: function () {
  45. },
  46. /**
  47. * 生命周期函数--监听页面显示
  48. */
  49. onShow: function () {
  50. },
  51. getIsDefault(value){
  52. return [true,1,'1','yes','true'].indexOf(value) != -1;
  53. },
  54. getVipIndex() {
  55. let that = this;
  56. app.request('/addons/vip/api.index/index', function (res, err) {
  57. //有vip等级传来,自动到VIP
  58. let list = [];
  59. res.vipList.map(function (item, index) {
  60. if (item.level == that.data.vip) {
  61. that.setData({
  62. ['tab.selectedId']: index
  63. })
  64. }
  65. list.push({
  66. id: index,
  67. level: item.level,
  68. title: item.name,
  69. pricedata: item.pricedata,
  70. rightdata: item.rightdata
  71. })
  72. });
  73. that.setData({
  74. 'tab.list': list,
  75. vipInfo: res.vipInfo || {}
  76. })
  77. that.setPriceData();
  78. }, function (res, err) {
  79. app.error(err.msg);
  80. });
  81. },
  82. //渲染数据
  83. setPriceData() {
  84. let index = this.data.tab.selectedId;
  85. let list = this.data.tab.list;
  86. list.length > index && (this.setData({
  87. pricedata: list[index].pricedata,
  88. rightdata: list[index].rightdata,
  89. isDisabled:(this.data.vipInfo.level && list[index].level < this.data.vipInfo.level)
  90. }));
  91. if (typeof this.data.selectIndex[index] == 'undefined') {
  92. let defaultIndex = 0;
  93. //渲染默认的index
  94. this.data.pricedata.some((item, index) => {
  95. if (this.getIsDefault(item.default)) {
  96. defaultIndex = index;
  97. return true;
  98. }
  99. });
  100. this.setData({
  101. [`selectIndex[${index}]`]: defaultIndex
  102. });
  103. }
  104. },
  105. //选择
  106. selectVip(e) {
  107. this.setData({
  108. [`selectIndex[${this.data.tab.selectedId}]`]: e.currentTarget.dataset.index
  109. });
  110. },
  111. _handleZanTabChange(e) {
  112. this.setData({
  113. ['tab.selectedId']: e.currentTarget.dataset.itemId
  114. })
  115. this.setPriceData();
  116. },
  117. //购买或者续费
  118. goBuy(e) {
  119. let that = this;
  120. let type = e.currentTarget.dataset.type;
  121. let data = {
  122. paytype: 'wechat',
  123. level: this.data.tab.list[this.data.tab.selectedId].level,
  124. days: this.data.pricedata[this.data.selectIndex[this.data.tab.selectedId]].days,
  125. method: 'miniapp'
  126. };
  127. //续费
  128. if (type == 1) {
  129. this.data.tab.list.some((item, index) => {
  130. if (item.level == this.data.vipInfo.level) {
  131. data.level = item.level;
  132. //如果选择过,用选择的,没有用默认的天数
  133. if (typeof this.data.selectIndex[index] != 'undefined') {
  134. data.days = item.pricedata[this.data.selectIndex[index]].days;
  135. } else {
  136. item.pricedata.some(res => {
  137. if (this.getIsDefault(res.default)) {
  138. data.days = res.days;
  139. return true;
  140. }
  141. });
  142. }
  143. return true;
  144. }
  145. });
  146. }
  147. app.request('/addons/vip/api.order/submit', data, function (res, err) {
  148. wx.requestPayment({
  149. provider: 'wxpay',
  150. timeStamp: res.timeStamp,
  151. nonceStr: res.nonceStr,
  152. package: res.package,
  153. signType: res.signType,
  154. paySign: res.paySign,
  155. success: res => {
  156. app.info('支付成功!');
  157. that.getVipIndex();
  158. },
  159. fail: err => {
  160. app.error('fail:' + JSON.stringify(err));
  161. }
  162. });
  163. }, function (res, err) {
  164. app.info(err.msg, function () {
  165. if (res == 'bind') {
  166. wx.navigateTo({
  167. url: '/page/my/bind',
  168. })
  169. }
  170. });
  171. })
  172. },
  173. /**
  174. * 页面相关事件处理函数--监听用户下拉动作
  175. */
  176. onPullDownRefresh: function () {
  177. },
  178. /**
  179. * 页面上拉触底事件的处理函数
  180. */
  181. onReachBottom: function () {
  182. },
  183. /**
  184. * 用户点击右上角分享
  185. */
  186. onShareAppMessage: function () {
  187. }
  188. })