home.js 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759
  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/livelist/livelist'){
  307. this.tolive()
  308. }
  309. if (url === '/pages/user/all/all' || url === '/pages/helpfarm/helpfarm' || url === '/pages/projects/projects' || url === '/pages/customservice/customservice') {
  310. wx.switchTab({
  311. url: url
  312. })
  313. } else {
  314. if(id == 0){
  315. wx.navigateTo({
  316. url: url
  317. })
  318. }else{
  319. wx.reLaunch({
  320. url: url+id
  321. })
  322. }
  323. }
  324. }
  325. if (type === 1) {
  326. wx.navigateTo({
  327. url: '/pages/web/web?id=' + url
  328. })
  329. }
  330. },
  331. getClick (id) {
  332. var url = 'v1/ad/' + id + '/click'
  333. var params = {}
  334. var success = function () {
  335. }
  336. _request.$get(url, params, success)
  337. },
  338. getzhunongList () {
  339. var that = this
  340. var url = 'v1/projects?state=0,1'
  341. var params = {
  342. page: this.data.page1,
  343. per_page: this.data.per_page1
  344. }
  345. var success = function (res) {
  346. // var percent = res.data.list.current_funding / res.data.list.min_funding
  347. var countArr = []
  348. for (var index in res.data.list) {
  349. var count = parseInt(res.data.list[index].current_funding) / parseInt(res.data.list[index].min_funding) *100
  350. // console.log(count)
  351. var count1 = (count).toFixed(2)
  352. // var count1 = parseInt(count)
  353. countArr.push(count1)
  354. }
  355. that.setData({
  356. zhunongList: res.data.list,
  357. percent: countArr
  358. })
  359. // that.showprogress()
  360. }
  361. _request.$get(url, params, success)
  362. },
  363. toZhunong (val) {
  364. var id1 = val.currentTarget.dataset.val
  365. wx.navigateTo({
  366. url: '/pages/helpfarm/helpfarm-detail/helpfarm-detail?id=' + id1
  367. })
  368. },
  369. getBalanceInfo () {
  370. var that = this
  371. var url = 'v1/user/balance/info'
  372. var params = {
  373. }
  374. var success = function (res) {
  375. var result = res.data.total
  376. that.setData({
  377. balance: result
  378. })
  379. }
  380. _request.$get(url, params, success)
  381. },
  382. starttime () {
  383. var that = this
  384. that.setData({
  385. timer: setInterval(function () {
  386. // var date = new Date();
  387. // var now = date.getTime();
  388. // var endDate = new Date("2019-01-03 23:14:53");//设置截止时间
  389. // var end = that.data.clock * 1000;//设置截止时间
  390. // var end = endDate.getTime();
  391. // var leftTime = end - now; //时间差
  392. var t = Date.parse(new Date())
  393. t = t / 1000;
  394. var leftTime;
  395. if(that.data.nowseckill_data['state'] == 'seckill'){
  396. leftTime = that.data.clock - t
  397. }else if(that.data.nowseckill_data['state'] == 'preparing'){
  398. leftTime = that.data.nowseckill_data['start_time'] - t
  399. }
  400. var d, h, m, s, ms;
  401. if (leftTime >= 0) {
  402. let day = parseInt(leftTime / 86400)
  403. h = parseInt(leftTime / 3600 / 24)
  404. m = parseInt(leftTime / 60 ) - parseInt(leftTime / 3600) * 60
  405. s = parseInt(leftTime) - parseInt(leftTime / 60 ) * 60
  406. // d = Math.floor(leftTime / 1000 / 60 / 60 / 24);
  407. // h = Math.floor(leftTime / 1000 / 60 / 60 % 24);
  408. // m = Math.floor(leftTime / 1000 / 60 % 60);
  409. // s = Math.floor(leftTime / 1000 % 60);
  410. // ms = Math.floor(leftTime % 1000);
  411. // ms = ms < 100 ? "0" + ms : ms
  412. s = s < 10 ? "0" + s : s
  413. m = m < 10 ? "0" + m : m
  414. h = h < 10 ? "0" + h : h
  415. that.setData({
  416. day:day,
  417. hour: h,
  418. min: m,
  419. second: s,
  420. // msecond: ms,
  421. leftTime: leftTime
  422. })
  423. }
  424. if (leftTime < 0) {
  425. clearInterval(that.data.timer);
  426. that.setData({
  427. leftTime: 0,
  428. hour: '00',
  429. min: '00',
  430. second: '00',
  431. day:''
  432. // msecond: '00'
  433. })
  434. }
  435. },100),
  436. });
  437. },
  438. switchtime (e) {
  439. var cur = e.currentTarget.dataset.current
  440. var idx = e.currentTarget.dataset.val
  441. var killtime = e.currentTarget.dataset.time
  442. var nowtime = util.formatTime(new Date(e.currentTarget.dataset.showtime * 1000))
  443. var singleNavWidth = this.data.windowWidth / 5
  444. this.setData({
  445. navScrollLeft: (idx - 2) * singleNavWidth
  446. })
  447. if (this.data.currentTab == idx || this.data.today == killtime) {
  448. return false
  449. }
  450. this.setData ({
  451. currentTab: idx,
  452. today: killtime,
  453. firsttime: killtime,
  454. change: true,
  455. changeshow: cur,
  456. showtime: nowtime.substring(11,13)
  457. })
  458. this.getkillgoods()
  459. },
  460. geticons () {
  461. var that = this
  462. var url = 'v1/navigate/icons?source=xcx'
  463. var params = {}
  464. var success = function (res) {
  465. var icons = res.data
  466. that.setData({
  467. iconslist: icons
  468. })
  469. }
  470. _request.$get(url, params, success)
  471. },
  472. getkilltime () {
  473. var that = this
  474. var url = 'v1/seckill/dates'
  475. var params = {
  476. cache: false
  477. }
  478. var success = function (res) {
  479. var seclist = res.data.ret_item_list
  480. var singleNavWidth = that.data.windowWidth / 5
  481. // for (var index in seclist) {
  482. // if (seclist[index].state == 'seckill') {
  483. // that.setData({
  484. // firsttime: seclist[index].date_format,
  485. // clock: seclist[index].end_time,
  486. // // navScrollLeft: singleNavWidth,
  487. // toView: 'a' + seclist[index].date_format,
  488. // changeshow: 'seckill'
  489. // })
  490. // }
  491. // if (seclist[index].state == 'end' && seclist[index].date_format == that.data.currentTab) {
  492. // that.setData({
  493. // toView: 'a' + seclist[index].date_format,
  494. // changeshow: 'end'
  495. // })
  496. // }
  497. // if (seclist[index].state == 'preparing' && seclist[index].date_format == that.data.currentTab) {
  498. // var nowtime = util.formatTime(new Date(seclist[index].start_time * 1000))
  499. // that.setData({
  500. // toView: 'a' + seclist[index].date_format,
  501. // changeshow: 'preparing',
  502. // showtime: nowtime.substring(11,13),
  503. // })
  504. // }
  505. // if (seclist[index].state == 'none' && seclist[index].date_format == that.data.currentTab) {
  506. // that.setData({
  507. // toView: 'a' + seclist[index].date_format,
  508. // changeshow: 'none'
  509. // })
  510. // }
  511. // }
  512. var nsdata;
  513. for (var index in seclist) {
  514. if (seclist[index].state == 'seckill') {
  515. nsdata = seclist[index];
  516. var showtime = util.formatTime(new Date(nsdata['start_time']* 1000));
  517. nsdata['showtime'] = showtime.substring(11,13);
  518. nsdata['clock'] = seclist[index].end_time;
  519. break;
  520. }else if (seclist[index].state == 'preparing') {
  521. nsdata = seclist[index];
  522. var showtime = util.formatTime(new Date(nsdata['start_time'] * 1000));
  523. nsdata['showtime'] = showtime.substring(11,13)
  524. break;
  525. }
  526. }
  527. console.log('nsdata',nsdata);
  528. that.setData({
  529. seckilltimelist: seclist,
  530. clock:nsdata ? nsdata['clock'] : 0,
  531. nowseckill_data:nsdata
  532. })
  533. if(nsdata){
  534. that.getkillgoods()
  535. that.starttime()
  536. }
  537. }
  538. _request.$get(url, params, success)
  539. },
  540. getkillgoods () {
  541. var that = this
  542. var url = 'v1/seckill/products'
  543. var params = {
  544. query_date: that.data.nowseckill_data ? that.data.nowseckill_data['date_format'] : '',
  545. cache: false
  546. }
  547. var success = function (res) {
  548. // if (res.data.product_list.length > 0) {
  549. var killgoodslist = res.data.product_list
  550. that.setData({
  551. killgoodslist: killgoodslist,
  552. })
  553. // }
  554. }
  555. _request.$get(url, params, success)
  556. },
  557. toabout () {
  558. // var host = getApp().globalData.d5c
  559. // if (host === 'tfhwx.hiwavo.com') {
  560. // wx.navigateTo({
  561. // url: '/pages/parse/parse?id=2'
  562. // })
  563. // } else if (host === 'fhwx.hiwavo.com') {
  564. wx.navigateTo({
  565. url: '/pages/parse/parse?id=1'
  566. })
  567. // }
  568. },
  569. tofhvd () {
  570. wx.navigateTo({
  571. url: '/pages/parse/parse?id=2'
  572. })
  573. },
  574. toyszq () {
  575. wx.reLaunch({
  576. url: '/pages/projects/projects?currentTab=4'
  577. })
  578. },
  579. togrhl () {
  580. wx.reLaunch({
  581. url: '/pages/projects/projects?currentTab=2'
  582. })
  583. },
  584. tojjry () {
  585. wx.reLaunch({
  586. url: '/pages/projects/projects?currentTab=3'
  587. })
  588. },
  589. toygyp () {
  590. wx.reLaunch({
  591. url: '/pages/projects/projects?currentTab=5'
  592. })
  593. },
  594. tothzq () {
  595. wx.reLaunch({
  596. url: '/pages/projects/projects?currentTab=1'
  597. })
  598. },
  599. todz () {
  600. if(this.data.userinfo.rank < 2){
  601. wx.navigateTo({
  602. url: '/packageUser/pages/user/applyLeader/applyLeader'
  603. })
  604. }else{
  605. wx.navigateTo({
  606. url: '/pages/areacart/areacart'
  607. })
  608. }
  609. },
  610. tocentcart () {
  611. wx.navigateTo({
  612. url: '/pages/centcart/centcart'
  613. })
  614. },
  615. topyq () {
  616. wx.navigateTo({
  617. url: '/packageUser/pages/user/invite/material/material'
  618. })
  619. },
  620. info(){
  621. var that = this
  622. var url = 'v1/user/info'
  623. var params = {}
  624. var success = function (res) {
  625. that.setData({
  626. info:res.data,
  627. userinfo:res.data.wx_user,
  628. showpyq: res.data.wx_user.show_invite_mode
  629. })
  630. }
  631. _request.$get(url, params, success)
  632. },
  633. videoTap:function(e){
  634. var index = e.currentTarget.dataset['index'];
  635. //获取video
  636. this.videoContext = wx.createVideoContext('video'+index);
  637. if(this.data.productsList[index].video_play){
  638. this.videoContext.pause();
  639. this.setData({
  640. ['productsList[' + index + '].video_play']: false
  641. })
  642. }else{
  643. this.videoContext.play();
  644. this.setData({
  645. ['productsList[' + index + '].video_play']: true
  646. })
  647. }
  648. },
  649. tolive:function(e){
  650. var that = this
  651. var url = 'v1/live_broad/current'
  652. var params = {}
  653. var success = function (res) {
  654. let roomId = [res.data.room_id] // 填写具体的房间号,可通过下面【获取直播房间列表】 API 获取
  655. let customParams = encodeURIComponent(JSON.stringify({ path: 'pages/index/index', pid: 1 })) // 开发者在直播间页面路径上携带自定义参数(如示例中的path和pid参数),后续可以在分享卡片链接和跳转至商详页时获取,详见【获取自定义参数】、【直播间到商详页面携带参数】章节(上限600个字符,超过部分会被截断)
  656. wx.navigateTo({
  657. url: `plugin-private://wx2b03c6e691cd7370/pages/live-player-plugin?room_id=${roomId}&custom_params=${customParams}`
  658. })
  659. }
  660. _request.$get(url, params, success)
  661. wx.navigateTo({
  662. url: '/pages/livelist/livelist'
  663. })
  664. },
  665. // 滚动事件
  666. onPageScroll(e) {
  667. //滚动距离+屏幕高度换算vw倍数
  668. let listIndex = (e.scrollTop + this.data.screenHeight) / (this.data.screenWidth * 0.63)
  669. this.setData({
  670. listIndex: listIndex
  671. })
  672. }
  673. ,
  674. sortchangenormal(){
  675. this.setData({
  676. products: {
  677. rd: 0,
  678. page: 1,
  679. per_page: 5
  680. },
  681. productsList: [],
  682. price_sort:0,
  683. sale_sort:0
  684. })
  685. this.getList();
  686. },
  687. salesort(){
  688. var type = this.data.sale_sort+1;
  689. if(type>2) type = 0;
  690. this.setData({
  691. products: {
  692. rd: 0,
  693. page: 1,
  694. per_page: 5
  695. },
  696. productsList: [],
  697. sale_sort:type,
  698. })
  699. this.getList();
  700. },
  701. pricesort(e){
  702. var type = this.data.price_sort+1;
  703. if(type>2) type = 0;
  704. this.setData({
  705. products: {
  706. rd: 0,
  707. page: 1,
  708. per_page: 5
  709. },
  710. productsList: [],
  711. price_sort:type,
  712. })
  713. this.getList();
  714. },
  715. selectzones(e){
  716. var cur = e.currentTarget.dataset.id;
  717. if (this.data.currentZones == cur) {
  718. return false
  719. } else {
  720. this.setData({
  721. currentZones: cur,
  722. products: {
  723. rd: 0,
  724. page: 1,
  725. per_page: 5
  726. },
  727. productsList: []
  728. })
  729. this.getList()
  730. }
  731. }
  732. })