闫增涛
2025-03-28 38cd76c5f05fd55855038e2d393074e27909c63d
pages/digitalCourses/digitalCoursesDetails/index.js
@@ -4,13 +4,16 @@
import FormData from '../../../utils/formdata/index.js';
import Wxml2Canvas from 'wxml2canvas';
import {
  worksDataBytool
  worksDataBytool,
  UpdateworksDataBytool
} from "../../../assets/js/toolClass.js";
import moment from 'moment'
import Toast from "tdesign-miniprogram/toast";
import {
  loginInfo
} from '../../../assets/js/login';
import wxbarcode from 'wxbarcode'
Page({
  /**
@@ -103,7 +106,10 @@
    rzzsImg: '', //认证证书base64
    imageWidth: '', //画在画布上的图片的宽度
    imageHeight: '', //画在画布上的图片的高度
    website: 'https://jsek.bnuic.com',
    website: 'https://jsek.bnuic.com/home/#/digitalCourses',
    wxShareUrl: '',
    imgUrl: '',
    imgUrl1: ''
  },
  formatDate(dateString) {
    if (!dateString) {
@@ -162,23 +168,20 @@
      bookPath: parentPath.join('\\')
    })
    const token = wx.getStorageSync(app.config.tokenKey)
    if (!token) {
      loginInfo(app, (data) => {
        if (data) {
          this.digitalCoursesDetailsGet(options.id)
          this.getPlayerList()
          this.getType()
        } else {}
      })
    }
    this.digitalCoursesDetailsGet(options.id)
    this.getPlayerList()
    if (token) this.getPlayerList()
    this.getType()
    this.setData({
      userName: JSON.parse(wx.getStorageSync(app.config.userInfoKey)).name,
  },
  logInFun(callback) {
    loginInfo(app, (data) => {
      if (data) {
        this.digitalCoursesDetailsGet(options.id)
        this.getPlayerList()
        this.getType()
        callback()
      }
    })
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
@@ -190,7 +193,12 @@
   * 生命周期函数--监听页面显示
   */
  onShow() {
    if (this.data.tabValue == 2 && this.data.selectActive == 'learn') {
      const token = wx.getStorageSync(app.config.tokenKey)
      if (token) this.getPlayerList()
      this.getResource()
      this.getRelationBook()
    }
  },
  /**
@@ -224,17 +232,17 @@
  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
  },
  onShareAppMessage() {},
  onShareTimeline() {},
  //获取视频学习
  getPlayerList() {
    app.MG.identity
      .getUserKey({
        domain: 'videoPlayer',
        keys: [this.data.bookId]
        keys: [this.data.bookId + '']
      })
      .then((res) => {
        console.log(1, res);
        if (res.length > 0) {
          this.setData({
            playerList: JSON.parse(res[0].value)
@@ -243,6 +251,7 @@
      })
  },
  digitalCoursesDetailsGet(digitalTextId) {
    let that = this;
    let query = {
      path: '*',
      queryType: '*',
@@ -301,7 +310,7 @@
          expire: res.false
        })
      }
      res.datas.publicationDate = moment(res.datas.publicationDate).format('YYYY年MM月')
      res.datas.publicationDate = res.datas.publicationDate ? moment(res.datas.publicationDate).format('YYYY年MM月') : ''
      res.datas.price = res.datas.price.toFixed(2)
      res.datas.oldPrice = res.datas.oldPrice.toFixed(2)
      wx.setNavigationBarTitle({
@@ -310,21 +319,11 @@
      if (res.datas.publishingUnit) {
        await this.getBookPublishUnit(res.datas.publishingUnit)
      }
      let lecturer = []
      if (res.datas.datas.speaker && res.datas.datas.speaker.length > 0) {
        res.datas.datas.speaker.forEach(item => {
          if (res.datas.subItems && res.datas.subItems.QueryCms.length > 0) {
            res.datas.subItems.QueryCms.forEach(item1 => {
              if (JSON.parse(item.Data.Value).items[0] == item1.id) {
                lecturer.push({
                  name: item1.name,
                  icon: item1.icon ? item1.icon : '',
                  description: item1.description ? item1.description : '',
                })
              }
            })
          }
        this.getSpeaker(res.datas.datas.speaker)
      } else {
        this.setData({
          lecturerList: []
        })
      }
      if (this.data.bookPath) {
@@ -338,9 +337,95 @@
        '<img style="max-width:100%;height:auto;display:block;margin-top:0;margin-bottom:0;"'
      )
      this.setData({
        lecturerList: lecturer,
        digitalsData: res.datas,
        loading: false
        loading: false,
        wxShareUrl: app.config.shareUrl + '?id=' + res.datas.id + '&path=' + this.data.bookPath + '&type=course'
      })
      if (this.data.wxShareUrl) {
        wxbarcode.qrcode('qrcode', this.data.wxShareUrl, 160, 160);
        wxbarcode.qrcode('qrcode1', this.data.wxShareUrl, 160, 160);
        setTimeout(() => {
          wx.canvasToTempFilePath({
            canvasId: 'qrcode',
            success: function (res) {
              // res.tempFilePath 包含生成的图片文件路径
              that.setData({
                imgUrl: res.tempFilePath
              })
            }
          });
          wx.canvasToTempFilePath({
            canvasId: 'qrcode1',
            success: function (res) {
              // res.tempFilePath 包含生成的图片文件路径
              that.setData({
                imgUrl1: res.tempFilePath
              })
            }
          });
        }, 1000)
      }
    })
  },
  //获取主讲人
  getSpeaker(list) {
    this.setData({
      lecturerList: []
    })
    let query = {
      path: 'jsek_speaker',
      fields: {
        content: [],
        positionalTitle: []
      },
      coverSize: {
        height: 250
      }
    }
    app.MG.resource.getItem(query).then((res) => {
      let lecturerList = []
      if (list && res.datas.length > 0) {
        list.forEach((item) => {
          if (res.datas && res.datas.length > 0) {
            res.datas.forEach((item1) => {
              if (JSON.parse(item.Data.Value).items[0] == item1.id) {
                lecturerList.push({
                  name: item1.name,
                  positionalTitle: item1.positionalTitle,
                  icon: item1.icon,
                  description: item1.description ? item1.description : '暂无简介'
                })
              }
            })
          }
        })
        this.getPositionalTitle(lecturerList)
      }
    })
  },
  async getPositionalTitle(listStr) {
    let list = []
    let query = {
      refCodes: ['positionalTitle']
    }
    await app.MG.store.getProductTypeField(query).then((res) => {
      let option = JSON.parse(res[0].config).option
      listStr.forEach((unit) => {
        option.forEach((item) => {
          if (item.value == unit.positionalTitle) {
            unit.positionalName = item.name
          }
        })
        list.push({
          name: unit.name,
          positionalTitle: unit.positionalName,
          icon: unit.icon,
          description: unit.description ? unit.description : '暂无简介'
        })
      })
      this.setData({
        lecturerList: list
      })
    })
  },
@@ -372,6 +457,9 @@
    this.setData({
      tabValue: value
    })
    if (this.data.tabValue == 0) {
      this.digitalCoursesDetailsGet(this.data.bookId)
    }
    if (this.data.tabValue == 1) {
      this.saveAsImage()
    }
@@ -390,7 +478,8 @@
  selectChange(event) {
    const value = event.target.dataset.value
    this.setData({
      selectActive: value
      selectActive: value,
      testCount: 0
    })
    this.getResource()
  },
@@ -419,7 +508,8 @@
      pading: {
        start: 99,
        size: 0
      }
      },
    }
    app.MG.store.getProductDetail(query).then((res) => {
      let test = []
@@ -429,7 +519,6 @@
        res.datas.cmsDatas[0].datas.forEach((item) => {
          if (item.type == 'questionBankFolder' || item.type == 'questionBankItem') {
            test.push(item)
          } else if (item.type != "resourceItem") {
            this.data.playerList.forEach(pItem => {
              if (pItem.cmsItemId == item.id) {
@@ -441,18 +530,21 @@
          if (item.type == 'productItem') {
            learnItemList.push(item)
          }
        })
        if (this.data.selectActive === 'learn') {
          let list = []
          // 测试 6位// 正式 5位//  测试调用传20,内部7  正式调用传17 内部传6
          let addNum = query.cmsPath.length > 5 ? 7 : query.cmsPath.length > 6 ? 8 : 6
          const num = query.cmsPath.length + addNum
          if (learn.some((item) => item.sysType == 'CmsFolder')) {
            this.getTreeList(learn, num, list, '\\', addNum)
            list = this.ensureTreeConsistency(list)
            // 1.只有目录,没有资源
            if (!learn.some((item) => item.sysType == 'CmsItem')) {
              list = learn
            } else {
              // 2.目录和资源都有
              this.getTreeList(learn, list, query.cmsPath)
              list = this.ensureTreeConsistency(list)
            }
          } else {
            // 3.只有资源,没有目录
            list = learn
          }
          let result = [];
@@ -467,16 +559,13 @@
          const data = test.filter(
            (item) => item.type == 'questionBankFolder' && item.childrenFolderCount > 0
          )
          if (data.length > 0) {
            let list = []
            let addNum = query.cmsPath.length > 5 ? 7 : query.cmsPath.length > 6 ? 8 : 6
            const num = query.cmsPath.length + addNum
            this.getTreeList(data, num, list, '\\', addNum)
            this.getTreeList(data, list, query.cmsPath)
            list = this.ensureTreeConsistency(list)
            let result = [];
            this.findChildIds(list[0].children, result)
            this.countLeafNodes(list[0].children)
            this.findChildIds(list[0]?.children, result)
            this.countLeafNodes(list[0]?.children)
            this.setData({
              testList: list[0].children,
              openTeachids: result,
@@ -505,10 +594,9 @@
    })
  },
  // 扁平化数据转换tree
  getTreeList(rootList, pathLength, newArr, path, addNum) {
  getTreeList(rootList, newArr, path) {
    for (const item of rootList) {
      // 此处原本 item.productLinkPath.length == pathLength 但 productLinkPath 长度个别书存在4、5位交错
      if ((pathLength - item.productLinkPath.length >= 0 && pathLength - item.productLinkPath.length <= 3) && item.productLinkPath.includes(path)) {
      if (path == item.productLinkPath.replace('\\' + item.id, '')) {
        if (item.sysType == 'CmsItem') {
          if (item.selectType == 'webpage') {
            item.disabled = true
@@ -523,15 +611,16 @@
        }
        // newArr.push(item)
        // 在插入过程中对数据进行排序
        newArr = this.insertAndSortObjectsByProductLinkPath(newArr, item, addNum)
        newArr = this.insertAndSortObjectsByProductLinkPath(newArr, item)
        // 插进数组后 从原数据中删除
        rootList = rootList.filter(nitem => nitem.id != item.id)
      }
    }
    //给数组里面再添加一个children的空数组
    for (const i of newArr) {
      i.children = []
      this.getTreeList(rootList, pathLength + addNum, i.children, i.productLinkPath, addNum)
      this.getTreeList(rootList, i.children, i.productLinkPath)
      if (i.children.length == 0) {
        newArr[0].istry = true
        delete i.children
      }
    }
@@ -555,29 +644,21 @@
  },
  // 排序数组 按照productLinkPath
  insertAndSortObjectsByProductLinkPath(array, newObj, addNum) {
  insertAndSortObjectsByProductLinkPath(array, newObj) {
    // 查找新对象应该插入的位置  
    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)));
    let insertIndex = array.findIndex(obj => newObj.id < obj.id);
    // 如果没有找到合适的位置,则放在数组末尾  
    if (insertIndex === -1) {
      insertIndex = array.length;
    }
    // 插入新对象到数组  
    array.splice(insertIndex, 0, newObj);
    // 测试6 正式5
    // 对数组进行排序  
    array.sort((a, b) => {
      if (Number(a.productLinkPath.substring(a.productLinkPath.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
      if (a.id < b.id) return -1;
      if (a.id > b.id) return 1;
      return 0;
    });
    // 返回更新后的数组  
    return array;
  },
@@ -613,6 +694,7 @@
  //在线测试获取最后一个节点数量
  countLeafNodes(tree) {
    tree.forEach(node => {
      if (!node.children || node.children.length === 0) {
        this.setData({
@@ -663,36 +745,41 @@
  },
  readTextBook() {
    wx.navigateTo({
      url: '/pages/digitalCourses/digitalCoursesDetails/components/digitalRead/index?refCode=' + this.data.relationTextBook.refCode + '&tryPageCount=' + this.data.relationTextBook.probationPage + '&isTextBookBuy=' + this.data.isTextBookBuy
    })
    const token = wx.getStorageSync(app.config.tokenKey)
    if (!token) {
      this.logInFun(() => {})
    } else {
      wx.navigateTo({
        url: '/pages/digitalCourses/digitalCoursesDetails/components/digitalRead/index?refCode=' + this.data.relationTextBook.refCode + '&tryPageCount=' + this.data.relationTextBook.probationPage + '&isTextBookBuy=' + this.data.isTextBookBuy
      })
    }
  },
  //在线测试我的收藏、我的错题
  goMycollect(e) {
    const answertype = e.currentTarget.dataset.answertype;
    const token = wx.getStorageSync("jsek-token");
    const token = wx.getStorageSync(app.config.tokenKey)
    if (!token) {
      return wx.getUserProfile({
        desc: "用户登录",
        success: (res) => {
          console.log(res);
        },
      this.logInFun(() => {})
    } else {
      const answertype = e.currentTarget.dataset.answertype;
      wx.navigateTo({
        url: `/packageBookService/pages/bookServices/examination/examination?bookId=${
          this.data.digitalsData.id
        }&rootCmsItemId=${this.data.digitalsData.rootCmsItemId}&answerTitle=${
          answertype == "collectQuestion" ? "我的收藏" : "我的错题"
        }&answerType=${answertype}&storeInfo=${app.config.digitalCourses}`,
      });
    }
    wx.navigateTo({
      url: `/packageBookService/pages/bookServices/examination/examination?bookId=${
        this.data.digitalsData.id
      }&rootCmsItemId=${this.data.digitalsData.rootCmsItemId}&answerTitle=${
        answertype == "collectQuestion" ? "我的收藏" : "我的错题"
      }&answerType=${answertype}&storeInfo=${app.config.digitalCourses}`,
    });
  },
  onCorrelationBook(e) {
    const item = e.currentTarget.dataset.item;
    this.digitalCoursesDetailsGet(item.id)
    this.getPlayerList()
    this.onLoad({
      loading: true,
      id: item.id,
      path: item.idPath
    })
  },
  // 获取相关课程
@@ -734,7 +821,7 @@
          }
        })
        this.setData({
          relatedBookData: bookArr
          relatedBookData: bookArr.slice(0, 6)
        })
      } else {
        this.setData({
@@ -746,48 +833,57 @@
  //学习笔记
  //在线提问
  // 图书添加购物车
  async addBookShopcCar() {
    if (!this.data.expire) {
      const shoppingCartGetId = [];
      let query = {
        start: 0,
        size: 9999,
        filterList: [],
        searchList: [],
      };
      const res = await app.MG.store.getShoppingCartProductList(query);
      res.datas.forEach((item) => {
        shoppingCartGetId.push(item.saleMethod.id);
      });
      const determine = shoppingCartGetId.some(
        (item) => item == this.data.digitalsData.defaultSaleMethodId
      );
      if (!determine) {
  addBookShopcCar() {
    const addFun = async () => {
      if (!this.data.expire) {
        const shoppingCartGetId = [];
        let query = {
          requests: [{
            saleMethodId: this.data.digitalsData.defaultSaleMethodId,
            storeEventId: null,
            agentCode: "电子书",
          }, ],
          start: 0,
          size: 9999,
          filterList: [],
          searchList: [],
        };
        const addRes = app.MG.store.addShoppingCart(query);
        this.showSuccessToast();
        const res = await app.MG.store.getShoppingCartProductList(query);
        res.datas.forEach((item) => {
          shoppingCartGetId.push(item.saleMethod.id);
        });
        const determine = shoppingCartGetId.some(
          (item) => item == this.data.digitalsData.defaultSaleMethodId
        );
        if (!determine) {
          let query = {
            requests: [{
              saleMethodId: this.data.digitalsData.defaultSaleMethodId,
              storeEventId: null,
              agentCode: "电子书",
            }, ],
          };
          const addRes = app.MG.store.addShoppingCart(query);
          this.showSuccessToast();
        } else {
          Toast({
            context: this,
            selector: "#t-toast",
            message: "该课程已在购物车,请勿重复添加",
            theme: "warning",
            direction: "column",
          });
        }
      } else {
        Toast({
          context: this,
          selector: "#t-toast",
          message: "该书已在购物车,请勿重复添加",
          theme: "warning",
          direction: "column",
        wx.showToast({
          title: "商品不在有效期",
          icon: "none",
          duration: 1000,
        });
      }
    } else {
      wx.showToast({
        title: "商品不在有效期",
        icon: "none",
        duration: 1000,
      });
    }
    const token = wx.getStorageSync(app.config.tokenKey)
    if (!token) {
      this.logInFun(() => {})
    } else {
      addFun()
    }
  },
  showSuccessToast() {
    Toast({
@@ -801,50 +897,60 @@
  //购买按钮
  async buyBtn() {
    if (!this.data.expire) {
      let bookOrdersId = "";
      let query = {
        remarks: "电子书",
        requests: [{
          saleMethodId: this.data.digitalsData.defaultSaleMethodId,
          count: 1,
        }, ],
      };
      // 发起订单初始化请求并等待结果
      const res = await app.MG.store.initOrder(query);
      // 获取订单号并赋值给 orderNumber.value
      bookOrdersId = res.orderNumber;
      // 检查订单号是否存在
      if (bookOrdersId) {
        if (this.data.digitalsData.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);
              }
    const buyFun = async () => {
      if (!this.data.expire) {
        let bookOrdersId = "";
        let query = {
          remarks: "电子书",
          requests: [{
            saleMethodId: this.data.digitalsData.defaultSaleMethodId,
            count: 1,
          }, ],
        };
        // 发起订单初始化请求并等待结果
        const res = await app.MG.store.initOrder(query);
        // 获取订单号并赋值给 orderNumber.value
        bookOrdersId = res.orderNumber;
        // 检查订单号是否存在
        if (bookOrdersId) {
          if (this.data.digitalsData.price == "0.00") {
            app.MG.store
              .confirmOrder({
                orderNum: bookOrdersId,
              })
              .then((res) => {
                if (res) {
                  this.digitalCoursesDetailsGet(this.data.digitalsData.id);
                  wx.showToast({
                    title: "领取成功",
                    icon: "none",
                    duration: 1000,
                  });
                  this.digitalCoursesDetailsGet(this.data.bookId);
                }
              });
          } else {
            const url = "/pages/cart/paymentPage/index?orderNumber=" + bookOrdersId + '&onNorderSaleMethod=' + res.saleMethodLinks[0].orderSaleMethod.id;
            wx.navigateTo({
              url,
            });
        } else {
          const url = "/pages/cart/paymentPage/index?orderNumber=" + bookOrdersId + '&onNorderSaleMethod=' + res.saleMethodLinks[0].orderSaleMethod.id;
          wx.navigateTo({
            url,
          });
        }
      } else {}
    } else {
      wx.showToast({
        title: "商品不在有效期",
        icon: "none",
        duration: 1000,
      });
          }
        } else {}
      } else {
        wx.showToast({
          title: "商品不在有效期",
          icon: "none",
          duration: 1000,
        });
      }
    }
    const token = wx.getStorageSync(app.config.tokenKey)
    if (!token) {
      this.logInFun(() => {})
    } else {
      buyFun()
    }
  },
@@ -879,7 +985,9 @@
        },
      )
      .exec()
    this.drawImage()
    setTimeout(() => {
      this.drawImage()
    }, 500)
    query
      .select('#textCertificate')
      .fields({
@@ -898,7 +1006,9 @@
        },
      )
      .exec()
    this.drawImage1()
    setTimeout(() => {
      this.drawImage1()
    }, 500)
  },
  drawImage() {
    let that = this;
@@ -995,53 +1105,60 @@
    app.MG.ugc.getTopicMessageList(data).then((res) => {
      res.datas.map((item) => {
        item.content = JSON.parse(item.content)
        if (item.content.id == this.data.bookId) {
        if (item.content.bookId == this.data.bookId) {
          this.setData({
            isCertificate: item
            isCertificate: item,
            userName: item.content.userName,
            userPicture: app.config.requestCtx + `/file/GetPreViewImage?md5=` + item.content.userPicture
          })
        }
      })
    })
  },
  onCertificate() {
    // if (!this.data.isBuy) {
    //   wx.showToast({
    //     title: "请先购买,体验完整服务",
    //     icon: "none",
    //     duration: 1000,
    //   });
    //   return false
    // }
    // if (!this.data.isLearn) {
    //   wx.showToast({
    //     title: "您的学习任务还未完成,暂不能申请证书,加油哦!",
    //     icon: "none",
    //     duration: 1000,
    //   });
    //   return false
    // }
    if (this.data.isCertificate && this.data.isCertificate.state == 'WaitAudit') {
      wx.showToast({
        title: "您申请的证书正在审核中",
        icon: "none",
        duration: 1000,
    const cateFun = () => {
      if (!this.data.isBuy) {
        wx.showToast({
          title: "请先购买,体验完整服务",
          icon: "none",
          duration: 1000,
        });
        return false
      }
      if (!this.data.isLearn) {
        wx.showToast({
          title: "您的学习任务还未完成,暂不能申请证书,加油哦!",
          icon: "none",
          duration: 1000,
        });
        return false
      }
      if (this.data.isCertificate && this.data.isCertificate.state == 'WaitAudit') {
        wx.showToast({
          title: "您申请的证书正在审核中",
          icon: "none",
          duration: 1000,
        });
        return false
      }
      var page = getCurrentPages().pop(); // 获取当前页面实例
      page.setData({
        // 动态设置禁止滚动的样式
        disableScrollStyle: 'overflow: hidden;'
      });
      return false
      this.setData({
        dialogBox: true,
        scrollJudge: ''
      })
    }
    const token = wx.getStorageSync(app.config.tokenKey)
    if (!token) {
      this.logInFun(() => {})
    } else {
      cateFun()
    }
    var page = getCurrentPages().pop(); // 获取当前页面实例
    page.setData({
      // 动态设置禁止滚动的样式
      disableScrollStyle: 'overflow: hidden;'
    });
    this.setData({
      dialogBox: true,
      scrollJudge: ''
    })
  },
  closeDialog() {
    this.setData({
@@ -1115,6 +1232,10 @@
  },
  confirmM() {
    let currentDate = new Date()
    let year = currentDate.getFullYear()
    let month = currentDate.getMonth() + 1
    let today = currentDate.getDate()
    if (this.data.userInfo.fullName) {
      if (this.data.pictureMd5 == '') {
        wx.showToast({
@@ -1132,42 +1253,89 @@
        name: this.data.digitalsData.name,
        ISBN: this.data.digitalsData.isbn,
        affiliatedUnit: this.data.digitalsData.affiliatedUnit,
        publishingUnit: this.data.publishingUnit,
        publicationDate: this.data.digitalsData.publicationDate,
        classHours: this.data.digitalsData.classHours,
        lecturerList: this.data.lecturerList.length > 0 ?
          this.data.lecturerList[0].name : this.data.digitalsData.courseLeader,
        userName: this.data.userInfo.fullName,
        userPicture: this.data.pictureMd5,
        certificate: this.data.rzzsImg
        studyTime: this.data.digitalsData.beginDate + '-' + year + '-' + month + '-' + today,
        website: this.data.website,
        wxShareUrl: this.data.wxShareUrl
      }
      data = {
        topicIdOrRefCode: 'applyCourseCertificate',
        name: this.data.userInfo.fullName,
        content: JSON.stringify(bookInfo),
        state: 'WaitAudit',
        cmsTypeRefCode: 'jsek_courseCertificate',
        type: 'applyCourse',
        newDataListRequest: worksDataBytool(this.data.worksInfo, this.data.userInfo)
      if (this.data.isCertificate.id) {
        let dataRequests = UpdateworksDataBytool(
          this.data.worksInfo,
          [this.data.isCertificate],
          this.data.userInfo
        )
        data = {
          id: this.data.isCertificate.id,
          topicIdOrRefCode: 'applyCourseCertificate',
          name: this.data.userInfo.fullName,
          content: JSON.stringify(bookInfo),
          state: 'WaitAudit',
          cmsTypeRefCode: 'jsek_courseCertificate',
          type: 'applyCourse',
          newDataRequests: dataRequests.newData,
          updateDataRequests: dataRequests.updateData,
          delDataRequest: {
            ids: []
          }
        }
        app.MG.ugc
          .updateTopicMessage(data)
          .then((res) => {
            wx.showToast({
              title: "已提交申请",
              icon: "none",
              duration: 1000,
            });
            this.setData({
              "userInfo.fullName": "",
              dialogBox: false,
              scrollJudge: true
            })
            this.getCertificateList()
          })
          .catch(() => {
            btnLoading.value = false
          })
      } else {
        data = {
          topicIdOrRefCode: 'applyCourseCertificate',
          name: this.data.userInfo.fullName,
          content: JSON.stringify(bookInfo),
          state: 'WaitAudit',
          cmsTypeRefCode: 'jsek_courseCertificate',
          type: 'applyCourse',
          newDataListRequest: worksDataBytool(this.data.worksInfo, this.data.userInfo)
        }
        app.MG.ugc
          .newTopicMessage(data)
          .then((res) => {
            wx.showToast({
              title: "已提交申请",
              icon: "none",
              duration: 1000,
            });
            this.setData({
              "userInfo.fullName": "",
              dialogBox: false,
              scrollJudge: true
            })
            this.getCertificateList()
          })
          .catch(() => {
            this.setData({
              "userInfo.fullName": "",
            })
          })
      }
      app.MG.ugc
        .newTopicMessage(data)
        .then((res) => {
          wx.showToast({
            title: "已提交申请",
            icon: "none",
            duration: 1000,
          });
          this.setData({
            "userInfo.fullName": "",
            dialogBox: false,
            scrollJudge: true
          })
          this.getCertificateList()
        })
        .catch(() => {
          this.setData({
            "userInfo.fullName": "",
          })
        })
    } else {
      wx.showToast({
        title: "姓名不能为空",
@@ -1177,40 +1345,7 @@
    }
  },
  setCoolect() {
    // 首页测试登录功能,后续注释
    // 检查登录状态
    const token = wx.getStorageSync(app.config.tokenKey)
    if (!token) {
      loginInfo(app, (data) => {
        // 如果不是第一次登录,会执行回调
        if (data) {
          if (this.data.digitalsData.isFavourite) {
            app.MG.store
              .delProductLink({
                productIds: [this.data.digitalsData.id],
                linkType: 'Favoriteclass'
              })
              .then(() => {
                this.setData({
                  "digitalsData.isFavourite": false
                })
              })
          } else {
            let params = {
              productIds: [this.data.digitalsData.id],
              linkType: 'Favoriteclass'
            }
            app.MG.store.addProductLink(params).then((res) => {
              this.setData({
                "digitalsData.isFavourite": true
              })
            })
          }
        } else {
          // 出现错误,返回false
        }
      })
    } else {
    const collectFun = () => {
      if (this.data.digitalsData.isFavourite) {
        app.MG.store
          .delProductLink({
@@ -1234,6 +1369,12 @@
        })
      }
    }
    const token = wx.getStorageSync(app.config.tokenKey)
    if (!token) {
      this.logInFun(() => {})
    } else {
      collectFun()
    }
  },
  //证书查看