闫增涛
2024-04-09 3d73fb33c46aada16a6060adcd4ea14bb33b6b2a
packageBookService/pages/bookServices/detail/index.js
@@ -1,9 +1,7 @@
// pages/bookServices/detail/index.js
import Toast from "tdesign-miniprogram/toast";
import tool from "../../../../assets/js/toolClass";
import {
  loginInfo
} from "../../../../assets/js/login";
import { loginInfo } from "../../../../assets/js/login";
const app = getApp();
Page({
  /**
@@ -166,7 +164,6 @@
    if (token) {
      this.getShoppingCartProductGet();
      this.getApplyInfo(options.id);
      this.getMockData();
      this.getAlreadyPBookList();
      this.getAlreadyEBookList();
    }
@@ -225,7 +222,7 @@
  onReachBottom() {
    if (this.data.tabValue == "jsek_note") {
      const child = this.selectComponent("#note");
      child.onReachBottom();
      if (!child.data.noList) child.onReachBottom();
    }
  },
@@ -303,7 +300,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) {
@@ -357,14 +366,15 @@
      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) {
        const bookClassification = JSON.parse(res.datas.bookClassification);
        if (Array.isArray(bookClassification) && bookClassification.length) {
          const iconType = bookClassification[0][0];
          const classType = bookClassification[0][1];
          className = await this.getBookClass(iconType, classType);
        }
      }
      // 获取组卷销售id
      if (res.datas.saleMethod && res.datas.saleMethod.length) {
        res.datas.saleMethod.forEach((item) => {
@@ -429,12 +439,15 @@
    };
    app.MG.store.getProductList(obj).then((res) => {
      if (res.datas && res.datas.length > 0) {
        console.log(res.datas[0], 2);
        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(
@@ -496,9 +509,10 @@
        }
        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
@@ -602,15 +616,14 @@
  },
  // 跳转网店
  goShop(e) {
    const {
      link
    } = e.currentTarget.dataset;
    const { link } = 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,
@@ -623,6 +636,7 @@
      const checkData = this.data.cmsDatas.find(
        (item) => item.refCode == e.detail.value
      );
      if (checkData) {
        if (e.detail.value == "jsek_cloudLearning") {
          this.setData({
@@ -638,6 +652,7 @@
        ) {
          this.getResourceData(checkData);
        }
        if (e.detail.value == "questionBank" && token) this.getMockData();
      } else {
        this.setData({
          noResources: true,
@@ -650,6 +665,8 @@
      if (token) {
        child.changeLoading();
        child.getNoteList();
      } else {
        child.changeNoList();
      }
    } else if (e.detail.label == "电子书") {
      const child = this.selectComponent("#eBook");
@@ -727,16 +744,16 @@
            const list = await this.getAllResource(res.datas.cmsDatas[0].datas);
            let result = [];
            if (type.refCode == "jsek_teachingResources") {
              console.log("教学资源", list);
              this.findChildIds(list, result);
              this.setData({
                teach: list,
                loading: false,
                openTeachids: result,
              });
              console.log("教学资源", list);
            } else if (type.refCode == "jsek_cloudLearning") {
              let arr = this.handleTreeData(list).filter((item) =>
                this.resourceIsBuy(item)
              let arr = this.handleTreeData(list).filter(
                (item) => item.saleMethod[0]
              );
              let freeIds = arr.filter((item) => {
                return item.saleMethod[0].Price == 0;
@@ -745,7 +762,6 @@
                this.setData({
                  isshowDrawBtn: false,
                });
              debugger;
              this.findChildIds(list, result);
              this.setData({
                learn: list,
@@ -809,8 +825,21 @@
        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;
@@ -835,7 +864,7 @@
        item.checked = false;
      } else if (this.data.tabValue == "jsek_cloudLearning") {
        item.checked = false;
        item.isbuy = this.resourceIsBuy(item);
        item.isbuy = this.isShowNeedBuy(item);
        item.isShopCar = this.isShoppingCart(item);
      }
    });
@@ -884,19 +913,18 @@
      res.datas.forEach((item) => {
        shoppingCartGetId.push(item.saleMethod.id);
      });
      console.log(shoppingCartGetId, "shoppingCartGetId");
      console.log(this.data.selectedIds, "销售方式id");
      const determine = shoppingCartGetId.some(
        (item) => item == this.data.selectedIds
      );
      console.log(determine);
      if (!determine) {
        let query = {
          requests: [{
            saleMethodId: this.data.selectedIds,
            storeEventId: null,
            agentCode: "电子书",
          }, ],
          requests: [
            {
              saleMethodId: this.data.selectedIds,
              storeEventId: null,
              agentCode: "电子书",
            },
          ],
        };
        const addRes = app.MG.store.addShoppingCart(query);
        this.showSuccessToast();
@@ -937,12 +965,14 @@
      let bookOrdersId = "";
      let query = {
        remarks: "电子书",
        requests: [{
          saleMethodId: this.data.bookItemDetail.defaultSaleMethodId ?
            this.data.bookItemDetail.defaultSaleMethodId :
            this.data.bookDetail.defaultSaleMethodId,
          count: 1,
        }, ],
        requests: [
          {
            saleMethodId: this.data.bookItemDetail.defaultSaleMethodId
              ? this.data.bookItemDetail.defaultSaleMethodId
              : this.data.bookDetail.defaultSaleMethodId,
            count: 1,
          },
        ],
      };
      // 发起订单初始化请求并等待结果
      const res = await app.MG.store.initOrder(query);
@@ -951,10 +981,28 @@
      console.log(bookOrdersId);
      // 检查订单号是否存在
      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;
          wx.navigateTo({
            url,
          });
        }
      } else {
        console.log(222);
      }
@@ -1066,12 +1114,14 @@
          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,
          }, ]),
          content: JSON.stringify([
            {
              name: this.data.bookDetail.name,
              id: this.data.bookDetail.id,
              // defaultSaleMethodId: bookData.value.defaultSaleMethodId,
              icon: this.data.bookDetail.icon,
            },
          ]),
        };
        app.MG.ugc.newTopicMessage(query).then(async (res) => {
          if (res) {
@@ -1086,8 +1136,11 @@
        wx.showModal({
          title: "尊敬的用户,您好!",
          content: "请先进行教师认证!",
          confirmColor: "#ff6c00",
          cancelColor: "#949494",
          complete: (res) => {
            if (res.cancel) {}
            if (res.cancel) {
            }
            if (res.confirm) {
              wx.navigateTo({
                url: "/packageDomain/pages/teacherCertification/index",
@@ -1100,8 +1153,11 @@
      wx.showModal({
        title: "尊敬的用户,您好!",
        content: "请先进行教师认证!",
        confirmColor: "#ff6c00",
        cancelColor: "#949494",
        complete: (res) => {
          if (res.cancel) {}
          if (res.cancel) {
          }
          if (res.confirm) {
            wx.navigateTo({
              url: "/packageDomain/pages/teacherCertification/index",
@@ -1128,8 +1184,11 @@
      wx.showModal({
        title: "尊敬的用户,您好!",
        content: "请先进行教师认证!",
        confirmColor: "#ff6c00",
        cancelColor: "#949494",
        complete: (res) => {
          if (res.cancel) {}
          if (res.cancel) {
          }
          if (res.confirm) {
            wx.navigateTo({
              url: "/packageDomain/pages/teacherCertification/index",
@@ -1263,6 +1322,22 @@
      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;
    }
  },
  // 获取已购买商品
  getShoppingCartProductGet() {
    let query = {
@@ -1303,6 +1378,22 @@
    } else {
      return false;
    }
  },
  updateShoppingCartHidden() {
    const isSHow = this.data.shoppingCartGetId.some(
      (item) => item == data.saleMethod[0].Id
    );
    console.log(isSHow);
    return !isSHow;
  },
  updateCloudLearning() {
    const checkData = this.data.cmsDatas.find(
      (item) => item.refCode == "jsek_cloudLearning"
    );
    this.getResourceData(checkData);
    debugger;
    console.log(55555);
  },
  // 遍历树结构转换为数组方法
  handleTreeData(array) {
@@ -1469,9 +1560,9 @@
        if (new RegExp("(" + k + ")").test(fmt)) {
          fmt = fmt.replace(
            RegExp.$1,
            RegExp.$1.length == 1 ?
            o[k] :
            ("00" + o[k]).substr(("" + o[k]).length)
            RegExp.$1.length == 1
              ? o[k]
              : ("00" + o[k]).substr(("" + o[k]).length)
          );
        }
      }
@@ -1482,6 +1573,8 @@
  },
  // 获取组卷答题数据
  getMockData() {
    // const child = this.selectComponent("#test-resource");
    // if (child) child.changeTestLoaidng(true);
    this.setData({
      "mockData.useCount": 0,
      "mockData.mockList": [],
@@ -1525,10 +1618,12 @@
    try {
      let query = {
        remarks: "组卷",
        requests: [{
          saleMethodId: this.data.mockData.id,
          count: 1,
        }, ],
        requests: [
          {
            saleMethodId: this.data.mockData.id,
            count: 1,
          },
        ],
      };
      if (this.data.flag) {
        this.setData({
@@ -1578,11 +1673,13 @@
    });
    // 记录购买时间,并设状态state为1,表示刚购买完成组卷
    app.MG.identity.setUserKey({
      setKeyRequests: [{
        domain: "mockData",
        key: this.data.bookDetail.id + "",
        value: JSON.stringify(this.data.mockData.mockList),
      }, ],
      setKeyRequests: [
        {
          domain: "mockData",
          key: this.data.bookDetail.id + "",
          value: JSON.stringify(this.data.mockData.mockList),
        },
      ],
    });
  },
  // 获取相关图书
@@ -1612,30 +1709,49 @@
        (item) => item.id != this.data.bookDetail.id
      );
      let bookArr = [];
      // if (Arr.length > 3) {
      //   for (var i = 0; i < 3; i++) {
      //     var _num = Math.floor(Math.random() * Arr.length);
      //     var mm = Arr[_num];
      //     Arr.splice(_num, 1);
      //     bookArr.push(mm);
      //   }
      // } else {
      //   bookArr = Arr;
      // }
      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: Arr,
        relatedBookData: bookArr,
        relatedBookLoading: false,
      });
      if (!this.data.relatedBookData.length)
        this.setData({
          noRelatedBookData: true,
        });
      console.log("相关图书", this.data.relatedBookData);
    });
  },
  goBookDetails(e) {
    console.log(e);
    this.onLoad({ id: e.detail.id, name: e.detail.name });
    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.onLoad({
      id: e.detail.id,
      name: e.detail.name,
    });
  },
  // 底部购买按钮
  buyBtn() {
@@ -1659,7 +1775,8 @@
      return false;
    }
    wx.navigateTo({
      url: "/packageBookService/pages/components/webView/index?md5=" +
      url:
        "/packageBookService/pages/components/webView/index?md5=" +
        this.data.fileInfo.md5 +
        "&fileName=" +
        this.data.fileInfo.bookName +
@@ -1771,24 +1888,50 @@
  //申请电子样书
  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 && role == 'Teacher') {
    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 && role == "Teacher") {
        if (!this.data.noFile) {
          wx.showToast({
            title: "暂无电子书文件,请联系管理员!",
            icon: 'none',
            icon: "none",
            duration: 1000,
          })
          return
          });
          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.id == this.data.bookDetail.id
        );
        if (isApply) {
          wx.showToast({
            title: "该书已申请!",
            icon: "none",
            duration: 1000,
          });
          return false;
        }
        if (this.data.electronicBookList.length >= 2) {
@@ -1796,40 +1939,25 @@
            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) {
          wx.showToast({
            title: "该书已申请!",
            icon: "none",
            duration: 1000,
          })
          return false;
        }
        this.addBookFun(this.data.bookDetail, "eBook")
        this.addBookFun(this.data.bookDetail, "eBook");
      } else {
        wx.showModal({
          title: '尊敬的用户,您好!', //提示的标题
          content: '请先进行教师认证?', //提示的内容
          title: "尊敬的用户,您好!", //提示的标题
          content: "请先进行教师认证?", //提示的内容
          confirmColor: "#ff6c00",
          cancelColor: "#949494",
          success: function (res) {
            if (res.confirm) {
              wx.navigateTo({
                url: "/packageDomain/pages/teacherCertification/index",
              });
            } else if (res.cancel) {}
          }
        })
            } else if (res.cancel) {
            }
          },
        });
      }
    } else {
      wx.showToast({
@@ -1841,16 +1969,42 @@
  },
  //申请纸质样书
  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 && role == 'Teacher') {
    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.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) {
@@ -1858,40 +2012,25 @@
            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")
        this.addBookFun(this.data.bookDetail, "pBook");
      } else {
        wx.showModal({
          title: '尊敬的用户,您好!', //提示的标题
          content: '请先进行教师认证?', //提示的内容
          title: "尊敬的用户,您好!", //提示的标题
          content: "请先进行教师认证?", //提示的内容
          confirmColor: "#ff6c00",
          cancelColor: "#949494",
          success: function (res) {
            if (res.confirm) {
              wx.navigateTo({
                url: "/packageDomain/pages/teacherCertification/index",
              });
            } else if (res.cancel) {}
          }
        })
            } else if (res.cancel) {
            }
          },
        });
      }
    } else {
      wx.showToast({
@@ -1974,4 +2113,4 @@
      teach: tree,
    });
  },
});
});