litian
2024-10-28 8d60f69402813488545502941785bf2d951e45bb
pages/home/home.js
@@ -1,7 +1,6 @@
import {
  fetchHome
} from '../../services/home/home';
import moment from 'moment'
import {
  loginInfo
} from '../../assets/js/login';
@@ -11,6 +10,7 @@
    barHeight: '',
    navBarHeight: '',
    searchVal: '',
    scoll: false,
    isWhite: false,
    userInfo: {},
    tabList: [], //目录
@@ -26,6 +26,7 @@
    activeItem: 0, //精选课程默认选中
    courseTypeList: [], //精选课程分类
    courseList: [],
    courseTypeActive: [],
    bookTypeList: [], //图书类型
    activeItem1: 0,
    bookTypeData: {},
@@ -36,15 +37,23 @@
    shoppingCartGetId: [],
    baseRefresh: {
      value: false
    }
    },
    loading: true,
  },
  onShow() {
    this.setData({
      searchVal: "",
    });
    this.loadHomePage();
    this.getBannerList()
    const token = wx.getStorageSync(app.config.tokenKey)
    if (token) {
      this.getShoppingCartList()
    }
    this.init();
  },
  onLoad() {
    this.getBannerList()
    const systInfo = wx.getSystemInfoSync();
    const menu = wx.getMenuButtonBoundingClientRect(); // 胶囊信息
    const navBarHeight = (menu.top - systInfo.statusBarHeight) * 2 + menu.height; // 导航栏高度
@@ -60,22 +69,22 @@
      loginInfo(app, (data) => {
        // 如果不是第一次登录,会执行回调
        if (data) {
          // 登录成功,自动记录token和用户信息,并返回true
          this.init();
          this.registe()
        } else {
          // 出现错误,返回false
          this.init();
        }
      })
    } else {
      // 如果是第一次登录,会跳转至绑定用户信息页面,填写完用户信息后进行登录并储存token和用户信息,结束后跳转回当前页面(携带页面参数)
    }
    this.init();
  },
  onReachBottom() {},
  onPullDownRefresh() {
    this.setData({
      'baseRefresh.value': true,
      isWhite: false
    })
    this.getBannerList();
    this.init();
  },
  init() {
@@ -93,12 +102,21 @@
    }, 500);
  },
  registe() {
    app.MG.app.creatUserBehavior({
      refCode: "sign"
    }).then(res => {});
  },
  getBannerList() {
    const list = []
    app.MG.resource.getItem({
      path: 'jsek_banner\\jsek_homeBannerApplet',
      fields: {
        jsek_link: []
      },
      coverSize: {
        width: 400
      },
      paging: {
        start: 0,
@@ -109,15 +127,27 @@
        const item = res.datas[i]
        list.push({
          value: item.icon,
          link: item.jsek_link
          link: item.jsek_link,
        })
      }
      this.setData({
        bannerList: list
        bannerList: list,
        loading: false
      })
    })
  },
  navToActivityDetail(e) {
    let {
      info
    } = e.currentTarget.dataset
    console.log(info)
    if (info.link) {
      wx.navigateTo({
        url: info.link,
      });
    }
  },
  loadHomePage() {
    fetchHome().then(({
@@ -131,6 +161,7 @@
  //点击目录
  toPages(item) {
    let info = item.target.dataset.info
    console.log(info);
    if (info.url) {
      if (info.text == "图书服务") {
        wx.switchTab({
@@ -161,6 +192,10 @@
        start: 0,
        size: 4
      },
      filterList: [{
        value: 'Normal',
        field: 'state'
      }],
      fields: {
        liveTime: [],
        lecturer: [],
@@ -171,8 +206,8 @@
    }
    app.MG.store.getProductList(obj).then((res) => {
      res.datas.forEach((item) => {
        item.liveTime = item.liveTime ? moment(item.liveTime).format("MM-DD HH:mm:ss") : '';
        item.startTime = item.startTime ? moment(item.startTime).format("MM-DD HH:mm:ss") : '';
        item.liveTime = item.liveTime ? item.liveTime.substring(5) : '';
        item.startTime = item.startTime ? item.startTime.substring(5) : '';
        item.price = item.price ? item.price.toFixed(2) : item.price;
      });
      this.setData({
@@ -186,7 +221,6 @@
  getCourseTypeListList() {
    const data = {
      path: 'jsek_homepageDigitalCourses',
      filterList: [],
      queryType: '\\',
      searchList: [],
      size: '20',
@@ -195,7 +229,11 @@
      sort: {
        type: 'Asc',
        field: 'LinkOrder'
      }
      },
      filterList: [{
        value: 'Normal',
        field: 'state'
      }]
    }
    app.MG.store.getStoreChannelList(data).then((res) => {
      if (res.datas && res.datas.length > 0) {
@@ -214,13 +252,17 @@
    const obj = {
      storeInfo: "app.config.goodsStore",
      path: item.pathList + '\\' + item.id,
      coverSize: {
        width: 260
      },
      // coverSize: {
      //   height: 205
      // },
      paging: {
        start: 0,
        size: 4
      },
      filterList: [{
        value: 'Normal',
        field: 'state'
      }],
      fields: {
        courseLeader: [],
        affiliatedUnit: [],
@@ -231,6 +273,7 @@
    app.MG.store.getProductList(obj).then((res) => {
      res.datas.forEach((item) => {
        item.price = item.price ? item.price.toFixed(2) : item.price;
        item.isbuy = item.purchasedSaleMethodIdList.indexOf(item.defaultSaleMethodId) > -1
      });
      this.setData({
        courseList: res.datas
@@ -239,13 +282,20 @@
  },
  tabChangeHandle(item) {
    let info = this.data.courseTypeList[item.detail.value]
    this.setData({
      courseList: [],
      courseTypeActive: item.detail.value
    })
    this.getCourseList(info)
  },
  //图书服务分类
  getBookTypeList() {
    const data = {
      path: 'jsek_homepageBookService',
      filterList: [],
      filterList: [{
        value: 'Normal',
        field: 'state'
      }],
      queryType: '\\',
      searchList: [],
      size: '20',
@@ -282,6 +332,10 @@
        start: 0,
        size: 6
      },
      filterList: [{
        value: 'Normal',
        field: 'state'
      }],
      fields: {
        author: []
      }
@@ -312,6 +366,10 @@
        start: 0,
        size: 3
      },
      filterList: [{
        value: 'Normal',
        field: 'state'
      }],
      fields: {
        author: []
      }
@@ -334,6 +392,10 @@
        start: 0,
        size: 6
      },
      filterList: [{
        value: 'Normal',
        field: 'state'
      }],
      fields: {
        author: [],
      }
@@ -341,6 +403,7 @@
    app.MG.store.getProductList(obj).then((res) => {
      res.datas.forEach((item) => {
        item.price = item.price ? item.price.toFixed(2) : item.price;
        item.isbuy = item.purchasedSaleMethodIdList.indexOf(item.defaultSaleMethodId) > -1
      });
      this.setData({
        textbookList: res.datas
@@ -389,24 +452,38 @@
    });
  },
  goSubjectDetail(e) {
    const {
      book
    } = e.currentTarget.dataset;
    wx.showToast({
      title: "建设中",
      icon: 'none',
      duration: 1000
    // return wx.showToast({
    //   title: "建设中",
    //   icon: 'none',
    //   duration: 1000
    // })
    const item = e.currentTarget.dataset.book
    // 网页类型跳转到网址复制页,因为url传参不能传 带参数的网络地址,所以此处要把网络地址里的传参摘出来,放到url里
    let urlData = ''
    const flags = item.jsek_link.indexOf("?")
    if (flags > -1) {
      urlData = item.jsek_link.slice(flags + 1, item.jsek_link.length)
    }
    let url = '/packageBookService/pages/bookServices/linkPage/index'
    wx.navigateTo({
      url: urlData ? url + `?path=${item.jsek_link.slice(0,flags)}` + '&' + urlData : url + `?path=${item.jsek_link}`
    })
  },
  goCourseDetail(e) {
    // return wx.showToast({
    //   title: "建设中",
    //   icon: 'none',
    //   duration: 1000
    // })
    const {
      book
    } = e.currentTarget.dataset;
    wx.showToast({
      title: "建设中",
      icon: 'none',
      duration: 1000
    })
    console.log(book);
    wx.navigateTo({
      url: '/pages/digitalCourses/digitalCoursesDetails/index?id=' + book.id + '&path=' + book.idPath,
    });
  },
  goReadBookDetail(e) {
    const {
@@ -420,11 +497,9 @@
    const {
      book
    } = e.currentTarget.dataset;
    wx.showToast({
      title: "建设中",
      icon: 'none',
      duration: 1000
    })
    wx.navigateTo({
      url: '/pages/digitalTextbooks/digitalTextbooksDetails/index?id=' + book.id,
    });
  },
@@ -445,57 +520,59 @@
      })
    })
  },
  addCart(e) {
  async addCart(e) {
    const {
      info
    } = e.currentTarget.dataset;
    wx.showToast({
      title: "建设中",
      icon: 'none',
      duration: 1000
    })
    return;
    if (wx.getStorageSync(app.config.tokenKey)) {
      let query = {
        start: 0,
        size: 999,
        filterList: [],
        searchList: []
      }
      try {
        if (
          this.data.shoppingCartGetId.includes(
            info.defaultSaleMethodId
          )
        ) {
          wx.showToast({
            title: "该书已在购物车,请勿重复添加空",
            icon: 'none',
            duration: 1000
          })
        } else {
          let query = {
            requests: [{
              saleMethodId: info.defaultSaleMethodId,
              storeEventId: null,
              agentCode: '电子书'
            }]
          }
          const addRes = app.MG.store.addShoppingCart(query)
          if (addRes) {
      if (info.isbuy) {
        wx.showToast({
          title: "该商品已购买",
          icon: 'none',
          duration: 1000
        })
      } else {
        let query = {
          start: 0,
          size: 999,
          filterList: [],
          searchList: []
        }
        try {
          if (
            this.data.shoppingCartGetId.includes(
              info.defaultSaleMethodId
            )
          ) {
            wx.showToast({
              title: "添加成功",
              icon: 'success',
              title: "该商品已在购物车,请勿重复添加",
              icon: 'none',
              duration: 1000
            })
          } else {
            let query = {
              requests: [{
                saleMethodId: info.defaultSaleMethodId,
                storeEventId: null,
                agentCode: '电子书'
              }]
            }
            const addRes = await app.MG.store.addShoppingCart(query)
            if (addRes) {
              wx.showToast({
                title: "添加成功",
                icon: 'success',
                duration: 1000
              })
            }
            this.getShoppingCartList()
          }
          this.getShoppingCartList()
        } catch (error) {
          console.error('出错了:', error)
        }
      } catch (error) {
        console.error('出错了:', error)
      }
    }
  },
  onMoreGuide(e) {
    let type = e.currentTarget.dataset.info
@@ -532,6 +609,29 @@
      wx.navigateTo({
        url: '/pages/home/digitalRead/index'
      })
    } else if (type == "zhuantitaolun") {
      // return wx.showToast({
      //   title: "建设中",
      //   icon: 'none',
      //   duration: 1000
      // })
      wx.navigateTo({
        url: '/pages/specialDiscussion/index'
      })
    } else if (type == "jingxuankecheng") {
      // return wx.showToast({
      //   title: "建设中",
      //   icon: 'none',
      //   duration: 1000
      // })
      wx.navigateTo({
        url: '/pages/digitalCourses/index?courseTypeActive=' + this.data.courseTypeActive
      })
    } else if (type == "shuzijiaocai") {
      wx.navigateTo({
        url: '/pages/digitalTextbooks/index'
      })
    } else {
      wx.showToast({
        title: "建设中",
@@ -542,29 +642,47 @@
  },
  // 扫一扫
  onIconScanTap() {
    wx.scanCode({
      success(res) {
        console.log(res);
        if (res.errMsg == "scanCode:ok" && res.path || res.result) {
          let path = res.path || res.result
          wx.redirectTo({
            url: '/' + path,
          })
        }
      }
    })
  },
  // 监听滚动条
  onScroll(e) {
    console.log(e)
    this.setData({
      isWhite: true
    })
    if (e.detail.scrollTop == 0) {
      this.setData({
        isWhite: false
      })
    if (this.data.scoll) {
      if (e.detail.scrollTop < 20) {
        this.data.scoll = false
        // 避免频繁调用 setData
        if (this.data.isWhite)
          this.isChange(false);
      }
    } else {
      if (e.detail.scrollTop > 20) {
        this.data.scoll = true
        // 避免频繁调用 setData
        if (!this.data.isWhite)
          this.isChange(true);
      }
    }
    // this.setData({
    //   isWhite: e.detail.scrollTop > 20 ? true : false
    // })
  },
  onScrollToTop(e) {
  isChange(data) {
    this.setData({
      isWhite: e.detail.scrollTop > 50 ? true : false
      isWhite: data
    })
  },
  onRetrievalPage() {
    // 首页测试登录功能,后续注释
@@ -589,4 +707,10 @@
  },
  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {},
  onShareTimeline() {}
});