From 38cd76c5f05fd55855038e2d393074e27909c63d Mon Sep 17 00:00:00 2001
From: 闫增涛 <1829501689@qq.com>
Date: 星期五, 28 三月 2025 15:28:01 +0800
Subject: [PATCH] 剩余页面登录迁移

---
 pages/digitalCourses/digitalCoursesDetails/index.js | 1307 +++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 1,168 insertions(+), 139 deletions(-)

diff --git a/pages/digitalCourses/digitalCoursesDetails/index.js b/pages/digitalCourses/digitalCoursesDetails/index.js
index 4c3d661..1212ec1 100644
--- a/pages/digitalCourses/digitalCoursesDetails/index.js
+++ b/pages/digitalCourses/digitalCoursesDetails/index.js
@@ -1,6 +1,19 @@
 // pages/digitalCourses/digitalCoursesDetails/index.js
 const app = getApp()
+import SparkMD5 from 'spark-md5'
+import FormData from '../../../utils/formdata/index.js';
+import Wxml2Canvas from 'wxml2canvas';
+import {
+  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({
 
   /**
@@ -8,7 +21,9 @@
    */
   data: {
     loading: true,
-    digitalsData: [],
+    digitalsData: {},
+    expire: false, //鍟嗗搧鎴栧瓙鍟嗗搧閿�鍞柟寮忔槸鍚﹁繃鏈�
+    isBuy: false,
     tabValue: 0,
     learnResourceIcon: {
       name: "/static/images/digitalTextbooks/shengshu-t@2x.png",
@@ -41,22 +56,60 @@
     onlineQuestioningClick: {
       name: "/static/images/digitalCourses/tiwen-click@2x.png"
     },
-
+    testResourceClickIocn: {
+      name: "/static/images/digitalTextbooks/link-t-click@3x.png",
+    },
+    testResourceIocn: {
+      name: "/static/images/digitalTextbooks/link-t@3x.png",
+    },
+    relationTextBook: null,
+    isTextBookBuy: false,
     dialogBox: false,
-    lecturerList: [{
-        icon: '',
-        name: '鏋楀磭寰�',
-        title: '璁插笀',
-        introduce: '涓浗瀛︾敓鍙戝睍鏍稿績绱犲吇鐮斿埗棣栧腑涓撳锛屽洿缁曞ぇ涓皬瀛︽暀鏉愬缓璁惧紑灞曚簡涓�绯诲垪寮�鍒涙�с�佸鍩烘�у伐浣溿�傚缓绔嬪畬鍠勪簡鎴戝浗鍙戝睍蹇冪悊瀛︽暀鏉愪綋绯汇��'
-      },
-      {
-        icon: '',
-        name: '鏋楀磭寰�',
-        title: '鏁欐巿',
-        introduce: '涓浗瀛︾敓鍙戝睍鏍稿績绱犲吇鐮斿埗棣栧腑涓撳锛屽洿缁曞ぇ涓皬瀛︽暀鏉愬缓璁惧紑灞曚簡涓�绯诲垪寮�鍒涙�с�佸鍩烘�у伐浣溿�傚缓绔嬪畬鍠勪簡鎴戝浗鍙戝睍蹇冪悊瀛︽暀鏉愪綋绯汇�備腑鍥藉鐢熷彂灞曟牳蹇冪礌鍏荤爺鍒堕甯笓瀹讹紝鍥寸粫澶т腑灏忓鏁欐潗寤鸿寮�灞曚簡涓�绯诲垪寮�鍒涙�с�佸鍩烘�у伐浣溿�傚缓绔嬪畬鍠勪簡鎴戝浗鍙戝睍蹇冪悊瀛︽暀鏉愪綋绯�'
-      }
-    ]
-
+    lecturerList: [],
+    selectActive: 'learn',
+    learnList: [],
+    testList: [],
+    testCount: 0,
+    openTeachids: [],
+    onlineQuestionsList: [],
+    //鍒嗛〉
+    page: 1,
+    limit: 6,
+    questionTotalCount: 0,
+    bottomLoading: false,
+    isMoreData: false,
+    noteList: [],
+    notePage: 1,
+    noteLimit: 6,
+    noteTotalCount: 0,
+    images: [],
+    visible: false,
+    showIndex: false,
+    closeBtn: false,
+    deleteBtn: false,
+    bookId: '',
+    bookPath: '',
+    playerList: [],
+    worksInfo: [],
+    isCertificate: {},
+    isLearn: false,
+    isTest: false,
+    userInfo: {
+      fullName: '', //鍚嶇О
+      userPicture: '' //鐢宠璇佷功鐢ㄦ埛鍥剧墖
+    },
+    userName: '',
+    pictureMd5: '',
+    publishingUnit: '',
+    pubCertificateHide: true,
+    cbzsImg: '', //鍑虹増璇佷功base64
+    rzzsImg: '', //璁よ瘉璇佷功base64
+    imageWidth: '', //鐢诲湪鐢诲竷涓婄殑鍥剧墖鐨勫搴�
+    imageHeight: '', //鐢诲湪鐢诲竷涓婄殑鍥剧墖鐨勯珮搴�
+    website: 'https://jsek.bnuic.com/home/#/digitalCourses',
+    wxShareUrl: '',
+    imgUrl: '',
+    imgUrl1: ''
   },
   formatDate(dateString) {
     if (!dateString) {
@@ -108,11 +161,27 @@
    * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
    */
   onLoad(options) {
-    console.log(options);
+    let parentPath = options.path.split('\\');
+    parentPath.pop();
+    this.setData({
+      bookId: options.id,
+      bookPath: parentPath.join('\\')
+    })
+    const token = wx.getStorageSync(app.config.tokenKey)
     this.digitalCoursesDetailsGet(options.id)
-
+    if (token) this.getPlayerList()
+    this.getType()
   },
-
+  logInFun(callback) {
+    loginInfo(app, (data) => {
+      if (data) {
+        this.digitalCoursesDetailsGet(options.id)
+        this.getPlayerList()
+        this.getType()
+        callback()
+      }
+    })
+  },
   /**
    * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚
    */
@@ -124,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()
+    }
   },
 
   /**
@@ -158,11 +232,26 @@
   /**
    * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜�
    */
-  onShareAppMessage() {
-
+  onShareAppMessage() {},
+  onShareTimeline() {},
+  //鑾峰彇瑙嗛瀛︿範
+  getPlayerList() {
+    app.MG.identity
+      .getUserKey({
+        domain: 'videoPlayer',
+        keys: [this.data.bookId + '']
+      })
+      .then((res) => {
+        console.log(1, res);
+        if (res.length > 0) {
+          this.setData({
+            playerList: JSON.parse(res[0].value)
+          })
+        }
+      })
   },
   digitalCoursesDetailsGet(digitalTextId) {
-
+    let that = this;
     let query = {
       path: '*',
       queryType: '*',
@@ -176,6 +265,7 @@
         author: [],
         isbn: [],
         publicationDate: [],
+        speaker: [],
         bookClassification: [],
         paperPrice: [],
         JDLink: [],
@@ -194,23 +284,172 @@
         affiliatedUnit: [],
         publishingUnit: [],
         classHours: [],
-        productLinkPath: []
+        productLinkPath: [],
+
         //epub璇曡鐧惧垎姣�
       }
     }
-    app.MG.store.getProductDetail(query).then(res => {
-      console.log(res);
-      res.datas.publicationDate = this.formatDate(res.datas.publicationDate)
+    app.MG.store.getProductDetail(query).then(async res => {
+      if (res.datas.purchasedSaleMethodIdList.includes(res.datas.defaultSaleMethodId)) {
+        this.setData({
+          isBuy: true
+        })
+      } else {
+        this.setData({
+          isBuy: false
+        })
+      }
+      let times = new Date(res.datas.defaultSaleMethod.endDate).getTime()
+      let startTime = new Date(res.datas.defaultSaleMethod.beginDate).getTime()
+      if (times < new Date().getTime() || new Date().getTime() < startTime) {
+        this.setData({
+          expire: true
+        })
+      } else {
+        this.setData({
+          expire: res.false
+        })
+      }
+      res.datas.publicationDate = res.datas.publicationDate ? moment(res.datas.publicationDate).format('YYYY骞碝M鏈�') : ''
       res.datas.price = res.datas.price.toFixed(2)
-
+      res.datas.oldPrice = res.datas.oldPrice.toFixed(2)
       wx.setNavigationBarTitle({
         title: res.datas.name,
       })
-
+      if (res.datas.publishingUnit) {
+        await this.getBookPublishUnit(res.datas.publishingUnit)
+      }
+      if (res.datas.datas.speaker && res.datas.datas.speaker.length > 0) {
+        this.getSpeaker(res.datas.datas.speaker)
+      } else {
+        this.setData({
+          lecturerList: []
+        })
+      }
+      if (this.data.bookPath) {
+        this.getAboutBook(this.data.bookPath)
+      } else {
+        this.getAboutBook(res.datas.productLinkInfo[res.datas.productLinkInfo.length - 1].LinkPath)
+      }
+      this.getCertificateList()
+      res.datas.content = res.datas.content && res.datas.content.replace('../', app.config.requestCtx + '/').replace(
+        /\<img/gi,
+        '<img style="max-width:100%;height:auto;display:block;margin-top:0;margin-bottom:0;"'
+      )
       this.setData({
         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
+      })
+    })
+  },
+
+  //鑾峰彇鍥句功鍑虹増鍗曚綅
+  async getBookPublishUnit(listStr) {
+    let query = {
+      refCodes: ['publishingUnit']
+    }
+    await app.MG.store.getProductTypeField(query).then((res) => {
+      const list = JSON.parse(listStr)
+      let dataList = []
+      list.forEach((unit) => {
+        JSON.parse(res[0].config).option.forEach((item) => {
+          if (item.value == unit) {
+            dataList.push(item.name)
+          }
+        })
+      })
+      if (dataList.length == list.length) {
+        this.setData({
+          publishingUnit: dataList.join('  '),
+        })
+      }
     })
   },
   onTabsChange(event) {
@@ -218,53 +457,433 @@
     this.setData({
       tabValue: value
     })
-    console.log(this.data.tabValue);
+    if (this.data.tabValue == 0) {
+      this.digitalCoursesDetailsGet(this.data.bookId)
+    }
+    if (this.data.tabValue == 1) {
+      this.saveAsImage()
+    }
+    if (this.data.tabValue == 2) {
+      this.getResource()
+      this.getRelationBook()
+    }
+    if (this.data.tabValue == 3) {
+      this.selectComponent("#note").getNoteList();
+    }
+    if (this.data.tabValue == 4) {
+      this.selectComponent("#question").getDataList();
+    }
   },
 
+  selectChange(event) {
+    const value = event.target.dataset.value
+    this.setData({
+      selectActive: value,
+      testCount: 0
+    })
+    this.getResource()
+  },
 
-  // 鍥句功娣诲姞璐墿杞�
-  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) {
-        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",
-        });
+  getResource() {
+    let query = {
+      storeInfo: app.config.digitalCourses,
+      path: '*',
+      queryType: '*',
+      productId: this.data.digitalsData.id,
+      cmsPath: this.data.digitalsData.rootCmsItemId + '',
+      cmsType: '*',
+      itemFields: {
+        SysType: 'CmsFolder',
+        selectType: [],
+        freeFile: [],
+        file: [],
+        protectedFile: [],
+        resourcesClassification: [],
+        isDownload: [],
+        jsek_resourceBrief: [],
+        jsek_link: [],
+        jsek_questionBank: [],
+        learnSelectType: []
+      },
+      pading: {
+        start: 99,
+        size: 0
+      },
+
+    }
+    app.MG.store.getProductDetail(query).then((res) => {
+      let test = []
+      let learn = []
+      let learnItemList = []
+      if (res.datas.cmsDatas[0].datas.length > 0) {
+        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) {
+                item.progress = pItem.progress
+              }
+            })
+            learn.push(item)
+          }
+          if (item.type == 'productItem') {
+            learnItemList.push(item)
+          }
+        })
+        if (this.data.selectActive === 'learn') {
+          let list = []
+          // 娴嬭瘯 6浣�// 姝e紡 5浣�//  娴嬭瘯璋冪敤浼�20锛屽唴閮�7  姝e紡璋冪敤浼�17 鍐呴儴浼�6
+          if (learn.some((item) => item.sysType == 'CmsFolder')) {
+            // 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 = [];
+          this.findChildIds(list, result)
+          if (list.length > 0) {
+            this.setData({
+              learnList: list,
+              openTeachids: result,
+            });
+          }
+        } else {
+          const data = test.filter(
+            (item) => item.type == 'questionBankFolder' && item.childrenFolderCount > 0
+          )
+          if (data.length > 0) {
+            let list = []
+            this.getTreeList(data, list, query.cmsPath)
+            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,
+            });
+          }
+        }
+        //鍒ゆ柇璧勬簮鏄惁瀛︿範瀹屾垚
+        if (learnItemList.length == this.data.playerList.length) {
+          let data = this.data.playerList.filter((ditem) => ditem.progress != '100')
+          if (data) {
+            this.setData({
+              isLearn: false,
+            });
+
+          } else {
+            this.setData({
+              isLearn: true,
+            });
+          }
+        } else {
+          this.setData({
+            isLearn: false,
+          });
+        }
       }
