home.js 19 KB

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