| | |
| | | // pages/bookServices/detail/index.js |
| | | import Toast from "tdesign-miniprogram/toast"; |
| | | import tool from "../../../../assets/js/toolClass"; |
| | | import { |
| | | loginInfo |
| | | } from "../../../../assets/js/login"; |
| | | import { loginInfo } from "../../../../assets/js/login"; |
| | | const app = getApp(); |
| | | Page({ |
| | | /** |
| | |
| | | if (token) { |
| | | this.getShoppingCartProductGet(); |
| | | this.getApplyInfo(options.id); |
| | | this.getMockData(); |
| | | this.getAlreadyPBookList(); |
| | | this.getAlreadyEBookList(); |
| | | } |
| | |
| | | onReachBottom() { |
| | | if (this.data.tabValue == "jsek_note") { |
| | | const child = this.selectComponent("#note"); |
| | | child.onReachBottom(); |
| | | if (!child.data.noList) child.onReachBottom(); |
| | | } |
| | | }, |
| | | |
| | |
| | | }, |
| | | // 返回 |
| | | goBack() { |
| | | wx.navigateBack(); |
| | | let bookPathList = wx.getStorageSync("bookPathList"); |
| | | if (bookPathList && JSON.parse(bookPathList).length) { |
| | | bookPathList = JSON.parse(bookPathList); |
| | | this.setData({ |
| | | pageLoading: true, |
| | | tabValue: "brief", |
| | | }); |
| | | this.onLoad(bookPathList[bookPathList.length - 1]); |
| | | bookPathList.pop(); |
| | | wx.setStorageSync("bookPathList", JSON.stringify(bookPathList)); |
| | | } else { |
| | | wx.navigateBack(); |
| | | } |
| | | }, |
| | | // 获取图书详情 |
| | | getBookInfo(id) { |
| | |
| | | this.getSubTtem(); |
| | | // 获取图书分类 |
| | | let className = ""; |
| | | if ( |
| | | Array.isArray(res.datas.bookClassification) && |
| | | res.datas.bookClassification.length |
| | | ) { |
| | | const iconType = JSON.parse(res.datas.bookClassification)[0][0]; |
| | | const classType = JSON.parse(res.datas.bookClassification)[0][1]; |
| | | className = await this.getBookClass(iconType, classType); |
| | | if (res.datas.bookClassification) { |
| | | const bookClassification = JSON.parse(res.datas.bookClassification); |
| | | if (Array.isArray(bookClassification) && bookClassification.length) { |
| | | const iconType = bookClassification[0][0]; |
| | | const classType = bookClassification[0][1]; |
| | | className = await this.getBookClass(iconType, classType); |
| | | } |
| | | } |
| | | |
| | | // 获取组卷销售id |
| | | if (res.datas.saleMethod && res.datas.saleMethod.length) { |
| | | res.datas.saleMethod.forEach((item) => { |
| | |
| | | }; |
| | | app.MG.store.getProductList(obj).then((res) => { |
| | | if (res.datas && res.datas.length > 0) { |
| | | console.log(res.datas[0], 2); |
| | | this.setData({ |
| | | bookItemDetail: res.datas[0], |
| | | selectedIds: res.datas[0].defaultSaleMethod.id, |
| | | bookBuy: res.datas[0].purchasedSaleMethodIdList.indexOf( |
| | | res.datas[0].defaultSaleMethodId |
| | | ) > -1, |
| | | bookBuy: |
| | | res.datas[0].purchasedSaleMethodIdList.indexOf( |
| | | res.datas[0].defaultSaleMethodId |
| | | ) > -1, |
| | | "bookDetail.price": this.numFormat(res.datas[0].price), |
| | | }); |
| | | let times = new Date(res.datas[0].defaultSaleMethod.endDate).getTime(); |
| | | let startTime = new Date( |
| | |
| | | } |
| | | this.setData({ |
| | | selectedIds: this.data.bookDetail.defaultSaleMethodId, |
| | | bookBuy: this.data.bookDetail.purchasedSaleMethodIdList.indexOf( |
| | | this.data.bookDetail.defaultSaleMethodId |
| | | ) > -1, |
| | | bookBuy: |
| | | this.data.bookDetail.purchasedSaleMethodIdList.indexOf( |
| | | this.data.bookDetail.defaultSaleMethodId |
| | | ) > -1, |
| | | }); |
| | | let times = new Date( |
| | | this.data.bookDetail.defaultSaleMethod.endDate |
| | |
| | | }, |
| | | // 跳转网店 |
| | | goShop(e) { |
| | | const { |
| | | link |
| | | } = e.currentTarget.dataset; |
| | | const { link } = e.currentTarget.dataset; |
| | | wx.navigateTo({ |
| | | url: `/packageBookService/pages/bookServices/webpage/index?url=${link}`, |
| | | }); |
| | | }, |
| | | // tag切换 |
| | | onTabsChange(e) { |
| | | const token = wx.getStorageSync(app.config.tokenKey); |
| | | this.setData({ |
| | | tabValue: e.detail.value, |
| | | noResources: false |
| | | }) |
| | | if (e.detail.label == '教学资源' || e.detail.label == '云学习' || e.detail.label == '云测试') { |
| | | const checkData = this.data.cmsDatas.find(item => item.refCode == e.detail.value) |
| | | |
| | | noResources: false, |
| | | }); |
| | | if ( |
| | | e.detail.label == "教学资源" || |
| | | e.detail.label == "云学习" || |
| | | e.detail.label == "云测试" |
| | | ) { |
| | | const checkData = this.data.cmsDatas.find( |
| | | (item) => item.refCode == e.detail.value |
| | | ); |
| | | |
| | | if (checkData) { |
| | | if (e.detail.value == "jsek_cloudLearning") { |
| | |
| | | ) { |
| | | this.getResourceData(checkData); |
| | | } |
| | | if (e.detail.value == "questionBank" && token) this.getMockData(); |
| | | } else { |
| | | this.setData({ |
| | | noResources: true, |
| | |
| | | if (token) { |
| | | child.changeLoading(); |
| | | child.getNoteList(); |
| | | } else { |
| | | child.changeNoList(); |
| | | } |
| | | } else if (e.detail.label == "电子书") { |
| | | const child = this.selectComponent("#eBook"); |
| | |
| | | const list = await this.getAllResource(res.datas.cmsDatas[0].datas); |
| | | let result = []; |
| | | if (type.refCode == "jsek_teachingResources") { |
| | | console.log("教学资源", list); |
| | | this.findChildIds(list, result); |
| | | this.setData({ |
| | | teach: list, |
| | | loading: false, |
| | | openTeachids: result, |
| | | }); |
| | | console.log("教学资源", list); |
| | | } else if (type.refCode == "jsek_cloudLearning") { |
| | | let arr = this.handleTreeData(list).filter( |
| | | (item) => item.saleMethod[0] |
| | |
| | | size: 999, |
| | | }, |
| | | }; |
| | | const data = await app.MG.store.getProductDetail(query); |
| | | let data = await app.MG.store.getProductDetail(query); |
| | | // 如果item层级里有floder,删除floder |
| | | const flag = data.datas.cmsDatas[0].datas.findIndex( |
| | | (item) => item.sysType == "CmsItem" |
| | | ); |
| | | if (flag > -1) |
| | | data.datas.cmsDatas[0].datas = data.datas.cmsDatas[0].datas.filter( |
| | | (item) => item.sysType == "CmsItem" |
| | | ); |
| | | data.datas.cmsDatas[0].datas.forEach((item) => { |
| | | if (item.sysType == "CmsFolder" && flag > -1) { |
| | | item.isShow = false; |
| | | } else { |
| | | item.isShow = true; |
| | | } |
| | | // if (item.sysType == "CmsFolder" && flag > -1) { |
| | | // item.isShow = false; |
| | | // } else { |
| | | // item.isShow = true; |
| | | // } |
| | | this.data.resourceClassList.forEach((type) => { |
| | | if (type.value == item.resourcesClassification) |
| | | item.resourceClass = type.name; |
| | |
| | | item.checked = false; |
| | | } else if (this.data.tabValue == "jsek_cloudLearning") { |
| | | item.checked = false; |
| | | item.isbuy = this.resourceIsBuy(item); |
| | | item.isbuy = this.isShowNeedBuy(item); |
| | | item.isShopCar = this.isShoppingCart(item); |
| | | } |
| | | }); |
| | |
| | | res.datas.forEach((item) => { |
| | | shoppingCartGetId.push(item.saleMethod.id); |
| | | }); |
| | | console.log(shoppingCartGetId, "shoppingCartGetId"); |
| | | console.log(this.data.selectedIds, "销售方式id"); |
| | | const determine = shoppingCartGetId.some( |
| | | (item) => item == this.data.selectedIds |
| | | ); |
| | | console.log(determine); |
| | | if (!determine) { |
| | | let query = { |
| | | requests: [{ |
| | | saleMethodId: this.data.selectedIds, |
| | | storeEventId: null, |
| | | agentCode: "电子书", |
| | | }, ], |
| | | requests: [ |
| | | { |
| | | saleMethodId: this.data.selectedIds, |
| | | storeEventId: null, |
| | | agentCode: "电子书", |
| | | }, |
| | | ], |
| | | }; |
| | | const addRes = app.MG.store.addShoppingCart(query); |
| | | this.showSuccessToast(); |
| | |
| | | let bookOrdersId = ""; |
| | | let query = { |
| | | remarks: "电子书", |
| | | requests: [{ |
| | | saleMethodId: this.data.bookItemDetail.defaultSaleMethodId ? |
| | | this.data.bookItemDetail.defaultSaleMethodId : this.data.bookDetail.defaultSaleMethodId, |
| | | count: 1, |
| | | }, ], |
| | | requests: [ |
| | | { |
| | | saleMethodId: this.data.bookItemDetail.defaultSaleMethodId |
| | | ? this.data.bookItemDetail.defaultSaleMethodId |
| | | : this.data.bookDetail.defaultSaleMethodId, |
| | | count: 1, |
| | | }, |
| | | ], |
| | | }; |
| | | // 发起订单初始化请求并等待结果 |
| | | const res = await app.MG.store.initOrder(query); |
| | |
| | | console.log(bookOrdersId); |
| | | // 检查订单号是否存在 |
| | | if (bookOrdersId) { |
| | | const url = "/pages/cart/paymentPage/index?orderNumber=" + bookOrdersId; |
| | | wx.navigateTo({ |
| | | url, |
| | | }); |
| | | if (this.data.bookDetail.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; |
| | | wx.navigateTo({ |
| | | url, |
| | | }); |
| | | } |
| | | } else { |
| | | console.log(222); |
| | | } |
| | |
| | | cmsTypeRefCode: "", |
| | | newDataListRequest: [], |
| | | name: this.data.bookDetail.name, // name为申请的书本名称 |
| | | content: JSON.stringify([{ |
| | | name: this.data.bookDetail.name, |
| | | id: this.data.bookDetail.id, |
| | | // defaultSaleMethodId: bookData.value.defaultSaleMethodId, |
| | | icon: this.data.bookDetail.icon, |
| | | }, ]), |
| | | content: JSON.stringify([ |
| | | { |
| | | name: this.data.bookDetail.name, |
| | | id: this.data.bookDetail.id, |
| | | // defaultSaleMethodId: bookData.value.defaultSaleMethodId, |
| | | icon: this.data.bookDetail.icon, |
| | | }, |
| | | ]), |
| | | }; |
| | | app.MG.ugc.newTopicMessage(query).then(async (res) => { |
| | | if (res) { |
| | |
| | | wx.showModal({ |
| | | title: "尊敬的用户,您好!", |
| | | content: "请先进行教师认证!", |
| | | confirmColor: "#ff6c00", |
| | | cancelColor: "#949494", |
| | | complete: (res) => { |
| | | if (res.cancel) {} |
| | | if (res.cancel) { |
| | | } |
| | | if (res.confirm) { |
| | | wx.navigateTo({ |
| | | url: "/packageDomain/pages/teacherCertification/index", |
| | |
| | | wx.showModal({ |
| | | title: "尊敬的用户,您好!", |
| | | content: "请先进行教师认证!", |
| | | confirmColor: "#ff6c00", |
| | | cancelColor: "#949494", |
| | | complete: (res) => { |
| | | if (res.cancel) {} |
| | | if (res.cancel) { |
| | | } |
| | | if (res.confirm) { |
| | | wx.navigateTo({ |
| | | url: "/packageDomain/pages/teacherCertification/index", |
| | |
| | | wx.showModal({ |
| | | title: "尊敬的用户,您好!", |
| | | content: "请先进行教师认证!", |
| | | confirmColor: "#ff6c00", |
| | | cancelColor: "#949494", |
| | | complete: (res) => { |
| | | if (res.cancel) {} |
| | | if (res.cancel) { |
| | | } |
| | | if (res.confirm) { |
| | | wx.navigateTo({ |
| | | url: "/packageDomain/pages/teacherCertification/index", |
| | |
| | | return false; |
| | | } |
| | | }, |
| | | // 云学习资源是否显示锁图标(未购买,且资源售价大于零) |
| | | isShowNeedBuy(data) { |
| | | if (data.saleMethod && data.saleMethod.length) { |
| | | const isSHow = this.data.buyIdList.some( |
| | | (item) => item == data.saleMethod[0].Id |
| | | ); |
| | | if (isSHow) { |
| | | return false; |
| | | } else { |
| | | return data.saleMethod[0].price > 0 ? true : false; |
| | | } |
| | | return !isSHow; |
| | | } else { |
| | | return false; |
| | | } |
| | | }, |
| | | // 获取已购买商品 |
| | | getShoppingCartProductGet() { |
| | | let query = { |
| | |
| | | }, |
| | | |
| | | updateShoppingCartHidden() { |
| | | const isSHow = this.data.shoppingCartGetId.some((item) => item == data.saleMethod[0].Id) |
| | | const isSHow = this.data.shoppingCartGetId.some( |
| | | (item) => item == data.saleMethod[0].Id |
| | | ); |
| | | console.log(isSHow); |
| | | return !isSHow |
| | | |
| | | return !isSHow; |
| | | }, |
| | | updateCloudLearning() { |
| | | const checkData = this.data.cmsDatas.find(item => item.refCode == 'jsek_cloudLearning') |
| | | this.getResourceData(checkData) |
| | | debugger |
| | | const checkData = this.data.cmsDatas.find( |
| | | (item) => item.refCode == "jsek_cloudLearning" |
| | | ); |
| | | this.getResourceData(checkData); |
| | | debugger; |
| | | console.log(55555); |
| | | }, |
| | | // 遍历树结构转换为数组方法 |
| | |
| | | if (new RegExp("(" + k + ")").test(fmt)) { |
| | | fmt = fmt.replace( |
| | | RegExp.$1, |
| | | RegExp.$1.length == 1 ? |
| | | o[k] : |
| | | ("00" + o[k]).substr(("" + o[k]).length) |
| | | RegExp.$1.length == 1 |
| | | ? o[k] |
| | | : ("00" + o[k]).substr(("" + o[k]).length) |
| | | ); |
| | | } |
| | | } |
| | |
| | | }, |
| | | // 获取组卷答题数据 |
| | | getMockData() { |
| | | // const child = this.selectComponent("#test-resource"); |
| | | // if (child) child.changeTestLoaidng(true); |
| | | this.setData({ |
| | | "mockData.useCount": 0, |
| | | "mockData.mockList": [], |
| | |
| | | try { |
| | | let query = { |
| | | remarks: "组卷", |
| | | requests: [{ |
| | | saleMethodId: this.data.mockData.id, |
| | | count: 1, |
| | | }, ], |
| | | requests: [ |
| | | { |
| | | saleMethodId: this.data.mockData.id, |
| | | count: 1, |
| | | }, |
| | | ], |
| | | }; |
| | | if (this.data.flag) { |
| | | this.setData({ |
| | |
| | | }); |
| | | // 记录购买时间,并设状态state为1,表示刚购买完成组卷 |
| | | app.MG.identity.setUserKey({ |
| | | setKeyRequests: [{ |
| | | domain: "mockData", |
| | | key: this.data.bookDetail.id + "", |
| | | value: JSON.stringify(this.data.mockData.mockList), |
| | | }, ], |
| | | setKeyRequests: [ |
| | | { |
| | | domain: "mockData", |
| | | key: this.data.bookDetail.id + "", |
| | | value: JSON.stringify(this.data.mockData.mockList), |
| | | }, |
| | | ], |
| | | }); |
| | | }, |
| | | // 获取相关图书 |
| | |
| | | (item) => item.id != this.data.bookDetail.id |
| | | ); |
| | | let bookArr = []; |
| | | // if (Arr.length > 3) { |
| | | // for (var i = 0; i < 3; i++) { |
| | | // var _num = Math.floor(Math.random() * Arr.length); |
| | | // var mm = Arr[_num]; |
| | | // Arr.splice(_num, 1); |
| | | // bookArr.push(mm); |
| | | // } |
| | | // } else { |
| | | // bookArr = Arr; |
| | | // } |
| | | 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; |
| | | } |
| | | this.setData({ |
| | | relatedBookData: Arr, |
| | | relatedBookData: bookArr, |
| | | relatedBookLoading: false, |
| | | }); |
| | | if (!this.data.relatedBookData.length) |
| | | this.setData({ |
| | | noRelatedBookData: true, |
| | | }); |
| | | console.log("相关图书", this.data.relatedBookData); |
| | | }); |
| | | }, |
| | | goBookDetails(e) { |
| | | console.log(e); |
| | | this.setData({ |
| | | tabValue: "brief", |
| | | pageLoading: true, |
| | | }); |
| | | let bookPathList = wx.getStorageSync("bookPathList"); |
| | | const bookPath = { |
| | | id: this.data.bookDetail.id, |
| | | name: this.data.bookDetail.name, |
| | | }; |
| | | if (bookPathList) { |
| | | bookPathList = JSON.parse(bookPathList); |
| | | if (bookPathList.length > 8) bookPathList.shift(); |
| | | bookPathList.push(bookPath); |
| | | } else { |
| | | bookPathList = [bookPath]; |
| | | } |
| | | |
| | | wx.setStorageSync("bookPathList", JSON.stringify(bookPathList)); |
| | | this.onLoad({ |
| | | id: e.detail.id, |
| | | name: e.detail.name |
| | | name: e.detail.name, |
| | | }); |
| | | }, |
| | | // 底部购买按钮 |
| | |
| | | return false; |
| | | } |
| | | wx.navigateTo({ |
| | | url: "/packageBookService/pages/components/webView/index?md5=" + |
| | | url: |
| | | "/packageBookService/pages/components/webView/index?md5=" + |
| | | this.data.fileInfo.md5 + |
| | | "&fileName=" + |
| | | this.data.fileInfo.bookName + |
| | |
| | | }); |
| | | return false; |
| | | } |
| | | if (this.data.electronicBookList.length >= 2) { |
| | | wx.showToast({ |
| | | title: "每次最多只可申请2本样书", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | return false; |
| | | } |
| | | |
| | | let isHas = this.data.electronicBookList.find( |
| | | (eitem) => eitem.id == this.data.bookDetail.id |
| | | ); |
| | |
| | | }); |
| | | return false; |
| | | } |
| | | if (this.data.electronicBookList.length >= 2) { |
| | | wx.showToast({ |
| | | title: "每次最多只可申请2本样书", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | return false; |
| | | } |
| | | this.addBookFun(this.data.bookDetail, "eBook"); |
| | | } else { |
| | | wx.showModal({ |
| | | title: "尊敬的用户,您好!", //提示的标题 |
| | | content: "请先进行教师认证?", //提示的内容 |
| | | confirmColor: "#ff6c00", |
| | | cancelColor: "#949494", |
| | | success: function (res) { |
| | | if (res.confirm) { |
| | | wx.navigateTo({ |
| | | url: "/packageDomain/pages/teacherCertification/index", |
| | | }); |
| | | } else if (res.cancel) {} |
| | | } else if (res.cancel) { |
| | | } |
| | | }, |
| | | }); |
| | | } |
| | |
| | | }); |
| | | return false; |
| | | } |
| | | if (this.data.paperBookList.length >= 2) { |
| | | wx.showToast({ |
| | | title: "每次最多只可申请2本样书", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | return false; |
| | | } |
| | | let isHas = this.data.paperBookList.find( |
| | | (pitem) => pitem.id == this.data.bookDetail.id |
| | | ); |
| | | if (isHas) { |
| | | wx.showToast({ |
| | | title: "该书已在清单列表中", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | return false; |
| | | } |
| | | let isApply = this.data.alreadyPaperBookList.find( |
| | | (pitem) => pitem.id == this.data.bookDetail.id |
| | | ); |
| | |
| | | }); |
| | | return false; |
| | | } |
| | | |
| | | let isHas = this.data.paperBookList.find( |
| | | (pitem) => pitem.id == this.data.bookDetail.id |
| | | ); |
| | | if (isHas) { |
| | | wx.showToast({ |
| | | title: "该书已在清单列表中", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | return false; |
| | | } |
| | | if (this.data.paperBookList.length >= 2) { |
| | | wx.showToast({ |
| | | title: "每次最多只可申请2本样书", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | return false; |
| | | } |
| | | this.addBookFun(this.data.bookDetail, "pBook"); |
| | | } else { |
| | | wx.showModal({ |
| | | title: "尊敬的用户,您好!", //提示的标题 |
| | | content: "请先进行教师认证?", //提示的内容 |
| | | confirmColor: "#ff6c00", |
| | | cancelColor: "#949494", |
| | | success: function (res) { |
| | | if (res.confirm) { |
| | | wx.navigateTo({ |
| | | url: "/packageDomain/pages/teacherCertification/index", |
| | | }); |
| | | } else if (res.cancel) {} |
| | | } else if (res.cancel) { |
| | | } |
| | | }, |
| | | }); |
| | | } |
| | |
| | | teach: tree, |
| | | }); |
| | | }, |
| | | }); |
| | | }); |