home.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635
  1. var _request = require('../../utils/request.js')
  2. var util = require('../../utils/util.js')
  3. Page ({
  4. data: {
  5. ceshi: 'false',
  6. swiper: {
  7. indicatorDots: true,
  8. autoplay: true,
  9. interval: 4000
  10. },
  11. swiperCurrent: 0,
  12. firstProject: [],
  13. secondProject: [],
  14. recommend: {
  15. title: 'Microlab/麦博 M200十周年蓝牙版台式电脑音箱 家用音响电脑音箱蓝牙版',
  16. price: 3900,
  17. url: 'https://img10.360buyimg.com/n7/jfs/t11821/47/132726032/183731/677590e/59e85492N24686ba9.jpg',
  18. point: 3999
  19. },
  20. products: {
  21. rd: 0,
  22. page: 1,
  23. per_page: 5
  24. },
  25. productsList: [],
  26. bannerList: [],
  27. categories: [],
  28. vershow: true,
  29. percent: [],
  30. zhunongList: [],
  31. page1: 1,
  32. per_page1: 50,
  33. balance: 0,
  34. bgcolor: '#eee',
  35. progress: 0,
  36. progress1: 0,
  37. // day: '00',
  38. hour: '00',
  39. min: '00',
  40. second: '00',
  41. timer: '',
  42. leftTime: 0,
  43. // msecond: '00',
  44. currentTab: util.formatChDate1(new Date()),
  45. navScrollLeft: 0,
  46. iconslist: [],
  47. seckilltimelist: [],
  48. today: util.formatChDate1(new Date()),
  49. killgoodslist: [],
  50. firsttime: '',
  51. change: false,
  52. clock: '',
  53. changeshow: 'seckill',
  54. toView: '',
  55. is_copartnershow: '',
  56. showpyq: 0,
  57. todaysend: Date.parse(new Date()) / 1000,
  58. showtime: '',
  59. projects_more:true,
  60. userinfo:{},
  61. nowseckill_data:''
  62. },
  63. onLoad: function () {
  64. // this.getzhunongList()
  65. this.setData({
  66. vershow: getApp().globalData.vershow,
  67. // is_copartnershow: getApp().globalData.is_copartner,
  68. })
  69. if (getApp().globalData.wx_id) {
  70. this.info()
  71. }
  72. this.getBanners()
  73. this.getCategories()
  74. this.getList()
  75. //this.getBalanceInfo()
  76. // this.showprogress()
  77. // this.starttime()
  78. wx.getSystemInfo({
  79. success: (res) => {
  80. this.setData({
  81. windowWidth: res.windowWidth
  82. })
  83. }
  84. })
  85. this.geticons()
  86. this.getkilltime()
  87. },
  88. onShow: function () {
  89. // this.getzhunongList()
  90. // this.getCategories()
  91. const screenWidth = wx.getSystemInfoSync().windowWidth
  92. const screenHeight = wx.getSystemInfoSync().windowHeight
  93. this.setData({
  94. //获取页面初始状态图片数量,0.63为图片容器的高度值(63vw),将代码中0.63改为你的容器对应高度
  95. listIndex: screenHeight / (screenWidth * 0.50),
  96. screenWidth: screenWidth,
  97. screenHeight: screenHeight
  98. })
  99. },
  100. onPullDownRefresh: function () {
  101. this.getBanners()
  102. this.getCategories()
  103. this.getList()
  104. // this.getzhunongList()
  105. wx.stopPullDownRefresh()
  106. this.geticons()
  107. this.getkilltime()
  108. },
  109. getList: function () {
  110. if (this.data.vershow) {
  111. this.getProjects()
  112. } else {
  113. this.getVersion()
  114. }
  115. },
  116. swiperChange: function (e) {
  117. this.setData({
  118. swiperCurrent: e.detail.current
  119. })
  120. },
  121. getVersion: function () {
  122. var that = this
  123. var url = 'v1/cat/3/products'
  124. var params = {
  125. page: this.data.products.page,
  126. per_page: this.data.products.per_page
  127. }
  128. var success = function (res) {
  129. that.setData({
  130. productsList: res.data.list
  131. })
  132. }
  133. _request.$get(url, params, success)
  134. },
  135. getProjects: function () {
  136. var that = this
  137. var url = 'v1/products'
  138. var params = {
  139. rd: this.data.products.rd,
  140. page: this.data.products.page,
  141. per_page: this.data.products.per_page
  142. }
  143. var success = function (res) {
  144. that.setData({
  145. projects_more: res.data.list_count > that.data.productsList.length,
  146. productsList: that.data.productsList.concat(res.data.list || []),
  147. })
  148. }
  149. _request.$get(url, params, success)
  150. },
  151. onReachBottom: function () {
  152. if (this.data.projects_more) {
  153. var page = this.data.products.page + 1
  154. this.setData({
  155. ['products.page']: page
  156. })
  157. this.getProjects()
  158. }
  159. },
  160. getBanners: function () {
  161. var item = 'home'
  162. if (!this.data.vershow) {
  163. item = 'test'
  164. }
  165. var that = this
  166. var url = 'v1/ad/' + item + '/items'
  167. var params = {
  168. }
  169. var success = function (res) {
  170. that.setData({
  171. bannerList: res.data
  172. })
  173. }
  174. _request.$get(url, params, success)
  175. },
  176. toProject: function (val) {
  177. var id = val.currentTarget.dataset.val;
  178. wx.navigateTo({
  179. url: '/pages/projects/project-detail/project-detail?id=' + id
  180. })
  181. },
  182. toCustom: function () {
  183. wx.reLaunch({
  184. url: '/pages/customservice/customservice'
  185. })
  186. },
  187. getCategories: function () {
  188. var that = this
  189. var url = 'v1/categories?platform=wx_hot'
  190. var params = {
  191. }
  192. var success = function (res) {
  193. if (res.data && res.data.wx_hot) {
  194. if (res.data.wx_hot.length >= 2) {
  195. var list1 = res.data.wx_hot.slice(0,2)
  196. that.setData({
  197. firstProject: list1
  198. })
  199. }
  200. if (res.data.wx_hot.length >= 6) {
  201. var list2 = res.data.wx_hot.slice(2,6)
  202. that.setData({
  203. secondProject: list2
  204. })
  205. }
  206. }
  207. that.setData({
  208. categories: res.data
  209. })
  210. }
  211. _request.$get(url, params, success)
  212. },
  213. onShareAppMessage: function (val) {
  214. return _request.share({
  215. title: '欢迎来到凤凰菁选商城',
  216. path: '/pages/start/start',
  217. imageUrl: 'http://fohow.oss-cn-shenzhen.aliyuncs.com/xcx/share/sharemain.jpg',
  218. sc: 'xcx_home',
  219. ri: 0,
  220. rp: 0
  221. })
  222. },
  223. toColumn: function (val) {
  224. var type = val.currentTarget.dataset.val.url_type
  225. var url = val.currentTarget.dataset.val.url
  226. var id = val.currentTarget.dataset.val.id
  227. this.getClick(id)
  228. if (type === 0) {
  229. wx.navigateTo({
  230. url: url
  231. })
  232. }
  233. if (type === 1) {
  234. wx.navigateTo({
  235. url: '/pages/web/web?id=' + url
  236. })
  237. }
  238. if(type === 2){
  239. wx.reLaunch({
  240. url: url
  241. })
  242. }
  243. },
  244. // newyear: function () {
  245. // wx.navigateTo({
  246. // url: '/pages/activity/redpacket/redpacket?rid=1'
  247. // })
  248. // }
  249. toviewfunc (val) {
  250. var type = val.currentTarget.dataset.val.url_type
  251. var url = val.currentTarget.dataset.val.url
  252. var id = val.currentTarget.dataset.val.product_cat_index
  253. if (type === 0) {
  254. if (url === '/pages/projects/projects') {
  255. getApp().globalData.isshow = id
  256. getApp().globalData.isupdate = false
  257. }
  258. if (url === '/pages/user/all/all' || url === '/pages/helpfarm/helpfarm' || url === '/pages/projects/projects' || url === '/pages/customservice/customservice') {
  259. wx.switchTab({
  260. url: url
  261. })
  262. } else {
  263. if(id == 0){
  264. wx.navigateTo({
  265. url: url
  266. })
  267. }else{
  268. wx.reLaunch({
  269. url: url+id
  270. })
  271. }
  272. }
  273. }
  274. if (type === 1) {
  275. wx.navigateTo({
  276. url: '/pages/web/web?id=' + url
  277. })
  278. }
  279. },
  280. getClick (id) {
  281. var url = 'v1/ad/' + id + '/click'
  282. var params = {}
  283. var success = function () {
  284. }
  285. _request.$get(url, params, success)
  286. },
  287. getzhunongList () {
  288. var that = this
  289. var url = 'v1/projects?state=0,1'
  290. var params = {
  291. page: this.data.page1,
  292. per_page: this.data.per_page1
  293. }
  294. var success = function (res) {
  295. // var percent = res.data.list.current_funding / res.data.list.min_funding
  296. var countArr = []
  297. for (var index in res.data.list) {
  298. var count = parseInt(res.data.list[index].current_funding) / parseInt(res.data.list[index].min_funding) *100
  299. // console.log(count)
  300. var count1 = (count).toFixed(2)
  301. // var count1 = parseInt(count)
  302. countArr.push(count1)
  303. }
  304. that.setData({
  305. zhunongList: res.data.list,
  306. percent: countArr
  307. })
  308. // that.showprogress()
  309. }
  310. _request.$get(url, params, success)
  311. },
  312. toZhunong (val) {
  313. var id1 = val.currentTarget.dataset.val
  314. wx.navigateTo({
  315. url: '/pages/helpfarm/helpfarm-detail/helpfarm-detail?id=' + id1
  316. })
  317. },
  318. getBalanceInfo () {
  319. var that = this
  320. var url = 'v1/user/balance/info'
  321. var params = {
  322. }
  323. var success = function (res) {
  324. var result = res.data.total
  325. that.setData({
  326. balance: result
  327. })
  328. }
  329. _request.$get(url, params, success)
  330. },
  331. starttime () {
  332. var that = this
  333. that.setData({
  334. timer: setInterval(function () {
  335. // var date = new Date();
  336. // var now = date.getTime();
  337. // var endDate = new Date("2019-01-03 23:14:53");//设置截止时间
  338. // var end = that.data.clock * 1000;//设置截止时间
  339. // var end = endDate.getTime();
  340. // var leftTime = end - now; //时间差
  341. var t = Date.parse(new Date())
  342. t = t / 1000;
  343. var leftTime;
  344. if(that.data.nowseckill_data['state'] == 'seckill'){
  345. leftTime = that.data.clock - t
  346. }else if(that.data.nowseckill_data['state'] == 'preparing'){
  347. leftTime = that.data.nowseckill_data['start_time'] - t
  348. }
  349. var d, h, m, s, ms;
  350. if (leftTime >= 0) {
  351. // day = parseInt(ctime / 86400)
  352. h = parseInt(leftTime / 3600)
  353. m = parseInt(leftTime / 60 ) - parseInt(leftTime / 3600) * 60
  354. s = parseInt(leftTime) - parseInt(leftTime / 60 ) * 60
  355. // d = Math.floor(leftTime / 1000 / 60 / 60 / 24);
  356. // h = Math.floor(leftTime / 1000 / 60 / 60 % 24);
  357. // m = Math.floor(leftTime / 1000 / 60 % 60);
  358. // s = Math.floor(leftTime / 1000 % 60);
  359. // ms = Math.floor(leftTime % 1000);
  360. // ms = ms < 100 ? "0" + ms : ms
  361. s = s < 10 ? "0" + s : s
  362. m = m < 10 ? "0" + m : m
  363. h = h < 10 ? "0" + h : h
  364. that.setData({
  365. hour: h,
  366. min: m,
  367. second: s,
  368. // msecond: ms,
  369. leftTime: leftTime
  370. })
  371. }
  372. if (leftTime < 0) {
  373. clearInterval(that.data.timer);
  374. that.setData({
  375. leftTime: 0,
  376. hour: '00',
  377. min: '00',
  378. second: '00',
  379. // msecond: '00'
  380. })
  381. }
  382. },100),
  383. });
  384. },
  385. switchtime (e) {
  386. var cur = e.currentTarget.dataset.current
  387. var idx = e.currentTarget.dataset.val
  388. var killtime = e.currentTarget.dataset.time
  389. var nowtime = util.formatTime(new Date(e.currentTarget.dataset.showtime * 1000))
  390. var singleNavWidth = this.data.windowWidth / 5
  391. this.setData({
  392. navScrollLeft: (idx - 2) * singleNavWidth
  393. })
  394. if (this.data.currentTab == idx || this.data.today == killtime) {
  395. return false
  396. }
  397. this.setData ({
  398. currentTab: idx,
  399. today: killtime,
  400. firsttime: killtime,
  401. change: true,
  402. changeshow: cur,
  403. showtime: nowtime.substring(11,13)
  404. })
  405. this.getkillgoods()
  406. },
  407. geticons () {
  408. var that = this
  409. var url = 'v1/navigate/icons'
  410. var params = {}
  411. var success = function (res) {
  412. var icons = res.data
  413. that.setData({
  414. iconslist: icons
  415. })
  416. }
  417. _request.$get(url, params, success)
  418. },
  419. getkilltime () {
  420. var that = this
  421. var url = 'v1/seckill/dates'
  422. var params = {
  423. cache: false
  424. }
  425. var success = function (res) {
  426. var seclist = res.data.ret_item_list
  427. var singleNavWidth = that.data.windowWidth / 5
  428. // for (var index in seclist) {
  429. // if (seclist[index].state == 'seckill') {
  430. // that.setData({
  431. // firsttime: seclist[index].date_format,
  432. // clock: seclist[index].end_time,
  433. // // navScrollLeft: singleNavWidth,
  434. // toView: 'a' + seclist[index].date_format,
  435. // changeshow: 'seckill'
  436. // })
  437. // }
  438. // if (seclist[index].state == 'end' && seclist[index].date_format == that.data.currentTab) {
  439. // that.setData({
  440. // toView: 'a' + seclist[index].date_format,
  441. // changeshow: 'end'
  442. // })
  443. // }
  444. // if (seclist[index].state == 'preparing' && seclist[index].date_format == that.data.currentTab) {
  445. // var nowtime = util.formatTime(new Date(seclist[index].start_time * 1000))
  446. // that.setData({
  447. // toView: 'a' + seclist[index].date_format,
  448. // changeshow: 'preparing',
  449. // showtime: nowtime.substring(11,13),
  450. // })
  451. // }
  452. // if (seclist[index].state == 'none' && seclist[index].date_format == that.data.currentTab) {
  453. // that.setData({
  454. // toView: 'a' + seclist[index].date_format,
  455. // changeshow: 'none'
  456. // })
  457. // }
  458. // }
  459. var nsdata;
  460. for (var index in seclist) {
  461. if (seclist[index].state == 'seckill') {
  462. nsdata = seclist[index];
  463. var showtime = util.formatTime(new Date(nsdata['start_time']* 1000));
  464. nsdata['showtime'] = showtime.substring(11,13);
  465. nsdata['clock'] = seclist[index].end_time;
  466. break;
  467. }else if (seclist[index].state == 'preparing') {
  468. nsdata = seclist[index];
  469. var showtime = util.formatTime(new Date(nsdata['start_time'] * 1000));
  470. nsdata['showtime'] = showtime.substring(11,13)
  471. break;
  472. }
  473. }
  474. console.log('nsdata',nsdata);
  475. that.setData({
  476. seckilltimelist: seclist,
  477. clock:nsdata ? nsdata['clock'] : 0,
  478. nowseckill_data:nsdata
  479. })
  480. if(nsdata){
  481. that.getkillgoods()
  482. that.starttime()
  483. }
  484. }
  485. _request.$get(url, params, success)
  486. },
  487. getkillgoods () {
  488. var that = this
  489. var url = 'v1/seckill/products'
  490. var params = {
  491. query_date: that.data.nowseckill_data ? that.data.nowseckill_data['date_format'] : '',
  492. cache: false
  493. }
  494. var success = function (res) {
  495. // if (res.data.product_list.length > 0) {
  496. var killgoodslist = res.data.product_list
  497. that.setData({
  498. killgoodslist: killgoodslist,
  499. })
  500. // }
  501. }
  502. _request.$get(url, params, success)
  503. },
  504. toabout () {
  505. // var host = getApp().globalData.d5c
  506. // if (host === 'tfhwx.hiwavo.com') {
  507. // wx.navigateTo({
  508. // url: '/pages/parse/parse?id=2'
  509. // })
  510. // } else if (host === 'fhwx.hiwavo.com') {
  511. wx.navigateTo({
  512. url: '/pages/parse/parse?id=1'
  513. })
  514. // }
  515. },
  516. tofhvd () {
  517. wx.navigateTo({
  518. url: '/pages/parse/parse?id=2'
  519. })
  520. },
  521. toyszq () {
  522. wx.reLaunch({
  523. url: '/pages/projects/projects?currentTab=4'
  524. })
  525. },
  526. togrhl () {
  527. wx.reLaunch({
  528. url: '/pages/projects/projects?currentTab=2'
  529. })
  530. },
  531. tojjry () {
  532. wx.reLaunch({
  533. url: '/pages/projects/projects?currentTab=3'
  534. })
  535. },
  536. toygyp () {
  537. wx.reLaunch({
  538. url: '/pages/projects/projects?currentTab=5'
  539. })
  540. },
  541. tothzq () {
  542. wx.reLaunch({
  543. url: '/pages/projects/projects?currentTab=1'
  544. })
  545. },
  546. todz () {
  547. if(this.data.userinfo.rank < 2){
  548. wx.navigateTo({
  549. url: '/packageUser/pages/user/applyLeader/applyLeader'
  550. })
  551. }else{
  552. wx.navigateTo({
  553. url: '/pages/areacart/areacart'
  554. })
  555. }
  556. },
  557. tocentcart () {
  558. wx.navigateTo({
  559. url: '/pages/centcart/centcart'
  560. })
  561. },
  562. topyq () {
  563. wx.navigateTo({
  564. url: '/packageUser/pages/user/invite/material/material'
  565. })
  566. },
  567. info(){
  568. var that = this
  569. var url = 'v1/user/info'
  570. var params = {}
  571. var success = function (res) {
  572. that.setData({
  573. userinfo:res.data.wx_user,
  574. showpyq: res.data.wx_user.show_invite_mode
  575. })
  576. }
  577. _request.$get(url, params, success)
  578. },
  579. videoTap:function(e){
  580. var index = e.currentTarget.dataset['index'];
  581. //获取video
  582. this.videoContext = wx.createVideoContext('video'+index);
  583. if(this.data.productsList[index].video_play){
  584. this.videoContext.pause();
  585. this.setData({
  586. ['productsList[' + index + '].video_play']: false
  587. })
  588. }else{
  589. this.videoContext.play();
  590. this.setData({
  591. ['productsList[' + index + '].video_play']: true
  592. })
  593. }
  594. },
  595. tolive:function(e){
  596. // var that = this
  597. // var url = 'v1/live_broad/current'
  598. // var params = {}
  599. // var success = function (res) {
  600. // let roomId = [res.data.room_id] // 填写具体的房间号,可通过下面【获取直播房间列表】 API 获取
  601. // let customParams = encodeURIComponent(JSON.stringify({ path: 'pages/index/index', pid: 1 })) // 开发者在直播间页面路径上携带自定义参数(如示例中的path和pid参数),后续可以在分享卡片链接和跳转至商详页时获取,详见【获取自定义参数】、【直播间到商详页面携带参数】章节(上限600个字符,超过部分会被截断)
  602. // wx.navigateTo({
  603. // url: `plugin-private://wx2b03c6e691cd7370/pages/live-player-plugin?room_id=${roomId}&custom_params=${customParams}`
  604. // })
  605. // }
  606. // _request.$get(url, params, success)
  607. wx.navigateTo({
  608. url: '/pages/livelist/livelist'
  609. })
  610. },
  611. // 滚动事件
  612. onPageScroll(e) {
  613. //滚动距离+屏幕高度换算vw倍数
  614. let listIndex = (e.scrollTop + this.data.screenHeight) / (this.data.screenWidth * 0.63)
  615. this.setData({
  616. listIndex: listIndex
  617. })
  618. }
  619. })