闫增涛
2024-03-27 1053bf2995141d5f73868bd2fb58deb1bc68c480
packageBookService/pages/bookServices/detail/index.js
@@ -34,6 +34,7 @@
    openTeachids: [],
    openLearnids: [],
    openTestids: [],
    applyResourceState: false,  // 申请教学资源按钮防抖
    resourceClassList: [], // 资源所属分类
    applyState: "",  // 教学资源申请状态
    deadline: "",  // 教学资源申请有效日期
@@ -53,7 +54,6 @@
      mockList: [] // 用户组卷提交信息
    },
    flag: true,
    applyResourceLoading: false,
    noResources: false,
    selectedIds: "",//商品或子商品销售方式
    bookBuy: false, //商品或子商品是否购买
@@ -67,6 +67,55 @@
    paperBookCount: 0, //纸质书剩余次数
    ebookCount: 0, //电子书剩余次数
    userInfo: {},
    fileInfo: {
      bookName: "",
      fileType: "",
      md5: "",
      freePage: ""
    },  //阅读器数据
    buyResourceData: {
      productLinkPath: '',
      refCode: '',
    },
    briefIcon: {
      name: "/static/images/bookService/detail/tushujianjie-g.png"
    },
    briefIconClick: {
      name: '/static/images/bookService/detail/tushujianjie-click.png'
    },
    eBookIcon: {
      name: '/static/images/bookService/detail/ebook-g.png'
    },
    eBookClickIcon: {
      name: '/static/images/bookService/detail/ebook-click.png'
    },
    teachResourcesIcon: {
      name: '/static/images/bookService/detail/jiaoxueziyuan.png'
    },
    teachResourcesClickIcon: {
      name: '/static/images/bookService/detail/jiaoxueziyuan-click.png'
    },
    learnResourceIcon: {
      name: '/static/images/bookService/detail/yunxuexi.png'
    },
    learnResourceClickIcon: {
      name: '/static/images/bookService/detail/yunxuexi-click.png'
    },
    testResourceIocn: {
      name: '/static/images/bookService/detail/test-icon-g.png'
    },
    testResourceClickIocn: {
      name: '/static/images/bookService/detail/test-click-icon.png'
    },
    noteIcon: {
      name: '/static/images/bookService/detail/biji-icon-g.png'
    },
    noteClickIcon: {
      name: '/static/images/bookService/detail/biji-click-icon.png'
    },
    icon1: {
      name: "/static/images/bookService/detail/dangdang.png"
    }
  },
