home.js 19 KB

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