// 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: { loading: true, digitalsData: {}, expire: false, //商品或子商品销售方式是否过期 isBuy: false, tabValue: 0, learnResourceIcon: { name: "/static/images/digitalTextbooks/shengshu-t@2x.png", }, learnResourceClickIcon: { name: "/static/images/digitalTextbooks/zhengshu-t-click@3x.png", }, briefIcon: { name: "/static/images/digitalTextbooks/jibenxinxi-t@2x.png", }, briefIconClick: { name: "/static/images/digitalTextbooks/jibenxinxi-t-click@3x.png", }, courseLearning: { name: "/static/images/digitalCourses/jiaoxueziyuan@2x.png" }, courseLearningClick: { name: "/static/images/digitalCourses/jiaoxueziyuan.png" }, learningNotes: { name: "/static/images/digitalCourses/biji/icon@2x.png" }, learningNotesClick: { name: "/static/images/bookService/detail/biji-click-icon.png", }, onlineQuestioning: { name: "/static/images/digitalCourses/tiwen@2x.png" }, 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', 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: '', playerList: [], worksInfo: [], isCertificate: {}, isLearn: false, isTest: false, userInfo: { fullName: '', //名称 userPicture: '' //申请证书用户图片 }, pictureMd5: '', publishingUnit: '', pubCertificateHide: true, cbzsImg: '', //出版证书base64 rzzsImg: '', //认证证书base64 imageWidth: '', //画在画布上的图片的宽度 imageHeight: '', //画在画布上的图片的高度 }, formatDate(dateString) { if (!dateString) { return ""; } const match = dateString.match( /^(\d{4})\/(\d{1,2})\/(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/ ); if (!match) { throw new Error("Invalid date format"); } const [, year, month, day, hours, minutes, seconds] = match; const date = new Date( parseInt(year, 10), parseInt(month, 10) - 1, parseInt(day, 10), parseInt(hours, 10), parseInt(minutes, 10), parseInt(seconds, 10) ); if (isNaN(date.getTime())) { throw new Error("Invalid date"); } // 由于小程序环境可能不支持 Intl.DateTimeFormat,我们使用简化的格式化方法 const formatted = `${year}年${this.formatMonth(month)}`; return formatted; }, formatMonth(month) { const months = [ "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", ]; return months[parseInt(month, 10) - 1]; }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { this.setData({ bookId: options.id }) this.digitalCoursesDetailsGet(options.id) this.getPlayerList() this.getType() }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { }, /** * 生命周期函数--监听页面显示 */ onShow() { }, /** * 生命周期函数--监听页面隐藏 */ onHide() { }, /** * 生命周期函数--监听页面卸载 */ onUnload() { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { }, /** * 用户点击右上角分享 */ 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: '*', productId: digitalTextId, storeInfo: 'jsek_digitalCourses', coverSize: { height: 300 }, fields: { seriesName: [], author: [], isbn: [], publicationDate: [], speaker: [], bookClassification: [], paperPrice: [], JDLink: [], tmallLink: [], dangdangLink: [], weidianLink: [], content: [], authorIntroduction: [], isApplyBook: [], isSell: [], pdf: [], protectedEpub: [], probationPage: [], //pdf试读页数 freeEpubPage: [], courseLeader: [], affiliatedUnit: [], publishingUnit: [], classHours: [], productLinkPath: [], //epub试读百分比 } } 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月') 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() res.datas.content = res.datas.content.replace('../', app.config.requestCtx + '/') this.setData({ lecturerList: lecturer, digitalsData: res.datas, loading: false }) }) }, //获取图书出版单位 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 }) 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.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, }); } } }) }, // 扁平化数据转换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 } } }, //在线测试获取最后一个节点数量 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) => { 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) { 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, }); } }, showSuccessToast() { Toast({ context: this, selector: "#t-toast", message: "添加成功", theme: "success", direction: "column", }); }, //购买按钮 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); } }); } 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, }); } }, closeDialog() { const { dialogKey } = this.data; this.setData({ [dialogKey]: false }); }, //申请证书 async saveAsImage() { const that = this const query = wx.createSelectorQuery().in(this) query .select('#pubCertificate') .fields({ // 选择需要生成canvas的范围 size: true, node: true, scrollOffset: true, }, (data) => { let width = data.width let height = data.height console.log(width, height) that.setData({ imageWidth: width, imageHeight: height, }) }, ) .exec() this.drawImage1() }, drawImage1() { let that = this; let drawMyImage = new Wxml2Canvas({ // width: 230, // height: 325, width: that.data.imageWidth, height: that.data.imageHeight, element: 'myCanvas', background: '#f0f0f0', progress(percent) {}, finish(url) { console.log("生成的图片地址", url) wx.getFileSystemManager().readFile({ filePath: url, encoding: 'base64', success: (res) => { let MyImageBase64 = 'data:image/jpg;base64,' + res.data console.log('MyImageBase64', MyImageBase64) that.setData({ cbzsImg: MyImageBase64, pubCertificateHide: false, }) }, }) }, error(res) { console.log("生成的图片失败", res) } }, this); let data = { list: [{ type: 'wxml', class: '.my_canvas .my_draw_canvas', //.my_draw_canvas每个要绘制元素的类名 limit: '.my_canvas', //my_canvas根元素类名 x: 0, y: 0 }] } drawMyImage.draw(data, that); }, //获取字段 getType() { 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({ // 动态设置禁止滚动的样式 disableScrollStyle: 'overflow: hidden;' }); this.setData({ dialogBox: true, scrollJudge: '' }) }, closeDialog() { this.setData({ dialogBox: false, scrollJudge: true }) }, //姓名 onFullNameInput(e) { this.setData({ "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: [this.data.cbzsImg], 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, }); }, })