vip.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730
  1. <template>
  2. <view>
  3. <!--mine/vip/vip.wxml-->
  4. <!-- <view class="top">
  5. <image src="/pages/images/vip_bg1.png" class="vipbg"></image>
  6. <view class="bg"><image src="{{userinfo.pic?userinfo.pic:'/pages/images/vip_bg1.png'}}" class="vipbg" style="{{userinfo.pic?'border-radius: 35rpx':''}}"></image></view>
  7. <image src="/pages/images/vip_bg2.png" class="vipbg1"></image>
  8. <view class="topc dflex" wx:if="{{userinfo.level!=0 && !userinfo.end}}">
  9. <view style="flex:0.9">
  10. <view class="card-id">{{userinfo.levelName}}<text>{{userinfo.level}}</text></view>
  11. <view class="level dflex">
  12. <image src="{{userinfo.icon}}"></image>
  13. </view>
  14. <view class="cheng">会员到期时间:{{userinfo.expireTime}}</view>
  15. </view>
  16. <view class="btn mbglinear" bindtap="openVip" data-index="{{userinfo.levelGrade==0?'0':userinfo.levelGrade-1}}">续费</view>
  17. </view>
  18. <view class="topc dflex notTopc" wx:else>
  19. <view class="card-id">柚荚M店会员卡<text>1558145805</text></view>
  20. <view class="level dflex"><image src="/pages/images/hg_icon1.png"></image>1</view>
  21. <view class="cheng">当前成长值为0,距离下一成长值差5001</view>
  22. <view class="notOpen">VIP<text>未开通</text></view>
  23. <view class="btn mbglinear" bindtap="openVip" data-index="0">立即开通</view>
  24. </view>
  25. </view> -->
  26. <view class="huiyuan" v-if="TabList.length > 0">
  27. <swiper class="swiper" next-margin="15rpx" @change="swiperChange">
  28. <swiper-item :class="'li li' + index" v-for="(item, index) in TabList" :key="index">
  29. <image :src="item.pic ? item.pic : '../static/mine/images/vip_bg' + index + '.png'" class="vipbg"></image>
  30. <view class="userinfo">
  31. <view class="infos dflex">
  32. <image :src="userinfo.avatar" mode="aspectFill" class="user-img"></image>
  33. <view class="flex">
  34. <view class="username">{{ userinfo.nickName }}</view>
  35. <image :src="item.icon ? item.icon : '../static/mine/images/level' + index + '.png'" class="level-img"></image>
  36. </view>
  37. </view>
  38. <view class="times" v-if="userinfo.level == item.id && userinfo.level != 0 && !userinfo.end">
  39. <view class="expire">
  40. <view class="v-price">
  41. <text>¥</text>
  42. {{ vip.money }}
  43. </view>
  44. <view class="dflex">
  45. {{ userinfo.expireTime }}到期
  46. <image :src="'../static/mine/images/rico' + index + '.png'"></image>
  47. </view>
  48. </view>
  49. <view class="vipid">NO.{{ userinfo.level }}</view>
  50. </view>
  51. <block v-else>
  52. <view class="v-times" v-if="vip.money">
  53. <view class="v-price">
  54. <text>¥</text>
  55. {{ vip.money }}
  56. </view>
  57. <view class="invi">有效期:{{ vip.day }}天</view>
  58. </view>
  59. </block>
  60. <view class="obtn" @tap="openVip" :data-index="index">
  61. {{ userinfo.level == item.id && userinfo.level != 0 && !userinfo.end ? '立即续费' : '立即开通' }}
  62. </view>
  63. </view>
  64. </swiper-item>
  65. </swiper>
  66. <view class="dots dflex">
  67. <block v-for="(item, index) in TabList" :key="index"><view :class="['dot', index == swiperCurrent ? 'active' : '']"></view></block>
  68. </view>
  69. <!-- <scroll-view class="scroll-box" scroll-x style="height:400rpx" :scroll-into-view="bottomId"
  70. scroll-with-animation="true">
  71. <view v-for="(item, index) in TabList" :key="index" :class="'openvip ' + (item.active?'active':'')"
  72. @tap="showVipd" :data-index="index" :id="'bottomView' + index">
  73. <image v-if="userinfo.level==item.id&&userinfo.level!=0 && !userinfo.end"
  74. :src="userinfo.pic?userinfo.pic:'vip'" class="openvipbg"
  75. mode="aspectFill"></image>
  76. <image :src="item.pic?item.pic:'/static/pages/images/vip_bg1.png'" class="openvipbg"
  77. mode="aspectFill" v-else></image>
  78. <view class="dflex viptitle">
  79. <image :src="userinfo.avatar" class="userimg"
  80. v-if="userinfo.level==item.id&&userinfo.level!=0 && !userinfo.end"></image>
  81. <image :src="item.icon" class="icon" v-else></image>
  82. <view v-if="userinfo.level==item.id&&userinfo.level!=0 && !userinfo.end">
  83. <view class="username">{{userinfo.nickName}} <text>{{item.title}}</text></view>
  84. <view class="usercont">NO:{{userinfo.level}}</view>
  85. </view>
  86. <view v-else>
  87. <view class="vipname">{{item.title}}</view>
  88. <view class="vipcont">{{item.brief}}</view>
  89. </view>
  90. </view>
  91. <view class="go dflex">
  92. <view class="expireTime dflex"
  93. v-if="userinfo.level==item.id&&userinfo.level!=0 && !userinfo.end">
  94. {{userinfo.expireTime}}<text>到期</text>
  95. <image src="/mine/static/mine/images/jianqu.png" class="jianquimg"></image>
  96. </view>
  97. <view
  98. :class="'btn ' + (userinfo.level==item.id&&userinfo.level!=0 && !userinfo.end?'':'btnleft')"
  99. @tap="openVip" :data-index="index">
  100. {{userinfo.level==item.id&&userinfo.level!=0 && !userinfo.end?'立即续费':'立即开通'}}</view>
  101. </view>
  102. </view>
  103. </scroll-view> -->
  104. </view>
  105. <view class="quanyi">
  106. <view class="quanyi-tit dflex">
  107. 会员权益
  108. <!-- <image src="/static/pages/images/quanyi_l.png"></image>
  109. <image src="/static/pages/images/quanyi.png" class="quanyi_c"></image>
  110. <image src="/static/pages/images/quanyi_r.png"></image> -->
  111. </view>
  112. <!-- <view class="qylist dflex">
  113. <view class="li">
  114. <image src="/pages/images/qy_ico1.png"></image>
  115. <text>专享客服</text>
  116. </view>
  117. <view class="li">
  118. <image src="/pages/images/qy_ico1.png"></image>
  119. <text>专享客服</text>
  120. </view>
  121. <view class="li">
  122. <image src="/pages/images/qy_ico1.png"></image>
  123. <text>专享客服</text>
  124. </view>
  125. <view class="li">
  126. <image src="/pages/images/qy_ico1.png"></image>
  127. <text>专享客服</text>
  128. </view>
  129. </view> -->
  130. <view class="ziyou">
  131. <!-- <rich-text :nodes="nodes[idx]"></rich-text>
  132. <block v-for="(item, index) in vipList[idx].imgs" :key="index">
  133. <image class="img" :src="item" mode="widthFix" :data-src="item"></image>
  134. </block> -->
  135. <block v-if="nodes[idx]"><mp-html :content="nodes[idx]" @imgtap="choose" /></block>
  136. <block v-else>无</block>
  137. <!-- <image src="{{item}}" mode="widthFix" wx:for="{{imgs}}" wx:key="{{index}}"></image> -->
  138. </view>
  139. </view>
  140. <!-- <view class="huiyuan " wx:if="{{TabList.length>1}}">
  141. <scroll-view class="scroll-box" scroll-x style="height:400rpx">
  142. <view class="openvip {{item.active?'active':''}}" wx:for="{{TabList}}" wx:key="index" bindtap="showVipd" data-index="{{index}}">
  143. <image src="{{item.pic?item.pic:'/pages/images/vip_bg1.png'}}" class="openvipbg" mode="aspectFit"></image>
  144. <view class="dflex viptitle">
  145. <image src="{{item.icon}}" class="icon"></image>
  146. <view>
  147. <view class="vipname">{{item.title}}</view>
  148. <view class="vipcont">{{item.brief}}</view>
  149. </view>
  150. </view>
  151. <view class="btn go" bindtap="openVip" data-index="{{index}}">立即开通</view>
  152. </view>
  153. </scroll-view>
  154. </view> -->
  155. <view class="cai">
  156. <view class="cai-tit">
  157. 会员专区
  158. <text>专属折扣享不停</text>
  159. </view>
  160. <view class="tabcon pdlr20 dflex">
  161. <block v-for="(item, index) in likeList" :key="index">
  162. <view class="li">
  163. <view class="jsdimgs" @tap="toDetail" :data-id="item.id">
  164. <image :src="item.pic" mode="aspectFit" class="jsdpro"></image>
  165. <image src="/static/pages/images/jishida.png" v-if="item.isTimely === 1" class="jsdimg"></image>
  166. </view>
  167. <view class="jsdinfo">
  168. <view class="proname" @tap="toDetail" :data-id="item.id">{{ item.title }}</view>
  169. <view class="list-tag ddflex">
  170. <block v-if="item.label">
  171. <view class="tover" v-for="(it,idx) in item.label.split(',')" :key="idx" v-if="idx < 2">{{it}}</view>
  172. </block>
  173. </view>
  174. <view class="xiaol dflex">
  175. <block v-if="item.isOtc != 5 && about.is_open_shop == 1 && (isDistriUser == 2 || ascription)">
  176. <view class="zhuan dflex" v-if="item.commission > 0">
  177. <block>
  178. <text>赚</text>
  179. <view class="dflex">¥{{ item.commission }}</view>
  180. </block>
  181. </view>
  182. </block>
  183. <block v-else>
  184. <view class="vip-news ddflex" v-if="show_membership_price==1&&item.actualPrice < item.salePrice"><text class="vip-sale">会员价</text><text class="vip-members">¥{{item.actualPrice}}</text></view>
  185. <view class="vip-news ddflex" v-if="show_membership_price==1&&item.membersPrice<item.salePrice"><text class="vip-sale">会员价</text><text class="vip-members">¥{{item.membersPrice}}</text></view>
  186. </block>
  187. <view class="yishou">{{ item.sellStock }}件已售</view>
  188. </view>
  189. <view class="operate dflex">
  190. <view class="price proprice">
  191. <text>{{ show_membership_price == 1 && item.actualPrice < item.salePrice ? item.actualPrice : item.salePrice }}</text>
  192. <!-- <text class="vip" v-if="show_membership_price == 1 && item.membersPrice < item.salePrice">
  193. <text class="sale">VIP</text>
  194. <text class="members">{{ item.membersPrice }}</text>
  195. </text> -->
  196. <text class="del">
  197. <block v-if="item.marketPrice!=0&&item.marketPrice>item.salePrice">
  198. ¥{{item.marketPrice}}
  199. </block>
  200. </text>
  201. </view>
  202. <view class="add-cart">
  203. <view class="nums dflex" v-if="item.count > 0">
  204. <image src="/static/pages/images/jian.png"></image>
  205. <view class="num">{{ item.count }}</view>
  206. <image src="/static/pages/images/jia1.png"></image>
  207. </view>
  208. <image
  209. src="/static/pages/images/jia.png"
  210. @tap="addShopCart"
  211. :data-id="item.id"
  212. :data-skuid="item.skuId"
  213. :data-index="index"
  214. :data-state="item.state"
  215. v-else
  216. ></image>
  217. </view>
  218. </view>
  219. </view>
  220. </view>
  221. </block>
  222. </view>
  223. </view>
  224. <!-- 开通会员弹窗 -->
  225. <view class="mask" @tap="eliminate" v-if="show"></view>
  226. <view class="purchaseVip" v-if="show">
  227. <view class="timg dflex">
  228. <image :src="userinfo.avatar" mode="aspectFit"></image>
  229. <text>{{ userinfo.nickName }}</text>
  230. </view>
  231. <view class="cont">
  232. <view class="tab">
  233. <scroll-view class="scroll-box" scroll-x style="height:100rpx">
  234. <view
  235. v-for="(item, index) in TabList"
  236. :key="index"
  237. :class="'li ' + (item.active ? 'active' : '')"
  238. :style="
  239. TabList.length == 4
  240. ? 'width:25%'
  241. : TabList.length == 3
  242. ? 'width:33%'
  243. : TabList.length == 2
  244. ? 'width:50%'
  245. : TabList.length == 1
  246. ? 'width:100%'
  247. : 'width:20%'
  248. "
  249. :data-index="index"
  250. :data-level="item.level"
  251. @tap="switchTab"
  252. >
  253. {{ item.title }}
  254. </view>
  255. </scroll-view>
  256. </view>
  257. <view class="jiage dflex">
  258. <scroll-view class="scroll-box" scroll-x style="height:400rpx">
  259. <view
  260. v-for="(item, index) in money"
  261. :key="index"
  262. class="li"
  263. @tap="selectOpen"
  264. :data-index="index"
  265. :data-id="item.id"
  266. :data-price="item.price"
  267. :data-day="item.day"
  268. >
  269. <view :class="'month ' + (item.active ? 'act' : '')">{{ item.day }}天</view>
  270. <view :class="'money ' + (item.active ? 'actbor' : '')">
  271. <text class="txt">¥</text>
  272. {{ item.price }}
  273. </view>
  274. </view>
  275. </scroll-view>
  276. </view>
  277. <view class="title">开通{{ day }}天会员,享尊贵特权</view>
  278. <view class="confirm mbglinear" @tap="buy">立即支付{{ price }}元</view>
  279. </view>
  280. </view>
  281. <view class="placeholder-view" :style="'height:' + (bottomBlankHeight + 115) + 'rpx'"></view>
  282. <!-- <view class="chufangy" >
  283. <button class="submit" bindtap="openVip" data-index="{{userinfo.end?'0':userinfo.levelGrade==0?'0':userinfo.levelGrade-1}}">{{userinfo.end?'快来点我开通会员,享尊贵特权':'快来点我续费会员,享尊贵特权'}}</button></view> -->
  284. </view>
  285. </template>
  286. <script>
  287. // mine/vip/vip.js
  288. const app = getApp();
  289. const req = require('../../utils/request.js');
  290. const route = require('../../utils/route');
  291. const utils = require('../../utils/util.js');
  292. import mpHtml from '../../components/mp-html/components/mp-html/mp-html';
  293. export default {
  294. components: {
  295. mpHtml
  296. },
  297. data() {
  298. return {
  299. swiperCurrent: 0,
  300. page: 1,
  301. likeList: [],
  302. isLikeLoad: true,
  303. TabList: [],
  304. show: false,
  305. index: 0,
  306. idx: 0,
  307. bottomBlankHeight: app.globalData.isIPhoneX ? 68 : 0,
  308. bottomId: '',
  309. searchTitle: '',
  310. show_membership_price: 0,
  311. money: [],
  312. level: '',
  313. imgs: '',
  314. vipList: '',
  315. nodes: '',
  316. imags: '',
  317. userinfo: '',
  318. price: 0,
  319. day: 0,
  320. id: '',
  321. freshen: true,
  322. vip: {
  323. maney: 0,
  324. day: 0
  325. }, //默认的会员价格
  326. about: {},
  327. isDistriUser: 0, // 判断用户是否是分销员 2为分销员
  328. ascription: false //是否开启小店
  329. };
  330. },
  331. components: {},
  332. props: {},
  333. onLoad(options) {
  334. this.getConfig();
  335. this.getMy();
  336. this.getLikeList();
  337. if (options.searchTitle) {
  338. this.setData({
  339. searchTitle: options.searchTitle
  340. });
  341. }
  342. },
  343. onShow() {
  344. if (this.freshen) {
  345. this.getuserVip();
  346. if(req.getStorage('userInfo')){
  347. this.getVip();
  348. }
  349. }
  350. },
  351. methods: {
  352. swiperChange(e) {
  353. this.swiperCurrent = e.detail.current;
  354. this.idx = e.detail.current;
  355. this.vip.money = '';
  356. this.vip.day = '';
  357. this.getVipMoneyT(this.TabList[this.idx].level);
  358. },
  359. choose() {
  360. this.setData({
  361. freshen: false
  362. });
  363. },
  364. getMy() {
  365. let that = this;
  366. req.getRequest('/api/user/my', {}, data => {
  367. that.isDistriUser = data.isDistriUser;
  368. if (data && data.listShopBase && data.listShopBase != null && data.listShopBase.length > 0) {
  369. if (data.listShopBase[0].merchant_id == that.merchant.id && that.merchant.type != 5) {
  370. that.ascription = true;
  371. }
  372. }
  373. });
  374. },
  375. getConfig() {
  376. var _this = this;
  377. return new Promise((resolve, reject) => {
  378. req.getRequest('/api/config', {}, function(res) {
  379. _this.about = res;
  380. if (res && res.show_membership_price == 1) {
  381. _this.setData({
  382. show_membership_price: 1
  383. });
  384. }
  385. resolve();
  386. });
  387. });
  388. },
  389. showVipd(e) {
  390. let index = e.currentTarget.dataset.index;
  391. let d = {};
  392. let def = this.TabList.findIndex(it => it.active);
  393. d['TabList[' + def + '].active'] = false;
  394. d['TabList[' + index + '].active'] = true;
  395. d['pageList'] = [];
  396. this.setData(d);
  397. this.setData({
  398. idx: index,
  399. bottomId: 'bottomView' + index
  400. });
  401. },
  402. addShopCart(e) {
  403. let state = e.currentTarget.dataset.state;
  404. let skuId = e.currentTarget.dataset.skuid;
  405. let id = e.currentTarget.dataset.id;
  406. let defaultMerchant = req.getStorage('defaultMerchant');
  407. // console.log(skuId, id);
  408. let params = {
  409. skuId: skuId,
  410. quantity: 1,
  411. productId: id,
  412. merchantId: defaultMerchant.id
  413. }; // if(state!=1){
  414. // return req.msg('您来晚了,商品已经下架')
  415. // }
  416. if (this.merchant) {
  417. params.merchantId = this.merchant.id;
  418. }
  419. req.postRequest('/api/purchase/cart', params, res => {
  420. req.msg('加入购物车成功');
  421. });
  422. },
  423. getLikeList() {
  424. //Recommend
  425. if (!this.isLikeLoad) return false;
  426. this.isLikeLoad = false;
  427. let that = this;
  428. req.getRequest(
  429. '/api/product/list',
  430. {
  431. page: that.page,
  432. limit: 10,
  433. attr: 'sell_well'
  434. },
  435. res => {
  436. if (res && res.length >= 10) that.isLikeLoad = true;
  437. if (that.page > 1) res = that.likeList.concat(res);
  438. res = res.map(it => {
  439. if (it.deliverWay && JSON.parse(it.deliverWay).indexOf(3) != -1) it.isJs = true;
  440. return it;
  441. });
  442. that.setData({
  443. likeList: res
  444. });
  445. }
  446. );
  447. },
  448. toDetail(e) {
  449. let id = e.currentTarget.dataset.id;
  450. // console.log(id);
  451. app.globalData.openPage('product/detail/detail?id=' + id);
  452. },
  453. openVip(e) {
  454. this.setData({
  455. money: []
  456. });
  457. let index = e.currentTarget.dataset.index;
  458. let def = this.TabList.findIndex(it => it.active);
  459. let d = {};
  460. // console.log(def, index);
  461. d['TabList[' + def + '].active'] = false;
  462. d['TabList[' + index + '].active'] = true;
  463. d['pageList'] = [];
  464. this.setData(d);
  465. this.getVipMoney(this.TabList[index].level);
  466. this.setData({
  467. show: true,
  468. level: this.TabList[index].level
  469. });
  470. },
  471. eliminate() {
  472. this.setData({
  473. show: false
  474. });
  475. },
  476. switchTab(event) {
  477. this.setData({
  478. money: []
  479. });
  480. let index = event.currentTarget.dataset.index;
  481. let level = event.currentTarget.dataset.level;
  482. // console.log(this.TabList);
  483. let def = this.TabList.findIndex(it => it.active);
  484. let d = {};
  485. // console.log(def, index);
  486. d['TabList[' + def + '].active'] = false;
  487. d['TabList[' + index + '].active'] = true;
  488. d['pageList'] = []; // this.data.form.states=this.data.TabList[index].state.toString();
  489. // this.data.form.state = this.data.TabList[index].state;
  490. this.setData({
  491. index: index,
  492. level: level
  493. });
  494. this.setData(d);
  495. this.getVipMoney(level);
  496. },
  497. getVip() {
  498. req.getRequest('/api/levelStrategy/userLevelList', {},data => {
  499. // data=data.map(it=>{
  500. // it.active=false
  501. // return it})
  502. let that = this;
  503. let arr = [];
  504. let node = [];
  505. data.forEach(it => {
  506. var nodes = it.editorContent;
  507. node.push(nodes);
  508. return it;
  509. });
  510. this.nodes = node;
  511. arr.forEach(it => {
  512. // console.log(it);
  513. });
  514. // console.log(arr, node, data);
  515. this.setData({
  516. vipList: data,
  517. TabList: data,
  518. ['TabList[' + 0 + '].active']: true,
  519. imags: arr
  520. });
  521. this.getVipMoneyT(this.TabList[0].level);
  522. this.getVipListOrg();
  523. });
  524. },
  525. getVipListOrg() {
  526. if (this.TabList && this.userinfo) {
  527. for (var i = 0; i < this.TabList.length; i++) {
  528. var item = this.TabList[i];
  529. if (this.userinfo.level == item.id) {
  530. this.TabList = this.TabList.slice(i, this.TabList.length);
  531. this.getVipMoneyT(this.TabList[0].level);
  532. let node = [];
  533. this.TabList.forEach(it => {
  534. var nodes = it.editorContent;
  535. node.push(nodes);
  536. return it;
  537. });
  538. this.nodes = node;
  539. return;
  540. }
  541. }
  542. }
  543. },
  544. getuserVip() {
  545. req.getRequest('/api/user/levelDetails', {}, data => {
  546. let expireTime = Array;
  547. if (data.expireTime) {
  548. expireTime = data.expireTime.split(' ');
  549. data.expireTime = data.expireTime.replace(/-/g, '/');
  550. }
  551. let nowTime = new Date().getTime();
  552. let endTime = new Date(data.expireTime).getTime();
  553. let times = parseInt((endTime - nowTime) / 1000); // var expireTime= new Date(data.expireTime)
  554. // var time1=expireTime.getTime();
  555. // console.log(times, endTime, nowTime);
  556. this.setData({
  557. userinfo: data,
  558. ['userinfo.expireTime']: expireTime[0]
  559. });
  560. if (times <= 0) {
  561. this.setData({
  562. ['userinfo.end']: true
  563. });
  564. } else {
  565. this.setData({
  566. ['userinfo.end']: false
  567. });
  568. }
  569. this.getVipListOrg();
  570. // console.log(data);
  571. });
  572. },
  573. getVipMoney(index) {
  574. // let idx=index
  575. this.setData({
  576. price: 0,
  577. day: 0,
  578. id: ''
  579. });
  580. let from = {
  581. level: index
  582. };
  583. req.getRequest('/api/levelStrategy/list', from, data => {
  584. // console.log(data);
  585. if (data && data.length > 0) {
  586. this.setData({
  587. money: data,
  588. ['money[' + 0 + '].active']: true,
  589. price: data[0].price,
  590. day: data[0].day,
  591. id: data[0].id
  592. });
  593. }
  594. });
  595. },
  596. getVipMoneyT(index) {
  597. let from = {
  598. level: index
  599. };
  600. return new Promise((resolve,reject)=>{
  601. req.getRequest('/api/levelStrategy/list', from, data => {
  602. if (data && data.length > 0) {
  603. this.vip.money = data[0].price;
  604. this.vip.day = data[0].day;
  605. }
  606. });
  607. resolve();
  608. })
  609. },
  610. // 选择开通时长
  611. selectOpen(event) {
  612. let index = event.currentTarget.dataset.index;
  613. let id = event.currentTarget.dataset.id;
  614. let price = event.currentTarget.dataset.price;
  615. let day = event.currentTarget.dataset.day;
  616. // console.log(this.money);
  617. let def = this.money.findIndex(it => it.active);
  618. let d = {};
  619. // console.log(def, index);
  620. d['money[' + def + '].active'] = false;
  621. d['money[' + index + '].active'] = true;
  622. d['pageList'] = []; // this.data.form.states=this.data.TabList[index].state.toString();
  623. // this.data.form.state = this.data.TabList[index].state;
  624. // this.setData({index:index})
  625. this.setData(d);
  626. this.setData({
  627. price: price,
  628. day: day,
  629. id: id
  630. });
  631. // console.log(this.money, price); // this.getVipMoney(level)
  632. },
  633. //购买
  634. buy() {
  635. let that = this;
  636. if (!this.id || this.id == undefined || this.id == null) return req.msg('请选择开通类型');
  637. if (this.userinfo.levelGrade > this.level && !this.userinfo.end) return req.msg('您不能购买低于现在等级会员');
  638. that.setData({
  639. show: false
  640. });
  641. route.vip(
  642. {
  643. strategyId: this.id,
  644. scene: req.getStorage('scene')
  645. },
  646. data => {
  647. route.vipPay(data.id, data.status, this.price, res => {
  648. if (res) {
  649. app.globalData.navigateTo('product/pay/pay?isSuccess=true&vip=true');
  650. } // wx.requestPayment({
  651. // timeStamp: res.timeStamp,
  652. // nonceStr: res.nonceStr,
  653. // package: res.packages,
  654. // signType: res.signType,
  655. // paySign: res.sign,
  656. // success: function () {
  657. // let i = 0;
  658. // let timer = setInterval(() => {
  659. // req.postRequest('/api/levelStrategy/check', {
  660. // strategyId: data.id
  661. // }, res => {
  662. // console.log(i, res)
  663. // if (res.isSuccess || i === 4) {
  664. // clearInterval(timer);
  665. // app.navigateTo('product/pay/pay?isSuccess=true&vip=true')
  666. // that.setData({show:false})
  667. // } else {
  668. // i++;
  669. // }
  670. // }, true)
  671. // }, 200);
  672. // console.log(res)
  673. // },
  674. // fail: function (res) {
  675. // req.postRequest('/api/levelStrategy/check', { strategyId: data.id }, res => {
  676. // app.navigateTo('product/pay/pay?isSuccess=false&vip=true&money='+that.data.price+'&id='+data.id)
  677. // that.setData({show:false})
  678. // })
  679. // }
  680. // })
  681. // console.log(res);
  682. });
  683. }
  684. );
  685. }
  686. }
  687. };
  688. </script>
  689. <style>
  690. @import './vip.css';
  691. </style>