闫增涛
2024-07-12 4ff508548b71346c97ef563b3dd5ba9291afe342
packageBookService/pages/bookServices/detail/index.js
@@ -1,31 +1,33 @@
// pages/bookServices/detail/index.js
import Toast from 'tdesign-miniprogram/toast';
import tool from '../../../../assets/js/toolClass';
import Toast from "tdesign-miniprogram/toast";
import tool from "../../../../assets/js/toolClass";
import {
  loginInfo
} from '../../../../assets/js/login'
} from "../../../../assets/js/login";
const app = getApp();
Page({
  /**
   * 页面的初始数据
   */
  data: {
    bookId: '',
    barHeight: '',
    navBarHeight: '',
    bookId: "",
    barHeight: "",
    navBarHeight: "",
    options: {
      id: '',
      name: '',
      id: "",
      name: "",
      storeInfo: '',
    },
    bookDetail: {},
    bookClass: [],
    bookItemDetail: {},
    link: {
      jd: '',
      tamll: '',
      dang: '',
      micro: '',
      jd: "",
      tamll: "",
      dang: "",
      micro: "",
    },
    tabValue: 'brief',
    tabValue: "brief",
    cmsDatas: [], // 资源refCode列表
    ids: [1],
    list: [],
@@ -36,10 +38,13 @@
    openTeachids: [],
    openLearnids: [],
    openTestids: [],
    isGoBuyResource: true,
    learnPath: '',
    applyResourceState: false, // 申请教学资源按钮防抖
    resourceClassList: [], // 资源所属分类
    applyState: "", // 教学资源申请状态
    deadline: "", // 教学资源申请有效日期
    deadline: "", // 教学资源申请有效日期,
    isshowDrawBtn: true, // 云学习领取查看按钮是否显示
    rejectCause: "", // 下载拒绝原因
    buyIdList: [],
    shoppingCartGetId: [], // 已购买id列表
@@ -47,8 +52,8 @@
    loading: false,
    isShowTeachDownload: false, // 提示PC下载弹窗状态
    confirmBtn: {
      content: '我知道了',
      variant: 'base'
      content: "我知道了",
      variant: "base",
    },
    mockData: {
      id: 0, // 销售id
@@ -56,8 +61,12 @@
      count: 0, // 组卷已购买次数
      useCount: 0, // 组件已使用次数
      residue: 0, // 组卷剩余次数
      mockList: [] // 用户组卷提交信息
      mockList: [], // 用户组卷提交信息
    },
    relatedBookLoading: false,
    noRelatedBookData: false,
    relatedBookPath: "", // 相关图书path
    relatedBookData: [], // 相关图书列表
    flag: true,
    noResources: false,
    selectedIds: "", //商品或子商品销售方式
@@ -77,85 +86,93 @@
      bookName: "",
      fileType: "",
      md5: "",
      freePage: ""
      freePage: "",
    }, //阅读器数据
    buyResourceData: {
      productLinkPath: '',
      refCode: '',
      productLinkPath: "",
      refCode: "",
    },
    briefIcon: {
      name: "/static/images/bookService/detail/tushujianjie-g.png"
      name: "/static/images/bookService/detail/tushujianjie-g.png",
    },
    briefIconClick: {
      name: '/static/images/bookService/detail/tushujianjie-click.png'
      name: "/static/images/bookService/detail/tushujianjie-click.png",
    },
    eBookIcon: {
      name: '/static/images/bookService/detail/ebook-g.png'
      name: "/static/images/bookService/detail/ebook-g.png",
    },
    eBookClickIcon: {
      name: '/static/images/bookService/detail/ebook-click.png'
      name: "/static/images/bookService/detail/ebook-click.png",
    },
    teachResourcesIcon: {
      name: '/static/images/bookService/detail/jiaoxueziyuan.png'
      name: "/static/images/bookService/detail/jiaoxueziyuan.png",
    },
    teachResourcesClickIcon: {
      name: '/static/images/bookService/detail/jiaoxueziyuan-click.png'
      name: "/static/images/bookService/detail/jiaoxueziyuan-click.png",
    },
    learnResourceIcon: {
      name: '/static/images/bookService/detail/yunxuexi.png'
      name: "/static/images/bookService/detail/yunxuexi.png",
    },
    learnResourceClickIcon: {
      name: '/static/images/bookService/detail/yunxuexi-click.png'
      name: "/static/images/bookService/detail/yunxuexi-click.png",
    },
    testResourceIocn: {
      name: '/static/images/bookService/detail/test-icon-g.png'
      name: "/static/images/bookService/detail/test-icon-g.png",
    },
    testResourceClickIocn: {
      name: '/static/images/bookService/detail/test-click-icon.png'
      name: "/static/images/bookService/detail/test-click-icon.png",
    },
    noteIcon: {
      name: '/static/images/bookService/detail/biji-icon-g.png'
      name: "/static/images/bookService/detail/biji-icon-g.png",
    },
    noteClickIcon: {
      name: '/static/images/bookService/detail/biji-click-icon.png'
      name: "/static/images/bookService/detail/biji-click-icon.png",
    },
    linkIcon: {
      name: "/static/images/bookService/detail/link.png",
    },
    linkClickIcon: {
      name: "/static/images/bookService/detail/link-click.png",
    },
    icon1: {
      name: "/static/images/bookService/detail/dangdang.png"
    }
      name: "/static/images/bookService/detail/dangdang.png",
    },
    rowCol: [{
        width: '50%',
      },
      {
        width: '100%'
      },
      {
        width: '80%'
      },
      {
        width: '100%'
      }, {
        width: '100%'
      },
    ],
    showIndex: '',
    successOrderNumber: '',
    applicationState: '' // 电子样书申请状态
  },
  resetTree: function (e) {
    this.setData({
      currentCheck: e.detail.checkedItem,
      list: e.detail.changeList
    })
      list: e.detail.changeList,
    });
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 检查登录状态
    // const token = wx.getStorageSync(app.config.tokenKey)
    // if (!token) {
    //   loginInfo(app, (data) => {
    //     // 如果不是第一次登录,会执行回调
    //     if (data) {
    //       // 登录成功,自动记录token和用户信息,并返回true
    //     } else {
    //       // 出现错误,返回false
    //     }
    //   })
    // } else {
    //   // 如果是第一次登录,会跳转至绑定用户信息页面,填写完用户信息后进行登录并储存token和用户信息,结束后跳转回当前页面(携带页面参数)
    // }
    const systInfo = wx.getSystemInfoSync();
    const menu = wx.getMenuButtonBoundingClientRect(); // 胶囊信息
    const navBarHeight = (menu.top - systInfo.statusBarHeight) * 2 + menu.height; // 导航栏高度
    const navBarHeight =
      (menu.top - systInfo.statusBarHeight) * 2 + menu.height; // 导航栏高度
    this.setData({
      bookId: options.id,
      bookId: options.id + "",
      barHeight: systInfo.statusBarHeight,
      navBarHeight: navBarHeight,
    });
