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: '' }, openTeachids: { type: Array, value: '' }, openLearnids: { type: Array, value: "" } }, data: { activeValues: [0], webpageSrc: '', cloudShoppingCart: [] }, onShow() { }, methods: { // 节点展开 handleChange(e) { // console.log(this.properties.treeList, 'this.properties.treeList'); this.setData({ activeValues: e.detail.value, }); // console.log('传递', this.properties.buyIds); }, 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) { const isSHow = buyIdList.value.some((item) => item == data.saleMethod[0].Id) return !isSHow } else { return false } }, // 跳转音视频播放器 goPlayer(e) { console.log(e); // debugger const item = e.currentTarget.dataset.item const parent = e.currentTarget.dataset.parent let url if (item.selectType == 'video') { url = '/packageDomain/pages/resourceDetails/myVideo/index' } else if (item.selectType == 'audio') { url = '/packageDomain/pages/resourceDetails/myAudio/index' } else if (item.selectType == 'picture' || item.selectType == 'zip') { url = '/packageDomain/pages/resourceDetails/document/index' } // else { // // } 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 }, findAndUpdateItemById(tree, id) { function findAndUpdate(node) { if (node.id === id) { node.check = true; // 将目标项的 check 属性设置为 true return true; // 返回 true 表示找到了目标项 } if (node.children && node.children.length > 0) { for (let child of node.children) { if (findAndUpdate(child)) { return true; // 如果在子节点中找到了目标项,则直接返回 true } } } return false; // 表示未找到目标项 } for (let node of tree) { if (findAndUpdate(node)) { break; // 如果在顶层节点中找到了目标项,直接退出循环 } } }, // 变为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; // 返回修改后的完整数组 }, // 章节勾选 checkResourceTitle(e) { // 这个时候checked的值是fals const item = e.currentTarget.dataset.item let list = this.flattenTree([item]) let ids = [] list.forEach(item => { ids.push(item.id) }) const updatedTreeList = this.findAndUpdateItemsByIds(this.properties.treeList, ids); // console.log(updatedTreeList, 'updatedTreeList'); //这个时候checked的值就变成了true this.setData({ treeList: updatedTreeList // 更新 treeList 数据 }); console.log(list, 'list'); list.forEach(items => { console.log(items.checked, 'itesasd'); if (!items.checked) { this.setData({ cloudShoppingCart: items }) } }) this.onCloudShoppingCart() }, // 子项勾选 checkResource(e) { const item = e.currentTarget.dataset.item // let list = this.flattenTree([item]) // console.log(list, 'list121'); // let ids = [] // list.forEach(items => { // console.log(items.id, 'itemsId'); // ids.push(items.id) // }) }, // 加入购物车 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 = [] // } }, }, })