jiangping
2024-09-27 04b4bddaac0a222760113899568d20b45af701f4
wechat_jiaxuan/pages/index/index.js
@@ -1,4 +1,18 @@
// pages/index/index.js
import {
  getDictData,
  getMemberInfo,
  getZSZXCatalogs,
  getCustomizedNewsList,
  getHomeBanner,
  actionDo,
  getZhongTaiVideoPage,
  getZhongTaiProductNewsPage
} from '../../api/index'
import {
  eventBus
} from '../../utils/eventBus'
const app = getApp()
var touchDot = 0; //触摸时的原点
Page({
  /**
@@ -7,16 +21,26 @@
  data: {
    // 顶部nav
    topHeadStyle: 1,
    showWhiteHead: true,
    topHeadBorder: false,
    bannerList: [
      {imgurl: ''},
      {imgurl: 'adsa.png'},
      {imgurl: 'adsa.png'},
      {imgurl: 'adsa.png'},
    ],
    top: 0,
    open: false,
    desc: true,
    font_color: '#ffffff',
    ZSZXCata: {},
    showWhiteHead: false,
    topHeadBorder: false,
    member: {},
    bannerList: [],
    bannerImgHeight: 0,
    consultList: [],
    consultImgHeight: 0,
    videoTop: 0,
    windowHeight: 0,
    videoPlay: true,
    productVideo: {},
    bannerSwiperOption: {
      indicatorDots: true,
      vertical: false,
@@ -24,27 +48,457 @@
      interval: 3000,
      duration: 500
    },
    serviceList: [],
    testUrl: '',
    HOME_CLASS_A: '',
    HOME_CLASS_B: '',
    HOME_CLASS_B2: '',
    HOME_CLASS_C: '',
  },
  toSearch() {},
  onLoadLogin(options) {
    // 已经登录,可以走依赖token的逻辑了
    console.log('首页的onLoadLogin', options, `{"token":"${app.globalData.token}"}`);
    this.initData()
    const member = wx.getStorageSync('member')
    this.setData({
      member
    })
  },
  onReady() {
    const windowInfo = wx.getWindowInfo()
    setTimeout(() => {
      const query = wx.createSelectorQuery()
      query.select('.product_video').boundingClientRect(function (rect) {
        rect.top // 节点的上边界坐标
        rect.bottom // 节点的下边界坐标
      }).exec(res => {
        console.log(windowInfo.windowHeight)
        this.setData({
          videoTop: res[0].top,
          windowHeight: windowInfo.windowHeight
        })
      })
    }, 3000)
  },
  onShow() {
    const member = wx.getStorageSync('member')
    this.setData({
      member
    })
    eventBus.once("reloadHome", () => {
      console.log('reloadHome');
      this.onLoad()
      this.initData()
    })
  },
  onLoad(options) {
    this.initDictData()
    // this.initData()
  },
  changePath(e) {
    let index = e.currentTarget.dataset.type
    const member = this.data.member
    let that = this
    switch (index) {
      case '0':
        if (member && member.phone) {
          wx.navigateTo({
            url: '/pages/webView/index',
            success: function (res) {
              // 通过eventChannel向被打开页面传送数据
              res.eventChannel.emit('acceptDataFromOpenerPage', {
                link: that.data.testUrl
              })
            }
          })
        } else {
          wx.setStorageSync('tempPath', '/pages/webView/index')
          wx.navigateTo({
            url: '/pages/auth/auth',
          })
        }
        break;
      case '1':
        wx.navigateTo({
          url: '/pages/calculator/index'
        })
        break;
      case '2':
        if (member && member.phone) {
          wx.navigateTo({
            url: '/pages/design/design'
          })
        } else {
          wx.setStorageSync('tempPath', '/pages/design/design')
          wx.navigateTo({
            url: '/pages/auth/auth',
          })
        }
        // wx.navigateTo({
        //   url: '/pages/wonderful_activity/index',
        //   success: function(res) {
        //     // 通过eventChannel向被打开页面传送数据
        //     res.eventChannel.emit('acceptDataFromOpenerPage', { type: 1 })
        //   }
        // })
        break;
      default:
        console.log('error')
        break;
    }
  },
  changeStrategy(e) {
    let item = e.currentTarget.dataset.item
    wx.navigateTo({
      url: `/pages/homeId/index?code=${item.code}&name=${item.name}`,
    })
  },
  initData() {
    // 轮播
    getHomeBanner().then(res => {
      if (res.data) {
        this.setData({
          bannerList: res.data
        })
      }
    })
    // 产品视频
    getZhongTaiVideoPage({
      pageSize: 1,
      pageNum: 1
    }).then(res => {
      if (res.data && res.data.records && res.data.records.length > 0) {
        this.setData({
          productVideo: res.data.records
        })
      }
    })
    getZSZXCatalogs().then(res => { //志说装修
      this.setData({
        ZSZXCata: res.data || {}
      })
    })
    // 资讯
    getZhongTaiProductNewsPage({
      catalogCode: 'product_info',
      pageSize: 6,
      pageNum: 1
    }).then(res => {
      if (res.data && res.data.records) {
        this.setData({
          consultList: res.data.records
        })
      }
    })
    getCustomizedNewsList().then(res => { // 定制服务
      this.setData({
        serviceList: res.data || []
      })
    })
  },
  initDictData() {
    // 风格测试
    getDictData({
      code: 'WX_MINI_CONFIG',
      label: 'ZBOM_STYLE_TEST_URL'
    }).then(res => {
      if (res.data) {
        this.setData({
          testUrl: res.data.code
        })
        wx.setStorageSync('testUrl', res.data.code)
      }
    })
    getDictData({
      code: 'WEIXIN_DEFAULT_IMGS',
      label: 'HOME_CLASS_A'
    }).then(res => {
      this.setData({
        HOME_CLASS_A: res.data.code
      })
    })
    getDictData({
      code: 'WEIXIN_DEFAULT_IMGS',
      label: 'HOME_CLASS_B'
    }).then(res => {
      this.setData({
        HOME_CLASS_B: res.data.code
      })
    })
    getDictData({
      code: 'WEIXIN_DEFAULT_IMGS',
      label: 'HOME_CLASS_B2'
    }).then(res => {
      this.setData({
        HOME_CLASS_B2: res.data.code
      })
    })
    getDictData({
      code: 'WEIXIN_DEFAULT_IMGS',
      label: 'HOME_CLASS_C'
    }).then(res => {
      this.setData({
        HOME_CLASS_C: res.data.code
      })
    })
  },
  jumpProVideo() {
    wx.navigateTo({
      url: '/pages/productVideo/index',
    })
  },
  videoClick(e) {
    const {
      videourl,
      id
    } = e.currentTarget.dataset
    actionDo({
      actionType: 'view',
      id
    })
    let videoPlay = this.selectComponent('.videoPlay');
    if (videoPlay) {
      videoPlay.startPlayVideo(videourl, this);
    }
    // wx.previewMedia({
    //   sources: [{
    //     url: videourl,
    //     type: 'video'
    //   }]
    // })
  },
  goserHeight: function (e) {
    const serviceHeight = e.detail.height
    this.setData({
      serviceHeight: serviceHeight
    })
  },
  bannerbindload(e) {
    const {
      height,
      width
    } = e.detail
    let activeHeight = height * 670 / width
    this.setData({
      bannerImgHeight: activeHeight
    })
  },
  consultbindload(e) {
    const {
      height,
      width
    } = e.detail
    let activeHeight = height * 670 / width
    this.setData({
      consultImgHeight: activeHeight + 100
    })
  },
  consultClick(e) {
    const item = e.currentTarget.dataset.id
    actionDo({
      actionType: 'view',
      id: item.id
    })
    if (item.contentType == 'link') {
      wx.navigateTo({
        url: '/pages/webView/index',
        success: function (res) {
          // 通过eventChannel向被打开页面传送数据
          res.eventChannel.emit('acceptDataFromOpenerPage', {
            link: item.content,
            title: item.title
          })
        }
      })
    } else {
      wx.navigateTo({
        url: '/pages/consult/detail?id=' + item.id,
      })
    }
    // wx.navigateTo({
    //   url: '/pages/consult/detail?id=' + id
    // })
  },
  bannerClick(e) {
    const {
      id
    } = e.currentTarget.dataset
    const item = e.currentTarget.dataset.item
    console.log('item', item);
    if (item.openType) {
      actionDo({
        actionType: 'view',
        id: item.id
      })
    }
    if (item.openType == 'video') {
      wx.previewMedia({
        sources: [{
          url: item.openContent,
          type: 'video'
        }]
      })
    }
    if (item.openType == 'link') {
      wx.navigateTo({
        url: '/pages/webView/index',
        success: function (res) {
          res.eventChannel.emit('acceptDataFromOpenerPage', {
            link: item.openContent || item.content
          });
        }
      })
    }
    if (item.openType == 'page') {
      getApp().globalData.catalogCode = item.openContent
      wx.switchTab({
        url: '/pages/discover/discover'
      })
    }
    // getHomeBannerDetail({id})
  },
  seriveClick(e) {
    const {
      id,
      title
    } = e.currentTarget.dataset
    if (title === '专属客服') {
      wx.navigateTo({
        url: `/pages/kefu/index?title=${title}&id=${id}`,
      })
    } else {
      wx.navigateTo({
        url: `/pages/kefu/service?title=${title}&id=${id}`,
      })
    }
  },
  jumpProConsult() {
    wx.switchTab({
      url: '/pages/consult/consult',
    })
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
  bindVideoPlay() {
    const {
      id
    } = this.data.productVideo[0]
    actionDo({
      actionType: 'view',
      id
    })
  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
  hdBtn() {
    this.setData({
      showWhiteHead: true,
      open: true,
      font_color: "#000000",
      sty: '',
      topHeadStyle: 1,
      desc: false
    })
  },
  touchStart: function (e) {
    touchDot = e.touches[0].pageY;
  },
  touchMove: function (e) {
    var touchMove = e.touches[0].pageY;
    if (touchMove - touchDot <= 0 && this.data.top <= 1 && this.data.desc) {
      this.setData({
        showWhiteHead: true,
        open: false,
        desc: false
      })
      setTimeout(() => {
        this.setData({
          open: true,
          sty: ''
        })
      }, 1000)
    }
    if (touchMove - touchDot >= 50 && this.data.top <= 1 && !this.data.desc) {
      this.setData({
        showWhiteHead: false,
        open: false,
        desc: true,
        sty: 'overflow: hidden;'
      })
    }
  },
  onPageScroll(e) {
    const {
      videoTop,
      windowHeight,
      videoPlay
    } = this.data
    if (e.scrollTop + 100 > videoTop - (windowHeight / 2) && videoPlay) {
      this.setData({
        videoPlay: false
      })
      let videoplay = wx.createVideoContext('myvideo', this)
      videoplay.play();
    }
    let scrollTop = e.scrollTop / 100
    if (scrollTop <= 0.1) {
      this.setData({
        font_color: '#ffffff'
      })
    } else if (scrollTop >= 0.1 && scrollTop < 0.2) {
      this.setData({
        font_color: '#d0d0d0'
      })
    } else if (scrollTop >= 0.2 && scrollTop < 0.3) {
      this.setData({
        font_color: '#bdbdbd'
      })
    } else if (scrollTop >= 0.3 && scrollTop < 0.4) {
      this.setData({
        font_color: '#a1a1a1'
      })
    } else if (scrollTop >= 0.4 && scrollTop < 0.5) {
      this.setData({
        font_color: '#878787'
      })
    } else if (scrollTop >= 0.5 && scrollTop < 0.6) {
      this.setData({
        font_color: '#6d6d6d'
      })
    } else if (scrollTop >= 0.6 && scrollTop < 0.7) {
      this.setData({
        font_color: '#535353'
      })
    } else if (scrollTop >= 0.7 && scrollTop < 0.8) {
      this.setData({
        font_color: '#3b3b3b'
      })
    } else if (scrollTop >= 0.8 && scrollTop < 0.9) {
      this.setData({
        font_color: '#282828'
      })
    } else if (scrollTop >= 0.9) {
      this.setData({
        font_color: '#000000'
      })
    }
    if (scrollTop > 0) {
      this.setData({
        showWhiteHead: true
      })
    } else {
      this.setData({
        showWhiteHead: false
      })
    }
    this.setData({
      topHeadStyle: scrollTop,
      top: scrollTop
    })
  },
  /**
   * 生命周期函数--监听页面隐藏
   */