// packageBookService/pages/bookServices/detail/buyResource/index.js const app = getApp() Page({ /** * 页面的初始数据 */ data: { barHeight: '', navBarHeight: '', learn: [], openLearnids: [], bookId: '', loading: false, shoppingList: [], shoppingCartGetId: [], }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { const systInfo = wx.getSystemInfoSync(); const menu = wx.getMenuButtonBoundingClientRect(); // 胶囊信息 const navBarHeight = (menu.top - systInfo.statusBarHeight) * 2 + menu.height; // 导航栏高度 this.setData({ barHeight: systInfo.statusBarHeight, navBarHeight: navBarHeight, bookId: options.bookId }); this.getResourceClass() console.log(options); this.getResourceData({ productLinkPath: options.productLinkPath, refCode: options.refCode }) this.getShoppingCartProductGet() this.getBookInfo(options.bookId) }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { }, /** * 生命周期函数--监听页面显示 */ onShow() { }, /** * 生命周期函数--监听页面隐藏 */ onHide() { }, /** * 生命周期函数--监听页面卸载 */ onUnload() { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { }, /** * 用户点击右上角分享 */ onShareAppMessage() { }, goBack() { wx.navigateBack() }, // 获取教学资源 云学习 云测试 getResourceData(type) { this.setData({ loading: true, noResources: false }) let query = { path: '*', queryType: '*', productId: this.data.bookId, cmsPath: type.productLinkPath, itemFields: { SysType: 'CmsFolder', // 资源类型,试读文件,是否允许下载等参数 selectType: [], freeFile: [], file: [], resourcesClassification: [], isDownload: [], jsek_resourceBrief: [], jsek_link: [], jsek_questionBank: [] }, pading: { start: 0, size: 999 }, } app.MG.store .getProductDetail(query) .then(async (res) => { if (!res.datas.cmsDatas[0].datas.length) { return this.setData({ noResources: true, loading: false }) } //教学资源 云学习 if (type.refCode == 'jsek_teachingResources' || type.refCode == 'jsek_cloudLearning') { if (res.datas.cmsDatas[0].datas.length > 0) { res.datas.cmsDatas[0].datas.forEach(item => { item.checked = false, item.checkAll = true }) const list = await this.getAllResource(res.datas.cmsDatas[0].datas) if (type.refCode == 'jsek_teachingResources') { this.setData({ teach: list, loading: false }) this.findChildIds(this.data.teach, this.data.openTeachids = []) } else if (type.refCode == 'jsek_cloudLearning') { const result = [] res.datas.cmsDatas[0].datas.forEach(item => { item.checked = false }) this.findChildIds(list, result) this.setData({ learn: list, loading: false, openLearnids: result }) } } else { // 无数据 } } else if (type.refCode == 'jsek_questionBank') { // const list = await this.getAllResource(res.datas.cmsDatas[0].datas) this.setData({ test: res.datas.cmsDatas[0].datas, loading: false }) } else { console.log('其他'); } }) .catch((e) => { console.log(e) }) }, // 获取tag下所有资源 async getAllResource(data) { if (!data.length) return false for (let i = 0; i < data.length; i++) { let item = data[i] if (item.sysType == 'CmsFolder' && item.childrenCount > 0) { item.children = [] item.children = await this.getFolderItem(item.productLinkPath) await this.getAllResource(item.children) } } return data }, // 获取资源接口 async getFolderItem(path) { let query = { path: '*', queryType: '*', productId: this.data.bookId, cmsPath: path, itemFields: { SysType: 'CmsFolder', // 资源类型,试读文件,是否允许下载等参数 selectType: [], freeFile: [], file: [], protectedFile: [], resourcesClassification: [], isDownload: [], jsek_resourceBrief: [], jsek_link: [], accessType: [] }, pading: { start: 0, size: 999 }, } const data = await app.MG.store.getProductDetail(query) data.datas.cmsDatas[0].datas.forEach((item) => { this.data.resourceClassList.forEach((type) => { if (type.value == item.resourcesClassification) item.resourceClass = type.name }) // 网页 不能下载 私有文件 if (item.sysType == 'CmsItem') { if (item.selectType == 'webpage') { item.disabled = true } else { if (item.isDownload != 1) { item.disabled = true } } if (item.file) { if (item.fileMap[item.file].protectType == 'Private') item.disabled = true } } }) data.datas.cmsDatas[0].datas.forEach(item => { item.checked = false item.isbuy = this.resourceIsBuy(item) item.isShopCar = this.isShoppingCart(item) }) return data.datas.cmsDatas[0].datas }, getBookInfo(id) { this.setData({ "mockData'.id": 0, "mockData.price": 0, "mockData.count": 0 }) const query = { path: '*', queryType: '*', productId: id, favoriteTypes: 'FavoriteBookCity', itemFields: { 'SysType=': 'CmsFolder', }, coverSize: { height: 300, }, fields: { seriesName: [], author: [], isbn: [], publicationDate: [], bookClassification: [], paperPrice: [], JDLink: [], tmallLink: [], dangdangLink: [], weidianLink: [], content: [], authorIntroduction: [], isApplyBook: [], isSell: [], pdf: [], protectedEpub: [], probationPage: [], //pdf试读页数 freeEpubPage: [], //epub试读百分比 }, }; app.MG.store.getProductDetail(query).then(async (res) => { this.setData({ bookDetail: res.datas, buyIdList: res.datas.purchasedSaleMethodIdList }); }); }, // 获取已购买商品 getShoppingCartProductGet() { let query = { start: 0, size: 999, filterList: [], searchList: [] } app.MG.store.getShoppingCartProductList(query).then((res) => { const list = [] res.datas.forEach((item) => { list.push(item.saleMethod.id) }) this.setData({ shoppingList: res.datas, shoppingCartGetId: list }) }) }, // 判断资源是否购买 resourceIsBuy(data) { if (data.saleMethod && data.saleMethod.length) { const isSHow = this.data.buyIdList.some((item) => item == data.saleMethod[0].Id) return !isSHow } else { return false } }, // 判断资源加入购物车按钮是否显示 isShoppingCart(data) { if (data.saleMethod && data.saleMethod.length) { if (data.saleMethod[0].Price <= 0) return false // 再判断是否购买 const isBuy = this.data.buyIdList.some((item) => item == data.saleMethod[0].Id) if (isBuy) { // 购买了 return false } else { // 判断是否加入购物车 const isSHow = this.data.shoppingCartGetId.some((item) => item == data.saleMethod[0].Id) return !isSHow } } else { return false } }, // 获取展开项 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 } } }, // 获取资源所属分类 getResourceClass() { let query = { refCodes: ['resourcesClassification'] } app.MG.store.getProductTypeField(query).then((res) => { this.setData({ resourceClassList: JSON.parse(res[0].config).option }) }) }, checkAll() { const child = this.selectComponent('#tree') child.checkAll() } })