|
import Message from 'tdesign-miniprogram/message/message';
|
const util = require('./components/util') // 引入封装过的加载提示
|
const app = getApp()
|
Component({
|
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: ''
|
},
|
onShow() {
|
|
},
|
|
|
methods: {
|
// 节点展开
|
handleChange(e) {
|
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.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);
|
});
|
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)) {
|
node.checked = true; // 将目标项的 check 属性设置为 true
|
}
|
if (node.children && node.children.length > 0) {
|
for (let child of node.children) {
|
findAndUpdate(child); // 递归处理子节点
|
}
|
}
|
}
|
|
for (let node of tree) {
|
findAndUpdate(node); // 对每个顶层节点执行查找和更新操作
|
}
|
return tree; // 返回修改后的完整数组
|
},
|
// 章节勾选
|
checkResourceTitle(e) {
|
const item = e.currentTarget.dataset.item
|
console.log(item, 'item');
|
let list = this.flattenTree([item])
|
let ids = []
|
list.forEach(item => {
|
ids.push(item.id)
|
})
|
const tab = this.findAndUpdateItemsByIds([item], ids)
|
console.log(ids, tab);
|
}
|
},
|
onCloudShoppingCart() {
|
console.log(this.properties.treeList);
|
},
|
oncheckbox() {
|
console.log(111);
|
},
|
logdata(e) {
|
console.log(e);
|
}
|
})
|