litian
2024-09-06 8dc4e50769a7ebc5f0a3d766f61aa08b8f23b772
pages/digitalCourses/digitalCoursesDetails/index.js
@@ -2,8 +2,7 @@
const app = getApp()
import SparkMD5 from 'spark-md5'
import FormData from '../../../utils/formdata/index.js';
// import Wxml2Canvas from 'wxml2canvas';
// const Wxml2Canvas = require('Wxml2Canvas')
import Wxml2Canvas from 'wxml2canvas';
import {
  worksDataBytool
} from "../../../assets/js/toolClass.js";
@@ -67,6 +66,7 @@
    selectActive: 'learn',
    learnList: [],
    testList: [],
    testCount: 0,
    openTeachids: [],
    onlineQuestionsList: [],
    //分页
@@ -98,8 +98,9 @@
    publishingUnit: '',
    pubCertificateHide: true,
    cbzsImg: '', //出版证书base64
    rzzsImg: '' //认证证书base64
    rzzsImg: '', //认证证书base64
    imageWidth: '', //画在画布上的图片的宽度
    imageHeight: '', //画在画布上的图片的高度
  },
  formatDate(dateString) {
    if (!dateString) {
@@ -154,10 +155,16 @@
    this.setData({
      bookId: options.id
    })
    const token = wx.getStorageSync(app.config.tokenKey)
    if (!token) {
      loginInfo(app, (data) => {
        if (data) {} else {}
      })
    }
    this.digitalCoursesDetailsGet(options.id)
    this.getPlayerList()
    this.getType()
    this.getCertificateList()
  },
  /**
@@ -220,7 +227,6 @@
          this.setData({
            playerList: JSON.parse(res[0].value)
          })
          console.log(this.data.playerList, "playerList")
        }
      })
  },
@@ -263,7 +269,6 @@
      }
    }
    app.MG.store.getProductDetail(query).then(async res => {
      console.log(res);
      if (res.datas.purchasedSaleMethodIdList.includes(res.datas.defaultSaleMethodId)) {
        this.setData({
          isBuy: true
@@ -284,7 +289,7 @@
          expire: res.false
        })
      }
      res.datas.publicationDate = moment(res.datas.publicationDate).format('YYYY年MM月DD日')
      res.datas.publicationDate = moment(res.datas.publicationDate).format('YYYY年MM月')
      res.datas.price = res.datas.price.toFixed(2)
      wx.setNavigationBarTitle({
@@ -311,7 +316,8 @@
        })
      }
      this.getAboutBook(res.datas.productLinkInfo[res.datas.productLinkInfo.length - 1].LinkPath)
      this.getCertificateList()
      res.datas.content = res.datas.content.replace('../', app.config.requestCtx + '/')
      this.setData({
        lecturerList: lecturer,
        digitalsData: res.datas,
@@ -347,7 +353,9 @@
    this.setData({
      tabValue: value
    })
    console.log(this.data.tabValue);
    if (this.data.tabValue == 1) {
      this.saveAsImage()
    }
    if (this.data.tabValue == 2) {
      this.getResource()
      this.getRelationBook()
@@ -361,7 +369,6 @@
  },
  selectChange(event) {
    console.log(event)
    const value = event.target.dataset.value
    this.setData({
      selectActive: value
@@ -403,6 +410,7 @@
        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) {
@@ -440,6 +448,7 @@
          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
@@ -448,6 +457,7 @@
            list = this.ensureTreeConsistency(list)
            let result = [];
            this.findChildIds(list[0].children, result)
            this.countLeafNodes(list[0].children)
            this.setData({
              testList: list[0].children,
              openTeachids: result,
@@ -581,6 +591,19 @@
    }
  },
  //在线测试获取最后一个节点数量
  countLeafNodes(tree) {
    tree.forEach(node => {
      if (!node.children || node.children.length === 0) {
        this.setData({
          testCount: this.data.testCount + 1
        })
      } else {
        this.countLeafNodes(node.children);
      }
    });
  },
  //获取关联子商品/数字教材
  getRelationBook() {
    app.MG.store.getProductList({
@@ -614,7 +637,6 @@
            isTextBookBuy: false
          })
        }
        console.log(this.data.relationTextBook, "jc")
      })
  },
@@ -622,6 +644,27 @@
    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");
    if (!token) {
      return wx.getUserProfile({
        desc: "用户登录",
        success: (res) => {
          console.log(res);
        },
      });
    }
    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}`,
    });
  },
  // 获取相关课程
@@ -665,7 +708,6 @@
        this.setData({
          relatedBookData: bookArr
        })
        console.log(this.data.relatedBookData);
      } else {
        this.setData({
          relatedBookData: []
@@ -743,7 +785,6 @@
      // 发起订单初始化请求并等待结果
      const res = await app.MG.store.initOrder(query);
      // 获取订单号并赋值给 orderNumber.value
      console.log(res, 'res456');
      bookOrdersId = res.orderNumber;
      // 检查订单号是否存在
      if (bookOrdersId) {
@@ -768,9 +809,7 @@
            url,
          });
        }
      } else {
        console.log(222);
      }
      } else {}
    } else {
      wx.showToast({
        title: "商品不在有效期",
@@ -792,21 +831,69 @@
  },
  //申请证书
  async saveAsImage() {
    await nextTick()
    let query = wx.createSelectorQuery();
    let value = query.select("#pubCertificate").boundingClientRect();
    Wxml2Canvas(value).then((canvas) => {
      const img = canvas.toDataURL('image/png')
      this.setData({
        cbzsImg: img,
      })
    })
    // Wxml2Canvas(textCertificate.value).then((canvas1) => {
    //   const img1 = canvas1.toDataURL('image/png')
    //   rzzsImg.value = img1
    // })
    const that = this
    const query = wx.createSelectorQuery().in(this)
    query
      .select('#pubCertificate')
      .fields({
          // 选择需要生成canvas的范围
          size: true,
          node: true,
          scrollOffset: true,
        },
        (data) => {
          let width = data.width
          let height = data.height
          console.log(width, height)
          that.setData({
            imageWidth: width,
            imageHeight: height,
          })
        },
      )
      .exec()
    this.drawImage1()
    pubCertificateHide.value = false
  },
  drawImage1() {
    let that = this;
    let drawMyImage = new Wxml2Canvas({
      // width: 230,
      // height: 325,
      width: that.data.imageWidth,
      height: that.data.imageHeight,
      element: 'myCanvas',
      background: '#f0f0f0',
      progress(percent) {},
      finish(url) {
        console.log("生成的图片地址", url)
        wx.getFileSystemManager().readFile({
          filePath: url,
          encoding: 'base64',
          success: (res) => {
            let MyImageBase64 = 'data:image/jpg;base64,' + res.data
            console.log('MyImageBase64', MyImageBase64)
            that.setData({
              cbzsImg: MyImageBase64,
              pubCertificateHide: false,
            })
          },
        })
      },
      error(res) {
        console.log("生成的图片失败", res)
      }
    }, this);
    let data = {
      list: [{
        type: 'wxml',
        class: '.my_canvas .my_draw_canvas', //.my_draw_canvas每个要绘制元素的类名
        limit: '.my_canvas', //my_canvas根元素类名
        x: 0,
        y: 0
      }]
    }
    drawMyImage.draw(data, that);
  },
  //获取字段
  getType() {
@@ -839,6 +926,7 @@
          })
        }
      })
    })
  },
@@ -905,7 +993,6 @@
          // encoding: 'binary', //编码格式
          success: ress => {
            //成功的回调
            console.log(ress.data, 45613489)
            let spark = new SparkMD5.ArrayBuffer();
            spark.append(ress.data);
            let md5 = spark.end(false);
@@ -935,7 +1022,6 @@
                  if (res.statusCode == 200) {
                    resolve(res.data);
                    if (res.data) {
                      console.log(md5, "md5555")
                      that.setData({
                        'userInfo.userPicture': app.config.requestCtx + `/file/GetPreViewImage?md5=` + md5,
                        pictureMd5: md5
@@ -1078,7 +1164,7 @@
  //证书查看
  onClick1() {
    this.setData({
      images: ['https://jsek.bnuic.com/home/certificate/szkc.jpg'],
      images: [this.data.cbzsImg],
      showIndex: true,
      visible: true,
    })
@@ -1094,7 +1180,6 @@
    const {
      trigger
    } = e.detail;
    console.log(trigger);
    this.setData({
      visible: false,
    });