+    })
+  },
+  // 鎵佸钩鍖栨暟鎹浆鎹ree
+  getTreeList(rootList, newArr, path) {
+    for (const item of rootList) {
+      if (path == item.productLinkPath.replace('\\' + item.id, '')) {
+        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)
+        // 鎻掕繘鏁扮粍鍚� 浠庡師鏁版嵁涓垹闄�
+        rootList = rootList.filter(nitem => nitem.id != item.id)
+      }
+    }
+    //缁欐暟缁勯噷闈㈠啀娣诲姞涓�涓猚hildren鐨勭┖鏁扮粍
+    for (const i of newArr) {
+      i.children = []
+      this.getTreeList(rootList, i.children, i.productLinkPath)
+      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) {
+    // 鏌ユ壘鏂板璞″簲璇ユ彃鍏ョ殑浣嶇疆  
+    let insertIndex = array.findIndex(obj => newObj.id < obj.id);
+    // 濡傛灉娌℃湁鎵惧埌鍚堥�傜殑浣嶇疆锛屽垯鏀惧湪鏁扮粍鏈熬  
+    if (insertIndex === -1) {
+      insertIndex = array.length;
+    }
+    // 鎻掑叆鏂板璞″埌鏁扮粍  
+    array.splice(insertIndex, 0, newObj);
+    // 瀵规暟缁勮繘琛屾帓搴�  
+    array.sort((a, b) => {
+      if (a.id < b.id) return -1;
+      if (a.id > b.id) return 1;
+      return 0;
+    });
+    // 杩斿洖鏇存柊鍚庣殑鏁扮粍  
+    return array;
+  },
+
+  // 鑾峰彇灞曞紑椤�
+  findChildIds(data, result) {
+    let index = 0
+    for (let i = 0; i < data.length; i++) {
+      if (index < 3) {
+        const item = data[i]
+        if (item.childrenFolderCount > 0) {
+          result.push(item.id)
+          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 if (item.childrenCount > 0) {
+          result.push(item.id)
+          index += 1
+        }
+      } else {
+        break
+      }
+    }
+  },
+
+  //鍦ㄧ嚎娴嬭瘯鑾峰彇鏈�鍚庝竴涓妭鐐规暟閲�
+  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({
+        path: '*',
+        storeInfo: app.config.digitalCourses,
+        mainProductId: this.data.digitalsData.id,
+        queryType: 'Related', // 鏌ヨ绫诲瀷锛� Related锛氭煡璇㈠叧鑱斿晢鍝侊紱SubProduct: 鏌ヨ瀛愬晢鍝侊紱
+        paging: {
+          start: 0,
+          size: 1
+        },
+        fields: {
+          author: [],
+          publicationDate: [],
+          isbn: [],
+          content: [],
+          Creator: [],
+          probationPage: []
+        }
+      })
+      .then((res) => {
+        if (res.datas.length > 0) {
+          this.setData({
+            relationTextBook: res.datas[0]
+          })
+          if (this.data.relationTextBook.purchasedSaleMethodIdList.includes(this.data.relationTextBook.defaultSaleMethodId)) {
+            this.setData({
+              isTextBookBuy: true
+            })
+          } else {
+            this.setData({
+              isTextBookBuy: false
+            })
+          }
+        }
+      })
+  },
+
+  readTextBook() {
+    const token = wx.getStorageSync(app.config.tokenKey)
+    if (!token) {
+      this.logInFun(() => {})
     } else {
-      wx.showToast({
-        title: "鍟嗗搧涓嶅湪鏈夋晥鏈�",
-        icon: "none",
-        duration: 1000,
+      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 token = wx.getStorageSync(app.config.tokenKey)
+    if (!token) {
+      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}`,
       });
     }
+
+  },
+
+  onCorrelationBook(e) {
+    const item = e.currentTarget.dataset.item;
+    this.onLoad({
+      loading: true,
+      id: item.id,
+      path: item.idPath
+    })
+  },
+
+  // 鑾峰彇鐩稿叧璇剧▼
+  getAboutBook(path) {
+    let query = {
+      path,
+      queryType: '*',
+      coverSize: {
+        width: 260
+      },
+      paging: {
+        start: 0,
+        size: 9
+      },
+      fields: {
+        author: [],
+        publicationDate: []
+      }
+    }
+    app.MG.store.getProductList(query).then(res => {
+      const Arr = res.datas.filter(
+        (item) => item.id != this.data.digitalsData.id
+      );
+      let bookArr = []
+      if (Arr.length) {
+        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
+        }
+        bookArr.forEach(item => {
+          if (item.icon == '') {
+            item.icon = '/static/images/default-book-img.png'
+          }
+        })
+        this.setData({
+          relatedBookData: bookArr.slice(0, 6)
+        })
+      } else {
+        this.setData({
+          relatedBookData: []
+        })
+      }
+    })
+  },
+  //瀛︿範绗旇
+  //鍦ㄧ嚎鎻愰棶
+  // 鍥句功娣诲姞璐墿杞�
+  addBookShopcCar() {
+    const addFun = async () => {
+      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) {
+          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 {
+        wx.showToast({
+          title: "鍟嗗搧涓嶅湪鏈夋晥鏈�",
+          icon: "none",
+          duration: 1000,
+        });
+      }
+    }
+    const token = wx.getStorageSync(app.config.tokenKey)
+    if (!token) {
+      this.logInFun(() => {})
+    } else {
+      addFun()
+    }
+
   },
   showSuccessToast() {
     Toast({
@@ -277,66 +896,64 @@
   },
 
   //璐拱鎸夐挳
-
   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
-      console.log(res, 'res456');
-      bookOrdersId = res.orderNumber;
-      // 妫�鏌ヨ鍗曞彿鏄惁瀛樺湪
-      if (bookOrdersId) {
-        if (this.data.digitalsData.price == "0.00") {
-          app.MG.store
-            .confirmOrder({
-              orderNum: bookOrdersId,
-            })
-            .then((res) => {
-              this.digitalTextbooksDetailsGet(this.data.digitalTextId)
-              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 {
-        console.log(222);
+        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 {
+      buyFun()
+    }
+
   },
-  showDialog(e) {
-    const {
-      key
-    } = e.currentTarget.dataset;
-    this.setData({
-      [key]: true,
-      dialogKey: key
-    });
-  },
+
+
 
   closeDialog() {
     const {
@@ -346,18 +963,202 @@
       [dialogKey]: false
     });
   },
-  onCertificate() {
-
-
-    var page = getCurrentPages().pop(); // 鑾峰彇褰撳墠椤甸潰瀹炰緥
-    page.setData({
-      // 鍔ㄦ�佽缃姝㈡粴鍔ㄧ殑鏍峰紡
-      disableScrollStyle: 'overflow: hidden;'
-    });
-    this.setData({
-      dialogBox: true,
-      scrollJudge: ''
+  //鐢宠璇佷功
+  async saveAsImage() {
+    const that = this
+    const query = wx.createSelectorQuery().in(this)
+    query
+      .select('#pubCertificate')
+      .fields({
+          // 閫夋嫨闇�瑕佺敓鎴恈anvas鐨勮寖鍥�
+          size: true,
+          node: true,
+          scrollOffset: true,
+        },
+        (data) => {
+          let width = data.width
+          let height = data.height
+          that.setData({
+            imageWidth: width,
+            imageHeight: height,
+          })
+        },
+      )
+      .exec()
+    setTimeout(() => {
+      this.drawImage()
+    }, 500)
+    query
+      .select('#textCertificate')
+      .fields({
+          // 閫夋嫨闇�瑕佺敓鎴恈anvas鐨勮寖鍥�
+          size: true,
+          node: true,
+          scrollOffset: true,
+        },
+        (data) => {
+          let width = data.width
+          let height = data.height
+          that.setData({
+            imageWidth: width,
+            imageHeight: height,
+          })
+        },
+      )
+      .exec()
+    setTimeout(() => {
+      this.drawImage1()
+    }, 500)
+  },
+  drawImage() {
+    let that = this;
+    let drawMyImage = new Wxml2Canvas({
+      width: that.data.imageWidth,
+      height: that.data.imageHeight,
+      element: 'myCanvas',
+      progress(percent) {},
+      finish(url) {
+        wx.getFileSystemManager().readFile({
+          filePath: url,
+          encoding: 'base64',
+          success: (res) => {
+            let MyImageBase64 = 'data:image/jpg;base64,' + res.data
+            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);
+  },
+  drawImage1() {
+    let that = this;
+    let drawMyImage1 = new Wxml2Canvas({
+      width: that.data.imageWidth,
+      height: that.data.imageHeight,
+      element: 'myCanvas1',
+      progress(percent) {},
+      finish(url) {
+        wx.getFileSystemManager().readFile({
+          filePath: url,
+          encoding: 'base64',
+          success: (res) => {
+            let MyImageBase641 = 'data:image/jpg;base64,' + res.data
+            that.setData({
+              rzzsImg: MyImageBase641,
+              pubCertificateHide: false,
+            })
+          },
+        })
+      },
+      error(res) {
+        console.log("鐢熸垚鐨勫浘鐗囧け璐�", res)
+      }
+    }, this);
+    let data = {
+      list: [{
+        type: 'wxml',
+        class: '.my_canvas1 .my_draw_canvas1', //.my_draw_canvas姣忎釜瑕佺粯鍒跺厓绱犵殑绫诲悕
+        limit: '.my_canvas1', //my_canvas鏍瑰厓绱犵被鍚�
+        x: 0,
+        y: 0
+      }]
+    }
+    drawMyImage1.draw(data, that);
+  },
+  //鑾峰彇瀛楁
+  getType() {
+    app.MG.resource.getCmsTypeByRefCode({
+      refCodes: ['jsek_courseCertificate']
+    }).then((res) => {
+      this.setData({
+        worksInfo: res[0].cmsTypeLinks[0].children,
+      })
     })
+  },
+  getCertificateList() {
+    const data = {
+      start: 0,
+      size: 9999,
+      topicIdOrRefCode: 'applyCourseCertificate',
+      appRefCode: app.config.appRefCode,
+      sort: {
+        type: 'Desc',
+        field: 'CreateDate'
+      }
+    }
+
+    app.MG.ugc.getTopicMessageList(data).then((res) => {
+      res.datas.map((item) => {
+        item.content = JSON.parse(item.content)
+        if (item.content.bookId == this.data.bookId) {
+          this.setData({
+            isCertificate: item,
+            userName: item.content.userName,
+            userPicture: app.config.requestCtx + `/file/GetPreViewImage?md5=` + item.content.userPicture
+          })
+        }
+      })
+    })
+  },
+
+  onCertificate() {
+    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: "鎮ㄧ敵璇风殑璇佷功姝e湪瀹℃牳涓�",
+          icon: "none",
+          duration: 1000,
+        });
+        return false
+      }
+      var page = getCurrentPages().pop(); // 鑾峰彇褰撳墠椤甸潰瀹炰緥
+      page.setData({
+        // 鍔ㄦ�佽缃姝㈡粴鍔ㄧ殑鏍峰紡
+        disableScrollStyle: 'overflow: hidden;'
+      });
+      this.setData({
+        dialogBox: true,
+        scrollJudge: ''
+      })
+    }
+    const token = wx.getStorageSync(app.config.tokenKey)
+    if (!token) {
+      this.logInFun(() => {})
+    } else {
+      cateFun()
+    }
+
   },
   closeDialog() {
     this.setData({
@@ -365,10 +1166,238 @@
       scrollJudge: true
     })
   },
-  confirmM() {
+
+  //濮撳悕
+  onFullNameInput(e) {
     this.setData({
-      dialogBox: false,
-      scrollJudge: true
+      "userInfo.fullName": e.detail.value,
+    });
+  },
+  uploadPicture() {
+    var that = this;
+    wx.chooseMedia({
+      count: 1, // 榛樿9
+      sizeType: ['original', 'compressed'], // 鍙互鎸囧畾鏄師鍥捐繕鏄帇缂╁浘锛岄粯璁や簩鑰呴兘鏈�
+      sourceType: ['album', 'camera'], // 鍙互鎸囧畾鏉ユ簮鏄浉鍐岃繕鏄浉鏈猴紝榛樿浜岃�呴兘鏈�
+      success: function (res) {
+        wx.getFileSystemManager().readFile({
+          filePath: res.tempFiles[0].tempFilePath, //閫夋嫨鍥剧墖杩斿洖鐨勭浉瀵硅矾寰�
+          // encoding: 'binary', //缂栫爜鏍煎紡
+          success: ress => {
+            //鎴愬姛鐨勫洖璋�
+            let spark = new SparkMD5.ArrayBuffer();
+            spark.append(ress.data);
+            let md5 = spark.end(false);
+            let formData = new FormData();
+            formData.append('Md5', md5);
+            formData.append('FileName', md5);
+            formData.append('FileType', res.tempFiles[0].fileType);
+            formData.appendFile("file", res.tempFiles[0].tempFilePath);
+            const data = formData.getData();
+            let _token = wx.getStorageSync(app.config.tokenKey);
+            let header = {};
+            if (_token == null) {
+              header["Authorization"] = `Basic ${Base64.encode(website.clientId + ":" + website.clientSecret)}`;
+            } else {
+              header["Authorization"] = `Bearer ` + _token;
+            }
+            new Promise((resolve, reject) => {
+              wx.request({
+                url: app.config.requestCtx + '/file/api/ApiUpload',
+                method: 'POST',
+                header: {
+                  'content-type': data.contentType,
+                  ...header
+                },
+                data: data.buffer,
+                success(res) {
+                  if (res.statusCode == 200) {
+                    resolve(res.data);
+                    if (res.data) {
+                      that.setData({
+                        'userInfo.userPicture': app.config.requestCtx + `/file/GetPreViewImage?md5=` + md5,
+                        pictureMd5: md5
+                      });
+                    }
+                  } else {
+                    reject('杩愯鏃堕敊璇�,璇风◢鍚庡啀璇�');
+                  }
+                }
+              })
+            })
+          }
+        })
+      }
+    });
+  },
+
+  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({
+          title: "璇蜂笂浼犵収鐗�",
+          icon: "none",
+          duration: 1000,
+        });
+        return false
+      }
+      let data = {}
+      let bookInfo = {
+        bookId: this.data.digitalsData.id,
+        icon: this.data.digitalsData.icon,
+        courseLeader: this.data.digitalsData.courseLeader,
+        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,
+        studyTime: this.data.digitalsData.beginDate + '-' + year + '-' + month + '-' + today,
+        website: this.data.website,
+        wxShareUrl: this.data.wxShareUrl
+      }
+
+      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": "",
+            })
+          })
+      }
+    } else {
+      wx.showToast({
+        title: "濮撳悕涓嶈兘涓虹┖",
+        icon: "none",
+        duration: 1000,
+      });
+    }
+  },
+  setCoolect() {
+    const collectFun = () => {
+      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
+          })
+        })
+      }
+    }
+    const token = wx.getStorageSync(app.config.tokenKey)
+    if (!token) {
+      this.logInFun(() => {})
+    } else {
+      collectFun()
+    }
+  },
+
+  //璇佷功鏌ョ湅
+  onClick1() {
+    this.setData({
+      images: [this.data.cbzsImg],
+      showIndex: true,
+      visible: true,
     })
-  }
+  },
+  onClick2() {
+    this.setData({
+      images: [this.data.rzzsImg],
+      showIndex: true,
+      visible: true,
+    })
+  },
+  onClose(e) {
+    const {
+      trigger
+    } = e.detail;
+    this.setData({
+      visible: false,
+    });
+  },
 })
\ No newline at end of file

--
Gitblit v1.9.1