index.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522
  1. const app = getApp()
  2. const api = require('../../../request/api');
  3. const http = require('../../../request/http');
  4. const storeKeys = require('../../../utils/storageKeys.js');
  5. const utils = require('../../../utils/util');
  6. Page({
  7. data: {
  8. isLogOn: false, //是否已登录
  9. userRole: 1, //用户身份
  10. isTop: false, //是否固定头部
  11. appleSId: null, //分享人id
  12. statusBarHeight: app.globalData.statusBarHeight,
  13. scene: app.globalData.scene,
  14. isLoading: true, //是否处于加载
  15. goodsList: [], //页面推荐商品
  16. oneData: [], //数据1(轮播1)
  17. twoData: [], //数据2(轮播2)
  18. threeData: [], //数据3(探秘 体验模块)
  19. fourData: [], //数据4(轮播3)
  20. popupData: [], //弹窗广告数据
  21. showPopupAd: false, //是否显示弹窗广告
  22. goLog: false, //是否点击弹窗广告前往登陆
  23. isPlay: false, //视频是否处于播放
  24. videoCtx: null, //video对象
  25. videoPath: "", //视频地址
  26. videoImage: `${api.URL}/uploads/image/home_video_cover.png`, //视频封面图
  27. dataset:{}, //记录页面广告点击项
  28. isActivityPage: false, //是否为活动版首页
  29. activityBack:"", //活动版首页背景
  30. activityViewData:[], //活动版首页数据
  31. },
  32. onLoad(options) {
  33. console.log("123456")
  34. if (options) {
  35. //小程序分享人id
  36. let appleSId = options.apple_s_id || "";
  37. if (appleSId) {
  38. utils.setStorageSync(storeKeys.APPLESID, appleSId);
  39. this.setData({
  40. appleSId
  41. })
  42. }
  43. }
  44. console.log("123456")
  45. this.getActivityPageData();
  46. this.promotion();
  47. app.countRecord()
  48. },
  49. onShow() {
  50. console.log("123456")
  51. if (this.data.videoCtx) {
  52. this.data.videoCtx.pause();
  53. }
  54. let activityPage = this.selectComponent("#activityPage")
  55. activityPage && activityPage.pauseVideo();
  56. let userInfo = utils.getStorageSync(storeKeys.USERINFO) || {};
  57. this.setData({
  58. userRole: userInfo.role,
  59. isLogOn: utils.getStorageSync(storeKeys.TOKEN) ? true : false
  60. })
  61. this.data.goLog = false;
  62. app.changeTabBarBadge(utils.getStorageSync(storeKeys.CARETOTAl));
  63. app.countRecordPublic(0);
  64. },
  65. onHide() {
  66. if (this.data.videoCtx) {
  67. this.data.videoCtx.pause();
  68. this.data.videoCtx.stop();
  69. }
  70. let activityPage = this.selectComponent("#activityPage")
  71. activityPage && activityPage.pauseVideo();
  72. this.setData({
  73. isPlay: false
  74. })
  75. if (!this.data.goLog) {
  76. this.setData({
  77. showPopupAd: false
  78. })
  79. }
  80. },
  81. navigateTo: utils.throttle(function (e) {
  82. app.navigateTo(e);
  83. }),
  84. navigateToToken: utils.throttle(function (e) {
  85. if (!utils.getStorageSync(storeKeys.TOKEN)) {
  86. wx.navigateTo({
  87. url: "/pages/tabBar/login/login"
  88. })
  89. return;
  90. }
  91. app.navigateTo(e);
  92. }),
  93. onPullDownRefresh: function () {
  94. wx.stopPullDownRefresh();
  95. this.getActivityPageData();
  96. },
  97. //获取活动首页数据
  98. getActivityPageData(){
  99. http.request({
  100. method: 'GET',
  101. url: api.URL + '/api/Setting/getHomePage',
  102. noToast: true,
  103. success: (res) => {
  104. let page = res.data.data.page || null;
  105. //page存在则显示活动主页
  106. if(page && page.setting){
  107. let setting = page.setting;
  108. let activityBack = setting.bgUrl || "";
  109. let activityViewData = setting.jumpArr || [];
  110. // 过滤是否存在弹窗数据
  111. let popupData = activityViewData.filter((item)=>{
  112. return item.type == 4
  113. })
  114. let {scene, appleSId } = this.data;
  115. //是否满足弹窗条件(进入小程序未弹窗过&& 非扫码进入或扫码进入没有店员分享人id)
  116. if (!utils.getStorageSync(storeKeys.ISPOPUPAD) && popupData && popupData.length > 0 && (scene != 1047 || (scene == 1047 && (!appleSId || (appleSId && utils.getStorageSync(storeKeys.TOKEN)))))) {
  117. this.setData({
  118. popupData,
  119. showPopupAd: true
  120. })
  121. utils.setStorageSync(storeKeys.ISPOPUPAD, "1");
  122. }
  123. this.setData({
  124. activityBack,
  125. activityViewData,
  126. isLoading:false,
  127. isActivityPage:true
  128. })
  129. }else{
  130. //活动主页数据不存在 获取常规版主页
  131. this.getNormalPageData()
  132. this.setData({
  133. isActivityPage:false
  134. })
  135. }
  136. },
  137. error: (res) => {
  138. this.getNormalPageData()
  139. },
  140. })
  141. },
  142. // 广告点击
  143. adClick: utils.throttle(function (e) {
  144. this.data.dataset = e.currentTarget.dataset || {};
  145. //点击类型 1弹窗广告
  146. let type = e.currentTarget.dataset.type;
  147. // 活动版弹窗触发子组件方法
  148. if(type == 1 && this.data.isActivityPage){
  149. this.selectComponent("#activityPage").pageViewClick(e)
  150. return;
  151. }
  152. this.adJumpPage()
  153. }),
  154. //登录回调
  155. loginCallback(){
  156. let type = this.data.dataset.type;
  157. // 活动版弹窗触发子组件方法
  158. if(type == 1 && this.data.isActivityPage){
  159. this.selectComponent("#activityPage").adJumpPage(this.data.dataset)
  160. return;
  161. }
  162. this.adJumpPage()
  163. },
  164. adJumpPage(){
  165. let dataset = this.data.dataset
  166. // 广告id
  167. let adId = dataset.id;
  168. //点击类型 1弹窗广告
  169. let type = dataset.type;
  170. //跳转id
  171. let jumpId = dataset.jumpid;
  172. /**
  173. * 跳转类型
  174. * 0:不跳转
  175. * 1:商品详情
  176. * 2:探秘
  177. * 3:体验
  178. * 4:购买购物卡(惠存)
  179. * 5:领券中心(惠买)
  180. * 6:我的优惠卷(可使用)
  181. * 7:裂变礼包活动
  182. * 8:砍价活动
  183. * 9:拼团活动
  184. * 10:拼团裂变活动
  185. * 11:全场满件送
  186. * 12:限时秒杀
  187. * 13:推荐官页面
  188. */
  189. let jumpType = dataset.jumptype;
  190. if (jumpType == 6 || jumpType == 8 || jumpType == 9 || jumpType == 10) {
  191. if (!utils.getStorageSync(storeKeys.TOKEN)) {
  192. let callback = "";
  193. if(type == 1){
  194. callback = "1"
  195. }
  196. wx.navigateTo({
  197. url: "/pages/tabBar/login/login?callback="+callback
  198. })
  199. this.data.goLog = true;
  200. return;
  201. }
  202. }
  203. switch (jumpType) {
  204. case 0: //不跳转
  205. break;
  206. case 1: //商品详情
  207. wx.navigateTo({
  208. url: "/pages/cart/pages/goodsDetail/goodsDetail?goods_id=" + jumpId
  209. })
  210. break;
  211. case 2: //探秘
  212. wx.navigateTo({
  213. url: "/pages/index/pages/explore/explore"
  214. })
  215. break;
  216. case 3: //体验
  217. wx.navigateTo({
  218. url: "/pages/index/pages/experience/experience"
  219. })
  220. break;
  221. case 4: //购买购物卡(惠存)
  222. wx.navigateTo({
  223. url: "/pages/index/pages/riceCard/cardList/cardList"
  224. })
  225. break;
  226. case 5: //领券中心(惠买)
  227. wx.navigateTo({
  228. url: "/pages/index/pages/couponCenter/couponCenter"
  229. })
  230. break;
  231. case 6: //我的优惠卷(可使用)
  232. wx.navigateTo({
  233. url: "/pages/index/pages/coupon/myCoupon"
  234. })
  235. break;
  236. case 7: //裂变礼包活动
  237. wx.navigateTo({
  238. url: "/pages/activity/pages/fission/index/index?activityId=" + jumpId
  239. })
  240. break;
  241. case 8: //砍价活动
  242. wx.navigateTo({
  243. url: "/pages/activity/pages/bargain/index/index?activity_id=" + jumpId
  244. })
  245. break;
  246. case 9: //拼团活动
  247. wx.navigateTo({
  248. url: "/pages/activity/pages/groupShopping/groupGoodsDetail/groupGoodsDetail?activity_id=" + jumpId
  249. })
  250. break;
  251. case 10: //拼团裂变活动
  252. wx.navigateTo({
  253. url: "/pages/activity/pages/groupShopping/groupGoodsDetail/groupGoodsDetail?activity_id=" + jumpId + '&isfission=1'
  254. })
  255. break;
  256. case 11: //全场满件送
  257. wx.navigateTo({
  258. url: "/pages/activity/pages/wholeGift/index/index?activityId=" + jumpId
  259. })
  260. break;
  261. case 12: //限时秒杀
  262. wx.navigateTo({
  263. url: "/pages/activity/pages/seckill/index/index?activityId=" + jumpId
  264. })
  265. break;
  266. case 13: //申请推荐款
  267. wx.navigateTo({
  268. url: "/pages/user/pages/store/upgradeRetail/upgradeRetail"
  269. })
  270. break;
  271. default:
  272. }
  273. this.popupClose();
  274. http.request({
  275. url: api.URL + '/api/ad/click_ad?id=' + adId + '&mac_id=' + Math.ceil(Math.random() * 100000).toString(),
  276. method: 'GET',
  277. token: utils.getStorageSync(storeKeys.TOKEN),
  278. success: (res) => { },
  279. error: (res) => { },
  280. })
  281. },
  282. //获取常规首页数据
  283. getNormalPageData() {
  284. // 获取所有广告
  285. let promise1 = new Promise((resolve) => {
  286. this.getAdList(() => {
  287. resolve();
  288. });
  289. })
  290. // 获取视频
  291. let promise2 = new Promise((resolve) => {
  292. this.getPageVideo(() => {
  293. resolve();
  294. });
  295. })
  296. // 获取推荐商品
  297. // let promise3 = new Promise((resolve) => {
  298. // this.getGoodsData(() => {
  299. // resolve();
  300. // });
  301. // })
  302. this.getGoodsData();
  303. Promise.all([promise1, promise2]).then((values) => {
  304. wx.hideLoading();
  305. this.setData({
  306. isLoading: false
  307. });
  308. this.data.videoCtx = wx.createVideoContext('myVideo', this)
  309. let { popupData, scene, appleSId } = this.data;
  310. if (!utils.getStorageSync(storeKeys.ISPOPUPAD) && popupData && popupData.length > 0 && (scene != 1047 || (scene == 1047 && (!appleSId || (appleSId && utils.getStorageSync(storeKeys.TOKEN)))))) {
  311. this.setData({
  312. showPopupAd: true
  313. })
  314. utils.setStorageSync(storeKeys.ISPOPUPAD, "1");
  315. }
  316. }).catch((error) => { })
  317. },
  318. //监听页面滚动
  319. onPageScroll(e) {
  320. if (e.scrollTop < 20 && this.data.isTop) {
  321. this.setData({
  322. isTop: false
  323. })
  324. } else if (e.scrollTop >= 120 && !this.data.isTop) {
  325. this.setData({
  326. isTop: true
  327. })
  328. }
  329. },
  330. // 普通用户切换绑定关系
  331. promotion() {
  332. let sharerId = utils.getStorageSync(storeKeys.SHAREID) || utils.getStorageSync(storeKeys.APPLESID) || "";
  333. if (!sharerId) {
  334. return;
  335. }
  336. let data = {
  337. sharerId: sharerId,
  338. isScanCode: "1"
  339. }
  340. http.request({
  341. url: api.URL + '/api/promotion/ch_upper',
  342. data: data,
  343. method: 'POST',
  344. token: utils.getStorageSync(storeKeys.TOKEN),
  345. noLogin: true,
  346. noToast: true,
  347. success: function (res) {
  348. },
  349. error: function (res) {
  350. }
  351. })
  352. },
  353. //获取页面广告数据
  354. getAdList(resolve) {
  355. http.request({
  356. url: api.URL + '/api/ad/list?ad_types=1,2,3,4,8',
  357. method: 'GET',
  358. token: utils.getStorageSync(storeKeys.TOKEN),
  359. success: (res) => {
  360. let data = res.data.data;
  361. let oneData, twoData, threeData, fourData, popupData = [];
  362. oneData = data[1] || [];
  363. twoData = data[2] || [];
  364. threeData = data[3] || [];
  365. fourData = data[4] || [];
  366. popupData = data[8] || [];
  367. resolve && resolve();
  368. this.setData({
  369. oneData,
  370. twoData,
  371. threeData,
  372. fourData,
  373. popupData
  374. })
  375. },
  376. error: (res) => {
  377. resolve && resolve();
  378. },
  379. })
  380. },
  381. // 获取视频数据
  382. getPageVideo(resolve) {
  383. http.request({
  384. method: 'GET',
  385. url: api.URL + '/api/shop/explores?type=3',
  386. success: (res) => {
  387. resolve && resolve();
  388. let data = res.data.data.values || {};
  389. let videoPath = data.ali_url || "";
  390. this.setData({
  391. videoPath
  392. })
  393. },
  394. error: (res) => {
  395. resolve && resolve();
  396. },
  397. })
  398. },
  399. //获取推荐商品
  400. getGoodsData(resolve) {
  401. http.request({
  402. url: api.URL + '/api',
  403. method: 'GET',
  404. success: (res) => {
  405. resolve && resolve();
  406. let goodsList = res.data.data.custom_blocks || []
  407. this.setData({
  408. goodsList
  409. })
  410. },
  411. error: (res) => {
  412. resolve && resolve();
  413. },
  414. })
  415. },
  416. //前往商品详情
  417. goToGoodsDetail: utils.throttle(function (e) {
  418. let goodsId = e.currentTarget.dataset.id;
  419. wx.navigateTo({
  420. url: '/pages/cart/pages/goodsDetail/goodsDetail?goods_id=' + goodsId
  421. })
  422. }),
  423. //添加购物车
  424. addCart: utils.throttle(function (e) {
  425. if (!utils.getStorageSync(storeKeys.TOKEN)) {
  426. wx.navigateTo({
  427. url: "/pages/tabBar/login/login"
  428. })
  429. return;
  430. }
  431. let id = e.currentTarget.dataset.id;
  432. let stock_total = e.currentTarget.dataset.stock || 0;
  433. //库存不足
  434. if (stock_total <= 0) {
  435. utils.toast("当前商品暂时缺货")
  436. return;
  437. }
  438. let staffUserId = utils.getStorageSync(storeKeys.SHAREID) || utils.getStorageSync(storeKeys.APPLESID) || 0;
  439. let data = {
  440. "goodsId": id, //商品ID
  441. "goodsSkuId": "", //商品规格ID
  442. "goodsNum": 1, //购买数量,不能小于1
  443. staffUserId: parseInt(staffUserId)
  444. }
  445. wx.showLoading({
  446. title: "加载中"
  447. });
  448. http.request({
  449. url: api.URL + '/api/cart/add',
  450. method: 'POST',
  451. data,
  452. token: utils.getStorageSync(storeKeys.TOKEN),
  453. success: (res) => {
  454. wx.hideLoading();
  455. utils.setStorageSync(storeKeys.CARETOTAl, res.data.data.cartTotal);
  456. app.changeTabBarBadge(utils.getStorageSync(storeKeys.CARETOTAl));
  457. utils.toast(res.data.message)
  458. },
  459. error: (res) => {
  460. wx.hideLoading();
  461. utils.toast(res.data.message)
  462. },
  463. })
  464. }),
  465. // 播放视频
  466. videoPlay() {
  467. this.setData({
  468. isPlay: true
  469. })
  470. this.data.videoCtx.play();
  471. },
  472. //前往我的分享码
  473. goToPoster: utils.throttle(function (e) {
  474. let url = "/pages/user/pages/appletIncomePoster/appletIncomePoster";
  475. wx.navigateTo({
  476. url: url
  477. })
  478. }),
  479. //关闭弹窗广告
  480. popupClose() {
  481. this.setData({
  482. showPopupAd: false
  483. })
  484. },
  485. //开通会员、前往会员中心
  486. memberClick: utils.throttle(function (e) {
  487. let userInfo = utils.getStorageSync(storeKeys.USERINFO) || {};
  488. if (!utils.getStorageSync(storeKeys.TOKEN)) {
  489. wx.navigateTo({
  490. url: "/pages/tabBar/login/login"
  491. })
  492. return;
  493. }
  494. if (userInfo.is_member) {
  495. wx.navigateTo({
  496. url: "/pages/member/pages/memberCenter/memberCenter"
  497. })
  498. } else {
  499. wx.navigateTo({
  500. url: "/pages/member/pages/membership/membership"
  501. })
  502. }
  503. }),
  504. onShareAppMessage: function (e) {
  505. return {
  506. title: app.globalData.shareTitle,
  507. imageUrl: app.globalData.shareImage,
  508. path: app.globalData.sharePath,
  509. }
  510. },
  511. onShareTimeline: function (e) {
  512. return {
  513. title: app.globalData.shareTitle,
  514. imageUrl: app.globalData.shareImage,
  515. path: app.globalData.sharePath,
  516. }
  517. }
  518. })