| | |
| | | // 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({ |
| | | |
| | | /** |
| | | * 页面的初始数据 |
| | | */ |
| | | data: { |
| | | scrollJudge: true, |
| | | loading: true, |
| | | digitalsData: [], |
| | | digitalsData: {}, |
| | | expire: false, //商品或子商品销售方式是否过期 |
| | | isBuy: false, |
| | | tabValue: 0, |
| | | learnResourceIcon: { |
| | | name: "/static/images/digitalTextbooks/shengshu-t@2x.png", |
| | |
| | | onlineQuestioningClick: { |
| | | name: "/static/images/digitalCourses/tiwen-click@2x.png" |
| | | }, |
| | | |
| | | dialogBox: false |
| | | 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', |
| | | learnList: [], |
| | | testList: [], |
| | | 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: '', |
| | | playerList: [], |
| | | worksInfo: [], |
| | | isCertificate: {}, |
| | | isLearn: false, |
| | | isTest: false, |
| | | userInfo: { |
| | | fullName: '', //名称 |
| | | userPicture: '' //申请证书用户图片 |
| | | }, |
| | | pictureMd5: '', |
| | | publishingUnit: '', |
| | | pubCertificateHide: true, |
| | | cbzsImg: '', //出版证书base64 |
| | | rzzsImg: '' //认证证书base64 |
| | | |
| | | }, |
| | | formatDate(dateString) { |
| | |
| | | * 生命周期函数--监听页面加载 |
| | | */ |
| | | onLoad(options) { |
| | | console.log(options); |
| | | this.setData({ |
| | | bookId: options.id |
| | | }) |
| | | this.digitalCoursesDetailsGet(options.id) |
| | | this.getPlayerList() |
| | | this.getType() |
| | | |
| | | }, |
| | | |
| | |
| | | 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: '*', |
| | | queryType: '*', |
| | |
| | | author: [], |
| | | isbn: [], |
| | | publicationDate: [], |
| | | speaker: [], |
| | | bookClassification: [], |
| | | paperPrice: [], |
| | | JDLink: [], |
| | |
| | | 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 = moment(res.datas.publicationDate).format('YYYY年MM月DD日') |
| | | 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 => { |
| | | 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.getAboutBook(res.datas.productLinkInfo[res.datas.productLinkInfo.length - 1].LinkPath) |
| | | this.getCertificateList() |
| | | this.setData({ |
| | | lecturerList: lecturer, |
| | | digitalsData: res.datas, |
| | | loading: false |
| | | }) |
| | | }) |
| | | }, |
| | | onTabsChange(event) { |
| | | |
| | | //获取图书出版单位 |
| | | 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(); |
| | | } |
| | | if (this.data.tabValue == 4) { |
| | | this.selectComponent("#question").getDataList(); |
| | | } |
| | | }, |
| | | |
| | | selectChange(event) { |
| | | const value = event.target.dataset.value |
| | | this.setData({ |
| | | selectActive: value |
| | | }) |
| | | this.getResource() |
| | | }, |
| | | |
| | | 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位// 正式 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) |
| | | } else { |
| | | 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 = [] |
| | | 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) |
| | | list = this.ensureTreeConsistency(list) |
| | | let result = []; |
| | | this.findChildIds(list[0].children, result) |
| | | 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, |
| | | }); |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | // 扁平化数据转换tree |
| | | getTreeList(rootList, pathLength, newArr, path, addNum) { |
| | | 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 (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, addNum) |
| | | } |
| | | } |
| | | //给数组里面再添加一个children的空数组 |
| | | for (const i of newArr) { |
| | | i.children = [] |
| | | this.getTreeList(rootList, pathLength + addNum, i.children, i.productLinkPath, addNum) |
| | | 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, addNum) { |
| | | // 查找新对象应该插入的位置 |
| | | 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))); |
| | | |
| | | // 如果没有找到合适的位置,则放在数组末尾 |
| | | 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 |
| | | 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 |
| | | } |
| | | } |
| | | }, |
| | | |
| | | //获取关联子商品/数字教材 |
| | | 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: [] |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | //学习笔记 |
| | | //在线提问 |
| | | // 图书添加购物车 |
| | | async addBookShopcCar() { |
| | | if (!this.data.expire) { |
| | |
| | | }, |
| | | |
| | | //购买按钮 |
| | | |
| | | async buyBtn() { |
| | | if (!this.data.expire) { |
| | | let bookOrdersId = ""; |
| | |
| | | // 发起订单初始化请求并等待结果 |
| | | const res = await app.MG.store.initOrder(query); |
| | | // 获取订单号并赋值给 orderNumber.value |
| | | console.log(res, 'res456'); |
| | | bookOrdersId = res.orderNumber; |
| | | // 检查订单号是否存在 |
| | | if (bookOrdersId) { |
| | |
| | | orderNum: bookOrdersId, |
| | | }) |
| | | .then((res) => { |
| | | this.digitalTextbooksDetailsGet(this.data.digitalTextId) |
| | | if (res) { |
| | | wx.showToast({ |
| | | title: "领取成功", |
| | |
| | | url, |
| | | }); |
| | | } |
| | | } else { |
| | | console.log(222); |
| | | } |
| | | } else {} |
| | | } else { |
| | | wx.showToast({ |
| | | title: "商品不在有效期", |
| | |
| | | }); |
| | | } |
| | | }, |
| | | showDialog(e) { |
| | | const { |
| | | key |
| | | } = e.currentTarget.dataset; |
| | | this.setData({ |
| | | [key]: true, |
| | | dialogKey: key |
| | | }); |
| | | }, |
| | | |
| | | |
| | | |
| | | closeDialog() { |
| | | const { |
| | |
| | | [dialogKey]: false |
| | | }); |
| | | }, |
| | | onCertificate() { |
| | | //申请证书 |
| | | 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节点的id, |
| | | 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: "您申请的证书正在审核中", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | return false |
| | | } |
| | | |
| | | var page = getCurrentPages().pop(); // 获取当前页面实例 |
| | | page.setData({ |
| | |
| | | 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() { |
| | | // 首页测试登录功能,后续注释 |
| | | // 检查登录状态 |
| | | 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 { |
| | | 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 |
| | | }) |
| | | }) |
| | | } |
| | | } |
| | | }, |
| | | |
| | | //证书查看 |
| | | 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, |
| | | }); |
| | | }, |
| | | }) |