| | |
| | | const util = require('./components/util') // 引入封装过的加载提示 |
| | | const util = require("./components/util"); // 引入封装过的加载提示 |
| | | import { |
| | | loginInfo |
| | | } from '../../../../../../assets/js/login' |
| | | const app = getApp() |
| | | } from "../../../../../../assets/js/login"; |
| | | const app = getApp(); |
| | | Component({ |
| | | // checked: false, |
| | | |
| | | properties: { |
| | | treeList: { |
| | | type: Array, |
| | | value: [] |
| | | value: [], |
| | | }, |
| | | learnList: { |
| | | type: Array, |
| | | value: [], |
| | | }, |
| | | bookInfo: { |
| | | type: Object, |
| | | value: {} |
| | | value: {}, |
| | | }, |
| | | buyIds: { |
| | | type: Array, |
| | | value: [] |
| | | value: [], |
| | | }, |
| | | tab: { |
| | | type: String, |
| | | value: '' |
| | | value: "", |
| | | }, |
| | | applyState: { |
| | | type: String, |
| | | value: '' |
| | | value: "", |
| | | }, |
| | | openIds: { |
| | | type: Array, |
| | |
| | | superior: { |
| | | type: Boolean, |
| | | value: false, |
| | | }, |
| | | checkAllState: { |
| | | type: Boolean, |
| | | }, |
| | | deadline: { |
| | | type: String, |
| | | }, |
| | | cloundMenuIsBuy: { |
| | | type: Boolean |
| | | } |
| | | }, |
| | | data: { |
| | | sonPurchaseSaleMethodId: '', |
| | | superiorPurchaseSaleMethodId: [], |
| | | activeValues: [1, 2], |
| | | webpageSrc: '', |
| | | webpageSrc: "", |
| | | cloudShoppingCart: [], |
| | | selectAll: [], |
| | | shoppingCart: true, |
| | | stop: false, |
| | | cart: true, |
| | | canExecute: true, |
| | | purchaseList: [] |
| | | }, |
| | | ready() { |
| | | this.setData({ |
| | | ready() {}, |
| | | |
| | | }) |
| | | console.log('准备'); |
| | | }, |
| | | |
| | | onLoad() { |
| | | this.setData({ |
| | | sonPurchaseSaleMethodId: [] |
| | | }) |
| | | console.log(this.data.sonPurchaseSaleMethodId, 'sonPurchaseSaleMethodId789'); |
| | | }, |
| | | onLoad() {}, |
| | | observers: { |
| | | 'openIds': function (newValue) { |
| | | // var myEventDetail = { |
| | | // } |
| | | // var myEventOption = { |
| | | // bubbles: true, |
| | | // composed: true |
| | | // } |
| | | // this.triggerEvent('handleTree', myEventDetail, myEventOption) |
| | | } |
| | | treeList: function (newValue) { |
| | | const list = []; |
| | | let checked = ""; |
| | | this.properties.treeList.forEach((item) => { |
| | | if (item.children && item.children.length > 0) { |
| | | list.push(...this.flattenTree([item])); |
| | | } |
| | | }); |
| | | const flag = list.findIndex((item) => item.checked == true); |
| | | }, |
| | | }, |
| | | |
| | | methods: { |
| | | handleList(tree) { |
| | | for (let index = 0; index < tree.length; index++) { |
| | | const item = tree[index]; |
| | | if (item.sysType == 'CmsItem' && !item.checked) { |
| | | |
| | | } |
| | | if (item.sysType == "CmsItem" && !item.checked) {} |
| | | if (item.children && item.children.length > 0) { |
| | | this.handleList(item.children) |
| | | this.handleList(item.children); |
| | | } |
| | | } |
| | | }, |
| | | // 遍历树结构转换为数组方法 |
| | | handleTreeData(array) { |
| | | const flattenedArray = []; |
| | | array.forEach((node) => { |
| | | // 将当前节点添加到展开的数组中 |
| | | flattenedArray.push(node); |
| | | // 递归处理子节点 |
| | | if (node.children && node.children.length > 0) { |
| | | const childrenArray = this.handleTreeData(node.children); |
| | | flattenedArray.push(...childrenArray); |
| | | } |
| | | }); |
| | | return flattenedArray; |
| | | }, |
| | | // 节点展开 |
| | | handleChange(e) { |
| | |
| | | handleCheck(data) { |
| | | for (let index = 0; index < data.length; index++) { |
| | | const element = data[index]; |
| | | element.checked = true |
| | | element.checked = true; |
| | | if (element.childrenCount && element.type == "productFolder") { |
| | | handleCheck(element.children) |
| | | handleCheck(element.children); |
| | | } |
| | | } |
| | | }, |
| | | downloadTeach(e) { |
| | | const value = e.currentTarget.dataset.value |
| | | const value = e.currentTarget.dataset.value; |
| | | var myEventDetail = { |
| | | value, |
| | | } // detail对象,提供给事件监听函数 |
| | | }; // detail对象,提供给事件监听函数 |
| | | var myEventOption = { |
| | | bubbles: true, |
| | | composed: true |
| | | } // 触发事件的选项 |
| | | this.triggerEvent('downloadTeach', myEventDetail, myEventOption) |
| | | |
| | | 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 |
| | | const saleData = data.saleMethod.find((item) => item.SaleType == 'Normal') |
| | | if (saleData.State == 'Disable') return false |
| | | const isSHow = this.properties.buyIds.some( |
| | | (item) => item == saleData.Id |
| | | ); |
| | | // 已经购买 |
| | | if (isShow) return false |
| | | // 未购买,查看销售方式是否过期 |
| | | if (!isShow) { |
| | | const flag = new Date(saleData.EndDate).getTime() >= new Date().getTime() && |
| | | new Date(saleData.BeginDate).getTime() <= new Date().getTime() |
| | | if (flag) { |
| | | // 为过期 ,需要购买 |
| | | return true |
| | | } else { |
| | | // 已过期 无需购买 |
| | | return false |
| | | } |
| | | } |
| | | } else { |
| | | return false |
| | | return false; |
| | | } |
| | | }, |
| | | // 跳转音视频播放器 |
| | | goPlayer(e) { |
| | | // 检查登录状态 |
| | | const token = wx.getStorageSync(app.config.tokenKey) |
| | | if (!token) { |
| | | loginInfo(app, (data) => { |
| | | // 如果不是第一次登录,会执行回调 |
| | | if (data) { |
| | | // 登录成功,自动记录token和用户信息,并返回true |
| | | } else { |
| | | // 出现错误,返回false |
| | | } |
| | | const token = wx.getStorageSync(app.config.tokenKey); |
| | | if (!token) return false |
| | | const item = e.currentTarget.dataset.item; |
| | | const parent = e.currentTarget.dataset.parent; |
| | | const parentProductLinkPath = parent ? |
| | | parent.productLinkPath : |
| | | wx.getStorageSync("teachResourcesPath"); |
| | | const parentName = parent ? parent.name : "教学资源"; |
| | | // 资源购买页面(只展示未购买资源) 点击不跳转 |
| | | if (this.properties.isShowCheck) return false; |
| | | if (item.selectType == "webpage") { |
| | | // 网页类型跳转到网址复制页,因为url传参不能传 带参数的网络地址,所以此处要把网络地址里的传参摘出来,放到url里 |
| | | let urlData = '' |
| | | const flags = item.jsek_link.indexOf("?") |
| | | if (flags > -1) { |
| | | urlData = item.jsek_link.slice(flags + 1, item.jsek_link.length) |
| | | } |
| | | url = '/packageBookService/pages/bookServices/linkPage/index' |
| | | return wx.navigateTo({ |
| | | url: urlData ? url + `?path=${item.jsek_link.slice(0,flags)}` + '&' + urlData : url + `?path=${item.jsek_link}` |
| | | }) |
| | | } else { |
| | | const item = e.currentTarget.dataset.item |
| | | const parent = e.currentTarget.dataset.parent |
| | | let url |
| | | if (this.properties.isShowCheck && this.resourceIsBuy(item)) { |
| | | } |
| | | if (!item.file && !item.freeFile && !item.protectedFile) { |
| | | return wx.showToast({ |
| | | icon: 'error', |
| | | title: '暂无资源', |
| | | }) |
| | | } |
| | | if (item.selectType == 'zip') { |
| | | if (this.properties.applyState == 'Normal') { |
| | | return wx.showToast({ |
| | | icon: 'error', |
| | | title: "请先购买资源" |
| | | title: '请前往PC端下载', |
| | | }) |
| | | } |
| | | 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)) { |
| | | } else { |
| | | return wx.showToast({ |
| | | icon: 'error', |
| | | title: '请先购买该资源', |
| | | 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') { |
| | | this.setData({ |
| | | webpageSrc: item.jsek_link |
| | | }) |
| | | console.log(this.data.webpageSrc, 'webpageSrc'); |
| | | } |
| | | } |
| | | if (this.properties.tab == "jsek_teachingResources" && (item.file || item.freeFile)) { |
| | | let file = item.fileMap[item.file] ? item.fileMap[item.file] : item.fileMap[item.freeFile] |
| | | if (file && file.protectType !== "Public") { |
| | | return wx.showToast({ |
| | | icon: "error", |
| | | title: "资源不可用,请联系管理员", |
| | | }); |
| | | } |
| | | } |
| | | if (this.properties.tab == "jsek_cloudLearning") { |
| | | // 判断父级或自身是否购买 |
| | | var myEventOption = { |
| | | bubbles: true, |
| | | composed: true, |
| | | }; |
| | | // 出发判断云学习是否购买判断 |
| | | this.triggerEvent("getCloundIsBuy", {}, myEventOption) |
| | | if (!this.properties.cloundMenuIsBuy) { |
| | | // 云学习未购买,查找以购买的目录和资源本身 |
| | | const learn = this.handleTreeData(this.properties.treeList).filter( |
| | | (citem) => citem.saleMethod && |
| | | citem.saleMethod.find((ditem) => ditem.SaleType == 'Normal') && |
| | | new Date(citem.saleMethod.find((ditem) => ditem.SaleType == 'Normal').EndDate).getTime() >= new Date().getTime() && |
| | | new Date(citem.saleMethod.find((ditem) => ditem.SaleType == 'Normal').BeginDate).getTime() <= new Date().getTime() && |
| | | item.productLinkPath.includes(citem.productLinkPath) |
| | | ) |
| | | // 资源和父级目录都无销售方式 |
| | | // if (!learn.length) return wx.showToast({ |
| | | // icon: 'error', |
| | | // title: '暂未开售', |
| | | // }) |
| | | const buyList = learn.filter((citem) => this.properties.buyIds.includes(citem.saleMethod.find((ditem) => ditem.SaleType == 'Normal').Id)) |
| | | // 资源和本身都未购买 |
| | | if (!buyList.length) { |
| | | const itemSaleMethod = item.saleMethod && item.saleMethod.length ? item.saleMethod.find(citem => citem.SaleType == 'Normal') : undefined |
| | | return wx.showToast({ |
| | | icon: 'error', |
| | | title: itemSaleMethod && itemSaleMethod.Price == 0 ? '请先领取资源' : '请先购买资源', |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | let url; |
| | | if (item.selectType == "video" || item.learnSelectType == "video") { |
| | | url = "/packageDomain/pages/resourceDetails/myVideo/index"; |
| | | } |
| | | if ( |
| | | item.selectType == "audio" || |
| | | item.learnSelectType == "audio" |
| | | ) { |
| | | url = "/packageDomain/pages/resourceDetails/myAudio/index"; |
| | | } |
| | | if (item.selectType == "picture") { |
| | | url = "/packageDomain/pages/resourceDetails/document/index"; |
| | | } |
| | | wx.navigateTo({ |
| | | url: `${url}?productLinkPath=${item.productLinkPath}&parentProductLinkPath=${parentProductLinkPath}&parentName=${parentName}&activeId=${item.id}&bookId=${this.properties.bookInfo.id}&bookName=${this.properties.bookInfo.name}&cmsId=${this.properties.bookInfo.rootCmsItemId}&formPath=${this.properties.tab}&applyState=${this.properties.applyState}&deadline=${this.properties.deadline}`, |
| | | }); |
| | | }, |
| | | |
| | | // 拿到所有项 |
| | | getAllChildren(id) { |
| | | let result = []; |
| | |
| | | function findChildren(item) { |
| | | if (item.id === id) { |
| | | if (item.children && item.children.length > 0) { |
| | | item.children.forEach(child => { |
| | | item.children.forEach((child) => { |
| | | findChildren(child); |
| | | }); |
| | | } |
| | | } else { |
| | | if (item.children && item.children.length > 0) { |
| | | item.children.forEach(child => { |
| | | item.children.forEach((child) => { |
| | | findChildren(child); |
| | | }); |
| | | } |
| | |
| | | result.push(...item.children); |
| | | } |
| | | } |
| | | console.log(this.properties.treeList, 'this.properties.treeList'); |
| | | this.properties.treeList.forEach(item => { |
| | | this.properties.treeList.forEach((item) => { |
| | | findChildren(item); |
| | | }); |
| | | return result; |
| | |
| | | function flatten(node) { |
| | | result.push(node); |
| | | if (node.children && node.children.length > 0) { |
| | | node.children.forEach(child => { |
| | | node.children.forEach((child) => { |
| | | flatten(child); |
| | | }); |
| | | } |
| | | } |
| | | tree.forEach(node => { |
| | | tree.forEach((node) => { |
| | | flatten(node); |
| | | }); |
| | | // console.log(result, 'result'); |
| | | return result |
| | | return result; |
| | | }, |
| | | |
| | | // 变为true |
| | | findAndUpdateItemsByIds(tree, ids, state) { |
| | | function findAndUpdate(node) { |
| | | if (ids.includes(node.id)) { |
| | | // console.log(node, 'node'); |
| | | node.checked = state // 将目标项的 check 属性设置为 true |
| | | node.checked = state; // 将目标项的 check 属性设置为 true |
| | | } |
| | | if (node.children && node.children.length > 0) { |
| | | for (let child of node.children) { |
| | |
| | | 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 = [] |
| | | let checked = '' |
| | | this.properties.treeList.forEach(item => { |
| | | wx.showLoading() |
| | | const ids = []; |
| | | let list = []; |
| | | let checked = ""; |
| | | this.properties.treeList.forEach((item) => { |
| | | if (item.children && item.children.length > 0) { |
| | | list.push(...this.flattenTree([item])) |
| | | list.push(...this.flattenTree([item])); |
| | | } |
| | | }) |
| | | list.forEach(item => { |
| | | ids.push(item.id) |
| | | checked = item.checked |
| | | }) |
| | | const flag = list.findIndex(item => item.checked == false) > -1 ? true : false |
| | | const updataList = this.findAndUpdateItemsByIds(this.properties.treeList, ids, flag); |
| | | console.log(checked, 'list'); |
| | | if (!checked) { |
| | | this.setData({ |
| | | selectAll: list |
| | | }) |
| | | } |
| | | this.setData({ |
| | | treeList: updataList |
| | | }) |
| | | }); |
| | | list = list.filter(item => !item.disabled) |
| | | list.forEach((item) => { |
| | | ids.push(item.id); |
| | | checked = item.checked; |
| | | }); |
| | | const flag = this.properties.checkAllState; |
| | | var myEventDetail = { |
| | | ids, |
| | | flag, |
| | | }; |
| | | var myEventOption = { |
| | | bubbles: true, |
| | | composed: true, |
| | | }; |
| | | this.triggerEvent("changeListChecked", myEventDetail, myEventOption); |
| | | var myEventDetail = { |
| | | value: !flag, |
| | | }; // detail对象,提供给事件监听函数 |
| | | var myEventOption = { |
| | | bubbles: true, |
| | | composed: true, |
| | | }; // 触发事件的选项 |
| | | this.triggerEvent("changeCheckAll", myEventDetail, myEventOption); |
| | | wx.hideLoading() |
| | | }, |
| | | |
| | | // 章节勾选 |
| | | checkResourceTitle(e) { |
| | | const flag = e.detail.checked |
| | | debugger |
| | | wx.showLoading() |
| | | const flag = e.detail.checked; |
| | | // 这个时候checked的值是fals |
| | | let checkResourceTitleList = [] |
| | | const item = e.currentTarget.dataset.item |
| | | // |
| | | let list = this.flattenTree([item]) |
| | | let ids = [] |
| | | list.forEach(item => { |
| | | const item = e.currentTarget.dataset.item; |
| | | const parent = this.findParentById(this.properties.learnList, item.id); |
| | | let childrenList = []; |
| | | let flagNum; |
| | | if (parent) |
| | | childrenList = parent.children.filter((citem) => citem.id !== item.id); |
| | | flagNum = childrenList.findIndex((item) => item.checked == false); |
| | | let list = this.flattenTree([item]); |
| | | list = list.filter(item => !item.disabled) |
| | | let ids = []; |
| | | list.forEach((item) => { |
| | | ids.push(item.id) |
| | | }) |
| | | // console.log(list, 'list789'); |
| | | const updatedTreeList = this.findAndUpdateItemsByIds(this.properties.treeList, ids, flag); |
| | | this.setData({ |
| | | treeList: updatedTreeList // 更新 treeList 数据 |
| | | }); |
| | | console.log(list, 'list.checked'); |
| | | if (!list.checked) { |
| | | this.setData({ |
| | | superiorPurchaseSaleMethodId: list |
| | | }) |
| | | var myEventDetail = { |
| | | ids, |
| | | flag, |
| | | }; // detail对象,提供给事件监听函数 |
| | | var myEventOption = { |
| | | bubbles: true, |
| | | composed: true, |
| | | }; // 触发事件的选项 |
| | | // 去勾选点击目录的子项 |
| | | this.triggerEvent("changeListChecked", myEventDetail, myEventOption); |
| | | // 去勾选点击目录的父项 |
| | | if (flagNum == -1 && parent && !parent.disabled) { |
| | | let checkedState; |
| | | var myEventDetail = { |
| | | ids: [parent.id], |
| | | flag, |
| | | }; |
| | | var myEventOption = { |
| | | bubbles: true, |
| | | composed: true, |
| | | }; |
| | | this.triggerEvent("changeListChecked", myEventDetail, myEventOption); |
| | | } |
| | | // console.log(this.data.superiorPurchaseSaleMethodId, 'superiorPurchaseSaleMethodId'); |
| | | list.forEach(items => { |
| | | console.log(items.checked, 'itesasd'); |
| | | list.forEach((items) => { |
| | | if (!items.checked) { |
| | | this.setData({ |
| | | cloudShoppingCart: items |
| | | }) |
| | | cloudShoppingCart: items, |
| | | }); |
| | | } |
| | | }) |
| | | }); |
| | | this.setData({ |
| | | openIds: this.data.openIds |
| | | }) |
| | | openIds: this.data.openIds, |
| | | }); |
| | | wx.hideLoading() |
| | | }, |
| | | // 子项勾选 |
| | | 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 |
| | | wx.showLoading() |
| | | const citem = e.currentTarget.dataset.item; |
| | | const parent = e.currentTarget.dataset.parent; |
| | | let outermost; |
| | | if (parent) |
| | | outermost = this.findParentById(this.properties.learnList, parent.id); |
| | | const childrenList = parent.children.filter( |
| | | (item) => item.id !== citem.id && item.saleMethod.length |
| | | ); |
| | | const flag = childrenList.findIndex((item) => item.checked == false); |
| | | // 改变该项checked |
| | | var myEventDetail = { |
| | | id: citem.id, |
| | | }; |
| | | var myEventOption = { |
| | | bubbles: true, |
| | | composed: true, |
| | | }; |
| | | this.triggerEvent("changeResourceChecked", myEventDetail, myEventOption); |
| | | // 通过判断,联通父级checked |
| | | if (flag == -1 && !parent.disabled) { |
| | | let checkedState; |
| | | citem.checked == false ? (checkedState = true) : (checkedState = false); |
| | | var myEventDetail = { |
| | | ids: [parent.id], |
| | | flag: checkedState, |
| | | }; |
| | | var myEventOption = { |
| | | bubbles: true, |
| | | composed: true, |
| | | }; |
| | | this.triggerEvent("changeListChecked", myEventDetail, myEventOption); |
| | | } |
| | | this.setData({ |
| | | treeList: updataList, |
| | | }) |
| | | // 联通最外层级checked ,如果有一个取消勾选,且当前最外层勾选,则取消最外层的勾选 |
| | | if (citem.checked && outermost && outermost.checked) { |
| | | var myEventDetail = { |
| | | ids: [outermost.id], |
| | | flag: false, |
| | | }; |
| | | var myEventOption = { |
| | | bubbles: true, |
| | | composed: true, |
| | | }; |
| | | this.triggerEvent("changeListChecked", myEventDetail, myEventOption); |
| | | } |
| | | // 联通最外层级checked, 如果所有子项勾选, 且当前最外层未勾选, 则加上最外层的勾选 |
| | | if (!citem.checked && outermost && !outermost.disabled) { |
| | | let allchildren = this.flattenTree([outermost]); |
| | | allchildren = allchildren.filter( |
| | | (item) => |
| | | item.sysType == "CmsItem" && |
| | | item.id !== citem.id && |
| | | item.saleMethod.length |
| | | ); |
| | | const satate = allchildren.findIndex((item) => item.checked == false); |
| | | if (satate == -1) { |
| | | var myEventDetail = { |
| | | ids: [outermost.id], |
| | | flag: true, |
| | | }; |
| | | var myEventOption = { |
| | | bubbles: true, |
| | | composed: true, |
| | | }; |
| | | this.triggerEvent("changeListChecked", myEventDetail, myEventOption); |
| | | } |
| | | } |
| | | wx.hideLoading() |
| | | }, |
| | | // 加入购物车 |
| | | async onCloudShoppingCart(e) { |
| | | |
| | | let shoppingCartGetId = [] |
| | | const saleMethodId = e.currentTarget.dataset.item.saleMethod[0].Id |
| | | console.log(saleMethodId); |
| | | let shoppingCartGetId = []; |
| | | const item = e.currentTarget.dataset.item; |
| | | const saleMethodId = e.currentTarget.dataset.item.saleMethod[0].Id; |
| | | let query = { |
| | | start: 0, |
| | | size: 999, |
| | | filterList: [], |
| | | searchList: [] |
| | | } |
| | | |
| | | const res = await app.MG.store.getShoppingCartProductList(query) |
| | | res.datas.forEach(item => { |
| | | shoppingCartGetId.push(item.saleMethod.id) |
| | | }) |
| | | searchList: [], |
| | | }; |
| | | const res = await app.MG.store.getShoppingCartProductList(query); |
| | | res.datas.forEach((item) => { |
| | | shoppingCartGetId.push(item.saleMethod.id); |
| | | }); |
| | | if (shoppingCartGetId.includes(saleMethodId)) { |
| | | console.log(111); |
| | | |
| | | wx.showToast({ |
| | | icon: 'error', |
| | | title: '已添加', |
| | | }) |
| | | icon: "error", |
| | | title: "已添加", |
| | | }); |
| | | this.setData({ |
| | | shoppingCart: false |
| | | }) |
| | | shoppingCart: false, |
| | | }); |
| | | } else { |
| | | let query = { |
| | | requests: [{ |
| | | saleMethodId: saleMethodId, |
| | | storeEventId: null, |
| | | // agentCode: '电子书' |
| | | }] |
| | | }, ], |
| | | }; |
| | | const addRes = await app.MG.store.addShoppingCart(query); |
| | | if (addRes) { |
| | | wx.showToast({ |
| | | icon: "success", |
| | | title: "添加成功", |
| | | }); |
| | | item.isShopCar = false; |
| | | var myEventDetail = { |
| | | id: item.id, |
| | | }; |
| | | var myEventOption = { |
| | | bubbles: true, |
| | | composed: true, |
| | | }; |
| | | this.triggerEvent("updateCloudLearning", myEventDetail, myEventOption); |
| | | } |
| | | const addRes = await app.MG.store.addShoppingCart(query) |
| | | console.log(addRes, 'addRes'); |
| | | wx.showToast({ |
| | | icon: 'success', |
| | | title: '添加成功', |
| | | }) |
| | | } |
| | | |
| | | }, |
| | | sadd() { |
| | | this.triggerEvent("updateShoppingCartHidden"); |
| | | this.triggerEvent("updateCloudLearning"); |
| | | }, |
| | | findParentById(arr, id) { |
| | | for (let i = 0; i < arr.length; i++) { |
| | | const item = arr[i]; |
| | | // 检查当前项是否匹配(即它是不是我们要找的项) |
| | | if (item.id === id) { |
| | | // 如果当前项就是我们要找的项,则它没有父级,返回 null |
| | | return null; |
| | | } |
| | | // 递归查找当前项的子项 |
| | | const child = this.findChildById(item.children, id); |
| | | if (child) { |
| | | // 如果在子项中找到匹配的项,返回当前项作为父级 |
| | | return item; |
| | | } |
| | | } |
| | | // 如果没有找到匹配的父项,返回 null |
| | | return null; |
| | | }, |
| | | // 辅助函数,用于递归查找子项 |
| | | findChildById(children, id) { |
| | | if (!children) { |
| | | return null; |
| | | } |
| | | for (let i = 0; i < children.length; i++) { |
| | | const child = children[i]; |
| | | if (child.id === id) { |
| | | // 如果找到匹配的项,返回它 |
| | | return child; |
| | | } |
| | | // 递归检查子项的子项 |
| | | const subChild = this.findChildById(child.children, id); |
| | | if (subChild) { |
| | | return subChild; |
| | | } |
| | | } |
| | | // 如果没有找到匹配的项,返回 null |
| | | return null; |
| | | }, |
| | | }, |
| | | |
| | | catchtap() {} |
| | | }) |
| | | }); |