| | |
| | | import FormData from '../../../utils/formdata/index.js'; |
| | | import Wxml2Canvas from 'wxml2canvas'; |
| | | import { |
| | | worksDataBytool |
| | | worksDataBytool, |
| | | UpdateworksDataBytool |
| | | } from "../../../assets/js/toolClass.js"; |
| | | import moment from 'moment' |
| | | import Toast from "tdesign-miniprogram/toast"; |
| | | import { |
| | | loginInfo |
| | | } from '../../../assets/js/login'; |
| | | import wxbarcode from 'wxbarcode' |
| | | |
| | | Page({ |
| | | |
| | | /** |
| | |
| | | closeBtn: false, |
| | | deleteBtn: false, |
| | | bookId: '', |
| | | bookPath: '', |
| | | playerList: [], |
| | | worksInfo: [], |
| | | isCertificate: {}, |
| | |
| | | fullName: '', //名称 |
| | | userPicture: '' //申请证书用户图片 |
| | | }, |
| | | userName: '', |
| | | pictureMd5: '', |
| | | publishingUnit: '', |
| | | pubCertificateHide: true, |
| | |
| | | rzzsImg: '', //认证证书base64 |
| | | imageWidth: '', //画在画布上的图片的宽度 |
| | | imageHeight: '', //画在画布上的图片的高度 |
| | | website: 'https://jsek.bnuic.com', |
| | | website: 'https://jsek.bnuic.com/home/#/digitalCourses', |
| | | wxShareUrl: '', |
| | | imgUrl: '', |
| | | imgUrl1: '' |
| | | }, |
| | | formatDate(dateString) { |
| | | if (!dateString) { |
| | |
| | | * 生命周期函数--监听页面加载 |
| | | */ |
| | | onLoad(options) { |
| | | let parentPath = options.path.split('\\'); |
| | | parentPath.pop(); |
| | | this.setData({ |
| | | bookId: options.id |
| | | bookId: options.id, |
| | | bookPath: parentPath.join('\\') |
| | | }) |
| | | const token = wx.getStorageSync(app.config.tokenKey) |
| | | if (!token) { |
| | | loginInfo(app, (data) => { |
| | | if (data) {} else {} |
| | | }) |
| | | } |
| | | this.digitalCoursesDetailsGet(options.id) |
| | | this.getPlayerList() |
| | | this.getType() |
| | | |
| | | }, |
| | | |
| | | logInFun(callback) { |
| | | loginInfo(app, (data) => { |
| | | if (data) { |
| | | this.digitalCoursesDetailsGet(options.id) |
| | | this.getPlayerList() |
| | | this.getType() |
| | | callback() |
| | | } |
| | | }) |
| | | }, |
| | | /** |
| | | * 生命周期函数--监听页面初次渲染完成 |
| | | */ |
| | |
| | | * 生命周期函数--监听页面显示 |
| | | */ |
| | | onShow() { |
| | | |
| | | if (this.data.tabValue == 2 && this.data.selectActive == 'learn') { |
| | | this.getPlayerList() |
| | | this.getResource() |
| | | this.getRelationBook() |
| | | } |
| | | }, |
| | | |
| | | /** |
| | |
| | | /** |
| | | * 用户点击右上角分享 |
| | | */ |
| | | onShareAppMessage() { |
| | | |
| | | }, |
| | | onShareAppMessage() {}, |
| | | onShareTimeline() {}, |
| | | //获取视频学习 |
| | | getPlayerList() { |
| | | app.MG.identity |
| | | .getUserKey({ |
| | | domain: 'videoPlayer', |
| | | keys: [this.data.bookId] |
| | | keys: [this.data.bookId + ''] |
| | | }) |
| | | .then((res) => { |
| | | console.log(1, res); |
| | | if (res.length > 0) { |
| | | this.setData({ |
| | | playerList: JSON.parse(res[0].value) |
| | |
| | | }) |
| | | }, |
| | | digitalCoursesDetailsGet(digitalTextId) { |
| | | let that = this; |
| | | let query = { |
| | | path: '*', |
| | | queryType: '*', |
| | |
| | | expire: res.false |
| | | }) |
| | | } |
| | | res.datas.publicationDate = moment(res.datas.publicationDate).format('YYYY年MM月') |
| | | res.datas.publicationDate = res.datas.publicationDate ? moment(res.datas.publicationDate).format('YYYY年MM月') : '' |
| | | res.datas.price = res.datas.price.toFixed(2) |
| | | |
| | | res.datas.oldPrice = res.datas.oldPrice.toFixed(2) |
| | | wx.setNavigationBarTitle({ |
| | | 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 => { |
| | | 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, |
| | | 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) { |
| | | lecturer.push({ |
| | | lecturerList.push({ |
| | | name: item1.name, |
| | | icon: item1.icon ? item1.icon : '', |
| | | description: item1.description ? item1.description : '', |
| | | positionalTitle: item1.positionalTitle, |
| | | icon: item1.icon, |
| | | description: item1.description ? item1.description : '暂无简介' |
| | | }) |
| | | } |
| | | }) |
| | | |
| | | } |
| | | }) |
| | | this.getPositionalTitle(lecturerList) |
| | | } |
| | | 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 + '/') |
| | | }) |
| | | }, |
| | | 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: lecturer, |
| | | digitalsData: res.datas, |
| | | loading: false |
| | | lecturerList: list |
| | | }) |
| | | }) |
| | | }, |
| | |
| | | this.setData({ |
| | | tabValue: value |
| | | }) |
| | | if (this.data.tabValue == 0) { |
| | | this.digitalCoursesDetailsGet(this.data.bookId) |
| | | } |
| | | if (this.data.tabValue == 1) { |
| | | this.saveAsImage() |
| | | } |
| | |
| | | selectChange(event) { |
| | | const value = event.target.dataset.value |
| | | this.setData({ |
| | | selectActive: value |
| | | selectActive: value, |
| | | testCount: 0 |
| | | }) |
| | | this.getResource() |
| | | }, |
| | |
| | | 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) { |
| | |
| | | if (item.type == 'productItem') { |
| | | learnItemList.push(item) |
| | | } |
| | | |
| | | }) |
| | | |
| | | if (this.data.selectActive === 'learn') { |
| | | let list = [] |
| | | // 测试 6位// 正式 5位// 测试调用传20,内部7 正式调用传17 内部传6 |
| | | let addNum = query.cmsPath.length > 5 ? 7 : query.cmsPath.length > 6 ? 8 : 6 |
| | | const num = query.cmsPath.length + addNum |
| | | if (learn.some((item) => item.sysType == 'CmsFolder')) { |
| | | this.getTreeList(learn, num, list, '\\', addNum) |
| | | list = this.ensureTreeConsistency(list) |
| | | // 1.只有目录,没有资源 |
| | | if (!learn.some((item) => item.sysType == 'CmsItem')) { |
| | | list = learn |
| | | } else { |
| | | // 2.目录和资源都有 |
| | | this.getTreeList(learn, list, query.cmsPath) |
| | | list = this.ensureTreeConsistency(list) |
| | | } |
| | | } else { |
| | | // 3.只有资源,没有目录 |
| | | list = learn |
| | | } |
| | | let result = []; |
| | |
| | | const data = test.filter( |
| | | (item) => item.type == 'questionBankFolder' && item.childrenFolderCount > 0 |
| | | ) |
| | | |
| | | if (data.length > 0) { |
| | | let list = [] |
| | | let addNum = query.cmsPath.length > 5 ? 7 : query.cmsPath.length > 6 ? 8 : 6 |
| | | const num = query.cmsPath.length + addNum |
| | | this.getTreeList(data, num, list, '\\', addNum) |
| | | this.getTreeList(data, list, query.cmsPath) |
| | | list = this.ensureTreeConsistency(list) |
| | | let result = []; |
| | | this.findChildIds(list[0].children, result) |
| | | this.countLeafNodes(list[0].children) |
| | | this.findChildIds(list[0]?.children, result) |
| | | this.countLeafNodes(list[0]?.children) |
| | | this.setData({ |
| | | testList: list[0].children, |
| | | openTeachids: result, |
| | |
| | | }) |
| | | }, |
| | | // 扁平化数据转换tree |
| | | getTreeList(rootList, pathLength, newArr, path, addNum) { |
| | | getTreeList(rootList, newArr, path) { |
| | | for (const item of rootList) { |
| | | // 此处原本 item.productLinkPath.length == pathLength 但 productLinkPath 长度个别书存在4、5位交错 |
| | | if ((pathLength - item.productLinkPath.length >= 0 && pathLength - item.productLinkPath.length <= 3) && item.productLinkPath.includes(path)) { |
| | | if (path == item.productLinkPath.replace('\\' + item.id, '')) { |
| | | if (item.sysType == 'CmsItem') { |
| | | if (item.selectType == 'webpage') { |
| | | item.disabled = true |
| | |
| | | } |
| | | // newArr.push(item) |
| | | // 在插入过程中对数据进行排序 |
| | | newArr = this.insertAndSortObjectsByProductLinkPath(newArr, item, addNum) |
| | | newArr = this.insertAndSortObjectsByProductLinkPath(newArr, item) |
| | | // 插进数组后 从原数据中删除 |
| | | rootList = rootList.filter(nitem => nitem.id != item.id) |
| | | } |
| | | } |
| | | //给数组里面再添加一个children的空数组 |
| | | for (const i of newArr) { |
| | | i.children = [] |
| | | this.getTreeList(rootList, pathLength + addNum, i.children, i.productLinkPath, addNum) |
| | | this.getTreeList(rootList, i.children, i.productLinkPath) |
| | | if (i.children.length == 0) { |
| | | delete i.children |
| | | } |
| | |
| | | }, |
| | | |
| | | // 排序数组 按照productLinkPath |
| | | insertAndSortObjectsByProductLinkPath(array, newObj, addNum) { |
| | | insertAndSortObjectsByProductLinkPath(array, newObj) { |
| | | // 查找新对象应该插入的位置 |
| | | let insertIndex = array.findIndex(obj => Number(newObj.productLinkPath.substring(newObj.productLinkPath.length - addNum, newObj.productLinkPath.length)) < Number(obj.productLinkPath.substring(obj.productLinkPath.length - addNum, obj.productLinkPath.length))); |
| | | |
| | | let insertIndex = array.findIndex(obj => newObj.id < obj.id); |
| | | // 如果没有找到合适的位置,则放在数组末尾 |
| | | if (insertIndex === -1) { |
| | | insertIndex = array.length; |
| | | } |
| | | // 插入新对象到数组 |
| | | array.splice(insertIndex, 0, newObj); |
| | | // 测试6 正式5 |
| | | // 对数组进行排序 |
| | | array.sort((a, b) => { |
| | | if (Number(a.productLinkPath.substring(a.productLinkPath.length - addNum, a.productLinkPath.length)) < Number(b.productLinkPath.substring(b.productLinkPath.length - addNum, b.productLinkPath.length))) { |
| | | return -1; |
| | | } |
| | | if (Number(a.productLinkPath.substring(a.productLinkPath.length - addNum, a.productLinkPath.length)) > Number(b.productLinkPath.substring(b.productLinkPath.length - addNum, b.productLinkPath.length))) { |
| | | return 1; |
| | | } |
| | | // a must be equal to b |
| | | if (a.id < b.id) return -1; |
| | | if (a.id > b.id) return 1; |
| | | return 0; |
| | | }); |
| | | |
| | | // 返回更新后的数组 |
| | | return array; |
| | | }, |
| | |
| | | |
| | | //在线测试获取最后一个节点数量 |
| | | countLeafNodes(tree) { |
| | | |
| | | tree.forEach(node => { |
| | | if (!node.children || node.children.length === 0) { |
| | | this.setData({ |
| | |
| | | }); |
| | | }, |
| | | |
| | | onCorrelationBook(e) { |
| | | const item = e.currentTarget.dataset.item; |
| | | this.onLoad({ |
| | | loading: true, |
| | | id: item.id, |
| | | path: item.idPath |
| | | }) |
| | | }, |
| | | |
| | | // 获取相关课程 |
| | | getAboutBook(path) { |
| | | let query = { |
| | |
| | | } |
| | | }) |
| | | this.setData({ |
| | | relatedBookData: bookArr |
| | | relatedBookData: bookArr.slice(0, 6) |
| | | }) |
| | | } else { |
| | | this.setData({ |
| | |
| | | //学习笔记 |
| | | //在线提问 |
| | | // 图书添加购物车 |
| | | async addBookShopcCar() { |
| | | if (!this.data.expire) { |
| | | const shoppingCartGetId = []; |
| | | let query = { |
| | | start: 0, |
| | | size: 9999, |
| | | filterList: [], |
| | | searchList: [], |
| | | }; |
| | | const res = await app.MG.store.getShoppingCartProductList(query); |
| | | res.datas.forEach((item) => { |
| | | shoppingCartGetId.push(item.saleMethod.id); |
| | | }); |
| | | const determine = shoppingCartGetId.some( |
| | | (item) => item == this.data.digitalsData.defaultSaleMethodId |
| | | ); |
| | | if (!determine) { |
| | | addBookShopcCar() { |
| | | const addFun = async () => { |
| | | if (!this.data.expire) { |
| | | const shoppingCartGetId = []; |
| | | let query = { |
| | | requests: [{ |
| | | saleMethodId: this.data.digitalsData.defaultSaleMethodId, |
| | | storeEventId: null, |
| | | agentCode: "电子书", |
| | | }, ], |
| | | start: 0, |
| | | size: 9999, |
| | | filterList: [], |
| | | searchList: [], |
| | | }; |
| | | const addRes = app.MG.store.addShoppingCart(query); |
| | | this.showSuccessToast(); |
| | | const res = await app.MG.store.getShoppingCartProductList(query); |
| | | res.datas.forEach((item) => { |
| | | shoppingCartGetId.push(item.saleMethod.id); |
| | | }); |
| | | const determine = shoppingCartGetId.some( |
| | | (item) => item == this.data.digitalsData.defaultSaleMethodId |
| | | ); |
| | | if (!determine) { |
| | | let query = { |
| | | requests: [{ |
| | | saleMethodId: this.data.digitalsData.defaultSaleMethodId, |
| | | storeEventId: null, |
| | | agentCode: "电子书", |
| | | }, ], |
| | | }; |
| | | const addRes = app.MG.store.addShoppingCart(query); |
| | | this.showSuccessToast(); |
| | | } else { |
| | | Toast({ |
| | | context: this, |
| | | selector: "#t-toast", |
| | | message: "该课程已在购物车,请勿重复添加", |
| | | theme: "warning", |
| | | direction: "column", |
| | | }); |
| | | } |
| | | } else { |
| | | Toast({ |
| | | context: this, |
| | | selector: "#t-toast", |
| | | message: "该书已在购物车,请勿重复添加", |
| | | theme: "warning", |
| | | direction: "column", |
| | | wx.showToast({ |
| | | title: "商品不在有效期", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | } |
| | | } else { |
| | | wx.showToast({ |
| | | title: "商品不在有效期", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | } |
| | | const token = wx.getStorageSync(app.config.tokenKey) |
| | | if (!token) { |
| | | this.logInFun(() => {}) |
| | | } else { |
| | | addFun() |
| | | } |
| | | |
| | | }, |
| | | showSuccessToast() { |
| | | Toast({ |
| | |
| | | |
| | | //购买按钮 |
| | | async buyBtn() { |
| | | if (!this.data.expire) { |
| | | let bookOrdersId = ""; |
| | | let query = { |
| | | remarks: "电子书", |
| | | requests: [{ |
| | | saleMethodId: this.data.digitalsData.defaultSaleMethodId, |
| | | count: 1, |
| | | }, ], |
| | | }; |
| | | // 发起订单初始化请求并等待结果 |
| | | const res = await app.MG.store.initOrder(query); |
| | | // 获取订单号并赋值给 orderNumber.value |
| | | bookOrdersId = res.orderNumber; |
| | | // 检查订单号是否存在 |
| | | if (bookOrdersId) { |
| | | if (this.data.digitalsData.price == "0.00") { |
| | | app.MG.store |
| | | .confirmOrder({ |
| | | orderNum: bookOrdersId, |
| | | }) |
| | | .then((res) => { |
| | | if (res) { |
| | | wx.showToast({ |
| | | title: "领取成功", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | this.getBookInfo(this.data.bookDetail.id); |
| | | } |
| | | const buyFun = async () => { |
| | | if (!this.data.expire) { |
| | | let bookOrdersId = ""; |
| | | let query = { |
| | | remarks: "电子书", |
| | | requests: [{ |
| | | saleMethodId: this.data.digitalsData.defaultSaleMethodId, |
| | | count: 1, |
| | | }, ], |
| | | }; |
| | | // 发起订单初始化请求并等待结果 |
| | | const res = await app.MG.store.initOrder(query); |
| | | // 获取订单号并赋值给 orderNumber.value |
| | | bookOrdersId = res.orderNumber; |
| | | // 检查订单号是否存在 |
| | | if (bookOrdersId) { |
| | | if (this.data.digitalsData.price == "0.00") { |
| | | app.MG.store |
| | | .confirmOrder({ |
| | | orderNum: bookOrdersId, |
| | | }) |
| | | .then((res) => { |
| | | if (res) { |
| | | this.digitalCoursesDetailsGet(this.data.digitalsData.id); |
| | | wx.showToast({ |
| | | title: "领取成功", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | this.digitalCoursesDetailsGet(this.data.bookId); |
| | | } |
| | | }); |
| | | } else { |
| | | const url = "/pages/cart/paymentPage/index?orderNumber=" + bookOrdersId + '&onNorderSaleMethod=' + res.saleMethodLinks[0].orderSaleMethod.id; |
| | | wx.navigateTo({ |
| | | url, |
| | | }); |
| | | } else { |
| | | const url = "/pages/cart/paymentPage/index?orderNumber=" + bookOrdersId + '&onNorderSaleMethod=' + res.saleMethodLinks[0].orderSaleMethod.id; |
| | | wx.navigateTo({ |
| | | url, |
| | | }); |
| | | } |
| | | } else {} |
| | | } else { |
| | | wx.showToast({ |
| | | title: "商品不在有效期", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | } |
| | | } else {} |
| | | } else { |
| | | wx.showToast({ |
| | | title: "商品不在有效期", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | } |
| | | } |
| | | const token = wx.getStorageSync(app.config.tokenKey) |
| | | if (!token) { |
| | | this.logInFun(() => {}) |
| | | } else { |
| | | buyFun() |
| | | } |
| | | |
| | | }, |
| | | |
| | | |
| | |
| | | (data) => { |
| | | let width = data.width |
| | | let height = data.height |
| | | console.log(width, height) |
| | | that.setData({ |
| | | imageWidth: width, |
| | | imageHeight: height, |
| | |
| | | }, |
| | | ) |
| | | .exec() |
| | | this.drawImage1() |
| | | |
| | | setTimeout(() => { |
| | | this.drawImage() |
| | | }, 500) |
| | | query |
| | | .select('#textCertificate') |
| | | .fields({ |
| | | // 选择需要生成canvas的范围 |
| | | 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) |
| | | }, |
| | | drawImage1() { |
| | | drawImage() { |
| | | 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, |
| | |
| | | }] |
| | | } |
| | | 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.ugc.getTopicMessageList(data).then((res) => { |
| | | res.datas.map((item) => { |
| | | item.content = JSON.parse(item.content) |
| | | if (item.content.id == this.data.bookId) { |
| | | if (item.content.bookId == this.data.bookId) { |
| | | this.setData({ |
| | | isCertificate: item |
| | | isCertificate: item, |
| | | userName: item.content.userName, |
| | | userPicture: app.config.requestCtx + `/file/GetPreViewImage?md5=` + item.content.userPicture |
| | | }) |
| | | } |
| | | }) |
| | | |
| | | }) |
| | | }, |
| | | |
| | | |
| | | |
| | | onCertificate() { |
| | | if (!this.data.isBuy) { |
| | | wx.showToast({ |
| | | title: "请先购买,体验完整服务", |
| | | icon: "none", |
| | | duration: 1000, |
| | | const cateFun = () => { |
| | | if (!this.data.isBuy) { |
| | | wx.showToast({ |
| | | title: "请先购买,体验完整服务", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | return false |
| | | } |
| | | if (!this.data.isLearn) { |
| | | wx.showToast({ |
| | | title: "您的学习任务还未完成,暂不能申请证书,加油哦!", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | return false |
| | | } |
| | | if (this.data.isCertificate && this.data.isCertificate.state == 'WaitAudit') { |
| | | wx.showToast({ |
| | | title: "您申请的证书正在审核中", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | return false |
| | | } |
| | | var page = getCurrentPages().pop(); // 获取当前页面实例 |
| | | page.setData({ |
| | | // 动态设置禁止滚动的样式 |
| | | disableScrollStyle: 'overflow: hidden;' |
| | | }); |
| | | return false |
| | | this.setData({ |
| | | dialogBox: true, |
| | | scrollJudge: '' |
| | | }) |
| | | } |
| | | // 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 |
| | | const token = wx.getStorageSync(app.config.tokenKey) |
| | | if (!token) { |
| | | this.logInFun(() => {}) |
| | | } else { |
| | | cateFun() |
| | | } |
| | | |
| | | var page = getCurrentPages().pop(); // 获取当前页面实例 |
| | | page.setData({ |
| | | // 动态设置禁止滚动的样式 |
| | | disableScrollStyle: 'overflow: hidden;' |
| | | }); |
| | | this.setData({ |
| | | dialogBox: true, |
| | | scrollJudge: '' |
| | | }) |
| | | }, |
| | | closeDialog() { |
| | | this.setData({ |
| | |
| | | }, |
| | | |
| | | 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({ |
| | |
| | | name: this.data.digitalsData.name, |
| | | ISBN: this.data.digitalsData.isbn, |
| | | affiliatedUnit: this.data.digitalsData.affiliatedUnit, |
| | | publishingUnit: this.data.publishingUnit, |
| | | publicationDate: this.data.digitalsData.publicationDate, |
| | | classHours: this.data.digitalsData.classHours, |
| | | lecturerList: this.data.lecturerList.length > 0 ? |
| | | this.data.lecturerList[0].name : this.data.digitalsData.courseLeader, |
| | | userName: this.data.userInfo.fullName, |
| | | userPicture: this.data.pictureMd5, |
| | | certificate: this.data.rzzsImg |
| | | studyTime: this.data.digitalsData.beginDate + '-' + year + '-' + month + '-' + today, |
| | | website: this.data.website, |
| | | wxShareUrl: this.data.wxShareUrl |
| | | } |
| | | data = { |
| | | topicIdOrRefCode: 'applyCourseCertificate', |
| | | name: this.data.userInfo.fullName, |
| | | content: JSON.stringify(bookInfo), |
| | | state: 'WaitAudit', |
| | | cmsTypeRefCode: 'jsek_courseCertificate', |
| | | type: 'applyCourse', |
| | | newDataListRequest: worksDataBytool(this.data.worksInfo, this.data.userInfo) |
| | | |
| | | if (this.data.isCertificate.id) { |
| | | let dataRequests = UpdateworksDataBytool( |
| | | this.data.worksInfo, |
| | | [this.data.isCertificate], |
| | | this.data.userInfo |
| | | ) |
| | | |
| | | data = { |
| | | id: this.data.isCertificate.id, |
| | | topicIdOrRefCode: 'applyCourseCertificate', |
| | | name: this.data.userInfo.fullName, |
| | | content: JSON.stringify(bookInfo), |
| | | state: 'WaitAudit', |
| | | cmsTypeRefCode: 'jsek_courseCertificate', |
| | | type: 'applyCourse', |
| | | newDataRequests: dataRequests.newData, |
| | | updateDataRequests: dataRequests.updateData, |
| | | delDataRequest: { |
| | | ids: [] |
| | | } |
| | | } |
| | | app.MG.ugc |
| | | .updateTopicMessage(data) |
| | | .then((res) => { |
| | | wx.showToast({ |
| | | title: "已提交申请", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | this.setData({ |
| | | "userInfo.fullName": "", |
| | | dialogBox: false, |
| | | scrollJudge: true |
| | | }) |
| | | this.getCertificateList() |
| | | }) |
| | | .catch(() => { |
| | | btnLoading.value = false |
| | | }) |
| | | |
| | | } else { |
| | | data = { |
| | | topicIdOrRefCode: 'applyCourseCertificate', |
| | | name: this.data.userInfo.fullName, |
| | | content: JSON.stringify(bookInfo), |
| | | state: 'WaitAudit', |
| | | cmsTypeRefCode: 'jsek_courseCertificate', |
| | | type: 'applyCourse', |
| | | newDataListRequest: worksDataBytool(this.data.worksInfo, this.data.userInfo) |
| | | } |
| | | app.MG.ugc |
| | | .newTopicMessage(data) |
| | | .then((res) => { |
| | | wx.showToast({ |
| | | title: "已提交申请", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | this.setData({ |
| | | "userInfo.fullName": "", |
| | | dialogBox: false, |
| | | scrollJudge: true |
| | | }) |
| | | this.getCertificateList() |
| | | }) |
| | | .catch(() => { |
| | | this.setData({ |
| | | "userInfo.fullName": "", |
| | | }) |
| | | }) |
| | | } |
| | | app.MG.ugc |
| | | .newTopicMessage(data) |
| | | .then((res) => { |
| | | wx.showToast({ |
| | | title: "已提交申请", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | this.setData({ |
| | | "userInfo.fullName": "", |
| | | dialogBox: false, |
| | | scrollJudge: true |
| | | }) |
| | | this.getCertificateList() |
| | | }) |
| | | .catch(() => { |
| | | this.setData({ |
| | | "userInfo.fullName": "", |
| | | }) |
| | | }) |
| | | } else { |
| | | wx.showToast({ |
| | | title: "姓名不能为空", |
| | |
| | | } |
| | | }, |
| | | setCoolect() { |
| | | // 首页测试登录功能,后续注释 |
| | | // 检查登录状态 |
| | | const token = wx.getStorageSync(app.config.tokenKey) |
| | | if (!token) { |
| | | loginInfo(app, (data) => { |
| | | // 如果不是第一次登录,会执行回调 |
| | | if (data) { |
| | | if (this.data.digitalsData.isFavourite) { |
| | | app.MG.store |
| | | .delProductLink({ |
| | | productIds: [this.data.digitalsData.id], |
| | | linkType: 'Favoriteclass' |
| | | }) |
| | | .then(() => { |
| | | this.setData({ |
| | | "digitalsData.isFavourite": false |
| | | }) |
| | | }) |
| | | } else { |
| | | let params = { |
| | | productIds: [this.data.digitalsData.id], |
| | | linkType: 'Favoriteclass' |
| | | } |
| | | app.MG.store.addProductLink(params).then((res) => { |
| | | this.setData({ |
| | | "digitalsData.isFavourite": true |
| | | }) |
| | | }) |
| | | } |
| | | } else { |
| | | // 出现错误,返回false |
| | | } |
| | | }) |
| | | } else { |
| | | const collectFun = () => { |
| | | if (this.data.digitalsData.isFavourite) { |
| | | app.MG.store |
| | | .delProductLink({ |
| | |
| | | }) |
| | | } |
| | | } |
| | | const token = wx.getStorageSync(app.config.tokenKey) |
| | | if (!token) { |
| | | this.logInFun(() => {}) |
| | | } else { |
| | | collectFun() |
| | | } |
| | | }, |
| | | |
| | | //证书查看 |
| | |
| | | }, |
| | | onClick2() { |
| | | this.setData({ |
| | | images: ['https://jsek.bnuic.com/home/certificate/kczs.jpg'], |
| | | images: [this.data.rzzsImg], |
| | | showIndex: true, |
| | | visible: true, |
| | | }) |