@@ -163,36 +180,35 @@
      options: {
        id: options.id,
        name: options.name,
        storeInfo: options.storeInfo,
      },
    });
    wx.setNavigationBarTitle({
      title: options.name,
    })
    this.getBookInfo(options.id);
    this.getResourceClass() // 获取资源所属分类
    const token = wx.getStorageSync(app.config.tokenKey)
    // this.getResourceClass(); // 获取资源所属分类
    const token = wx.getStorageSync(app.config.tokenKey);
    if (token) {
      this.getShoppingCartProductGet()
      this.getApplyInfo(options.id)
      this.getMockData()
      this.getAlreadyPBookList()
      this.getAlreadyEBookList()
      this.getShoppingCartProductGet();
      this.getApplyInfo(options.id);
      this.getAlreadyPBookList();
      this.getAlreadyEBookList();
    }
    if (wx.getStorageSync(app.config.userInfoKey)) {
      this.setData({
        userInfo: JSON.parse(wx.getStorageSync(app.config.userInfoKey))
      })
        userInfo: JSON.parse(wx.getStorageSync(app.config.userInfoKey)),
      });
      // 获取申请次数
      this.getSelectPaperBookCount()
      this.getSelectBookCount()
      this.getSelectPaperBookCount();
      this.getSelectBookCount();
    }
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
  },
  onReady() {},
  /**
   * 生命周期函数--监听页面显示
@@ -200,17 +216,17 @@
  onShow() {
    if (wx.getStorageSync("paperBookList")) {
      this.setData({
        paperBookList: wx.getStorageSync("paperBookList"),
      })
        paperBookList: JSON.parse(wx.getStorageSync("paperBookList")),
      });
    }
    if (wx.getStorageSync("electronicBookList")) {
      this.setData({
        electronicBookList: wx.getStorageSync("electronicBookList"),
      })
        electronicBookList: JSON.parse(wx.getStorageSync("electronicBookList")),
      });
    }
    this.setData({
      num: this.data.paperBookList.length + this.data.electronicBookList.length
    })
      num: Number(this.data.paperBookList.length) + Number(this.data.electronicBookList.length),
    });
  },
  /**
@@ -226,18 +242,15 @@
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
  },
  onPullDownRefresh() {},
  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    if (this.data.tabValue == 'jsek_note') {
      const child = this.selectComponent('#note')
      child.onReachBottom()
    if (this.data.tabValue == "jsek_note") {
      const child = this.selectComponent("#note");
      if (!child.data.noList) child.onReachBottom();
    }
  },
@@ -248,11 +261,13 @@
  // 格式化日期
  formatDate(dateString) {
    if (!dateString) {
      return '';
      return "";
    }
    const match = dateString.match(/^(\d{4})\/(\d{1,2})\/(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/);
    const match = dateString.match(
      /^(\d{4})\/(\d{1,2})\/(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/
    );
    if (!match) {
      throw new Error('Invalid date format');
      throw new Error("Invalid date format");
    }
    const [, year, month, day, hours, minutes, seconds] = match;
@@ -262,11 +277,11 @@
      parseInt(day, 10),
      parseInt(hours, 10),
      parseInt(minutes, 10),
      parseInt(seconds, 10),
      parseInt(seconds, 10)
    );
    if (isNaN(date.getTime())) {
      throw new Error('Invalid date');
      throw new Error("Invalid date");
    }
    // 由于小程序环境可能不支持 Intl.DateTimeFormat,我们使用简化的格式化方法
@@ -275,17 +290,32 @@
  },
  // 简化的月份格式化函数,返回月份的中文表达
  formatMonth(month) {
    const months = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'];
    const months = [
      "1月",
      "2月",
      "3月",
      "4月",
      "5月",
      "6月",
      "7月",
      "8月",
      "9月",
      "10月",
      "11月",
      "12月",
    ];
    return months[parseInt(month, 10) - 1];
  },
  // 金额显示.00格式
  numFormat(value) {
    if (!value) return '0.00';
    if (!value) return "0.00";
    value = Number(value).toFixed(2);
    var intPart = Math.trunc(value); // 获取整数部分
    var intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); // 将整数部分逢三一断
    var floatPart = '.00'; // 预定义小数部分
    var value2Array = value.split('.');
    var intPartFormat = intPart
      .toString()
      .replace(/(\d)(?=(?:\d{3})+$)/g, "$1,"); // 将整数部分逢三一断
    var floatPart = ".00"; // 预定义小数部分
    var value2Array = value.split(".");
    // =2表示数据有小数位
    if (value2Array.length === 2) {
      floatPart = value2Array[1].toString(); // 拿到小数部分
@@ -298,7 +328,19 @@
  },
  // 返回
  goBack() {
    wx.navigateBack();
    let bookPathList = wx.getStorageSync("bookPathList");
    if (bookPathList && JSON.parse(bookPathList).length) {
      bookPathList = JSON.parse(bookPathList);
      this.setData({
        pageLoading: true,
        tabValue: "brief",
      });
      this.onLoad(bookPathList[bookPathList.length - 1]);
      bookPathList.pop();
      wx.setStorageSync("bookPathList", JSON.stringify(bookPathList));
    } else {
      wx.navigateBack();
    }
  },
  // 获取图书详情
  getBookInfo(id) {
@@ -306,14 +348,15 @@
      "mockData'.id": 0,
      "mockData.price": 0,
      "mockData.count": 0,
    })
    });
    const query = {
      path: '*',
      queryType: '*',
      storeInfo: this.data.options.storeInfo,
      path: "*",
      queryType: "*",
      productId: id,
      favoriteTypes: 'FavoriteBookCity',
      favoriteTypes: "FavoriteBookCity",
      itemFields: {
        'SysType=': 'CmsFolder',
        "SysType=": "CmsFolder",
      },
      coverSize: {
        height: 300,
@@ -342,65 +385,93 @@
      },
    };
    app.MG.store.getProductDetail(query).then(async (res) => {
      console.log(res.datas, 'res.datas');
      this.setData({
        bookDetail: res.datas,
        cmsDatas: res.datas.cmsDatas[0].datas,
        buyIdList: res.datas.purchasedSaleMethodIdList
        buyIdList: res.datas.purchasedSaleMethodIdList,
        pageLoading: false
      });
      if (res.datas.cmsDatas && res.datas.cmsDatas.length) {
        this.setData({
          cmsDatas: res.datas.cmsDatas[0].datas,
        })
      }
      if (res.datas.datas.ProductLinkInfo) {
        if (JSON.parse(res.datas.datas.ProductLinkInfo).length) this.setData({
          relatedBookPath: JSON.parse(res.datas.datas.ProductLinkInfo)[0]
            .LinkPath,
        })
      }
      this.getSubTtem();
      // 获取图书分类
      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)
      if (res.datas.bookClassification) {
        let classData = []
        const bookClassification = JSON.parse(res.datas.bookClassification);
        if (Array.isArray(bookClassification) && bookClassification.length) {
          for (let index = 0; index < bookClassification.length; index++) {
            const element = bookClassification[index];
            const iconType = element[0];
            const classType = element[1];
            classData.push({
              iconType,
              classType
            })
          }
          await this.getBookClass(classData);
        }
      }
      // 获取组卷销售id
      if (res.datas.saleMethod && res.datas.saleMethod.length) {
        res.datas.saleMethod.forEach((item) => {
          if (item.SaleType == 'combinationTestPaper') {
          if (item.SaleType == "combinationTestPaper") {
            this.setData({
              'mockData.id': item.Id,
              'mockData.price': item.Price
            })
              "mockData.id": item.Id,
              "mockData.price": item.Price,
            });
          }
        })
        });
      }
      // 获取组卷已购买次数
      if (res.datas.purchasedSaleMethodIdList && res.datas.purchasedSaleMethodIdList.length) {
      if (
        res.datas.purchasedSaleMethodIdList &&
        res.datas.purchasedSaleMethodIdList.length
      ) {
        if (this.data.mockData.id) {
          let count = res.datas.purchasedSaleMethodIdList.filter(
            (item) => item == this.data.mockData.id
          ).length
          ).length;
          this.setData({
            'mockData.count': count
          })
            "mockData.count": count,
          });
        }
      }
      this.setData({
        'bookDetail.publicationDate': this.formatDate(this.data.bookDetail.publicationDate),
        'bookDetail.class': className,
        'bookDetail.price': this.numFormat(this.data.bookDetail.price),
        'bookDetail.oldPrice': this.numFormat(this.data.bookDetail.oldPrice),
        'bookDetail.paperPrice': this.numFormat(this.data.bookDetail.paperPrice),
        pageLoading: false
      });
      console.log('图书信息', this.data.bookDetail);
    });
        "bookDetail.publicationDate": this.formatDate(
          this.data.bookDetail.publicationDate
        ),
        "bookDetail.price": this.numFormat(this.data.bookDetail.price),
        "bookDetail.oldPrice": this.numFormat(this.data.bookDetail.oldPrice),
        "bookDetail.paperPrice": this.numFormat(
          this.data.bookDetail.paperPrice
        ),
      });
      console.log("图书信息", this.data.bookClass);
    });
  },
  //请求子商品的文件
  getSubTtem() {
    const obj = {
      path: '*',
      queryType: 'SubProduct',
      path: "*",
      queryType: "SubProduct",
      sort: {
        type: 'Desc',
        field: 'CreateDate'
        type: "Desc",
        field: "CreateDate",
      },
      paging: {
        start: 0,
        size: 6
        size: 6,
      },
      mainProductId: this.data.bookDetail.id,
      fields: {
@@ -408,169 +479,187 @@
        bookshelf_pdf: [],
        bookshelf_protectedEpub: [],
        bookshelf_freeEpub: [], //epub试读百分比
        bookshelf_probationPage: [] //pdf试读页数
      }
    }
        bookshelf_probationPage: [], //pdf试读页数
      },
    };
    app.MG.store.getProductList(obj).then((res) => {
      if (res.datas && res.datas.length > 0) {
        this.setData({
          bookItemDetail: res.datas[0],
          selectedIds: res.datas[0].defaultSaleMethod.id,
          bookBuy: res.datas[0].purchasedSaleMethodIdList.indexOf(res.datas[0].defaultSaleMethodId) > -1
          bookBuy: res.datas[0].purchasedSaleMethodIdList.indexOf(
            res.datas[0].defaultSaleMethodId
          ) > -1,
          "bookDetail.price": this.numFormat(res.datas[0].price),
        });
        let times = new Date(res.datas[0].defaultSaleMethod.endDate).getTime()
        let startTime = new Date(res.datas[0].defaultSaleMethod.beginDate).getTime()
        let times = new Date(res.datas[0].defaultSaleMethod.endDate).getTime();
        let startTime = new Date(
          res.datas[0].defaultSaleMethod.beginDate
        ).getTime();
        if (times < new Date().getTime() || new Date().getTime() < startTime) {
          this.setData({
            expire: true
            expire: true,
          });
        } else {
          this.setData({
            expire: false
            expire: false,
          });
        }
        if (res.datas[0].bookshelf_pdf || res.datas[0].bookshelf_protectedEpub) {
        if (
          res.datas[0].bookshelf_pdf ||
          res.datas[0].bookshelf_protectedEpub
        ) {
          this.setData({
            noFile: true
            noFile: true,
          });
          if (res.datas[0].bookshelf_pdf) {
            this.setData({
              "fileInfo.bookName": this.data.bookDetail.name,
              "fileInfo.fileType": 'pdf',
              "fileInfo.fileType": "pdf",
              "fileInfo.md5": res.datas[0].bookshelf_pdf,
              "fileInfo.freePage": res.datas[0].bookshelf_probationPage,
              "fileInfo.freePage": res.datas[0].bookshelf_probationPage ? res.datas[0].bookshelf_probationPage : 30,
            });
          } else if (res.datas[0].bookshelf_protectedEpub) {
            this.setData({
              "fileInfo.bookName": this.data.bookDetail.name,
              "fileInfo.fileType": 'epub',
              "fileInfo.fileType": "epub",
              "fileInfo.md5": res.datas[0].bookshelf_protectedEpub,
              "fileInfo.freePage": res.datas[0].bookshelf_freeEpub,
              "fileInfo.freePage": res.datas[0].bookshelf_freeEpub ? res.datas[0].bookshelf_freeEpub : 30,
            });
          }
        }
      } else {
        if (this.data.bookDetail.pdf || this.data.bookDetail.protectedEpub) {
          this.setData({
            noFile: true
            noFile: true,
          });
          if (this.data.bookDetail.pdf) {
            this.setData({
              "fileInfo.bookName": this.data.bookDetail.name,
              "fileInfo.fileType": 'pdf',
              "fileInfo.fileType": "pdf",
              "fileInfo.md5": this.data.bookDetail.pdf,
              "fileInfo.freePage": this.data.bookDetail.probationPage,
              "fileInfo.freePage": this.data.bookDetail.probationPage ? this.data.bookDetail.probationPage : 30,
            });
          } else if (this.data.bookDetail.protectedEpub) {
            this.setData({
              "fileInfo.bookName": this.data.bookDetail.name,
              "fileInfo.fileType": 'epub',
              "fileInfo.fileType": "epub",
              "fileInfo.md5": this.data.bookDetail.protectedEpub,
              "fileInfo.freePage": this.data.bookDetail.freeEpubPage,
              "fileInfo.freePage": this.data.bookDetail.freeEpubPage ? this.data.bookDetail.freeEpubPage : 30,
            });
          }
        }
        this.setData({
          selectedIds: this.data.bookDetail.defaultSaleMethodId,
          bookBuy: this.data.bookDetail.purchasedSaleMethodIdList.indexOf(this.data.bookDetail.defaultSaleMethodId) > -1
          bookBuy: this.data.bookDetail.purchasedSaleMethodIdList.indexOf(
            this.data.bookDetail.defaultSaleMethodId
          ) > -1,
        });
        let times = new Date(this.data.bookDetail.defaultSaleMethod.endDate).getTime()
        let startTime = new Date(this.data.bookDetail.defaultSaleMethod.beginDate).getTime()
        let times = new Date(
          this.data.bookDetail.defaultSaleMethod.endDate
        ).getTime();
        let startTime = new Date(
          this.data.bookDetail.defaultSaleMethod.beginDate
        ).getTime();
        if (times < new Date().getTime() || new Date().getTime() < startTime) {
          this.setData({
            expire: true
            expire: true,
          });
        } else {
          this.setData({
            expire: false
            expire: false,
          });
        }
      }
    })
    });
  },
  // 获取图书分类
  async getBookClass(iconType, classType) {
    let name = '';
  async getBookClass(list) {
    let name = "";
    const query = {
      refCodes: ['bookClassification'],
      refCodes: ["bookClassification"],
    };
    await app.MG.store.getProductTypeField(query).then((res) => {
      JSON.parse(res[0].config).option.forEach((item) => {
        if (item.value == iconType) {
          item.child.forEach((citem) => {
            if (citem.value == classType) {
              name = citem.name;
      for (let aindex = 0; aindex < list.length; aindex++) {
        const aitem = list[aindex];
        const iconType = aitem.iconType
        const classType = aitem.classType
        JSON.parse(res[0].config).option.forEach((item) => {
          if (item.value == iconType) {
            if (item.child && item.child.length) {
              item.child.forEach((citem) => {
                if (citem.value == classType) {
                  const flag = this.data.bookClass.findIndex((ditem) => ditem == citem.name)
                  if (flag == -1) {
                    let list = this.data.bookClass
                    list.push(citem.name)
                    this.setData({
                      bookClass: list
                    })
                  }
                }
              });
            }
          });
        }
      });
          }
        });
      }
    });
    return name;
  },
  // 收藏
  setCollect() {
    const token = wx.getStorageSync(app.config.tokenKey)
    const token = wx.getStorageSync(app.config.tokenKey);
    if (!token) {
      // 检查登录状态
      loginInfo(app, (data) => {
        // 如果不是第一次登录,会执行回调
        if (data) {
          // 登录成功,自动记录token和用户信息,并返回true
          this.getBookInfo(this.data.bookId)
          this.getBookInfo(this.data.bookId);
        } else {
          // 出现错误,返回false
        }
      })
      });
    } else {
      if (this.data.bookDetail.isFavourite) {
        app.MG.store
          .delProductLink({
            productIds: [this.data.bookDetail.id],
            linkType: 'FavoriteBookCity',
            linkType: "FavoriteBookCity",
          })
          .then(() => {
            this.setData({
              'bookDetail.isFavourite': false
            })
              "bookDetail.isFavourite": false,
            });
          });
      } else {
        const params = {
          productIds: [this.data.bookDetail.id],
          linkType: 'FavoriteBookCity',
          linkType: "FavoriteBookCity",
        };
        app.MG.store.addProductLink(params).then((res) => {
          this.setData({
            'bookDetail.isFavourite': true
          })
            "bookDetail.isFavourite": true,
          });
        });
      }
    }
  },
  // 我要建议
  suggestBtn() {
    // 检查登录状态
    const token = wx.getStorageSync(app.config.tokenKey)
    const child = this.selectComponent('#suggest-component')
    if (!token) {
      wx.showLoading({
        title: '加载中',
    const token = wx.getStorageSync(app.config.tokenKey);
    const child = this.selectComponent("#suggest-component");
    if (token)
      // child.showDialog();
      this.setData({
        showIndex: '1'
      })
      loginInfo(app, (data) => {
        // 如果不是第一次登录,会执行回调
        if (data) {
          // 登录成功,自动记录token和用户信息,并返回true
          child.showDialog()
          wx.hideLoading()
        } else {
          // 出现错误,返回false
        }
      })
    } else {
      // 如果是第一次登录,会跳转至绑定用户信息页面,填写完用户信息后进行登录并储存token和用户信息,结束后跳转回当前页面(携带页面参数)
      child.showDialog()
    }
    console.log(this.data.bookDetail.icon, '0111111');
    console.log(this.data.bookDetail.name, '45688');
  },
  // 跳转网店
  goShop(e) {
@@ -579,75 +668,220 @@
    } = e.currentTarget.dataset;
    wx.navigateTo({
      url: `/packageBookService/pages/bookServices/webpage/index?url=${link}`,
    })
    });
  },
  // tag切换
  onTabsChange(e) {
    const token = wx.getStorageSync(app.config.tokenKey);
    this.setData({
      tabValue: e.detail.value,
      noResources: false
    })
    if (e.detail.label == '教学资源' || e.detail.label == '云学习' || e.detail.label == '云测试') {
      const checkData = this.data.cmsDatas.find(item => item.refCode == e.detail.value)
      noResources: false,
    });
    if (
      e.detail.label == "教学资源" ||
      e.detail.label == "云学习" ||
      e.detail.label == "云测试"
    ) {
      const checkData = this.data.cmsDatas.find(
        (item) => item.refCode == e.detail.value
      );
      if (!this.data.resourceClassList.length) this.getResourceClass()
      if (checkData) {
        if (e.detail.value == 'jsek_cloudLearning') {
        if (e.detail.value == "jsek_cloudLearning") {
          this.setData({
            'buyResourceData.productLinkPath': checkData.productLinkPath,
            'buyResourceData.refCode': checkData.refCode
          })
            "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)) {
          this.getResourceData(checkData)
        // 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)
        // ) {
        //   if (e.detail.value == "jsek_teachingResources") {
        //     wx.setStorageSync('teachResourcesPath', checkData.productLinkPath)
        //   }
        //   this.getResourceData(checkData);
        // }
        if ((e.detail.value == "jsek_teachingResources" && !this.data.teach.length) || (e.detail.value == "jsek_cloudLearning" && !this.data.learn.length)) {
          wx.setStorageSync('teachResourcesPath', checkData.productLinkPath)
          this.getResourceDataList(checkData)
        } else if (e.detail.value == "questionBank" && !this.data.test.length) {
          this.getResourceData(checkData);
        }
        if (e.detail.value == "questionBank" && token) this.getMockData();
      } else {
        this.setData({
          noResources: true
        })
          noResources: true,
        });
      }
    } else if (e.detail.label == '云笔记') {
      const token = wx.getStorageSync(app.config.tokenKey)
      const child = this.selectComponent('#note')
      child.handleSubmitTitle()
    } else if (e.detail.label == "云笔记") {
      const token = wx.getStorageSync(app.config.tokenKey);
      const child = this.selectComponent("#note");
      child.handleSubmitTitle();
      if (token) {
        child.changeLoading()
        child.getNoteList()
        child.changeLoading();
        child.getNoteList();
      } else {
        child.changeNoList();
      }
    } else if (e.detail.label == '电子书') {
      const child = this.selectComponent('#eBook')
    } else if (e.detail.label == "电子书") {
      const child = this.selectComponent("#eBook");
      if (child) {
        child.getProgress()
        child.getProgress();
      }
    } else if (e.detail.label == "相关图书") {
      this.getAboutBook(this.data.relatedBookPath);
    }
  },
  // 获取资源所属分类
  getResourceClass() {
    let query = {
      refCodes: ['resourcesClassification']
    }
      refCodes: ["resourcesClassification"],
    };
    app.MG.store.getProductTypeField(query).then((res) => {
      this.setData({
        resourceClassList: JSON.parse(res[0].config).option
      })
    })
        resourceClassList: JSON.parse(res[0].config).option,
      });
    });
  },
  //  获取教学资源  云学习  云测试
  getResourceData(type) {
  // 获取所有子项数量
  getChildrenItem(data) {
    let num = 0
    function getNum(data) {
      for (let index = 0; index < data.length; index++) {
        const item = data[index];
        if (item.sysType == 'CmsItem') {
          num += 1
        } else if (item.sysType == 'CmsFolder') {
          if (item.children && item.children.length)
            getNum(item.children)
        }
      }
    }
    getNum(data)
    return num
  },
  // 给目录添加子项数量
  changeResourceChildren(list) {
    const changeList = (list) => {
      for (let index = 0; index < list.length; index++) {
        const item = list[index];
        if (item.sysType == 'CmsFolder' && item.children && item.children.length) {
          item.childrenItem = this.getChildrenItem([item])
          changeList(item.children)
        } else if (item.sysType == 'CmsFolder' && item.children && !item.children.length) {
          item.childrenItem = 0
        } else if (item.sysType == 'CmsFolder' && !item.children) {
          item.childrenItem = 0
        }
      }
    }
    changeList(list)
    return list
  },
  // 扁平化数据转换tree
  getTreeList(rootList, pathLength, newArr, path, addNum) {
    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 (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
          }
        }
        // newArr.push(item)
        // 在插入过程中对数据进行排序
        newArr = this.insertAndSortObjectsByProductLinkPath(newArr, item, addNum)
      }
    }
    //给数组里面再添加一个children的空数组
    for (const i of newArr) {
      i.children = []
      this.getTreeList(rootList, pathLength + addNum, i.children, i.productLinkPath, addNum)
      if (i.children.length == 0) {
        delete i.children
      }
    }
    return newArr
  },
  // 去除树结构多余项
  ensureTreeConsistency(tree) {
    for (let index = 0; index < tree.length; index++) {
      const item = tree[index];
      if (item.children && item.children.length) {
        const isFloder = item.children.findIndex(citem => citem.sysType == 'CmsFolder')
        const isItem = item.children.findIndex(citem => citem.sysType == 'CmsItem')
        if (isFloder > -1 && isItem > -1) {
          item.children = item.children.filter(ditem => ditem.sysType == 'CmsItem')
        }
        this.ensureTreeConsistency(item.children)
      }
    }
    return tree
  },
  // 排序数组 按照productLinkPath
  insertAndSortObjectsByProductLinkPath(array, newObj, addNum) {
    // 查找新对象应该插入的位置
    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) {
      insertIndex = array.length;
    }
    // 插入新对象到数组
    array.splice(insertIndex, 0, newObj);
    // 测试6 正式5
    // 对数组进行排序
    array.sort((a, b) => {
      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 - addNum, a.productLinkPath.length)) > Number(b.productLinkPath.substring(b.productLinkPath.length - addNum, b.productLinkPath.length))) {
        return 1;
      }
      // a must be equal to b
      return 0;
    });
    // 返回更新后的数组
    return array;
  },
  // 教学资源 云学习 获取
  getResourceDataList(type) {
    this.setData({
      loading: true,
      noResources: false
    })
      noResources: false,
    });
    let query = {
      path: '*',
      queryType: '*',
      storeInfo: this.data.options.storeInfo,
      productId: this.data.bookDetail.id,
      cmsPath: type.productLinkPath,
      cmsType: '*',
      itemFields: {
        SysType: 'CmsFolder',
        // 资源类型,试读文件,是否允许下载等参数
        selectType: [],
        learnSelectType: [],
        freeFile: [],
        file: [],
        protectedFile: [],
        resourcesClassification: [],
        isDownload: [],
        jsek_resourceBrief: [],
@@ -659,89 +893,187 @@
        size: 999
      },
    }
    app.MG.store.getProductDetailNoChildren(query).then((res) => {
      if (!res.datas.cmsDatas[0].datas.length) {
        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);
            }
          }
        });
        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);
        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,
          });
        }
      }
    })
  },
  //  获取 云测试
  getResourceData(type) {
    this.setData({
      loading: true,
      noResources: false,
    });
    let query = {
      path: "*",
      queryType: "*",
      storeInfo: this.data.options.storeInfo,
      productId: this.data.bookDetail.id,
      cmsPath: type.productLinkPath,
      cmsType: '*',
      itemFields: {
        SysType: "CmsFolder",
        // 资源类型,试读文件,是否允许下载等参数
        selectType: [],
        freeFile: [],
        file: [],
        resourcesClassification: [],
        isDownload: [],
        jsek_resourceBrief: [],
        jsek_link: [],
        jsek_questionBank: [],
      },
      pading: {
        start: 0,
        size: 999,
      },
    };
    app.MG.store
      .getProductDetail(query)
      .then(async (res) => {
        if (!res.datas.cmsDatas[0].datas.length) {
          return this.setData({
            noResources: true,
            loading: false
          })
        }
        // 云测试,递归请求里层数据
        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)
            let result = []
            if (type.refCode == 'jsek_teachingResources') {
              this.findChildIds(list, result)
        if (type.refCode == "questionBank") {
          let data = []
          let result = [];
          if (this.data.options.storeInfo == 'jsek_jslx') {
            data = res.datas.cmsDatas[0].datas.filter((item) => item.type == 'questionBankFolder');
            if (data.length > 0) {
              this.setData({
                teach: list,
                test: data,
                loading: false,
                openTeachids: result
              })
              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)
              this.findChildIds(list, result)
                openTeachids: result,
              });
            } else {
              this.setData({
                learn: list,
                noResources: true,
                loading: false,
                openLearnids: result
              })
              });
            }
          } else {
            // 无数据
            data = res.datas.cmsDatas[0].datas.filter((item) => item.type == 'questionBankFolder' && item.childrenFolderCount > 0);
            if (data.length > 0) {
              let list = []
              // 测试 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)
              this.findChildIds(list[0].children, result);
              this.setData({
                test: list[0].children,
                loading: false,
                openTeachids: result,
              });
            } else {
              this.setData({
                noResources: true,
                loading: false,
              });
            }
          }
        } 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) => {
        console.log(e)
      })
        console.log(e);
      });
  },
  // 获取tag下所有资源
  async getAllResource(data) {
    if (!data.length) return false
    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)
      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
    return data;
  },
  // 获取资源接口
  async getFolderItem(path) {
    let query = {
      path: '*',
      queryType: '*',
      path: "*",
      queryType: "*",
      storeInfo: this.data.options.storeInfo,
      productId: this.data.bookDetail.id,
      cmsPath: path,
      itemFields: {
        SysType: 'CmsFolder',
        SysType: "CmsFolder",
        // 资源类型,试读文件,是否允许下载等参数
        selectType: [],
        freeFile: [],
@@ -752,350 +1084,371 @@
        jsek_resourceBrief: [],
        jsek_link: [],
        accessType: [],
        learnSelectType: []
        learnSelectType: [],
      },
      pading: {
        start: 0,
        size: 999
        size: 999,
      },
    }
    const data = await app.MG.store.getProductDetail(query)
    };
    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 (type.value == item.resourcesClassification)
          item.resourceClass = type.name;
      });
      // 网页 不能下载 私有文件
      if (item.sysType == 'CmsItem') {
        if (item.selectType == 'webpage') {
          item.disabled = true
      if (item.sysType == "CmsItem") {
        if (item.selectType == "webpage") {
          item.disabled = true;
        } else {
          if (item.isDownload != 1) {
            item.disabled = true
            item.disabled = true;
          }
        }
        if (item.file) {
          if (item.fileMap[item.file].protectType == 'Private') 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.resourceIsBuy(item)
        item.isShopCar = this.isShoppingCart(item)
    });
    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
    });
    return data.datas.cmsDatas[0].datas;
  },
  // 获取展开项
  findChildIds(data, result) {
    let index = 0
    for (let i = 0; i < data.length; i++) {
      if (index < 3) {
        const item = data[i]
        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.children && item.children.length > 0) {
                result.push(childrenItme.id)
                index += 1
    if (data)
      for (let i = 0; i < data.length; i++) {
        if (index < 3) {
          const item = data[i]
          if (item.children && item.children.length > 0) {
            result.push(item.id)
            if (item.children) {
              for (let j = 0; j < item.children.length; j++) {
                if (index < 3) {
                  const childrenItme = item.children[j]
                  if (item.childrenCount > 0) {
                    result.push(childrenItme.id)
                    index += 1
                  }
                } else {
                  break
                }
              }
            } else {
              break
            }
          } else if (item.childrenCount > 0) {
            result.push(item.id)
            index += 1
          }
        } else if (item.children && item.children.length > 0) {
          result.push(item.id)
          index += 1
        } else {
          break
        }
      } else {
        break
      }
    }
  },
  // 图书添加购物车
  async addBookShopcCar() {
    if (!this.data.expire) {
      const shoppingCartGetId = []
      const shoppingCartGetId = [];
      let query = {
        start: 0,
        size: 9999,
        filterList: [],
        searchList: []
      }
      const res = await app.MG.store.getShoppingCartProductList(query)
        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);
        shoppingCartGetId.push(item.saleMethod.id);
      });
      const determine = shoppingCartGetId.some(
        (item) => item == this.data.selectedIds
      );
      if (!determine) {
        let query = {
          requests: [{
            saleMethodId: this.data.selectedIds,
            storeEventId: null,
            agentCode: '电子书'
          }]
        }
        const addRes = app.MG.store.addShoppingCart(query)
        this.showSuccessToast()
        console.log(addRes, 'addRes');
        wx.switchTab({
          url: '/pages/cart/index',
        })
            agentCode: "电子书",
          }, ],
        };
        const addRes = app.MG.store.addShoppingCart(query);
        this.showSuccessToast();
      } else {
        Toast({
          context: this,
          selector: '#t-toast',
          message: '该书已在购物车,请勿重复添加',
          theme: 'warning',
          direction: 'column',
          selector: "#t-toast",
          message: "该书已在购物车,请勿重复添加",
          theme: "warning",
          direction: "column",
        });
      }
    } else {
      wx.showToast({
        title: "商品不在有效期",
        icon: 'none',
        icon: "none",
        duration: 1000,
      })
      });
    }
  },
  showSuccessToast() {
    Toast({
      context: this,
      selector: '#t-toast',
      message: '添加成功',
      theme: 'success',
      direction: 'column',
      selector: "#t-toast",
      message: "添加成功",
      theme: "success",
      direction: "column",
    });
  },
  async buyBook() {
    console.log(this.data.bookItemDetail.defaultSaleMethodId, 'this.data.bookItemDetail.defaultSaleMethodId');
    if (!this.data.expire) {
      let bookOrdersId = ''
      let pBookInfo = {
        type: "电子书",
        pId: this.data.bookItemDetail ? this.data.bookDetail.id : ''
      }
      let bookOrdersId = "";
      let query = {
        remarks: JSON.stringify(pBookInfo),
        remarks: "电子书",
        requests: [{
          saleMethodId: this.data.bookItemDetail.defaultSaleMethodId ? this.data.bookItemDetail.defaultSaleMethodId : this.data.bookDetail.defaultSaleMethodId,
          count: 1
        }]
      }
          saleMethodId: this.data.bookItemDetail.defaultSaleMethodId ?
            this.data.bookItemDetail.defaultSaleMethodId : this.data.bookDetail.defaultSaleMethodId,
          count: 1,
        }, ],
      };
      // 发起订单初始化请求并等待结果
      const res = await app.MG.store.initOrder(query)
      const res = await app.MG.store.initOrder(query);
      // 获取订单号并赋值给 orderNumber.value
      bookOrdersId = res.orderNumber
      console.log(bookOrdersId);
      bookOrdersId = res.orderNumber;
      // 检查订单号是否存在
      if (bookOrdersId) {
        const url = '/pages/cart/paymentPage/index?orderNumber=' + bookOrdersId
        wx.navigateTo({
          url
        })
        if (this.data.bookDetail.price == "0.00") {
          app.MG.store
            .confirmOrder({
              orderNum: bookOrdersId,
            })
            .then((res) => {
              if (res) {
                wx.showToast({
                  title: "领取成功",
                  icon: "none",
                  duration: 1000,
                });
                this.getBookInfo(this.data.bookDetail.id);
              }
            });
        } else {
          const url = "/pages/cart/paymentPage/index?orderNumber=" + bookOrdersId + '&onNorderSaleMethod=' + res.saleMethodLinks[0].orderSaleMethod.id;
          wx.navigateTo({
            url,
          });
        }
      } else {
        console.log(222);
      }
    } else {
      wx.showToast({
        title: "商品不在有效期",
        icon: 'none',
        icon: "none",
        duration: 1000,
      })
      });
    }
  },
  // 获取教学资源下载是否申请通过
  async getApplyInfo(id) {
    // 获取当前时间
    const currentDate = new Date()
    const currentDate = new Date();
    let query = {
      sort: {
        type: 'Desc',
        field: 'CreateDate'
        type: "Desc",
        field: "CreateDate",
      },
      start: 0,
      size: 99999,
      appRefCode: app.config.appRefCode,
      topicIdOrRefCode: 'productDownLoad'
    }
      topicIdOrRefCode: "productDownLoad",
    };
    await app.MG.ugc.getTopicMessageList(query).then((res) => {
      const applyResource = res.datas.find((item) => {
        let content = []
        let content = [];
        try {
          content = JSON.parse(item.content)
          content = JSON.parse(item.content);
        } catch (error) {
          content = []
          content = [];
        }
        if (Array.isArray(content)) return content.find((citem) => citem.id == id)
        return false
      })
        if (Array.isArray(content))
          return content.find((citem) => citem.id == id);
        return false;
      });
      // 有申请记录
      if (applyResource) {
        if (applyResource.state == 'Reject') {
        if (applyResource.state == "Reject") {
          this.setData({
            rejectCause: JSON.parse(applyResource.feedBack).reason,
            applyState: 'Reject'
          })
        } else if (applyResource.state == 'Normal') {
          const endDate = JSON.parse(applyResource.feedBack).endDate
            applyState: "Reject",
          });
        } else if (applyResource.state == "Normal") {
          const endDate = JSON.parse(applyResource.feedBack).endDate;
          // const endDate = new Date(JSON.parse(applyResource.feedBack).endDate + ' 23:59:59').getTime()
          if (endDate == '永久') {
          if (endDate == "永久") {
            this.setData({
              applyState: 'Normal',
              deadline: '永久',
            })
            console.log('有效日期', this.data.deadline);
              applyState: "Normal",
              deadline: "永久",
            });
            console.log("有效日期", this.data.deadline);
          } else {
            let endTime = new Date(endDate + ' 23:59:59').getTime()
            let endTime = new Date(endDate + " 23:59:59").getTime();
            this.setData({
              deadline: endDate + ' 23:59:59'
            })
              deadline: endDate + " 23:59:59",
            });
            if (currentDate.getTime() < endTime) {
              // 未超时
              this.setData({
                applyState: 'Normal'
              })
                applyState: "Normal",
              });
            } else {
              this.setData({
                applyState: 'none'
              })
                applyState: "none",
              });
            }
          }
        } else {
          this.setData({
            applyState: applyResource.state
          })
            applyState: applyResource.state,
          });
        }
      } else {
        this.setData({
          applyState: 'none'
        })
          applyState: "none",
        });
      }
    })
    });
    this.setData({
      applyResourceState: false,
    })
    wx.hideLoading()
    });
    wx.hideLoading();
  },
  // 申请教学资源
  applyResource() {
    if (this.data.applyResourceState) {
      return wx.showToast({
        icon: 'error',
        title: '请勿重复点击',
      })
    }
    // if (this.data.applyResourceState) {
    //   return wx.showToast({
    //     icon: "error",
    //     title: "请勿重复点击",
    //   });
    // }
    this.setData({
      applyResourceState: true
    })
    let role = JSON.parse(wx.getStorageSync(app.config.userInfoKey)).role
      applyResourceState: true,
    });
    let role = JSON.parse(wx.getStorageSync(app.config.userInfoKey)).role;
    if (role) {
      if (role == 'Teacher') {
      if (role == "Teacher") {
        wx.showLoading({
          title: '加载中',
        })
          title: "加载中",
        });
        // 申请教学资源
        let query = {
          topicIdOrRefCode: 'productDownLoad',
          type: 'applyForDownload',
          state: 'WaitAudit',
          cmsTypeRefCode: '',
          topicIdOrRefCode: "productDownLoad",
          type: "applyForDownload",
          state: "WaitAudit",
          cmsTypeRefCode: "",
          newDataListRequest: [],
          name: this.data.bookDetail.name, // name为申请的书本名称
          content: JSON.stringify([{
            name: this.data.bookDetail.name,
            id: this.data.bookDetail.id,
            // defaultSaleMethodId: bookData.value.defaultSaleMethodId,
            icon: this.data.bookDetail.icon
          }])
        }
            icon: this.data.bookDetail.icon,
          }, ]),
        };
        app.MG.ugc.newTopicMessage(query).then(async (res) => {
          if (res) {
            wx.showToast({
              title: '申请已提交',
              title: "申请已提交",
              duration: 2000,
            })
            });
          }
          await this.getApplyInfo(this.data.bookDetail.id)
        })
          await this.getApplyInfo(this.data.bookDetail.id);
        });
      } else {
        wx.showModal({
          title: '尊敬的用户,您好!',
          content: '请先进行教师认证!',
          title: "尊敬的用户,您好!",
          content: "请先进行教师认证!",
          confirmColor: "#ff6c00",
          cancelColor: "#949494",
          complete: (res) => {
            if (res.cancel) {}
            if (res.confirm) {
              wx.navigateTo({
                url: '/packageDomain/pages/teacherCertification/index',
              })
                url: "/packageDomain/pages/teacherCertification/index",
              });
            }
          }
        })
          },
        });
      }
    } else {
      wx.showModal({
        title: '尊敬的用户,您好!',
        content: '请先进行教师认证!',
        title: "尊敬的用户,您好!",
        content: "请先进行教师认证!",
        confirmColor: "#ff6c00",
        cancelColor: "#949494",
        complete: (res) => {
          if (res.cancel) {}
          if (res.confirm) {
            wx.navigateTo({
              url: '/packageDomain/pages/teacherCertification/index',
            })
              url: "/packageDomain/pages/teacherCertification/index",
            });
          }
        }
      })
        },
      });
    }
  },
  // 教学资源下载前往PC提示Diialog
  closeTeachDownload() {
    this.setData({
      isShowTeachDownload: false
    })
      isShowTeachDownload: false,
    });
  },
  // 下载功能
  downloadTeach(e) {
    let role = JSON.parse(wx.getStorageSync(app.config.userInfoKey)).role
    if (role && role == 'Teacher') {
    let role = JSON.parse(wx.getStorageSync(app.config.userInfoKey)).role;
    if (role && role == "Teacher") {
      this.setData({
        isShowTeachDownload: true
      })
        isShowTeachDownload: true,
      });
    } else {
      wx.showModal({
        title: '尊敬的用户,您好!',
        content: '请先进行教师认证!',
        title: "尊敬的用户,您好!",
        content: "请先进行教师认证!",
        confirmColor: "#ff6c00",
        cancelColor: "#949494",
        complete: (res) => {
          if (res.cancel) {
          }
          if (res.cancel) {}
          if (res.confirm) {
            wx.navigateTo({
              url: '/packageDomain/pages/teacherCertification/index',
            })
              url: "/packageDomain/pages/teacherCertification/index",
            });
          }
        }
      })
        },
      });
    }
    //   const data = e.detail.value
    //   // const data
@@ -1191,33 +1544,51 @@
          tempFilePath: res.tempFilePath,
          success: function (res) {
            wx.showToast({
              title: '下载成功',
              icon: 'success'
            })
              title: "下载成功",
              icon: "success",
            });
          },
          fail: function (res) {
            wx.showToast({
              title: '下载失败',
              icon: 'none'
            })
          }
        })
              title: "下载失败",
              icon: "none",
            });
          },
        });
      },
      fail: function (res) {
        wx.showToast({
          title: '下载失败',
          icon: 'none'
        })
      }
    })
          title: "下载失败",
          icon: "none",
        });
      },
    });
  },
  // 判断资源是否购买
  resourceIsBuy(data) {
    if (data.saleMethod && data.saleMethod.length) {
      const isSHow = this.data.buyIdList.some((item) => item == data.saleMethod[0].Id)
      return !isSHow
      const isSHow = this.data.buyIdList.some(
        (item) => item == data.saleMethod[0].Id
      );
      return !isSHow;
    } else {
      return false
      return false;
    }
  },
  // 云学习资源是否显示锁图标(未购买,且资源售价大于零)
  isShowNeedBuy(data) {
    if (data.saleMethod && data.saleMethod.length) {
      const isSHow = this.data.buyIdList.some(
        (item) => item == data.saleMethod[0].Id
      );
      if (isSHow) {
        return false;
      } else {
        return data.saleMethod[0].Price > 0 ? true : false;
      }
      return !isSHow;
    } else {
      return false;
    }
  },
  // 获取已购买商品
@@ -1226,55 +1597,75 @@
      start: 0,
      size: 999,
      filterList: [],
      searchList: []
    }
      searchList: [],
    };
    app.MG.store.getShoppingCartProductList(query).then((res) => {
      const list = []
      const list = [];
      res.datas.forEach((item) => {
        list.push(item.saleMethod.id)
      })
        list.push(item.saleMethod.id);
      });
      this.setData({
        shoppingList: res.datas,
        shoppingCartGetId: list
      })
    })
        shoppingCartGetId: list,
      });
    });
  },
  // 判断资源加入购物车按钮是否显示
  isShoppingCart(data) {
    if (data.saleMethod && data.saleMethod.length) {
      if (data.saleMethod[0].Price <= 0) return false
      if (data.saleMethod[0].Price <= 0) return false;
      // 再判断是否购买
      const isBuy = this.data.buyIdList.some((item) => item == data.saleMethod[0].Id)
      const isBuy = this.data.buyIdList.some(
        (item) => item == data.saleMethod[0].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 == data.saleMethod[0].Id
        );
        return !isSHow;
      }
    } else {
      return false
      return false;
    }
  },
  updateShoppingCartHidden() {
    const isSHow = this.data.shoppingCartGetId.some(
      (item) => item == data.saleMethod[0].Id
    );
    return !isSHow;
  },
  //刷新购物车图标
  updateCloudLearning() {
    this.getBookInfo()
    this.getShoppingCartProductGet()
    const checkData = this.data.cmsDatas.find(
      (item) => item.refCode == "jsek_cloudLearning"
    );
    this.getResourceDataList(checkData);
  },
  // 遍历树结构转换为数组方法
  handleTreeData(array) {
    const flattenedArray = []
    const flattenedArray = [];
    array.forEach((node) => {
      // 将当前节点添加到展开的数组中
      flattenedArray.push(node)
      flattenedArray.push(node);
      // 递归处理子节点
      if (node.children && node.children.length > 0) {
        const childrenArray = this.handleTreeData(node.children)
        flattenedArray.push(...childrenArray)
        const childrenArray = this.handleTreeData(node.children);
        flattenedArray.push(...childrenArray);
      }
    })
    return flattenedArray.filter((item) => item.sysType == 'CmsItem')
    });
    return flattenedArray.filter((item) => item.sysType == "CmsItem");
  },
  // 云学习一键领取
  async getFreeResource() {
    const child = this.selectComponent('#learn-resource')
    const token = wx.getStorageSync(app.config.tokenKey)
    const child = this.selectComponent("#learn-resource");
    const token = wx.getStorageSync(app.config.tokenKey);
    if (!token) {
      loginInfo(app, (data) => {
        // 如果不是第一次登录,会执行回调
@@ -1283,95 +1674,106 @@
        } else {
          // 出现错误,返回false
        }
      })
      });
    } 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
      })
      debugger
      if (!freeIds.length) return wx.showToast({
        icon: "error",
        title: '暂无免费资源',
      })
      child.changeReceive(true)
      let requests = []
        return item.saleMethod[0].Price == 0;
      });
      if (!freeIds.length)
        return wx.showToast({
          icon: "error",
          title: "暂无免费资源",
        });
      child.changeReceive(true);
      let requests = [];
      freeIds.forEach((item, index) => {
        if (this.resourceIsBuy(item)) {
          requests.push({
            saleMethodId: item.saleMethod[0].Id,
            count: 1
          })
            count: 1,
          });
        }
      })
      debugger
      });
      let query = {
        remarks: '云学习',
        remarks: "云学习",
        requests,
      }
      };
      try {
        const initOrderRes = await app.MG.store.initOrder(query)
        const initOrderRes = await app.MG.store.initOrder(query);
        let parameter = {
          orderNum: initOrderRes.orderNumber
        }
          orderNum: initOrderRes.orderNumber,
        };
        // 确认订单
        const confirmOrderRes = await app.MG.store.confirmOrder(parameter)
        const confirmOrderRes = await app.MG.store.confirmOrder(parameter);
        if (confirmOrderRes.orderNumber) {
          child.changeReceive(false)
          child.changeReceive(false);
          wx.showToast({
            title: '领取成功',
            title: "领取成功",
          });
          this.getBookInfo(this.data.bookId);
          this.getResourceDataList({
            refCode: 'jsek_cloudLearning',
            productLinkPath: this.data.learnPath
          })
          this.getBookInfo(this.data.bookId)
          this.setData({
            successOrderNumber: confirmOrderRes.orderNumber
          })
        }
      } catch (error) {
        console.log(error)
        console.log(error);
      }
    }
  },
  // 云学习一键购买
  async allAddShoppiingCar() {
    const child = this.selectComponent('#learn-resource')
    const token = wx.getStorageSync('jsek-token')
    const child = this.selectComponent("#learn-resource");
    const token = wx.getStorageSync("jsek-token");
    if (!token) {
      return wx.getUserProfile({
        desc: '用户登录',
        desc: "用户登录",
        success: (res) => {
          console.log(res);
        }
      })
        },
      });
    }
    let shopList = this.handleTreeData(this.data.learn).filter((item) => this.resourceIsBuy(item))
    this.getShoppingCartProductGet()
    if (!shopList.length) return wx.showToast({
      icon: "error",
      title: '已全部购买',
    })
    child.changeBuy(true)
    let requests = []
    let shopList = this.handleTreeData(this.data.learn).filter((item) =>
      this.resourceIsBuy(item)
    );
    this.getShoppingCartProductGet();
    if (!shopList.length)
      return wx.showToast({
        icon: "error",
        title: "已全部购买",
      });
    child.changeBuy(true);
    let requests = [];
    shopList.forEach((item) => {
      requests.push({
        saleMethodId: item.saleMethod[0].Id,
        count: 1,
      })
    })
      });
    });
    let query = {
      remarks: '云学习',
      remarks: "云学习",
      requests,
    }
    const initOrderRes = await app.MG.store.initOrder(query)
    child.changeBuy(false)
    };
    const initOrderRes = await app.MG.store.initOrder(query);
    child.changeBuy(false);
    // 检查订单号是否存在
    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: '请重试',
      })
        title: "请重试",
      });
    }
  },
  // 变为所有check   true
@@ -1398,145 +1800,225 @@
  // 组卷格式化日期显示
  DateFormat(date, fmt) {
    if (date && fmt) {
      let _date = new Date(date)
      let _date = new Date(date);
      var o = {
        'M+': _date.getMonth() + 1, //月份
        'd+': _date.getDate(), //日
        'h+': _date.getHours(), //小时
        'm+': _date.getMinutes(), //分
        's+': _date.getSeconds(), //秒
        'q+': Math.floor((_date.getMonth() + 3) / 3), //季度
        S: _date.getMilliseconds() //毫秒
      }
        "M+": _date.getMonth() + 1, //月份
        "d+": _date.getDate(), //日
        "h+": _date.getHours(), //小时
        "m+": _date.getMinutes(), //分
        "s+": _date.getSeconds(), //秒
        "q+": Math.floor((_date.getMonth() + 3) / 3), //季度
        S: _date.getMilliseconds(), //毫秒
      };
      if (/(y+)/.test(fmt)) {
        fmt = fmt.replace(RegExp.$1, (_date.getFullYear() + '').substr(4 - RegExp.$1.length))
        fmt = fmt.replace(
          RegExp.$1,
          (_date.getFullYear() + "").substr(4 - RegExp.$1.length)
        );
      }
      for (var k in o) {
        if (new RegExp('(' + k + ')').test(fmt)) {
        if (new RegExp("(" + k + ")").test(fmt)) {
          fmt = fmt.replace(
            RegExp.$1,
            RegExp.$1.length == 1 ?
            (o)[k] :
            ('00' + (o)[k]).substr(('' + (o)[k]).length)
          )
            o[k] :
            ("00" + o[k]).substr(("" + o[k]).length)
          );
        }
      }
      return fmt
      return fmt;
    } else {
      return ''
      return "";
    }
  },
  // 获取组卷答题数据
  getMockData() {
    // const child = this.selectComponent("#test-resource");
    // if (child) child.changeTestLoaidng(true);
    this.setData({
      'mockData.useCount': 0,
      'mockData.mockList': []
    })
      "mockData.useCount": 0,
      "mockData.mockList": [],
    });
    app.MG.identity
      .getUserKey({
        domain: 'mockData',
        keys: [this.data.bookId]
        domain: "mockData",
        keys: [this.data.bookId],
      })
      .then((res) => {
        if (res && res.length) {
          const mock = JSON.parse(res[0].value)
          mock.forEach(item => {
            item.createDate = this.DateFormat(item.createDate, 'yyyy-MM-dd')
          })
          const mock = JSON.parse(res[0].value);
          mock.forEach((item) => {
            item.createDate = this.DateFormat(item.createDate, "yyyy-MM-dd");
          });
          this.setData({
            'mockData.mockList': mock
          })
            "mockData.mockList": mock,
          });
          // 组卷已使用次数
          res.forEach((item) => {
            // 已经有答题分数等数据,证明组卷已经使用完毕
            if (item.resultData) {
              this.setData({
                'mockData.useCount': this.data.mockData.useCount + 1
              })
                "mockData.useCount": this.data.mockData.useCount + 1,
              });
            }
          })
          });
        }
      })
      });
  },
  // 购买组卷
  async buyMock() {
    let res
    if (!this.data.mockData.id) return wx.showToast({
      icon: "error",
      title: '暂无组卷',
      mask: true
    })
    let res;
    if (!this.data.mockData.id)
      return wx.showToast({
        icon: "error",
        title: "暂无组卷",
        mask: true,
      });
    // 构建订单查询对象
    try {
      let query = {
        remarks: '组卷',
        remarks: "组卷",
        requests: [{
          saleMethodId: this.data.mockData.id,
          count: 1
        }]
      }
          count: 1,
        }, ],
      };
      if (this.data.flag) {
        this.setData({
          flag: false
        })
        res = await app.MG.store.initOrder(query)
          flag: false,
        });
        res = await app.MG.store.initOrder(query);
      }
      if (res.orderNumber && this.data.mockData.price) {
        wx.navigateTo({
          url: `/pages/cart/paymentPage/index?orderNumber=${res.orderNumber}`,
        })
        });
      } else {
        // 0元直接领取
        // 确认订单
        const confirmOrderRes = await app.MG.store.confirmOrder({
          orderNum: res.orderNumber
        })
          orderNum: res.orderNumber,
        });
        if (confirmOrderRes) {
          wx.showToast({
            icon: "success",
            title: '领取成功',
          })
            title: "领取成功",
          });
          this.setData({
            flag: true
          })
          await this.recordBuyMock() // 记录购买时间
            flag: true,
          });
          await this.recordBuyMock(); // 记录购买时间
        }
      }
    } catch (error) {
      console.log(error)
      console.log(error);
    }
  },
  // 记录购买组卷时间
  recordBuyMock() {
    const num = this.data.mockData.mockList.length
    const id = tool.uuid(8)
    const createDate = this.DateFormat(new Date().getTime(), 'yyyy-MM-dd')
    const mockList = this.data.mockData.mockList
    const num = this.data.mockData.mockList.length;
    const id = tool.uuid(8);
    const createDate = this.DateFormat(new Date().getTime(), "yyyy-MM-dd");
    const mockList = this.data.mockData.mockList;
    mockList.push({
      id,
      createDate,
      name: `第${num + 1}套试卷`,
      state: '0'
    })
      state: "0",
    });
    this.setData({
      'mockData.mockList': mockList
    })
      "mockData.mockList": mockList,
    });
    // 记录购买时间,并设状态state为1,表示刚购买完成组卷
    app.MG.identity.setUserKey({
      setKeyRequests: [{
        domain: 'mockData',
        key: this.data.bookDetail.id + '',
        value: JSON.stringify(this.data.mockData.mockList)
      }]
        domain: "mockData",
        key: this.data.bookDetail.id + "",
        value: JSON.stringify(this.data.mockData.mockList),
      }, ],
    });
  },
  // 获取相关图书
  getAboutBook(path) {
    this.setData({
      relatedBookLoading: true,
      noRelatedBookData: false,
    });
    let query = {
      path,
      queryType: "*",
      coverSize: {
        height: 243,
      },
      paging: {
        start: 0,
        size: 99,
      },
      fields: {
        author: [],
        publicationDate: [],
      },
    };
    app.MG.store.getProductList(query).then((res) => {
      const Arr = res.datas.filter(
        (item) => item.id != this.data.bookDetail.id
      );
      let bookArr = [];
      if (Arr.length > 9) {
        for (var i = 0; i < 9; i++) {
          var _num = Math.floor(Math.random() * Arr.length);
          var mm = Arr[_num];
          Arr.splice(_num, 1);
          bookArr.push(mm);
        }
      } else {
        bookArr = Arr;
      }
      this.setData({
        relatedBookData: bookArr,
        relatedBookLoading: false,
      });
      if (!this.data.relatedBookData.length)
        this.setData({
          noRelatedBookData: true,
        });
    });
  },
  goBookDetails(e) {
    this.setData({
      tabValue: "brief",
      pageLoading: true,
    });
    let bookPathList = wx.getStorageSync("bookPathList");
    const bookPath = {
      id: this.data.bookDetail.id,
      name: this.data.bookDetail.name,
    };
    if (bookPathList) {
      bookPathList = JSON.parse(bookPathList);
      if (bookPathList.length > 8) bookPathList.shift();
      bookPathList.push(bookPath);
    } else {
      bookPathList = [bookPath];
    }
    wx.setStorageSync("bookPathList", JSON.stringify(bookPathList));
    this.setData({
      learn: [],
      teach: []
    })
    this.onLoad({
      id: e.detail.id,
      name: e.detail.name,
    });
  },
  // 底部购买按钮
  buyBtn() {
    if (this.data.tabValue == 'brief' && !this.data.bookBuy) {
      this.buyBook()
    } else if (this.data.tabValue == 'jsek_cloudLearning') {
      const tree = this.selectComponent('#tree')
      tree.onCloudShoppingCart()
    if (this.data.tabValue == "brief" && !this.data.bookBuy) {
      this.buyBook();
    } else if (this.data.tabValue == "jsek_cloudLearning") {
      const tree = this.selectComponent("#tree");
      tree.onCloudShoppingCart();
    } else {
      console.log(this.data.tabValue);
    }
@@ -1545,16 +2027,27 @@
  goRead() {
    if (!this.data.noFile) {
      wx.showToast({
        title: '暂无阅读文件',
        icon: 'none',
        duration: 2000
      })
        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 + '&bookBuy=' + this.data.bookBuy + '&bookId=' + this.data.bookDetail.id
    })
      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 +
        "&bookBuy=" +
        this.data.bookBuy +
        "&bookId=" +
        this.data.bookDetail.id,
    });
  },
  //样书申请
@@ -1563,267 +2056,344 @@
    const data = {
      start: 0,
      size: 9999,
      topicIdOrRefCode: 'applyEntityBook',
      topicIdOrRefCode: "applyEntityBook",
      appRefCode: app.config.appRefCode,
      sort: {
        type: 'Desc',
        field: 'CreateDate'
      }
    }
        type: "Desc",
        field: "CreateDate",
      },
    };
    app.MG.ugc.getTopicMessageList(data).then((res) => {
      let list = [];
      res.datas.map((item) => {
        if (item.content) {
          item.content = JSON.parse(item.content)
          item.content = JSON.parse(item.content);
        }
        list.push(item)
      })
        list.push(item);
      });
      this.setData({
        alreadyPaperBookList: list,
      });
    })
    });
  },
  //获取已申请电子样书
  getAlreadyEBookList() {
    const data = {
      start: 0,
      size: 9999,
      topicIdOrRefCode: 'applyBook',
      topicIdOrRefCode: "applyBook",
      appRefCode: app.config.appRefCode,
      sort: {
        type: 'Desc',
        field: 'CreateDate'
      }
    }
        type: "Desc",
        field: "CreateDate",
      },
    };
    app.MG.ugc.getTopicMessageList(data).then((res) => {
      let list = []
      let list = [];
      if (res.datas.length > 0) {
        res.datas.map((item) => {
          if (item.feedBack) {
            item.feedBack = JSON.parse(item.feedBack)
            item.feedBack = JSON.parse(item.feedBack);
            if (item.feedBack.endDate) {
              let times = new Date(item.feedBack.endDate + ' 23:59:59').getTime()
              let currentDate = new Date().getTime()
              let times = new Date(
                item.feedBack.endDate + " 23:59:59"
              ).getTime();
              let currentDate = new Date().getTime();
              if (times < currentDate) {
                item.isExpiry = true
                item.isExpiry = true;
              }
            }
          }
          if (item.content) {
            item.content = JSON.parse(item.content)
            item.content = JSON.parse(item.content);
          }
          if (item.state != 'Reject') {
            list.push(item)
          if (item.state != "Reject") {
            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,
        });
      }
    })
    });
  },
  //获取当前已申请次数(纸质)
  getSelectPaperBookCount() {
    app.MG.app
      .getTicketResult({
        ticketRefCodeOrGuid: 'paperSampleBookapplyNum',
        roleId: this.data.userInfo.roleId
        ticketRefCodeOrGuid: "paperSampleBookapplyNum",
        roleId: this.data.userInfo.roleId,
      })
      .then((res) => {
        this.setData({
          paperBookCount: res.totalCount - res.usedCount
        })
      })
          paperBookCount: res.totalCount - res.usedCount,
        });
      });
  },
  //获取当前已申请次数(电子)
  getSelectBookCount() {
    app.MG.app
      .getTicketResult({
        ticketRefCodeOrGuid: 'electronicSampleBookapplyNum',
        roleId: this.data.userInfo.roleId
        ticketRefCodeOrGuid: "electronicSampleBookapplyNum",
        roleId: this.data.userInfo.roleId,
      })
      .then((res) => {
        this.setData({
          ebookCount: res.totalCount - res.usedCount
        })
      })
          ebookCount: res.totalCount - res.usedCount,
        });
      });
  },
  //申请电子样书
  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') {
          if (!this.data.noFile) {
            wx.showToast({
              title: "暂无电子书文件,请联系管理员!",
              icon: 'none',
              duration: 1000,
            })
            return
          }
          if (this.data.ebookCount == 0) {
            wx.showToast({
              title: "您的电子样书申请次数已用尽,若要继续,请联系管理员!",
              icon: "none",
              duration: 1000,
            })
            return false;
          }
          if (this.data.electronicBookList.length >= 2) {
            wx.showToast({
              title: "每次最多只可申请2本样书",
              icon: "none",
              duration: 1000,
            })
            return false;
          }
          let isHas = this.data.electronicBookList.find((eitem) => eitem.id == this.data.bookDetail.id)
          if (isHas) {
            wx.showToast({
              title: "该书已在清单列表中",
              icon: "none",
              duration: 1000,
            })
            return false;
          }
          let isApply = this.data.alreadyElectronicBookList.find((eitem) => eitem.id == this.data.bookDetail.id)
          if (isApply) {
    // 先判断下教师认证,未对原有逻辑修改
    let role = this.data.userInfo != null ? this.data.userInfo.role : null;
    if (role && role == "Teacher") {} else {
      return wx.showModal({
        title: "尊敬的用户,您好!", //提示的标题
        content: "请先进行教师认证?", //提示的内容
        confirmColor: "#ff6c00",
        cancelColor: "#949494",
        success: function (res) {
          if (res.confirm) {
            wx.navigateTo({
              url: "/packageDomain/pages/teacherCertification/index",
            });
          } else if (res.cancel) {}
        },
      });
    }
    if (
      this.data.bookDetail.isApplyBook == 2 ||
      this.data.bookDetail.isApplyBook == 4
    ) {
      let role = this.data.userInfo != null ? this.data.userInfo.role : null;
      if (role && role == "Teacher") {
        if (!this.data.noFile) {
          wx.showToast({
            title: "暂无电子书文件,请联系管理员!",
            icon: "none",
            duration: 1000,
          });
          return;
        }
        if (this.data.ebookCount == 0) {
          wx.showToast({
            title: "您的电子样书申请次数已用尽,若要继续,请联系管理员!",
            icon: "none",
            duration: 1000,
          });
          return false;
        }
        let isHas = this.data.electronicBookList.find(
          (eitem) => eitem.id == this.data.bookDetail.id
        );
        if (isHas) {
          wx.showToast({
            title: "该书已在清单列表中",
            icon: "none",
            duration: 1000,
          });
          return false;
        }
        let isApply = this.data.alreadyElectronicBookList.find(
          (eitem) => eitem.content[0].id == this.data.bookDetail.id
        );
        if (isApply) {
          if (isApply.state == 'WaitAudit') {
            wx.showToast({
              title: "该书已申请!",
              icon: "none",
              duration: 1000,
            })
            });
            return false;
          }
          this.addBookFun(this.data.bookDetail, "eBook")
        } else {
          wx.showModal({
            title: '尊敬的用户,您好!', //提示的标题
            content: '请先进行教师认证?', //提示的内容
            success: function (res) {
              if (res.confirm) {
                wx.navigateTo({
                  url: "/packageDomain/pages/teacherCertification/index",
                });
              } else if (res.cancel) {}
          } else if (isApply.state == 'Normal') {
            console.log(isApply.state, "isApply.state")
            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({
            title: "每次最多只可申请2本样书",
            icon: "none",
            duration: 1000,
          });
          return false;
        }
        this.addBookFun(this.data.bookDetail, "eBook");
      } else {
        wx.showModal({
          title: "尊敬的用户,您好!", //提示的标题
          content: "请先进行教师认证?", //提示的内容
          confirmColor: "#ff6c00",
          cancelColor: "#949494",
          success: function (res) {
            if (res.confirm) {
              wx.navigateTo({
                url: "/packageDomain/pages/teacherCertification/index",
              });
            } else if (res.cancel) {}
          },
        });
      }
    } else {
      wx.showToast({
        title: "该书不能申请电子样书",
        icon: 'none',
        icon: "none",
        duration: 1000,
      })
      });
    }
  },
  //申请纸质样书
  appplyPaperBook() {
    if (this.data.bookDetail.isApplyBook == 3 || this.data.bookDetail.isApplyBook == 4) {
      let role = this.data.userInfo != null ? this.data.userInfo.role : null
      if (role) {
        if (role == 'Teacher') {
          // 点击选中
          if (this.data.paperBookCount == 0) {
            wx.showToast({
              title: "您的纸质样书申请次数已用尽,若要继续,请联系管理员!",
              icon: "none",
              duration: 1000,
            })
            return false;
          }
          if (this.data.paperBookList.length >= 2) {
            wx.showToast({
              title: "每次最多只可申请2本样书",
              icon: "none",
              duration: 1000,
            })
            return false;
          }
          let isHas = this.data.paperBookList.find((pitem) => pitem.id == this.data.bookDetail.id)
          if (isHas) {
            wx.showToast({
              title: "该书已在清单列表中",
              icon: "none",
              duration: 1000,
            })
            return false;
          }
          let isApply = this.data.alreadyPaperBookList.find((pitem) => pitem.id == this.data.bookDetail.id)
          if (isApply) {
            wx.showToast({
              title: "该书已申请!",
              icon: "none",
              duration: 1000,
            })
            return false;
          }
          this.addBookFun(this.data.bookDetail, "pBook")
        } else {
          wx.showModal({
            title: '尊敬的用户,您好!', //提示的标题
            content: '请先进行教师认证?', //提示的内容
            success: function (res) {
              if (res.confirm) {
                wx.navigateTo({
                  url: "/packageDomain/pages/teacherCertification/index",
                });
              } else if (res.cancel) {}
            }
          })
    let role = this.data.userInfo != null ? this.data.userInfo.role : null;
    if (role && role == "Teacher") {} else {
      return wx.showModal({
        title: "尊敬的用户,您好!", //提示的标题
        content: "请先进行教师认证?", //提示的内容
        confirmColor: "#ff6c00",
        cancelColor: "#949494",
        success: function (res) {
          if (res.confirm) {
            wx.navigateTo({
              url: "/packageDomain/pages/teacherCertification/index",
            });
          } else if (res.cancel) {}
        },
      });
    }
    if (
      this.data.bookDetail.isApplyBook == 3 ||
      this.data.bookDetail.isApplyBook == 4
    ) {
      let role = this.data.userInfo != null ? this.data.userInfo.role : null;
      if (role && role == "Teacher") {
        // 点击选中
        if (this.data.paperBookCount == 0) {
          wx.showToast({
            title: "您的纸质样书申请次数已用尽,若要继续,请联系管理员!",
            icon: "none",
            duration: 1000,
          });
          return false;
        }
        let isApply = this.data.alreadyPaperBookList.find(
          (pitem) => pitem.content[0].id == this.data.bookDetail.id
        );
        if (isApply) {
          wx.showToast({
            title: "该书已申请!",
            icon: "none",
            duration: 1000,
          });
          return false;
        }
        let isHas = this.data.paperBookList.find(
          (pitem) => pitem.id == this.data.bookDetail.id
        );
        if (isHas) {
          wx.showToast({
            title: "该书已在清单列表中",
            icon: "none",
            duration: 1000,
          });
          return false;
        }
        if (this.data.paperBookList.length >= 2) {
          wx.showToast({
            title: "每次最多只可申请2本样书",
            icon: "none",
            duration: 1000,
          });
          return false;
        }
        this.addBookFun(this.data.bookDetail, "pBook");
      } else {
        wx.showModal({
          title: "尊敬的用户,您好!", //提示的标题
          content: "请先进行教师认证?", //提示的内容
          confirmColor: "#ff6c00",
          cancelColor: "#949494",
          success: function (res) {
            if (res.confirm) {
              wx.navigateTo({
                url: "/packageDomain/pages/teacherCertification/index",
              });
            } else if (res.cancel) {}
          },
        });
      }
    } else {
      wx.showToast({
        title: "该书不能申请纸质样书",
        icon: 'none',
        icon: "none",
        duration: 1000,
      })
      });
    }
  },
  //  添加样书
  addBookFun(item, type) {
    let itemAttr = null
    let itemAttr = null;
    const eList = this.data.electronicBookList;
    const pList = this.data.paperBookList;
    itemAttr = {
      id: item.id,
      title: item.name || '-',
      title: item.name || "-",
      icon: item.icon,
      checked: false,
      defaultSaleMethodId: item.defaultSaleMethodId,
      md5: item.datas.Icon,
      author: item.author || '-',
      price: item.price || '-',
      isbn: item.isbn || '-',
      publicationDate: item.publicationDate
    }
    if (type == 'eBook') {
      eList.push(itemAttr)
      author: item.author || "-",
      price: item.price || "-",
      isbn: item.isbn || "-",
      publicationDate: item.publicationDate,
    };
    if (type == "eBook") {
      eList.push(itemAttr);
      this.setData({
        electronicBookList: eList,
      })
      wx.setStorageSync("electronicBookList", eList);
      });
      wx.setStorageSync("electronicBookList", JSON.stringify(eList));
    } else {
      pList.push(itemAttr)
      pList.push(itemAttr);
      this.setData({
        paperBookList: pList,
      })
      wx.setStorageSync("paperBookList", pList);
      });
      wx.setStorageSync("paperBookList", JSON.stringify(pList));
    }
    this.setData({
      num: this.data.num + 1
    })
      num: this.data.num + 1,
    });
    wx.showToast({
      title: "添加成功,在样书申请单等您哦~",
      icon: "none",
      duration: 1000,
    })
    });
  },
  //去样书申请单
@@ -1834,28 +2404,29 @@
  },
  handleTree() {
    // const child = this.selectComponent('#teach-tree')
    let tree
    let tree;
    // let openIds = child.data.openIds
    if (this.data.tabValue == 'jsek_teachingResources') {
      tree = this.data.teach
    if (this.data.tabValue == "jsek_teachingResources") {
      tree = this.data.teach;
    } else {
      tree = this.data.learn
      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)
        const num = this.data.openTeachids.findIndex(
          (citem) => item.id == citem
        );
        if (num >= 0) {
          item.open = true
          item.open = true;
        } else {
          item.open = false
          item.open = false;
        }
        this.handleTree(item.children)
        this.handleTree(item.children);
      }
    }
    this.setData({
      teach: tree
    })
      teach: tree,
    });
  },
})
});