From b0e2bf29dd96e7100f06b27997a6d4c6c3630374 Mon Sep 17 00:00:00 2001
From: litian <C21AF165>
Date: 星期一, 02 九月 2024 20:16:44 +0800
Subject: [PATCH] ceshi

---
 pages/digitalCourses/digitalCoursesDetails/index.js |  506 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 489 insertions(+), 17 deletions(-)

diff --git a/pages/digitalCourses/digitalCoursesDetails/index.js b/pages/digitalCourses/digitalCoursesDetails/index.js
index 27e1095..775c89b 100644
--- a/pages/digitalCourses/digitalCoursesDetails/index.js
+++ b/pages/digitalCourses/digitalCoursesDetails/index.js
@@ -1,7 +1,16 @@
 // 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
+} from "../../../assets/js/toolClass.js";
 import moment from 'moment'
 import Toast from "tdesign-miniprogram/toast";
+import {
+  loginInfo
+} from '../../../assets/js/login';
 Page({
 
   /**
@@ -44,7 +53,14 @@
     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: [],
     selectActive: 'learn',
@@ -62,6 +78,27 @@
     notePage: 1,
     noteLimit: 6,
     noteTotalCount: 0,
+    images: [],
+    visible: false,
+    showIndex: false,
+    closeBtn: false,
+    deleteBtn: false,
+    bookId: '',
+    playerList: [],
+    worksInfo: [],
+    isCertificate: {},
+    isLearn: false,
+    isTest: false,
+    userInfo: {
+      fullName: '', //鍚嶇О
+      userPicture: '' //鐢宠璇佷功鐢ㄦ埛鍥剧墖
+    },
+    pictureMd5: '',
+    publishingUnit: '',
+    pubCertificateHide: true,
+    cbzsImg: '', //鍑虹増璇佷功base64
+    rzzsImg: '' //璁よ瘉璇佷功base64
+
   },
   formatDate(dateString) {
     if (!dateString) {
@@ -113,8 +150,12 @@
    * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
    */
   onLoad(options) {
-    console.log(options);
+    this.setData({
+      bookId: options.id
+    })
     this.digitalCoursesDetailsGet(options.id)
+    this.getPlayerList()
+    this.getType()
 
   },
 
@@ -166,6 +207,21 @@
   onShareAppMessage() {
 
   },
+  //鑾峰彇瑙嗛瀛︿範
+  getPlayerList() {
+    app.MG.identity
+      .getUserKey({
+        domain: 'videoPlayer',
+        keys: [this.data.bookId]
+      })
+      .then((res) => {
+        if (res.length > 0) {
+          this.setData({
+            playerList: JSON.parse(res[0].value)
+          })
+        }
+      })
+  },
   digitalCoursesDetailsGet(digitalTextId) {
     let query = {
       path: '*',
@@ -204,8 +260,7 @@
         //epub璇曡鐧惧垎姣�
       }
     }
-    app.MG.store.getProductDetail(query).then(res => {
-      console.log(res);
+    app.MG.store.getProductDetail(query).then(async res => {
       if (res.datas.purchasedSaleMethodIdList.includes(res.datas.defaultSaleMethodId)) {
         this.setData({
           isBuy: true
@@ -226,12 +281,15 @@
           expire: res.false
         })
       }
-      res.datas.publicationDate = this.formatDate(res.datas.publicationDate)
+      res.datas.publicationDate = moment(res.datas.publicationDate).format('YYYY骞碝M鏈圖D鏃�')
       res.datas.price = res.datas.price.toFixed(2)
 
       wx.setNavigationBarTitle({
         title: res.datas.name,
       })
+      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 => {
@@ -249,7 +307,8 @@
           }
         })
       }
-
+      this.getAboutBook(res.datas.productLinkInfo[res.datas.productLinkInfo.length - 1].LinkPath)
+      this.getCertificateList()
       this.setData({
         lecturerList: lecturer,
         digitalsData: res.datas,
@@ -257,14 +316,40 @@
       })
     })
   },
+
+  //鑾峰彇鍥句功鍑虹増鍗曚綅
+  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) {
     const value = event.detail.value
     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()
     }
     if (this.data.tabValue == 3) {
       this.selectComponent("#note").getNoteList();
@@ -275,7 +360,6 @@
   },
 
   selectChange(event) {
-    console.log(event)
     const value = event.target.dataset.value
     this.setData({
       selectActive: value
@@ -310,17 +394,27 @@
       }
     }
     app.MG.store.getProductDetail(query).then((res) => {
-      console.log(res.datas, 1111)
       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
@@ -357,6 +451,24 @@
               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,
+          });
         }
       }
     })
