litian
2024-06-26 ccda9ec2fe70d8f51ef184eafc04b78d22dfbabd
packageBookService/pages/bookServices/detail/index.js
@@ -16,6 +16,7 @@
    options: {
      id: "",
      name: "",
      storeInfo: '',
    },
    bookDetail: {},
    bookClass: [],
@@ -37,6 +38,8 @@
    openTeachids: [],
    openLearnids: [],
    openTestids: [],
    isGoBuyResource: true,
    learnPath: '',
    applyResourceState: false, // 申请教学资源按钮防抖
    resourceClassList: [], // 资源所属分类
    applyState: "", // 教学资源申请状态
@@ -150,7 +153,8 @@
      },
    ],
    showIndex: '',
    successOrderNumber: ''
    successOrderNumber: '',
    applicationState: '' // 电子样书申请状态
  },
  resetTree: function (e) {
@@ -176,6 +180,7 @@
      options: {
        id: options.id,
        name: options.name,
        storeInfo: options.storeInfo,
      },
    });
    wx.setNavigationBarTitle({
@@ -345,6 +350,7 @@
      "mockData.count": 0,
    });
    const query = {
      storeInfo: this.data.options.storeInfo,
      path: "*",
      queryType: "*",
      productId: id,
@@ -637,6 +643,8 @@
      this.setData({
        showIndex: '1'
      })
    console.log(this.data.bookDetail.icon, '0111111');
    console.log(this.data.bookDetail.name, '45688');
  },
  // 跳转网店
  goShop(e) {
@@ -745,7 +753,7 @@
    return num
  },
  // 给·目录添加子项数量
  // 给目录添加子项数量
  changeResourceChildren(list) {
    const changeList = (list) => {
      for (let index = 0; index < list.length; index++) {
@@ -765,9 +773,10 @@
  },
  // 扁平化数据转换tree
  getTreeList(rootList, pathLength, newArr, path) {
  getTreeList(rootList, pathLength, newArr, path, addNum) {
    for (const item of rootList) {
      if (item.productLinkPath.length == pathLength && item.productLinkPath.includes(path)) {
      // 此处原本 item.productLinkPath.length == pathLength 但 productLinkPath 长度个别书存在4、5位交错
      if ((pathLength - item.productLinkPath.length >= 0 && pathLength - item.productLinkPath.length <= 3) && item.productLinkPath.includes(path)) {
        if (item.sysType == 'CmsItem') {
          if (item.selectType == 'webpage') {
            item.disabled = true
@@ -782,13 +791,13 @@
        }
        // newArr.push(item)
        // 在插入过程中对数据进行排序
        newArr = this.insertAndSortObjectsByProductLinkPath(newArr, item)
        newArr = this.insertAndSortObjectsByProductLinkPath(newArr, item, addNum)
      }
    }
    //给数组里面再添加一个children的空数组
    for (const i of newArr) {
      i.children = []
      this.getTreeList(rootList, pathLength + 6, i.children, i.productLinkPath)
      this.getTreeList(rootList, pathLength + addNum, i.children, i.productLinkPath, addNum)
      if (i.children.length == 0) {
        delete i.children
      }
@@ -813,9 +822,9 @@
  },
  // 排序数组 按照productLinkPath
  insertAndSortObjectsByProductLinkPath(array, newObj) {
  insertAndSortObjectsByProductLinkPath(array, newObj, addNum) {
    // 查找新对象应该插入的位置  
    let insertIndex = array.findIndex(obj => Number(newObj.productLinkPath.substring(newObj.productLinkPath.length - 6, newObj.productLinkPath.length)) < Number(obj.productLinkPath.substring(obj.productLinkPath.length - 6, obj.productLinkPath.length)));
    let insertIndex = array.findIndex(obj => Number(newObj.productLinkPath.substring(newObj.productLinkPath.length - addNum, newObj.productLinkPath.length)) < Number(obj.productLinkPath.substring(obj.productLinkPath.length - addNum, obj.productLinkPath.length)));
    // 如果没有找到合适的位置,则放在数组末尾  
    if (insertIndex === -1) {
@@ -826,10 +835,10 @@
    // 测试6 正式5
    // 对数组进行排序  
    array.sort((a, b) => {
      if (Number(a.productLinkPath.substring(a.productLinkPath.length - 5, a.productLinkPath.length)) < Number(b.productLinkPath.substring(b.productLinkPath.length - 5, b.productLinkPath.length))) {
      if (Number(a.productLinkPath.substring(a.productLinkPath.length - addNum, a.productLinkPath.length)) < Number(b.productLinkPath.substring(b.productLinkPath.length - addNum, b.productLinkPath.length))) {
        return -1;
      }
      if (Number(a.productLinkPath.substring(a.productLinkPath.length - 5, a.productLinkPath.length)) > Number(b.productLinkPath.substring(b.productLinkPath.length - 5, b.productLinkPath.length))) {
      if (Number(a.productLinkPath.substring(a.productLinkPath.length - addNum, a.productLinkPath.length)) > Number(b.productLinkPath.substring(b.productLinkPath.length - addNum, b.productLinkPath.length))) {
        return 1;
      }
      // a must be equal to b  
@@ -848,6 +857,7 @@
    let query = {
      path: '*',
      queryType: '*',
      storeInfo: this.data.options.storeInfo,
      productId: this.data.bookDetail.id,
      cmsPath: type.productLinkPath,
      cmsType: '*',
@@ -898,7 +908,25 @@
            }
          }
        });
        this.getTreeList(res.datas.cmsDatas[0].datas, 17, list, '\\')
        if (type.refCode == "jsek_cloudLearning") {
          this.setData({
            learnPath: type.productLinkPath
          })
          const dataList = res.datas.cmsDatas[0].datas
          if (dataList.length) {
            const tag = dataList.findIndex(item => item.saleMethod.length && item.saleMethod[0].Price > 0)
            this.setData({
              isGoBuyResource: tag > -1 ? true : false
            })
          } else {
            this.setData({
              isGoBuyResource: false
            })
          }
        }
        const addNum = query.cmsPath.length > 12 ? 7 : query.cmsPath.length > 14 ? 8 : 6
        const num = query.cmsPath.length + addNum
        this.getTreeList(res.datas.cmsDatas[0].datas, num, list, '\\', addNum)
        list = this.ensureTreeConsistency(list)
        list = this.changeResourceChildren(list)
        console.log('修改后云', list);
@@ -940,8 +968,10 @@
    let query = {
      path: "*",
      queryType: "*",
      storeInfo: this.data.options.storeInfo,
      productId: this.data.bookDetail.id,
      cmsPath: type.productLinkPath,
      cmsType: '*',
      itemFields: {
        SysType: "CmsFolder",
        // 资源类型,试读文件,是否允许下载等参数
@@ -970,59 +1000,24 @@
        }
        // 云测试,递归请求里层数据
        if (type.refCode == "questionBank") {
          const data = res.datas.cmsDatas[0].datas.filter(
            (item) => item.refCode == "jsek_questionBank"
          );
          if (data.length) return this.getResourceData(data[0]);
        }
        //教学资源 云学习
        if (
          type.refCode == "jsek_teachingResources" ||
          type.refCode == "jsek_cloudLearning"
        ) {
          if (res.datas.cmsDatas[0].datas.length > 0) {
            res.datas.cmsDatas[0].datas.forEach((item) => {
              item.checked = false;
            });
            const list = await this.getAllResource(res.datas.cmsDatas[0].datas);
          const data = res.datas.cmsDatas[0].datas.filter((item) => item.type == 'questionBankFolder' && item.childrenFolderCount > 0);
          if (data.length > 0) {
            let list = []
            console.log(query.cmsPath, query.cmsPath.length)
            // 测试 6位// 正式 5位//  测试调用传20,内部7  正式调用传17 内部传6
            const addNum = query.cmsPath.length > 12 ? 7 : query.cmsPath.length > 14 ? 8 : 6
            const num = query.cmsPath.length + addNum
            this.getTreeList(data, num, list, '\\', addNum)
            list = this.ensureTreeConsistency(list)
            let result = [];
            if (type.refCode == "jsek_teachingResources") {
              this.findChildIds(list, result);
              this.setData({
                teach: list,
                loading: false,
                openTeachids: result,
              });
            } else if (type.refCode == "jsek_cloudLearning") {
              let arr = this.handleTreeData(list).filter(
                (item) => item.saleMethod[0]
              );
              let freeIds = arr.filter((item) => {
                return item.saleMethod[0].Price == 0;
              });
              if (!freeIds.length)
                this.setData({
                  isshowDrawBtn: false,
                });
              this.findChildIds(list, result);
              this.setData({
                learn: list,
                loading: false,
                openLearnids: result,
              });
            }
            console.log(list, '云學習789');
          } else {
            // 无数据
            this.findChildIds(list[0].children, result);
            this.setData({
              test: list[0].children,
              loading: false,
              openTeachids: result,
            });
            console.log(this.data.test, "test")
          }
        } else if (type.refCode == "jsek_questionBank") {
          // const list = await this.getAllResource(res.datas.cmsDatas[0].datas)
          this.setData({
            test: res.datas.cmsDatas[0].datas,
            loading: false,
          });
        } else {
          console.log("其他");
        }
      })
      .catch((e) => {
@@ -1047,6 +1042,7 @@
    let query = {
      path: "*",
      queryType: "*",
      storeInfo: this.data.options.storeInfo,
      productId: this.data.bookDetail.id,
      cmsPath: path,
      itemFields: {
@@ -1211,7 +1207,6 @@
      // 发起订单初始化请求并等待结果
      const res = await app.MG.store.initOrder(query);
      // 获取订单号并赋值给 orderNumber.value
      console.log(res, 'res456');
      bookOrdersId = res.orderNumber;
      // 检查订单号是否存在
      if (bookOrdersId) {
@@ -1324,7 +1319,6 @@
  },
  // 申请教学资源
  applyResource() {
    // if (this.data.applyResourceState) {
    //   return wx.showToast({
    //     icon: "error",
@@ -1560,7 +1554,7 @@
      if (isSHow) {
        return false;
      } else {
        return data.saleMethod[0].price > 0 ? true : false;
        return data.saleMethod[0].Price > 0 ? true : false;
      }
      return !isSHow;
    } else {
@@ -1610,7 +1604,6 @@
  },
  updateShoppingCartHidden() {
    const isSHow = this.data.shoppingCartGetId.some(
      (item) => item == data.saleMethod[0].Id
    );
@@ -1685,19 +1678,19 @@
        };
        // 确认订单
        const confirmOrderRes = await app.MG.store.confirmOrder(parameter);
        console.log(confirmOrderRes.orderNumber, 'confirmOrderRes.orderNumber');
        if (confirmOrderRes.orderNumber) {
          child.changeReceive(false);
          wx.showToast({
            title: "领取成功",
          });
          this.getBookInfo(this.data.bookId);
          this.getResourceDataList({
            refCode: 'jsek_cloudLearning',
            productLinkPath: this.data.learnPath
          })
          this.setData({
            successOrderNumber: confirmOrderRes.orderNumber
          })
        }
      } catch (error) {
        console.log(error);
@@ -2023,6 +2016,7 @@
        this.data.bookBuy +
        "&bookId=" +
        this.data.bookDetail.id,
    });
  },
@@ -2087,6 +2081,20 @@
            list.push(item);
          }
        });
        const smBook = list.find(item => item.content[0].id == this.data.bookDetail.id)
        console.log('已申请', smBook);
        if (smBook && smBook.state == 'Normal') {
          const flag = new Date(smBook.feedBack.endDate + '23:59:59').getTime() > new Date().getTime()
          if (flag) {
            this.setData({
              applicationState: 'Normal'
            })
          } else {
            this.setData({
              applicationState: 'overdue'
            })
          }
        }
        this.setData({
          alreadyElectronicBookList: list,
        });
@@ -2175,15 +2183,27 @@
          return false;
        }
        let isApply = this.data.alreadyElectronicBookList.find(
          (eitem) => eitem.id == this.data.bookDetail.id
          (eitem) => eitem.content[0].id == this.data.bookDetail.id
        );
        if (isApply) {
          wx.showToast({
            title: "该书已申请!",
            icon: "none",
            duration: 1000,
          });
          return false;
          if (isApply.state == 'WaitAudit') {
            wx.showToast({
              title: "该书已申请!",
              icon: "none",
              duration: 1000,
            });
            return false;
          } else if (isApply.state == 'Normal') {
            const flag = new Date(isApply.feedBack.endDate + '23:59:59').getTime() > new Date().getTime()
            if (flag) {
              wx.showToast({
                title: "该书已申请!",
                icon: "none",
                duration: 1000,
              });
              return false;
            }
          }
        }
        if (this.data.electronicBookList.length >= 2) {
          wx.showToast({
@@ -2251,7 +2271,7 @@
          return false;
        }
        let isApply = this.data.alreadyPaperBookList.find(
          (pitem) => pitem.id == this.data.bookDetail.id
          (pitem) => pitem.content[0].id == this.data.bookDetail.id
        );
        if (isApply) {
          wx.showToast({