@@ -157,7 +206,7 @@
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    if (this.data.tabValue == 'jesk_note') {
    if (this.data.tabValue == 'jsek_note') {
      const child = this.selectComponent('#note')
      child.onReachBottom()
    }
@@ -170,7 +219,7 @@
  // 格式化日期
  formatDate(dateString) {
    if (!dateString) {
      return 'Invalid date';
      return '';
    }
    const match = dateString.match(/^(\d{4})\/(\d{1,2})\/(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/);
    if (!match) {
@@ -264,7 +313,6 @@
      },
    };
    app.MG.store.getProductDetail(query).then(async (res) => {
      console.log(res.datas);
      this.setData({
        bookDetail: res.datas,
        cmsDatas: res.datas.cmsDatas[0].datas,
@@ -272,9 +320,12 @@
      });
      this.getSubTtem();
      // 获取图书分类
      const iconType = JSON.parse(res.datas.bookClassification)[0][0];
      const classType = JSON.parse(res.datas.bookClassification)[0][1];
      const className = await this.getBookClass(iconType, classType)
      let className = ''
      if (Array.isArray(res.datas.bookClassification) && res.datas.bookClassification.length) {
        const iconType = JSON.parse(res.datas.bookClassification)[0][0];
        const classType = JSON.parse(res.datas.bookClassification)[0][1];
        className = await this.getBookClass(iconType, classType)
      }
      // 获取组卷销售id
      if (res.datas.saleMethod && res.datas.saleMethod.length) {
        res.datas.saleMethod.forEach((item) => {
@@ -353,12 +404,42 @@
          this.setData({
            noFile: true
          });
          if (res.datas[0].bookshelf_pdf) {
            this.setData({
              "fileInfo.bookName": this.data.bookDetail.name,
              "fileInfo.fileType": 'pdf',
              "fileInfo.md5": res.datas[0].bookshelf_pdf,
              "fileInfo.freePage": res.datas[0].bookshelf_probationPage,
            });
          } else if (res.datas[0].bookshelf_protectedEpub) {
            this.setData({
              "fileInfo.bookName": this.data.bookDetail.name,
              "fileInfo.fileType": 'epub',
              "fileInfo.md5": res.datas[0].bookshelf_protectedEpub,
              "fileInfo.freePage": res.datas[0].bookshelf_freeEpub,
            });
          }
        }
      } else {
        if (this.data.bookDetail.pdf || this.data.bookDetail.protectedEpub) {
          this.setData({
            noFile: true
          });
          if (this.data.bookDetail.pdf) {
            this.setData({
              "fileInfo.bookName": this.data.bookDetail.name,
              "fileInfo.fileType": 'pdf',
              "fileInfo.md5": this.data.bookDetail.pdf,
              "fileInfo.freePage": this.data.bookDetail.probationPage,
            });
          } else if (this.data.bookDetail.protectedEpub) {
            this.setData({
              "fileInfo.bookName": this.data.bookDetail.name,
              "fileInfo.fileType": 'epub',
              "fileInfo.md5": this.data.bookDetail.protectedEpub,
              "fileInfo.freePage": this.data.bookDetail.freeEpubPage,
            });
          }
        }
        this.setData({
          selectedIds: this.data.bookDetail.defaultSaleMethodId,
@@ -454,6 +535,12 @@
    if (e.detail.label == '教学资源' || e.detail.label == '云学习' || e.detail.label == '云测试') {
      const checkData = this.data.cmsDatas.find(item => item.refCode == e.detail.value)
      if (checkData) {
        if (e.detail.value == 'jsek_cloudLearning') {
          this.setData({
            'buyResourceData.productLinkPath': checkData.productLinkPath,
            'buyResourceData.refCode': checkData.refCode
          })
        }
        if ((e.detail.value == 'jsek_teachingResources' && !this.data.teach.length)
          || (e.detail.value == 'jsek_cloudLearning' && !this.data.learn.length)
          || (e.detail.value == 'questionBank' && !this.data.test.length)) {
@@ -471,6 +558,12 @@
      if (token) {
        child.changeLoading()
        child.getNoteList()
      }
    } else if (e.detail.label == '电子书') {
      const child = this.selectComponent('#eBook')
      if (child) {
        child.getProgress()
      }
    }
@@ -537,22 +630,26 @@
              item.checked = false
            })
            const list = await this.getAllResource(res.datas.cmsDatas[0].datas)
            let result = []
            if (type.refCode == 'jsek_teachingResources') {
              this.findChildIds(list, result)
              this.setData({
                teach: list,
                loading: false
                loading: false,
                openTeachids: result
              })
              this.findChildIds(this.data.teach, this.data.openTeachids = [])
              console.log('教学资源', this.data.teach, this.data.applyState);
            } else if (type.refCode == 'jsek_cloudLearning') {
              res.datas.cmsDatas[0].datas.forEach(item => {
                item.checked = false
              })
              const list = await this.getAllResource(res.datas.cmsDatas[0].datas)
              // res.datas.cmsDatas[0].datas.forEach(item => {
              //   item.checked = false
              // })
              // const list = await this.getAllResource(res.datas.cmsDatas[0].datas)
              this.findChildIds(list, result)
              this.setData({
                learn: list,
                loading: false
                loading: false,
                openLearnids: result
              })
              this.findChildIds(this.data.learn, this.data.openLearnids = [])
            }
          } else {
            // 无数据
@@ -602,7 +699,8 @@
        isDownload: [],
        jsek_resourceBrief: [],
        jsek_link: [],
        accessType: []
        accessType: [],
        learnSelectType: []
      },
      pading: {
        start: 0,
@@ -645,12 +743,12 @@
    for (let i = 0; i < data.length; i++) {
      if (index < 3) {
        const item = data[i]
        if (item.childrenFolderCount > 0) {
        if (item.children && item.children.length > 0) {
          result.push(item.id)
          for (let j = 0; j < item.children.length; j++) {
            if (index < 3) {
              const childrenItme = item.children[j]
              if (item.childrenCount > 0) {
              if (item.children && item.children.length > 0) {
                result.push(childrenItme.id)
                index += 1
              }
@@ -658,7 +756,7 @@
              break
            }
          }
        } else if (item.childrenCount > 0) {
        } else if (item.children && item.children.length > 0) {
          result.push(item.id)
          index += 1
        }
@@ -670,54 +768,65 @@
  // 图书添加购物车
  async addBookShopcCar() {
    const token = wx.getStorageSync('jsek-token')
    if (!token) {
      return wx.getUserProfile({
        desc: '用户登录',
        success: (res) => {
          console.log(res);
    if (!this.data.expire) {
      const token = wx.getStorageSync('jsek-token')
      if (!token) {
        return wx.getUserProfile({
          desc: '用户登录',
          success: (res) => {
            console.log(res);
          }
        })
      }
      const shoppingCartGetId = []
      let query = {
        start: 0,
        size: 9999,
        filterList: [],
        searchList: []
      }
      const res = await app.MG.store.getShoppingCartProductList(query)
      res.datas.forEach((item) => {
        shoppingCartGetId.push(item.saleMethod.id)
      })
      console.log(shoppingCartGetId, 'shoppingCartGetId');
      console.log(this.data.selectedIds, '销售方式id');
      const determine = shoppingCartGetId.some((item) => item == this.data.selectedIds)
      console.log(determine);
      if (!determine) {
        let query = {
          requests: [
            {
              saleMethodId: this.data.selectedIds,
              storeEventId: null,
              agentCode: '电子书'
            }
          ]
        }
        const addRes = app.MG.store.addShoppingCart(query)
        this.showSuccessToast()
      } else {
        Toast({
          context: this,
          selector: '#t-toast',
          message: '已添加',
          theme: 'success',
          direction: 'column',
        });
      }
    } else {
      wx.showToast({
        title: "商品不在有效期",
        icon: 'none',
        duration: 1000,
      })
    }
    const shoppingCartGetId = []
    let query = {
      start: 0,
      size: 999,
      filterList: [],
      searchList: []
    }
    const res = await app.MG.store.getShoppingCartProductList(query)
    res.datas.forEach((item) => {
      shoppingCartGetId.push(item.saleMethod.id)
    })
    console.log(shoppingCartGetId, 'shoppingCartGetId');
    console.log(this.data.selectedIds, '销售方式id');
    const determine = shoppingCartGetId.some((item) => item == this.data.selectedIds)
    console.log(determine);
    if (!determine) {
      let query = {
        requests: [
          {
            saleMethodId: this.data.selectedIds,
            storeEventId: null,
            agentCode: '电子书'
          }
        ]
      }
      const addRes = app.MG.store.addShoppingCart(query)
      this.showSuccessToast()
    } else {
      Toast({
        context: this,
        selector: '#t-toast',
        message: '已添加',
        theme: 'success',
        direction: 'column',
      });
    }
  },
@@ -731,9 +840,8 @@
    });
  },
  async buyBook() {
    console.log(this.data.bookItemDetail.defaultSaleMethodId, 'this.data.bookItemDetail.defaultSaleMethodId');
    if (!this.data.expire) {
      let bookOrdersId = ''
      let query = {
@@ -769,7 +877,7 @@
  },
  // 获取教学资源下载是否申请通过
  getApplyInfo(id) {
  async getApplyInfo(id) {
    // 获取当前时间
    const currentDate = new Date()
    let query = {
@@ -782,7 +890,7 @@
      appRefCode: app.config.appRefCode,
      topicIdOrRefCode: 'productDownLoad'
    }
    app.MG.ugc.getTopicMessageList(query).then((res) => {
    await app.MG.ugc.getTopicMessageList(query).then((res) => {
      const applyResource = res.datas.find((item) => {
        let content = []
        try {
@@ -838,13 +946,23 @@
      }
    })
    this.setData({
      applyResourceLoading: false
      applyResourceState: false,
    })
    wx.hideLoading()
  },
  // 申请教学资源
  applyResource() {
    if (this.data.applyResourceState) {
      return wx.showToast({
        icon: 'error',
        title: '请勿重复点击',
      })
    }
    this.setData({
      applyResourceLoading: true
      applyResourceState: true
    })
    wx.showLoading({
      title: '加载中',
    })
    // let role = userStore.userInfo ? userStore.userInfo.role : null
    // if (role) {
@@ -866,13 +984,13 @@
        }
      ])
    }
    app.MG.ugc.newTopicMessage(query).then((res) => {
    app.MG.ugc.newTopicMessage(query).then(async (res) => {
      if (res) {
        wx.showToast({
          title: '申请已提交,请待审核通过后下载',
        })
      }
      this.getApplyInfo(this.data.bookDetail.id)
      await this.getApplyInfo(this.data.bookDetail.id)
    })
    //   } else {
    //     ElMessageBox.confirm('请先进行教师认证!', '尊敬的用户,您好!', {
@@ -1238,7 +1356,6 @@
        keys: [this.data.bookId]
      })
      .then((res) => {
        console.log(JSON.parse(res[0].value));
        if (res && res.length) {
          const mock = JSON.parse(res[0].value)
          mock.forEach(item => {
@@ -1343,11 +1460,27 @@
    }
  },
  goRead() {
    if (!this.data.noFile) {
      wx.showToast({
        title: '暂无阅读文件',
        icon: 'none',
        duration: 2000
      })
      return false;
    }
    wx.navigateTo({
      url: '/packageBookService/pages/components/webView/index?md5=' + this.data.fileInfo.md5 + '&fileName=' + this.data.fileInfo.bookName + '&fileType=' + this.data.fileInfo.fileType + '&freePage=' + this.data.fileInfo.freePage
    })
  },
  //样书申请
  //申请电子样书
  appplyElectronicBook() {
    console.log(this.data.bookDetail)
    if (this.data.bookDetail.isApplyBook == 2 || this.data.bookDetail.isApplyBook == 4) {
      let role = this.data.userInfo != null ? this.data.userInfo.role : null
      if (role) {
        if (role == 'Teacher') {
@@ -1375,6 +1508,12 @@
          })
        }
      }
    } else {
      wx.showToast({
        title: "该书不能申请电子样书",
        icon: 'none',
        duration: 1000,
      })
    }
  },
  //申请纸质样书
@@ -1399,6 +1538,12 @@
          })
        }
      }
    } else {
      wx.showToast({
        title: "该书不能申请纸质样书",
        icon: 'none',
        duration: 1000,
      })
    }
  },
  //获取当前已申请次数(纸质)
@@ -1617,5 +1762,29 @@
      url: "/packageDomain/pages/sampleBookList/applicationForm/index",
    });
  },
  handleTree() {
    // const child = this.selectComponent('#teach-tree')
    let tree
    // let openIds = child.data.openIds
    if (this.data.tabValue == 'jsek_teachingResources') {
      tree = this.data.teach
    } else {
      tree = this.data.learn
    }
    for (let index = 0; index < tree.length; index++) {
      const item = tree[index];
      if (item.children && item.children.length > 0) {
        const num = this.data.openTeachids.findIndex(citem => item.id == citem)
        if (num >= 0) {
          item.open = true
        } else {
          item.open = false
        }
        this.handleTree(item.children)
      }
    }
    this.setData({
      teach: tree
    })
  },
})