闫增涛
2024-05-06 e8ec903206cb82e4dbb4687291d5f7788e7ff046
packageDomain/pages/sampleBookList/applicationForm/index.js
@@ -24,6 +24,8 @@
    ebookCount: 0,
    paperBookCount: 0,
    bookList: [],
    isIos: wx.getSystemInfoSync().platform === 'ios',
    keyboardHeight: 0
  },
  /**
@@ -34,17 +36,21 @@
   * 生命周期函数--监听页面显示
   */
  onShow() {
    let that = this;
    that.setData({
      bookList: []
    })
    if (wx.getStorageSync(app.config.userInfoKey)) {
      this.setData({
      that.setData({
        userInfo: JSON.parse(wx.getStorageSync(app.config.userInfoKey))
      })
      if (this.data.userInfo.role == 'Teacher') {
        this.setData({
          'teacherInfo.schoolName': JSON.parse(this.data.userInfo.data).schoolName,
          'teacherInfo.courseName': JSON.parse(this.data.userInfo.data).courseName,
          'contactInfo.fullName': JSON.parse(this.data.userInfo.data).fullName,
          'contactInfo.phone': JSON.parse(this.data.userInfo.data).phone,
          'contactInfo.detailedAddress': JSON.parse(this.data.userInfo.data).detailedAddress,
      if (that.data.userInfo.role == 'Teacher') {
        that.setData({
          'teacherInfo.schoolName': JSON.parse(that.data.userInfo.data).schoolName,
          'teacherInfo.courseName': JSON.parse(that.data.userInfo.data).courseName,
          'contactInfo.fullName': JSON.parse(that.data.userInfo.data).fullName,
          'contactInfo.phone': JSON.parse(that.data.userInfo.data).phone,
          'contactInfo.detailedAddress': JSON.parse(that.data.userInfo.data).detailedAddress,
        })
      } else {
        wx.showModal({
@@ -55,24 +61,55 @@
              wx.navigateTo({
                url: "/packageDomain/pages/teacherCertification/index",
              });
            } else {
              wx.navigateBack();
            }
          }
        })
      }
      if (wx.getStorageSync("paperBookList")) {
        this.setData({
          paperBookList: wx.getStorageSync("paperBookList"),
          bookList: wx.getStorageSync("paperBookList")
        const paperBookList = JSON.parse(wx.getStorageSync("paperBookList"))
        for (let index = 0; index < paperBookList.length; index++) {
          const item = paperBookList[index];
          if (item.publicationDate)
            item.publicationDate = this.formatDate(item.publicationDate)
        }
        that.setData({
          paperBookList: paperBookList,
          bookList: paperBookList
        })
      }
      if (wx.getStorageSync("electronicBookList")) {
        this.setData({
          electronicBookList: wx.getStorageSync("electronicBookList")
        const electronicBookList = JSON.parse(wx.getStorageSync("electronicBookList"))
        for (let index = 0; index < electronicBookList.length; index++) {
          const item = electronicBookList[index];
          if (item.publicationDate)
            item.publicationDate = this.formatDate(item.publicationDate)
        }
        that.setData({
          electronicBookList: electronicBookList
        })
      }
      this.getSelectBookCount();
      this.getSelectPaperBookCount();
      this.getPaperType();
      that.getSelectBookCount();
      that.getSelectPaperBookCount();
      that.getPaperType();
    }
  },
  formatDate(inputDate) {
    // 使用正则表达式匹配日期部分
    const dateMatch = inputDate.match(/^(\d{4})\/(\d{1,2})\/(\d{1,2})/);
    if (dateMatch) {
      // 提取年、月、日
      const year = dateMatch[1];
      const month = dateMatch[2].padStart(2, '0'); // 确保月份为两位数
      const day = dateMatch[3].padStart(2, '0'); // 确保日期为两位数
      // 拼接并返回格式化后的日期
      return `${year}-${month}-${day}`;
    } else {
      // 如果没有匹配到日期部分,则返回原始输入或抛出错误
      return inputDate; // 或者 throw new Error('Invalid date format');
    }
  },
@@ -302,7 +339,7 @@
            that.setData({
              bookList: eList
            })
            wx.setStorageSync("electronicBookList", eList);
            wx.setStorageSync("electronicBookList", JSON.stringify(eList));
          } else {
            let pList = that.data.paperBookList;
            pList.forEach((obj, index) => {
@@ -313,13 +350,84 @@
            that.setData({
              bookList: pList
            })
            wx.setStorageSync("paperBookList", pList);
            wx.setStorageSync("paperBookList", JSON.stringify(pList));
          }
        } else if (res.cancel) {}
      }
    })
  },
  // 监听页面软键盘弹起手动推动页面
  bindkeyboardheightchange(e) {
    // 只对ios 处理
    if (!this.data.isIos === 'ios') {
      return
    }
    // 键盘高度
    const height = e.detail.height;
    const className = e.target.dataset.class;
    console.log(height, className)
    if (height === 0) {
      this.scrollToInput(0);
      return;
    }
    try {
      this.createSelectorQuery()
        .select(`.${className}`)
        .boundingClientRect((res) => {
          // 可使用窗口高度
          const windowHeight = wx.getSystemInfoSync().windowHeight;
          // 除去键盘的剩余高度
          let restHeight = windowHeight - height;
          // 元素左下角坐标
          let bottom = res.bottom;
          // 只有当元素被软键盘覆盖的时候才上推页面
          if (bottom <= restHeight) return;
          // 现阶段需要滚动的大小
          let scrollTop = bottom - restHeight;
          console.log(scrollTop, 1)
          this.scrollToInput(height, scrollTop);
        })
        .exec();
    } catch (error) {}
  },
  // 获取页面滚动条位置
  getScrollOffset() {
    return new Promise((resolve) => {
      try {
        wx.createSelectorQuery()
          .selectViewport()
          .scrollOffset((res) => {
            resolve(res.scrollTop);
          })
          .exec();
      } catch (error) {
        resolve(0);
      }
    });
  },
  // 监听页面软键盘弹起手动推动页面
  scrollToInput(keyboardHeight, scrollTop) {
    this.setData({
      keyboardHeight,
    });
    if (scrollTop) {
      try {
        this.getScrollOffset().then((lastScrollTop) => {
          wx.pageScrollTo({
            // 如果已经存在滚动,在此基础上继续滚
            scrollTop: lastScrollTop ? lastScrollTop + scrollTop : scrollTop,
            duration: 300,
          });
        });
      } catch (error) {}
    }
  },
  changeParam(e) {
    this.scrollToInput(0);
  },
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */