// index.ts import dayjs from 'dayjs' import HomeApi from '../../services/home' import Navi from '../../utils/navi' import GoodApi from '../../services/good' import { weburl } from '../../utils/http' // 获取应用实例 // const app = getApp() const collapse = ['900rpx', '1466rpx'] const windowWidth = wx.getSystemInfoSync().windowWidth Page({ data: { loading: false, successload: 0, swipewidth: windowWidth, moveicon: { name: 'chevron-down', }, albumInput: { skipCount: 0, maxResultCount: 10, }, albums: [] as any[], albumTotal: 0, loadMoreStatus: 0, swipeHeight: collapse[1], movecls: 'zoom', homeCarousels: [] as WxCarouselListItemDto[], homeCategories: [] as WxAlbumCategoryItemDto[], homeDisplays: [] as WxDisplayListItemDto[], homeActives: [] as any[], marqueeShow: true, marquee: { speed: 60, loop: -1, delay: 0, }, current: 1, autoplay: true, duration: 500, interval: 5000, gutter: [10, 50], motto: 'Hello World', mottoEx: '', userInfo: {}, hasUserInfo: false, today: dayjs().add(1, 'day').isAfter(dayjs()), canIUse: wx.canIUse('button.open-type.getUserInfo'), canIUseGetUserProfile: false, canIUseOpenData: wx.canIUse('open-data.type.userAvatarUrl') && wx.canIUse('open-data.type.userNickName'), // 如需尝试获取用户信息可改为false }, // 事件处理函数 //bindViewTap() { // getApp().globalData.hasTicket = true // wx.navigateTo({ // url: '../logs/logs', // }) // buses.emit('login', 'ray') // buses.emit('enter', 'ray lee') //}, loadRecommend(rest = false) { console.log('next') this.setData({ loadMoreStatus: 1, }) GoodApi.GetHomeRecommend(this.data.albumInput as any).then((rsp) => { if (rsp.result) { const result = rsp.result as any const { items = [] } = result const nowItems = rest ? items : this.data.albums.concat(items) this.setData({ albums: nowItems as any, albumTotal: result.totalCount || 0, loadMoreStatus: nowItems.length === result.totalCount ? 2 : 0, }) } }) }, handleReachBottom() { if (this.data.loadMoreStatus === 0 && this.data.albums.length < this.data.albumTotal) { this.setData( { albumInput: { ...this.data.albumInput, skipCount: this.data.albumInput.skipCount + 10, }, }, () => { this.loadRecommend() }, ) } }, onLoad() { // watch.call(this, 'motto', (val) => { // this.setData({ // mottoEx: val + ' watched!', // }) // }) // @ts-ignore if (wx.getUserProfile) { this.setData({ canIUseGetUserProfile: true, }) } }, onPullDownRefresh() { wx.stopPullDownRefresh() this.onMoveSize() // if (!this.data.loading) { // this.load() // } }, /** * 用户点击右上角分享 */ onShareAppMessage(options: { from: 'menu' | 'button'; target: any }) { console.log(options) // 设置菜单中的转发按钮触发转发事件时的转发内容 var shareObj = { title: '欢画线上商城', // 默认是小程序的名称(可以写slogan等) path: '/pages/index/index', // 默认是当前页面,必须是以‘/'开头的完整路径 imageUrl: weburl + '/share.jpg', //自定义图片路径,可以是本地文件路径、代码包文件路径或者网络图片路径,支持PNG及JPG,不传入 imageUrl 则使用默认截图。显示图片长宽比是 5:4 success(res: { errMsg: string }) { // 转发成功之后的回调 if (res.errMsg == 'shareAppMessage:ok') { } }, fail(res: { errMsg: string }) { // 转发失败之后的回调 if (res.errMsg == 'shareAppMessage:fail cancel') { // 用户取消转发 } else if (res.errMsg == 'shareAppMessage:fail') { // 转发失败,其中 detail message 为详细失败信息 } }, complete() { // 转发结束之后的回调(转发成不成功都会执行) }, } return shareObj }, load() { wx.getUserInfo({ success(res) { console.log(res) }, }) this.setData({ loading: true, successload: 0, }) const self = this Promise.all([HomeApi.GetHomeCarousel(), HomeApi.GetHomeCategory(), HomeApi.GetHomeActive()]) .then((rsps) => { self.setData({ homeCarousels: rsps[0].result, homeCategories: rsps[1].result, homeActives: rsps[2].result, successload: 1, loading: false, }) this.loadRecommend() }) .catch(() => { this.setData({ loading: false, successload: 2, }) }) }, onShow() { this.getTabBar().init() this.load() }, getUserProfile() { // 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认,开发者妥善保管用户快速填写的头像昵称,避免重复弹窗 wx.getUserProfile({ desc: '展示用户信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写 success: (res) => { console.log(res) this.setData({ userInfo: res.userInfo, hasUserInfo: true, }) }, }) }, getUserInfo(e: any) { // 不推荐使用getUserInfo获取用户信息,预计自2021年4月13日起,getUserInfo将不再弹出弹窗,并直接返回匿名的用户个人信息 console.log(e) this.setData({ userInfo: e.detail.userInfo, hasUserInfo: true, }) }, stringify(e: any) { return JSON.stringify(e) }, bindChangeMotto() { this.setData({ motto: 'hello ' + new Date().getTime(), }) }, changeGutter() { const px = Math.round(Math.random() * 100) this.setData({ gutter: [px, px], }) }, gotoCate() { Navi.switchTab({ url: '/pages/goods/category/index', }) }, gotolist(e: WechatMiniprogram.CustomEvent<{}, {}, { id: string }>) { Navi.navigateTo({ url: '/pages/goods/list/index?cate=' + e.currentTarget.dataset.id, }) }, gotoAdvtag(e: WechatMiniprogram.CustomEvent<{}, {}, { tagid: string }>) { Navi.navigateTo({ url: '/pages/advtag/index?tag=' + e.currentTarget.dataset.tagid, }) }, gotoLink(e: WechatMiniprogram.CustomEvent<{}, {}, { link: string; mode: string; id: string }>) { const { link, mode, id } = e.currentTarget.dataset console.log(mode) if (mode === 'pics') { Navi.navigateTo({ url: '/pages/atphotos/index?id=' + id, }) return } Navi.navigateTo({ url: '/pages/outlink/index?url=' + encodeURIComponent(link), }) }, gotoAlbum(e: WechatMiniprogram.CustomEvent<{}, {}, { link: string; mode: string; id: string }>) { const { id } = e.currentTarget.dataset Navi.navigateTo({ url: '/pages/atphotos/index?id=' + id, }) }, ondragend(e: WechatMiniprogram.CustomEvent<{ scrollLeft: number; velocity: number }>) { console.log(e.detail.scrollLeft, e.detail.velocity) // const full = 375 }, onMoveSize() { if (this.data.swipeHeight === collapse[0]) { this.setData({ swipeHeight: collapse[1], movecls: 'zoom', }) } else { this.setData({ swipeHeight: collapse[0], movecls: '', }) } }, gotoGoodsDetail(e: WechatMiniprogram.CustomEvent<{ goods: WxCateAlbumItemDto; index: number }>) { const { goods } = e.detail Navi.navigateTo({ url: '/pages/goods/detail/index?id=' + goods.id + '&cateid=' + goods.cateId, }) console.log('click', e) }, })