闫增涛
2024-04-03 f52c21331fa71bd3ae6be41117f35cb54b076119
packageBookService/pages/bookServices/detail/index.js
@@ -1,7 +1,9 @@
// 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({
  /**
@@ -57,6 +59,8 @@
      residue: 0, // 组卷剩余次数
      mockList: [], // 用户组卷提交信息
    },
    relatedBookLoading: false,
    noRelatedBookData: false,
    relatedBookPath: "", // 相关图书path
    relatedBookData: [], // 相关图书列表
    flag: true,
@@ -141,27 +145,12 @@
   * 生命周期函数--监听页面加载
   */
  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; // 导航栏高度
    this.setData({
      bookId: options.id,
      bookId: options.id + "",
      barHeight: systInfo.statusBarHeight,
      navBarHeight: navBarHeight,
    });
@@ -171,7 +160,6 @@
        name: options.name,
      },
    });
    this.getBookInfo(options.id);
    this.getResourceClass(); // 获取资源所属分类
    const token = wx.getStorageSync(app.config.tokenKey);
@@ -441,13 +429,14 @@
    };
    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(
@@ -509,10 +498,9 @@
        }
        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
@@ -616,7 +604,9 @@
  },
  // 跳转网店
  goShop(e) {
    const { link } = e.currentTarget.dataset;
    const {
      link
    } = e.currentTarget.dataset;
    wx.navigateTo({
      url: `/packageBookService/pages/bookServices/webpage/index?url=${link}`,
    });
@@ -635,6 +625,7 @@
      const checkData = this.data.cmsDatas.find(
        (item) => item.refCode == e.detail.value
      );
      if (checkData) {
        if (e.detail.value == "jsek_cloudLearning") {
          this.setData({
@@ -747,8 +738,8 @@
                openTeachids: result,
              });
            } 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;
@@ -757,7 +748,6 @@
                this.setData({
                  isshowDrawBtn: false,
                });
              debugger;
              this.findChildIds(list, result);
              this.setData({
                learn: list,
@@ -821,8 +811,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;
@@ -904,13 +907,11 @@
      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();
@@ -951,14 +952,12 @@
      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);
@@ -967,13 +966,29 @@
      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);
      }
    } else {
      wx.showToast({
        title: "商品不在有效期",
@@ -1082,14 +1097,12 @@
          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) {
@@ -1105,8 +1118,7 @@
          title: "尊敬的用户,您好!",
          content: "请先进行教师认证!",
          complete: (res) => {
            if (res.cancel) {
            }
            if (res.cancel) {}
            if (res.confirm) {
              wx.navigateTo({
                url: "/packageDomain/pages/teacherCertification/index",
@@ -1120,8 +1132,7 @@
        title: "尊敬的用户,您好!",
        content: "请先进行教师认证!",
        complete: (res) => {
          if (res.cancel) {
          }
          if (res.cancel) {}
          if (res.confirm) {
            wx.navigateTo({
              url: "/packageDomain/pages/teacherCertification/index",
@@ -1149,8 +1160,7 @@
        title: "尊敬的用户,您好!",
        content: "请先进行教师认证!",
        complete: (res) => {
          if (res.cancel) {
          }
          if (res.cancel) {}
          if (res.confirm) {
            wx.navigateTo({
              url: "/packageDomain/pages/teacherCertification/index",
@@ -1325,6 +1335,22 @@
      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) {
    const flattenedArray = [];
@@ -1490,9 +1516,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)
          );
        }
      }
@@ -1546,12 +1572,10 @@
    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({
@@ -1601,18 +1625,19 @@
    });
    // 记录购买时间,并设状态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),
      }, ],
    });
  },
  // 获取相关图书
  getAboutBook(path) {
    // loadings.value.aboutBook = true
    this.setData({
      relatedBookLoading: true,
      noRelatedBookData: false,
    });
    let query = {
      path,
      queryType: "*",
@@ -1634,24 +1659,37 @@
        (item) => item.id != this.data.bookDetail.id
      );
      let bookArr = [];
      if (Arr.length) {
        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 > 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;
      // }
      this.setData({
        relatedBookData: Arr,
        relatedBookLoading: false,
      });
      if (!this.data.relatedBookData.length)
        this.setData({
          relatedBookData: bookArr,
          noRelatedBookData: true,
        });
        console.log("相关图书", this.data.relatedBookData);
      }
      console.log("相关图书", this.data.relatedBookData);
    });
    // loadings.value.aboutBook = false
  },
  goBookDetails(e) {
    console.log(e);
    this.setData({
      tabValue: "brief",
      pageLoading: true,
    });
    this.onLoad({
      id: e.detail.id,
      name: e.detail.name,
    });
  },
  // 底部购买按钮
  buyBtn() {
@@ -1675,8 +1713,7 @@
      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 +
@@ -1794,69 +1831,66 @@
      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) {
            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) {
              }
            },
      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;
        }
        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) {
          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 {
      wx.showToast({
@@ -1873,62 +1907,59 @@
      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) {
              }
            },
      if (role && 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) {}
          },
        });
      }
    } else {
      wx.showToast({
@@ -2011,4 +2042,4 @@
      teach: tree,
    });
  },
});
});