| | |
| | | loginInfo |
| | | } from '../../../assets/js/login'; |
| | | import wxbarcode from 'wxbarcode' |
| | | |
| | | Page({ |
| | | |
| | | /** |
| | |
| | | bookId: options.id, |
| | | bookPath: parentPath.join('\\') |
| | | }) |
| | | const token = wx.getStorageSync(app.config.tokenKey) |
| | | if (!token) { |
| | | loginInfo(app, (data) => { |
| | | if (data) { |
| | | this.digitalCoursesDetailsGet(options.id) |
| | | this.getPlayerList() |
| | | this.getType() |
| | | } else {} |
| | | }) |
| | | } |
| | | this.digitalCoursesDetailsGet(options.id) |
| | | this.getPlayerList() |
| | | this.getType() |
| | | // this.setData({ |
| | | // userName: JSON.parse(wx.getStorageSync(app.config.userInfoKey)).name, |
| | | // }) |
| | | }, |
| | | |
| | | 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') { |
| | | console.log(12333) |
| | | this.getPlayerList() |
| | | this.getResource() |
| | | this.getRelationBook() |
| | |
| | | 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({ |
| | |
| | | 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 = []; |
| | |
| | | ) |
| | | 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) |
| | |
| | | }) |
| | | }, |
| | | // 扁平化数据转换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) { |
| | | newArr[0].istry = true |
| | | 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; |
| | | }, |
| | |
| | | //学习笔记 |
| | | //在线提问 |
| | | // 图书添加购物车 |
| | | 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) { |
| | | this.digitalCoursesDetailsGet(this.data.digitalsData.id); |
| | | wx.showToast({ |
| | | title: "领取成功", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | this.digitalCoursesDetailsGet(this.data.bookId); |
| | | } |
| | | 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() |
| | | } |
| | | |
| | | }, |
| | | |
| | | |
| | |
| | | }, |
| | | |
| | | 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({ |
| | |
| | | } |
| | | }, |
| | | 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() |
| | | } |
| | | }, |
| | | |
| | | //证书查看 |