@@ -466,6 +578,118 @@
       }
     }
   },
+
+  //鑾峰彇鍏宠仈瀛愬晢鍝�/鏁板瓧鏁欐潗
+  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) => {
+        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() {
+    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}`,
+    });
+  },
+
+  // 鑾峰彇鐩稿叧璇剧▼
+  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
+        })
+      } else {
+        this.setData({
+          relatedBookData: []
+        })
+      }
+    })
+  },
   //瀛︿範绗旇
   //鍦ㄧ嚎鎻愰棶
   // 鍥句功娣诲姞璐墿杞�
@@ -536,7 +760,6 @@
       // 鍙戣捣璁㈠崟鍒濆鍖栬姹傚苟绛夊緟缁撴灉
       const res = await app.MG.store.initOrder(query);
       // 鑾峰彇璁㈠崟鍙峰苟璧嬪�肩粰 orderNumber.value
-      console.log(res, 'res456');
       bookOrdersId = res.orderNumber;
       // 妫�鏌ヨ鍗曞彿鏄惁瀛樺湪
       if (bookOrdersId) {
@@ -561,9 +784,7 @@
             url,
           });
         }
-      } else {
-        console.log(222);
-      }
+      } else {}
     } else {
       wx.showToast({
         title: "鍟嗗搧涓嶅湪鏈夋晥鏈�",
@@ -584,7 +805,113 @@
     });
   },
   //鐢宠璇佷功
+  async saveAsImage() {
+    let query = wx.createSelectorQuery().in(this);
+    query.select("#pubCertificate").boundingClientRect();
+    query.exec(function (res) {
+      console.log("View 鐨勪俊鎭細", res[0]);
+    });
+    console.log(value, 123)
+    let drawImage = new Wxml2Canvas({
+      element: 'pubCertificate', // canvas鑺傜偣鐨刬d,
+      obj: that, // 鍦ㄧ粍浠朵腑浣跨敤鏃讹紝闇�瑕佷紶鍏ュ綋鍓嶇粍浠剁殑this
+      width: this.width * 2, // 瀹介珮
+      height: this.height * 2,
+      background: '#fff', // 榛樿鑳屾櫙鑹�
+      progress(percent) { // 缁樺埗杩涘害
+      },
+      finish(url) {
+        console.log("鍒涘缓鐨勫浘鐗�", url);
+      },
+      error(res) {
+        console.log(res);
+        // uni.hideLoading()
+        // 鐢诲け璐ョ殑鍘熷洜
+      }
+    }, this);
+    // const canvas = Wxml2Canvas.wxmlToCanvas(value);
+    // // 杞崲涓哄浘鐗�
+    // const img = Wxml2Canvas.canvasToTempImage(canvas);
+    // const path = Wxml2Canvas.canvasToTempFilePath(canvas);
+    // console.log(canvas)
+    // 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
+    // })
+    this.setData({
+      pubCertificateHide: false,
+    })
+  },
+  //鑾峰彇瀛楁
+  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.id == this.data.bookId) {
+          this.setData({
+            isCertificate: item
+          })
+        }
+      })
+
+    })
+  },
+
+
+
   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: "鎮ㄧ敵璇风殑璇佷功姝e湪瀹℃牳涓�",
+        icon: "none",
+        duration: 1000,
+      });
+      return false
+    }
+
     var page = getCurrentPages().pop(); // 鑾峰彇褰撳墠椤甸潰瀹炰緥
     page.setData({
       // 鍔ㄦ�佽缃姝㈡粴鍔ㄧ殑鏍峰紡
@@ -601,11 +928,132 @@
       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() {
+    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,
+        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,
+        userPicture: this.data.pictureMd5,
+        certificate: this.data.rzzsImg
+      }
+      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() {
     // 棣栭〉娴嬭瘯鐧诲綍鍔熻兘锛屽悗缁敞閲�
@@ -666,4 +1114,28 @@
       }
     }
   },
+
+  //璇佷功鏌ョ湅
+  onClick1() {
+    this.setData({
+      images: ['https://jsek.bnuic.com/home/certificate/szkc.jpg'],
+      showIndex: true,
+      visible: true,
+    })
+  },
+  onClick2() {
+    this.setData({
+      images: ['https://jsek.bnuic.com/home/certificate/kczs.jpg'],
+      showIndex: true,
+      visible: true,
+    })
+  },
+  onClose(e) {
+    const {
+      trigger
+    } = e.detail;
+    this.setData({
+      visible: false,
+    });
+  },
 })
\ No newline at end of file

--
Gitblit v1.9.1