import Message from 'tdesign-miniprogram/message/message'; const util = require('./components/util') // 引入封装过的加载提示 const app = getApp() Component({ // checked: false, properties: { treeList: { type: Array, value: [] }, bookInfo: { type: Object, value: {} }, buyIds: { type: Array, value: [] }, tab: { type: String, value: '' }, applyState: { type: String, value: '' }, openIds: { type: Array, value: [], } , isShowCheck: { type: Boolean, value: false, }, paymentPage: { type: Boolean, value: false, }, superior: { type: Boolean, value: false, } }, data: { sonPurchaseSaleMethodId: '', superiorPurchaseSaleMethodId: [], activeValues: [1, 2], webpageSrc: '', cloudShoppingCart: [] }, ready() { this.setData({ }) console.log('准备'); }, onShow() { debugger this.setData({ sonPurchaseSaleMethodId: '' }) }, onLoad() { this.setData({ sonPurchaseSaleMethodId: '' }) }, observers: { 'openIds': function (newValue) { // var myEventDetail = { // } // var myEventOption = { // bubbles: true, // composed: true // } // this.triggerEvent('handleTree', myEventDetail, myEventOption) } }, methods: { handleList(tree) { for (let index = 0; index < tree.length; index++) { const item = tree[index]; if (item.sysType == 'CmsItem' && !item.checked) { } if (item.children && item.children.length > 0) { this.handleList(item.children) } } }, // 节点展开 handleChange(e) { this.setData({ openIds: e.detail.value, }); }, handleCheck(data) { for (let index = 0; index < data.length; index++) { const element = data[index]; element.checked = true if (element.childrenCount && element.type == "productFolder") { handleCheck(element.children) } } }, downloadTeach(e) { const value = e.currentTarget.dataset.value var myEventDetail = { value, } // detail对象,提供给事件监听函数 var myEventOption = { bubbles: true, composed: true } // 触发事件的选项 this.triggerEvent('downloadTeach', myEventDetail, myEventOption) }, // 判断资源是否购买 resourceIsBuy(data) { if (data.saleMethod && data.saleMethod.length) { if (data.saleMethod[0].State == 'Disable') return false const isSHow = this.properties.buyIds.some((item) => item == data.saleMethod[0].Id) return !isSHow } else { return false } }, // 跳转音视频播放器 goPlayer(e) { if (this.properties.isShowCheck) return true const item = e.currentTarget.dataset.item const parent = e.currentTarget.dataset.parent let url if (item.selectType == 'video' || item.learnSelectType == 'video') { url = '/packageDomain/pages/resourceDetails/myVideo/index' } else if (item.selectType == 'audio' || item.learnSelectType == 'audio') { url = '/packageDomain/pages/resourceDetails/myAudio/index' } else if (item.selectType == 'picture' || item.selectType == 'zip') { url = '/packageDomain/pages/resourceDetails/document/index' } if (this.properties.tab == 'jsek_cloudLearning' && this.resourceIsBuy(item)) { return wx.showToast({ icon: 'error', title: '请先购买该资源', }) } wx.navigateTo({ url: `${url}?productLinkPath=${item.productLinkPath}&parentProductLinkPath=${parent.productLinkPath}&parentName=${parent.name}&activeId=${item.id}&bookId=${this.properties.bookInfo.id}&bookName=${this.properties.bookInfo.name}&cmsId=${this.properties.bookInfo.rootCmsItemId}`, }) if (item.selectType == 'document' || item.selectType == 'pdf') { const fileLink = app.config.requestCtx + '/file/api/ApiDownload?md5=' + item.file console.log(fileLink, 'fileLink'); //提示加载中 util.showLoading() // 单次下载允许的最大文件为 200MB wx.downloadFile({ url: fileLink, // 地址已打码,自己换个其他的地址("https://www.xxxxx.com/file/测试通知.pdf") success: function (res) { console.log(res, "wx.downloadFile success res") if (res.statusCode != 200) { util.hideLoadingWithErrorTips() return false } var Path = res.tempFilePath //返回的文件临时地址,用于后面打开本地预览所用 wx.openDocument({ filePath: Path, showMenu: true, success: function (res) { console.log('打开成功'); util.hideLoading() } }) }, fail: function (err) { console.log(err, "wx.downloadFile fail err"); util.hideLoadingWithErrorTips() } }) } if (item.selectType == 'webpage') { console.log(11); this.setData({ webpageSrc: item.jsek_link }) console.log(this.data.webpageSrc, 'webpageSrc'); } }, // 拿到所有项 getAllChildren(id) { let result = []; function findChildren(item) { if (item.id === id) { if (item.children && item.children.length > 0) { item.children.forEach(child => { findChildren(child); }); } } else { if (item.children && item.children.length > 0) { item.children.forEach(child => { findChildren(child); }); } } if (item.children && item.children.length > 0) { result.push(...item.children); } } console.log(this.properties.treeList, 'this.properties.treeList'); this.properties.treeList.forEach(item => { findChildren(item); }); return result; }, // 拿到当前项子项 flattenTree(tree) { let result = []; function flatten(node) { result.push(node); if (node.children && node.children.length > 0) { node.children.forEach(child => { flatten(child); }); } } tree.forEach(node => { flatten(node); }); // console.log(result, 'result'); return result }, // 变为true findAndUpdateItemsByIds(tree, ids) { function findAndUpdate(node) { if (ids.includes(node.id)) { // console.log(node, 'node'); node.checked = !node.checked // 将目标项的 check 属性设置为 true } if (node.children && node.children.length > 0) { for (let child of node.children) { findAndUpdate(child); // 递归处理子节点 } } } for (let node of tree) { findAndUpdate(node); // 对每个顶层节点执行查找和更新操作 } // console.log(tree, 'tree345'); return tree; // 返回修改后的完整数组 }, checkResoucrceInfo(tree, id) { function findAndUpdate(node) { if (node.sysType == 'CmsFolder' && node.children.length > 0) { for (let index = 0; index < node.children.length; index++) { const element = node.children[index]; findAndUpdate(element) } } else if (id == node.id && node.sysType == "CmsItem") { node.checked = !node.checked // 将目标项的 check 属性设置为 true } } for (let node of tree) { findAndUpdate(node); // 对每个顶层节点执行查找和更新操作 } return tree; // 返回修改后的完整数组 }, checkAll() { const ids = [] const list = [] this.properties.treeList.forEach(item => { if (item.children && item.children.length > 0) { list.push(...this.flattenTree([item])) } }) list.forEach(item => { ids.push(item.id) }) const updataList = this.findAndUpdateItemsByIds(this.properties.treeList, ids); this.setData({ treeList: updataList }) }, // 章节勾选 checkResourceTitle(e) { // 这个时候checked的值是fals let checkResourceTitleList = [] const item = e.currentTarget.dataset.item // let list = this.flattenTree([item]) let ids = [] list.forEach(item => { ids.push(item.id) }) // console.log(list, 'list789'); const updatedTreeList = this.findAndUpdateItemsByIds(this.properties.treeList, ids); this.setData({ treeList: updatedTreeList // 更新 treeList 数据 }); if (!list.checked) { if (this.properties.superior) { console.log(852); this.properties.superior = false this.setData({ superiorPurchaseSaleMethodId: [] }) } if (!this.properties.superior) { this.setData({ superiorPurchaseSaleMethodId: list }) } } // console.log(this.data.superiorPurchaseSaleMethodId, 'superiorPurchaseSaleMethodId'); list.forEach(items => { console.log(items.checked, 'itesasd'); if (!items.checked) { this.setData({ cloudShoppingCart: items }) } }) // this.onCloudShoppingCart() }, // 子项勾选 checkResource(e) { const citem = e.currentTarget.dataset.item console.log(citem, '5648'); const updataList = this.checkResoucrceInfo(this.properties.treeList, citem.id) console.log(citem.checked, 'citem.checked'); if (!citem.checked) { //选中的时候添加id let sonPurchaseSaleMethodId = this.data.sonPurchaseSaleMethodId || [] console.log(this.properties.paymentPage, 'this.properties.paymentPage'); if (this.properties.paymentPage) { console.log(789987); sonPurchaseSaleMethodId = [] this.properties.paymentPage = false } if (!this.properties.paymentPage) { sonPurchaseSaleMethodId.push(citem.saleMethod[0].Id) } this.setData({ sonPurchaseSaleMethodId: sonPurchaseSaleMethodId }) console.log(this.data.sonPurchaseSaleMethodId); } else { // 取消选中的时候删除id } this.setData({ treeList: updataList, }) }, // 加入购物车 async onCloudShoppingCart() { let requests = [] const item = this.data.cloudShoppingCart console.log(item, 'item'); item.forEach((items) => { if (items.saleMethod.length) { requests.push({ saleMethodId: items.saleMethod[0].Id, count: 1 }) } }) let query = { remarks: '云学习', requests } // 查询订单 let initOrderRes = await app.MG.store.initOrder(query) let parameter = { orderNum: initOrderRes.orderNumber } const confirmOrderRes = await app.MG.store.confirmOrder(parameter) // if (confirmOrderRes.orderNumber) { // wx.navigateTo({ // url: `/pages/cart/paymentPage/index?orderNumber=${confirmOrderRes.orderNumber}`, // }) // requests = [] // } }, }, onCheckAllChange(e) { // debugger // console.log('checkbox', e.detail.value); // this.setData({ // checkAllValues: event.detail, // }); } })