litian
2025-01-10 61052ffdfbbb93dae84803c5bd966899c2afb684
packageBookService/pages/bookServices/detail/index.js
@@ -7,6 +7,7 @@
} from "../../../../assets/js/login";
import FormData from '../../../../utils/formdata/index.js';
const app = getApp();
var pastData = require('../../psychologyAnswer/testdata/index')
Page({
  /**
   * 页面的初始数据
@@ -50,7 +51,12 @@
    resourceClassList: [], // 资源所属分类
    applyState: "", // 教学资源申请状态
    deadline: "", // 教学资源申请有效日期,
    isShowBuyCloundBtn: false,
    isshowDrawBtn: true, // 云学习领取查看按钮是否显示
    isShowBuyCloundMenu: false, //   云学习全部购买按钮是否显示
    isCloundHaveSaleMethod: false, // 云学习是否有销售方式
    cloundMenuIsBuy: false,
    learnTaskData: {},
    rejectCause: "", // 下载拒绝原因
    buyIdList: [],
    shoppingCartGetId: [], // 已购买id列表
@@ -69,6 +75,9 @@
      residue: 0, // 组卷剩余次数
      mockList: [], // 用户组卷提交信息
    },
    isBuyBank: false, // 题库是否购买
    isShoppingBank: false, // 题库是否加入购物车
    bankSaleData: null,
    relatedBookLoading: false,
    noRelatedBookData: false,
    relatedBookPath: "", // 相关图书path
@@ -169,10 +178,44 @@
      description: '',
      agree: false
    },
    resourceVisible: false,
    resourceValue: [],
    fileTypeList: [{
        label: '音频',
        value: '音频'
      },
      {
        label: '视频',
        value: '视频'
      },
      {
        label: '图片',
        value: '图片'
      },
      {
        label: 'PDF',
        value: 'PDF'
      },
      {
        label: '资源包',
        value: '资源包'
      },
      {
        label: '文档',
        value: '文档'
      },
      {
        label: '其他',
        value: '其他'
      }
    ],
    fileList: [],
    isShowUp: true,
    protocolShow: false,
    protocolTxt: ''
    protocolTxt: '',
    learnMenu: null,
    md5List: [],
    editDialog: false
  },
  resetTree: function (e) {
@@ -229,20 +272,13 @@
      this.setData({
        tabValue: options.tabValue,
      });
    }
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {},
  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
  onShow(options) {
    if (wx.getStorageSync("paperBookList")) {
      this.setData({
        paperBookList: JSON.parse(wx.getStorageSync("paperBookList")),
@@ -256,22 +292,10 @@
    this.setData({
      num: Number(this.data.paperBookList.length) + Number(this.data.electronicBookList.length),
    });
    if (this.data.bookDetail.id) {
      this.getBookInfo(this.data.bookDetail.id)
    }
  },
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {},
  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {},
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {},
  /**
   * 页面上拉触底事件的处理函数
@@ -283,10 +307,6 @@
    }
  },
  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {},
  // 格式化日期
  formatDate(dateString) {
    if (!dateString) {
@@ -412,10 +432,14 @@
        protectedEpub: [],
        probationPage: [], //pdf试读页数
        freeEpubPage: [], //epub试读百分比
        bookEditor: [], //图书编辑
        contactInformation: [], //联系方式
      },
    };
    app.MG.store.getProductDetail(query).then(async (res) => {
      this.getResourceCode(id, res.datas.rootCmsItemId)
      res.datas.bookEditor = res.datas.bookEditor ? res.datas.bookEditor : '-'
      res.datas.contactInformation = res.datas.contactInformation ? res.datas.contactInformation : '-'
      this.setData({
        bookDetail: res.datas,
        buyIdList: res.datas.purchasedSaleMethodIdList,
@@ -449,6 +473,16 @@
          }
          await this.getBookClass(classData);
        }
      }
      // 扫码从题库跳转回图书详情
      const localData = wx.getStorageSync('tabValue')
      if (localData) {
        this.setData({
          tabValue: localData
        })
        wx.removeStorage({
          key: 'tabValue',
        })
      }
      if (this.data.tabValue == 'questionBank' || this.data.tabValue == 'jsek_cloudLearning' || this.data.tabValue == 'jsek_teachingResources') {
        const checkData = this.data.cmsDatas.find(
@@ -487,13 +521,12 @@
        }
      }
      this.setData({
        "bookDetail.publicationDate": moment(this.data.bookDetail.publicationDate).format("YYYY年MM月"),
        "bookDetail.publicationDate": this.data.bookDetail.publicationDate ? moment(this.data.bookDetail.publicationDate).format("YYYY年MM月") : '',
        "bookDetail.price": this.numFormat(this.data.bookDetail.price),
        "bookDetail.oldPrice": this.numFormat(this.data.bookDetail.oldPrice),
        "bookDetail.paperPrice": this.numFormat(
          this.data.bookDetail.paperPrice
        ),
      });
    });
  },
@@ -512,10 +545,30 @@
      }
    }
    app.MG.store.getProductDetail(query).then((res) => {
      let isBuyBank = true
      let isShoppingBank = true
      let bankSaleData = null
      // 判断题库是否整体购买
      const bank = res.datas.cmsDatas[0].datas.find((item) => item.refCode == 'questionBank')
      if (bank) {
        if (bank.saleMethod.length) {
          bankSaleData = bank.saleMethod.find((item) => item.SaleType == 'Normal')
          if (bankSaleData) {
            isBuyBank = this.data.buyIdList.includes(bankSaleData.Id)
            isShoppingBank = this.data.buyIdList.includes(bankSaleData.Id) ? true : this.data.shoppingCartGetId.includes(bankSaleData.Id)
          }
        }
      }
      this.setData({
        resourceCodeList: res.datas.cmsDatas[0].datas
        resourceCodeList: res.datas.cmsDatas[0].datas,
        learnTaskData: res.datas.cmsDatas[0].datas.filter((item) => item.refCode == 'jsek_learningTasks')[0],
        isBuyBank,
        isShoppingBank,
        bankSaleData
      })
      // console.log('图书资源', res.datas.cmsDatas[0].datas)
      if (res.datas.cmsDatas[0].datas.length) this.setData({
        learnMenu: res.datas.cmsDatas[0].datas.find(item => item.refCode == 'jsek_cloudLearning')
      })
    })
  },
  //请求子商品的文件
@@ -706,6 +759,14 @@
      }
    }
  },
  // 联系
  editPhone() {
    this.setData({
      editDialog: true
    })
  },
  // 我要建议
  suggestBtn() {
    // 检查登录状态
@@ -842,10 +903,9 @@
  },
  // 扁平化数据转换tree
  getTreeList(rootList, pathLength, newArr, path) {
  getTreeList(rootList, newArr, path) {
    for (const item of rootList) {
      // 此处原本 item.productLinkPath.length == pathLength 但 productLinkPath 长度个别书存在4、5位交错
      if ((pathLength - item.productLinkPath.length >= 0 && pathLength - item.productLinkPath.length <= 3) && item.productLinkPath.includes(path)) {
      if (path == item.productLinkPath.replace('\\' + item.id, '')) {
        if (item.sysType == 'CmsItem') {
          if (item.selectType == 'webpage') {
            item.disabled = true
@@ -860,17 +920,15 @@
        }
        // newArr.push(item)
        // 在插入过程中对数据进行排序
        newArr = this.insertAndSortObjectsByProductLinkPath(newArr, item)
        newArr = this.insertAndSortObjectsById(newArr, item)
        // 插进数组后 从原数据中删除
        rootList = rootList.filter(nitem => nitem.id != item.id)
      }
    }
    //给数组里面再添加一个children的空数组
    // let addnum1 = pathLength - path.length == 6 ? 6 : 7
    for (const i of newArr) {
      i.children = []
      let addnum1 = i.productLinkPath.length - path.length == 6 ? 6 : 7
      this.getTreeList(rootList, pathLength + addnum1, i.children, i.productLinkPath)
      this.getTreeList(rootList, i.children, i.productLinkPath)
      if (i.children.length == 0) {
        delete i.children
      }
@@ -894,31 +952,44 @@
    return tree
  },
  // 排序数组 按照productLinkPath
  insertAndSortObjectsByProductLinkPath(array, newObj) {
  // 排序数组 按照id
  insertAndSortObjectsById(array, newObj) {
    // 查找新对象应该插入的位置  
    let insertIndex = array.findIndex(obj => Number(newObj.productLinkPath.substring(newObj.productLinkPath.lastIndexOf('\\') + 1, newObj.productLinkPath.length)) < Number(obj.productLinkPath.substring(obj.productLinkPath.lastIndexOf('\\') + 1, obj.productLinkPath.length)));
    let insertIndex = array.findIndex(obj => newObj.id < obj.id);
    // 如果没有找到合适的位置,则放在数组末尾  
    if (insertIndex === -1) {
      insertIndex = array.length;
    }
    // 插入新对象到数组  
    array.splice(insertIndex, 0, newObj);
    // 测试6 正式5
    // 对数组进行排序  
    array.sort((a, b) => {
      if (Number(a.productLinkPath.substring(a.productLinkPath.lastIndexOf('\\') + 1, a.productLinkPath.length)) < Number(b.productLinkPath.substring(b.productLinkPath.lastIndexOf('\\') + 1, b.productLinkPath.length))) {
        return -1;
      }
      if (Number(a.productLinkPath.substring(a.productLinkPath.lastIndexOf('\\') + 1, a.productLinkPath.length)) > Number(b.productLinkPath.substring(b.productLinkPath.lastIndexOf('\\') + 1, b.productLinkPath.length))) {
        return 1;
      }
      // a must be equal to b
      if (a.id < b.id) return -1;
      if (a.id > b.id) return 1;
      return 0;
    });
    // 返回更新后的数组  
    return array;
  },
  // 递归树结构,如果父级有销售方式(有效期),去掉所有子集的销售方式
  clearTreeSealmethod(clearSaleMethod, tree) {
    for (let item of tree) {
      const saleData = item.saleMethod &&
        item.saleMethod.length ?
        item.saleMethod.find((citem) => citem.SaleType == 'Normal') : null
      if (
        ((saleData && new Date(saleData.EndDate).getTime() >= new Date().getTime() && new Date(saleData.BeginDate).getTime() <= new Date().getTime()) ||
          clearSaleMethod) && item.children && item.children.length
      ) {
        item.children.forEach((ditem) => (ditem.saleMethod = []))
      }
      if (item.children && item.children.length)
        this.clearTreeSealmethod(
          saleData && new Date(saleData.EndDate).getTime() >= new Date().getTime() && new Date(saleData.BeginDate).getTime() <= new Date().getTime(),
          item.children
        )
    }
    return tree
  },
  // 教学资源 云学习 获取
  getResourceDataList(type) {
@@ -929,7 +1000,6 @@
    let query = {
      path: '*',
      queryType: '*',
      storeInfo: this.data.options.storeInfo,
      productId: this.data.bookDetail.id,
      cmsPath: type.productLinkPath,
      cmsType: '*',
@@ -942,10 +1012,9 @@
        file: [],
        protectedFile: [],
        resourcesClassification: [],
        isDownload: [],
        // isDownload: [],
        jsek_resourceBrief: [],
        jsek_link: [],
        jsek_questionBank: []
      },
      pading: {
        start: 0,
@@ -953,95 +1022,103 @@
      },
    }
    app.MG.store.getProductDetailNoChildren(query).then((res) => {
      if (!res.datas.cmsDatas[0].datas.length) {
      if (!res.datas.cmsDatas[0].datas.length || res.datas.cmsDatas[0].datas.length == 0) {
        return this.setData({
          noResources: true,
          loading: false,
        });
      }
      let list = []
      // 测试 6位// 正式 5位//  测试调用传20,内部7  正式调用传17 内部传6
      //教学资源 云学习
      if (
        type.refCode == "jsek_teachingResources" ||
        type.refCode == "jsek_cloudLearning"
      ) {
        res.datas.cmsDatas[0].datas.forEach((item) => {
          item.checked = false;
          if (item.sysType == 'CmsItem') {
            // 教学资源 类型名称赋值
            this.data.resourceClassList.forEach((type) => {
              if (type.value == item.resourcesClassification)
                item.resourceClass = type.name;
            });
            if (this.data.tabValue == "jsek_teachingResources") {} else if (this.data.tabValue == "jsek_cloudLearning") {
              item.isbuy = this.isShowNeedBuy(item);
              item.isShopCar = this.isShoppingCart(item);
            }
      // 判断云学习有无销售方式和有效期
      const cloundSaleMethod =
        type.saleMethod && type.saleMethod.length ?
        type.saleMethod.find((citem) => citem.SaleType == 'Normal') :
        null
      let flags =
        type.refCode == 'jsek_cloudLearning' &&
        cloundSaleMethod &&
        new Date().getTime() <= new Date(cloundSaleMethod.EndDate).getTime() &&
        new Date().getTime() >= new Date(cloundSaleMethod.BeginDate).getTime()
      let md5s = []
      res.datas.cmsDatas[0].datas.forEach((item) => {
        // 云学习上有销售方式,去掉云学习下所有销售方式
        if (this.data.tabValue == "jsek_teachingResources") {
          if (item.file || item.freeFile) {
            let md5 = item.file ? item.file : item.freeFile
            md5s.push(md5)
          }
          this.setData({
            md5List: md5s,
          });
        }
        if (flags && cloundSaleMethod.Price > 0) item.saleMethod = []
        item.checked = false;
        if (item.sysType == 'CmsItem') {
          // 教学资源 类型名称赋值
          this.data.resourceClassList.forEach((type) => {
            if (type.value == item.resourcesClassification)
              item.resourceClass = type.name;
          });
          // if (this.data.tabValue == "jsek_teachingResources") {} else if (this.data.tabValue == "jsek_cloudLearning") {
          //   item.isbuy = this.isShowNeedBuy(item);
          //   item.isShopCar = this.isShoppingCart(item);
          // }
        }
      });
      // 判断处理资源
      if (res.datas.cmsDatas[0].datas.some((item) => item.sysType == 'CmsFolder')) {
        if (!res.datas.cmsDatas[0].datas.some((item) => item.sysType == 'CmsItem')) {
          // 1.只有目录,没有资源
          list = res.datas.cmsDatas[0].datas
        } else {
          this.getTreeList(res.datas.cmsDatas[0].datas, list, query.cmsPath)
          list = this.ensureTreeConsistency(list)
          list = this.changeResourceChildren(list)
        }
      } else {
        // 3.只有资源,没有目录
        list = res.datas.cmsDatas[0].datas
      }
      let result = [];
      if (type.refCode == "jsek_teachingResources") {
        this.findChildIds(list, result);
        this.setData({
          openTeachids: result,
          loading: false,
          teach: list,
        });
        if (type.refCode == "jsek_cloudLearning") {
          this.setData({
            learnPath: type.productLinkPath
          })
          const dataList = res.datas.cmsDatas[0].datas
          // 先判断是否否买云学习整个目录
          let couldId = null
          let codeData = null
          if (this.data.resourceCodeList.length) {
            codeData = this.data.resourceCodeList.find(item => item.refCode == 'jsek_cloudLearning')
            if (codeData && codeData.saleMethod && codeData.saleMethod.length)
              couldId = codeData.saleMethod[0].Id
          }
          if (couldId) {
            this.setData({
              isGoBuyResource: this.data.buyIdList.indexOf(couldId) > -1 ? false : true
            })
          } else 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 > 10 ? 7 : query.cmsPath.length > 13 ? 8 : 6
        const num = query.cmsPath.length + addNum
        this.getTreeList(res.datas.cmsDatas[0].datas, num, list, '\\')
        list = this.ensureTreeConsistency(list)
        list = this.changeResourceChildren(list)
        let result = [];
        if (type.refCode == "jsek_teachingResources") {
          this.findChildIds(list, result);
          // const newUSeList = this.deleteTreeData(list, result)
          // console.log('树剔除', result, newUSeList);
          // console.log('树加一', this.increaseTreeData(list, newUSeList, 16094));
          this.setData({
            openTeachids: result,
            loading: false,
            teach: list,
          });
        } 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,
          });
        }
      } else if (type.refCode == "jsek_cloudLearning") {
        // 云学习上无销售方式,走目录 资源 销售方式去除方法
        if (!flags) list = this.clearTreeSealmethod(false, list)
        // 判断领取查看是否显示(云学习,或资源目录,有售价为0)
        let isshowDrawBtn = res.datas.cmsDatas[0].datas.some(
          (item) =>
          item.saleMethod.length &&
          item.saleMethod.find((citem) => citem.SaleType == 'Normal').Price == 0 &&
          new Date(item.saleMethod.find((citem) => citem.SaleType == 'Normal').EndDate).getTime() >= new Date().getTime() &&
          new Date(item.saleMethod.find((citem) => citem.SaleType == 'Normal').BeginDate).getTime() <= new Date().getTime()
        ) || (flags && cloundSaleMethod.Price == 0)
        // 判断云学习全部购买按钮是否显示
        let isShowBuyCloundMenu = flags && cloundSaleMethod.Price > 0 && !this.data.buyIdList.includes(cloundSaleMethod.Id)
        // 判断资源购买按钮是否显示
        let isShowBuyCloundBtn = !flags && res.datas.cmsDatas[0].datas.some(citem => citem.saleMethod.length != 0)
        // 判断购物车按钮和锁按钮是否显示
        this.handleTreeData(list).forEach(item => {
          item.isbuy = this.resourceIsBuy(item);
          item.isShopCar = this.isShoppingCart(item);
        })
        this.findChildIds(list, result);
        this.setData({
          isshowDrawBtn,
          isShowBuyCloundMenu,
          isShowBuyCloundBtn,
          isCloundHaveSaleMethod: flags && cloundSaleMethod.Price > 0,
          learn: list,
          loading: false,
          openLearnids: result,
          learnPath: type.productLinkPath
        });
      }
    })
  },
@@ -1108,23 +1185,24 @@
            }
          } else {
            if (isTSFW.length > 0) {
              data = res.datas.cmsDatas[0].datas.filter((item) => item.type == 'questionBankFolder' && item.childrenFolderCount > 0)
              data = res.datas.cmsDatas[0].datas.filter((item) => item.type == 'questionBankFolder' && item.refCode != 'jsek_interaction' && (item.childrenFolderCount > 0 || item.childrenCount > 0) && (item.name !== '填空题' &&
                item.name !== '判断题' &&
                item.name !== '多选题' &&
                item.name !== '简答题') && item.name !== '单选题')
              that.setData({
                jslx: false,
              });
            } else {
              data = res.datas.cmsDatas[0].datas.filter((item) => item.type == 'questionBankFolder')
              // && item.refCode != 'jsek_interaction'
              that.setData({
                jslx: true,
              });
            }
            if (data.length > 0) {
              console.log('data', data);
              let list = []
              // 测试 6位// 正式 5位//  测试调用传20,内部7  正式调用传17 内部传6
              const addNum = query.cmsPath.length > 10 ? 7 : query.cmsPath.length > 13 ? 8 : 6
              const num = query.cmsPath.length + addNum
              that.getTreeList(data, num, list, '\\')
              that.getTreeList(data, list, query.cmsPath)
              list = that.ensureTreeConsistency(list)
              that.findChildIds(list[0].children, result);
              that.setData({
@@ -1132,6 +1210,20 @@
                loading: false,
                openTeachids: result,
              });
              //Json赋值
              // const bookId = that.data.bookId
              // if (bookId == 6619) {
              //   const jsonData = {}
              //   jsonData.name = "心理测评"
              //   jsonData.children = [...pastData.postData.list]
              //   var test = that.data.test;
              //   test.push(jsonData);
              //   that.setData({
              //     test: test,
              //   });
              //   console.log(that.data.test, "教学互动");
              // }
            } else {
              that.setData({
                noResources: true,
@@ -1145,91 +1237,7 @@
        console.log(e);
      });
  },
  // 获取tag下所有资源
  async getAllResource(data) {
    if (!data.length) return false;
    for (let i = 0; i < data.length; i++) {
      let item = data[i];
      if (item.sysType == "CmsFolder" && item.childrenCount > 0) {
        item.children = [];
        item.children = await this.getFolderItem(item.productLinkPath);
        await this.getAllResource(item.children);
      }
    }
    return data;
  },
  // 获取资源接口
  async getFolderItem(path) {
    let query = {
      path: "*",
      queryType: "*",
      storeInfo: this.data.options.storeInfo,
      productId: this.data.bookDetail.id,
      cmsPath: path,
      itemFields: {
        SysType: "CmsFolder",
        // 资源类型,试读文件,是否允许下载等参数
        selectType: [],
        freeFile: [],
        file: [],
        protectedFile: [],
        resourcesClassification: [],
        isDownload: [],
        jsek_resourceBrief: [],
        jsek_link: [],
        accessType: [],
        learnSelectType: [],
      },
      pading: {
        start: 0,
        size: 999,
      },
    };
    let data = await app.MG.store.getProductDetail(query);
    // 如果item层级里有floder,删除floder
    const flag = data.datas.cmsDatas[0].datas.findIndex(
      (item) => item.sysType == "CmsItem"
    );
    if (flag > -1)
      data.datas.cmsDatas[0].datas = data.datas.cmsDatas[0].datas.filter(
        (item) => item.sysType == "CmsItem"
      );
    data.datas.cmsDatas[0].datas.forEach((item) => {
      //   if (item.sysType == "CmsFolder" && flag > -1) {
      //     item.isShow = false;
      //   } else {
      //     item.isShow = true;
      //   }
      this.data.resourceClassList.forEach((type) => {
        if (type.value == item.resourcesClassification)
          item.resourceClass = type.name;
      });
      // 网页 不能下载 私有文件
      if (item.sysType == "CmsItem") {
        if (item.selectType == "webpage") {
          item.disabled = true;
        } else {
          if (item.isDownload != 1) {
            item.disabled = true;
          }
        }
        if (item.file && item.fileMap && item.fileMap[item.file]) {
          if (item.fileMap[item.file].protectType == "Private")
            item.disabled = true;
        }
      }
    });
    data.datas.cmsDatas[0].datas.forEach((item) => {
      if (this.data.tabValue == "jsek_teachingResources") {
        item.checked = false;
      } else if (this.data.tabValue == "jsek_cloudLearning") {
        item.checked = false;
        item.isbuy = this.isShowNeedBuy(item);
        item.isShopCar = this.isShoppingCart(item);
      }
    });
    return data.datas.cmsDatas[0].datas;
  },
  // 获取展开项
  findChildIds(data, result) {
    let index = 0
@@ -1406,7 +1414,6 @@
              applyState: "Normal",
              deadline: "永久",
            });
            console.log("有效日期", this.data.deadline);
          } else {
            let endTime = new Date(endDate + " 23:59:59").getTime();
            this.setData({
@@ -1658,20 +1665,26 @@
  },
  // 判断资源是否购买
  resourceIsBuy(data) {
    let couldId = null
    let codeData = null
    if (this.data.resourceCodeList.length) {
      codeData = this.data.resourceCodeList.find(item => item.refCode == 'jsek_cloudLearning')
      if (codeData && codeData.saleMethod && codeData.saleMethod.length)
        couldId = codeData.saleMethod[0].Id
    }
    if (couldId) {
      return this.data.buyIdList.indexOf(couldId) > -1 ? false : true
    } else if (data.saleMethod && data.saleMethod.length) {
      const isSHow = this.data.buyIdList.some(
        (item) => item == data.saleMethod[0].Id
    if (data.saleMethod && data.saleMethod.length) {
      const saleData = data.saleMethod.find((item) => item.SaleType == 'Normal')
      if (saleData.State == 'Disable') return false
      const isShow = this.data.buyIdList.some(
        (item) => item == saleData.Id
      );
      return !isSHow;
      // 已经购买
      if (isShow || saleData.Price == 0) return false
      // 未购买,查看销售方式是否过期
      if (!isShow) {
        const flag = new Date(saleData.EndDate).getTime() >= new Date().getTime() &&
          new Date(saleData.BeginDate).getTime() <= new Date().getTime()
        if (flag) {
          // 为过期 ,需要购买
          return true
        } else {
          // 已过期 无需购买
          return false
        }
      }
    } else {
      return false;
    }
@@ -1713,30 +1726,31 @@
  },
  // 判断资源加入购物车按钮是否显示
  isShoppingCart(data) {
    let couldId = null
    let codeData = null
    if (this.data.resourceCodeList.length) {
      codeData = this.data.resourceCodeList.find(item => item.refCode == 'jsek_cloudLearning')
      if (codeData && codeData.saleMethod && codeData.saleMethod.length)
        couldId = codeData.saleMethod[0].Id
    }
    if (couldId) {
      return this.data.buyIdList.indexOf(couldId) > -1 ? false : true
    } else if (data.saleMethod && data.saleMethod.length) {
      if (data.saleMethod[0].Price <= 0) return false;
    if (data.saleMethod && data.saleMethod.length) {
      const saleData = data.saleMethod.find((item) => item.SaleType == 'Normal')
      // 先判断是否免费
      if (saleData.Price <= 0) return false
      // 再判断是否购买
      const isBuy = this.data.buyIdList.some(
        (item) => item == data.saleMethod[0].Id
      );
      const isBuy = this.data.buyIdList.some((item) => item == saleData.Id)
      if (isBuy) {
        // 购买了
        return false;
        return false
      } else {
        // 判断是否加入购物车
        const isSHow = this.data.shoppingCartGetId.some(
          (item) => item == data.saleMethod[0].Id
        );
        return !isSHow;
        const isShow = this.data.shoppingCartGetId.some((item) => item == saleData.Id)
        if (isShow) return false
        // 未购买,查看销售方式是否过期
        if (!isShow) {
          const flag = new Date(saleData.EndDate).getTime() >= new Date().getTime() &&
            new Date(saleData.BeginDate).getTime() <= new Date().getTime()
          if (flag) {
            // 为过期 ,需要购买
            return true
          } else {
            // 已过期 无需购买
            return false
          }
        }
      }
    } else {
      return false;
@@ -1770,7 +1784,7 @@
        flattenedArray.push(...childrenArray);
      }
    });
    return flattenedArray.filter((item) => item.sysType == "CmsItem");
    return flattenedArray;
  },
  // 云学习一键领取
  async getFreeResource() {
@@ -1785,19 +1799,34 @@
          // 出现错误,返回false
        }
      });
    }
    // 领取查看 ,先看云学习上的  再看资源上的
    const cloundMenu = this.data.resourceCodeList.find((item) => item.refCode == 'jsek_cloudLearning')
    const cloundMenuSaleMethod =
      cloundMenu.saleMethod && cloundMenu.saleMethod.length ?
      cloundMenu.saleMethod.find((ditem) => ditem.SaleType == 'Normal') :
      undefined
    let query = {}
    if (this.data.isCloundHaveSaleMethod && !cloundMenuSaleMethod.Price) {
      // 云学习上有销售方式,且为0元,直接领取云学习
      query = {
        remarks: '云学习',
        requests: [{
          saleMethodId: cloundMenuSaleMethod.Id,
          count: 1
        }]
      }
    } else {
      let arr = this.handleTreeData(this.data.learn).filter((item) =>
        this.resourceIsBuy(item)
      );
      // 领取资源
      let arr = this.handleTreeData(this.data.learn).filter(item => this.resourceIsBuy(item))
      let freeIds = arr.filter((item) => {
        return item.saleMethod[0].Price == 0;
      });
        return item.saleMethod.find((citem) => citem.SaleType == 'Normal').Price == 0
      })
      if (!freeIds.length)
        return wx.showToast({
          icon: "error",
          title: "暂无免费资源",
        });
      child.changeReceive(true);
      let requests = [];
      freeIds.forEach((item, index) => {
        if (this.resourceIsBuy(item)) {
@@ -1807,34 +1836,35 @@
          });
        }
      });
      let query = {
      query = {
        remarks: "云学习",
        requests,
      };
      try {
        const initOrderRes = await app.MG.store.initOrder(query);
        let parameter = {
          orderNum: initOrderRes.orderNumber,
        };
        // 确认订单
        const confirmOrderRes = await app.MG.store.confirmOrder(parameter);
        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);
    }
    child.changeReceive(true);
    try {
      const initOrderRes = await app.MG.store.initOrder(query);
      let parameter = {
        orderNum: initOrderRes.orderNumber,
      };
      // 确认订单
      const confirmOrderRes = await app.MG.store.confirmOrder(parameter);
      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);
    }
  },
  // 云学习一键购买
@@ -1849,7 +1879,8 @@
        },
      });
    }
    let shopList = this.handleTreeData(this.data.learn).filter((item) =>
    let shopList = this.handleTreeData(this.data.learn).filter(item => item.cmsType == 'cmsItem')
    shopList = shopList.filter((item) =>
      this.resourceIsBuy(item)
    );
    this.getShoppingCartProductGet();
@@ -1886,6 +1917,36 @@
      });
    }
  },
  // 云学习全部购买
  async buyCloudLearnClass() {
    const cloundMenu = this.data.resourceCodeList.find((item) => item.refCode == 'jsek_cloudLearning')
    let query = {
      remarks: '云学习',
      requests: [{
        saleMethodId: cloundMenu.saleMethod.find((eitem) => eitem.SaleType == 'Normal').Id,
        count: 1
      }]
    }
    const initOrderRes = await app.MG.store.initOrder(query)
    // 检查订单号是否存在
    if (initOrderRes.orderNumber) {
      // bookService: orderNumber.value,  少传这个 ,暂时不知道有什么用
      wx.navigateTo({
        url: `/pages/cart/paymentPage/index?&bookId=${this.data.bookDetail.id}&bookName=${this.data.bookDetail.name}&orderNumber=${initOrderRes.orderNumber}`,
      });
    } else {
      // 订单号不存在,显示警告消息
      wx.showToast({
        icon: "error",
        title: "请重试",
      });
    }
  },
  // 云学习字段购买
  async buyCloundMenu() {
    const cloundData = this.data.resourceCodeList.find(item => item.refCode == 'jsek_cloudLearning')
  },
  // 变为所有check   true
  findAndUpdateItemsByIds(tree, ids) {
    function findAndUpdate(node) {
@@ -1906,6 +1967,59 @@
  },
  handleTrue() {
    // findAndUpdateItemsByIds(this.date.)
  },
  // 题库购买
  async buyBank() {
    let query = {
      remarks: '云测试',
      requests: [{
        saleMethodId: this.data.bankSaleData.Id,
        count: 1
      }]
    }
    const initOrderRes = await app.MG.store.initOrder(query)
    if (this.data.bankSaleData.Price) {
      // 购买
      const url = "/pages/cart/paymentPage/index?orderNumber=" + initOrderRes.orderNumber + '&onNorderSaleMethod=' + initOrderRes.saleMethodLinks[0].orderSaleMethod.id;
      wx.navigateTo({
        url,
      });
    } else {
      // 免费领取
      app.MG.store
        .confirmOrder({
          orderNum: initOrderRes.orderNumber,
        })
        .then((res) => {
          if (res) {
            wx.showToast({
              title: "领取成功",
              icon: "none",
              duration: 1000,
            });
            this.getBookInfo(this.data.bookDetail.id);
          }
        });
    }
  },
  // 题库加入购物车
  handleShoppingBank() {
    let query = {
      requests: [{
        saleMethodId: this.data.bankSaleData.Id,
        storeEventId: null,
        agentCode: "云测试",
      }, ],
    };
    app.MG.store.addShoppingCart(query).then(res => {
      wx.showToast({
        icon: 'success',
        title: '加入成功',
      })
      this.getShoppingCartProductGet();
      this.getBookInfo(this.data.bookDetail.id)
    })
  },
  // 组卷格式化日期显示
  DateFormat(date, fmt) {
@@ -2222,7 +2336,6 @@
          }
        });
        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) {
@@ -2590,7 +2703,11 @@
    return childrenList
  },
  uploadFile(e) {
    console.log(123)
    const userInfo = JSON.parse(wx.getStorageSync(app.config.userInfoKey))
    if (userInfo.role != 'Teacher') return wx.showToast({
      icon: 'error',
      title: '请先进行教师认证',
    })
    this.setData({
      dialogBox: true,
      isShowUp: true
@@ -2599,6 +2716,12 @@
  closeDialog() {
    this.setData({
      dialogBox: false,
      resourceInfo: {
        resourceName: '',
        fileType: '',
        description: '',
        agree: false
      },
    });
  },
  onCloseProtocol() {
@@ -2637,14 +2760,29 @@
  },
  onNameInput(e) {
    console.log(e.detail.value)
    this.setData({
      'resourceInfo.resourceName': e.detail.value,
    });
  },
  onFileTypeInput(e) {
  onResourcePicker(e) {
    this.setData({
      'resourceInfo.fileType': e.detail.value,
      resourceValue: [this.data.resourceInfo.fileType],
      resourceVisible: true,
    });
  },
  onPickerChange(e) {
    const {
      value
    } = e.detail;
    this.setData({
      resourceVisible: false,
      resourceValue: value,
      'resourceInfo.fileType': value.join(' '),
    });
  },
  onPickerCancel(e) {
    this.setData({
      resourceVisible: false,
    });
  },
  textareaChange(e) {
@@ -2685,6 +2823,7 @@
        const pdfData = ['pdf']
        const Compression = ['rar', 'zip']
        const pictureData = ['jpg', 'png']
        const documentData = ['doc', 'docx', 'xls', 'xlsx', "ppt", "pptx"]
        if (audioData.indexOf(Extension) > -1) {
          medioType = '音频'
        } else if (videoData.indexOf(Extension) > -1) {
@@ -2695,6 +2834,8 @@
          medioType = '资源包'
        } else if (pictureData.indexOf(Extension) > -1) {
          medioType = '图片'
        } else if (documentData.indexOf(Extension) > -1) {
          medioType = '文档'
        } else {
          medioType = '其他'
        }
@@ -2738,6 +2879,7 @@
                    that.setData({
                      "resourceInfo.resourceName": FileName,
                      "resourceInfo.fileType": medioType,
                      fileList: file,
                      isShowUp: false
                    })
@@ -2752,15 +2894,9 @@
  },
  handleRemove(e) {
    console.log(e)
    let md5 = e.currentTarget.dataset.md5
    for (let i = 0; i < this.data.fileList.length; i++) {
      if (this.data.fileList.md5 == md5) {
        this.data.fileList.splice(i, 1)
      }
    }
    this.setData({
      isShowUp: true,
      fileList: []
    });
  },
  confirmM() {
@@ -2773,7 +2909,7 @@
    if (this.data.resourceInfo.fileType == '') {
      return wx.showToast({
        icon: "error",
        title: "请填写资源类型",
        title: "请选择资源类型",
      });
    }
@@ -2801,11 +2937,25 @@
    app.MG.ugc.newTopicMessage(query).then((res) => {
      wx.showToast({
        icon: "success",
        title: "请上传资源文件",
        title: "上传成功",
      });
      this.setData({
        dialogBox: false,
      });
      this.closeDialog()
    })
  }
  },
  getCloundIsBuy() {
    let flag = false
    if (!this.data.isCloundHaveSaleMethod) flag = false
    const cloundData = this.data.resourceCodeList.find(item => item.refCode == 'jsek_cloudLearning')
    const saleData = cloundData.saleMethod.find(item => item.SaleType == "Normal")
    if (!saleData) flag = false
    flag = this.data.buyIdList.some(item => item == saleData.Id)
    this.setData({
      cloundMenuIsBuy: flag
    })
  },
  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {},
  onShareTimeline() {}
})