From 51ad1f2614bc1f976aad98254649bb3c207332ee Mon Sep 17 00:00:00 2001 From: 闫增涛 <1829501689@qq.com> Date: 星期三, 11 九月 2024 16:50:35 +0800 Subject: [PATCH] 转换树结构方法优化 --- packageBookService/pages/bookServices/detail/buyResource/index.js | 213 ++--------------------------------------------------- 1 files changed, 9 insertions(+), 204 deletions(-) diff --git a/packageBookService/pages/bookServices/detail/buyResource/index.js b/packageBookService/pages/bookServices/detail/buyResource/index.js index a074c5d..62d3e99 100644 --- a/packageBookService/pages/bookServices/detail/buyResource/index.js +++ b/packageBookService/pages/bookServices/detail/buyResource/index.js @@ -125,9 +125,9 @@ }, // 鎵佸钩鍖栨暟鎹浆鎹ree - getTreeList(rootList, pathLength, newArr, path) { + getTreeList(rootList, newArr, path) { for (const item of rootList) { - if ((pathLength - item.productLinkPath.length >= 0 && pathLength - item.productLinkPath.length <= 3) && item.productLinkPath.includes(path)) { + if (path == item.productLinkPath.replace('\\' + item.id, '')) { if (item.sysType == 'CmsItem') { if (item.selectType == 'webpage') { item.disabled = true @@ -140,7 +140,6 @@ if (item.fileMap[item.file].protectType == 'Private') item.disabled = true } } - // newArr.push(item) // 鍦ㄦ彃鍏ヨ繃绋嬩腑瀵规暟鎹繘琛屾帓搴� 骞朵笖鍘婚櫎宸茬粡棰嗗彇鍜岃喘涔扮殑 if (item.sysType == 'CmsFolder') { newArr = this.insertAndSortObjectsByProductLinkPath(newArr, item) @@ -152,7 +151,7 @@ //缁欐暟缁勯噷闈㈠啀娣诲姞涓�涓猚hildren鐨勭┖鏁扮粍 for (const i of newArr) { i.children = [] - this.getTreeList(rootList, pathLength + 6, i.children, i.productLinkPath) + this.getTreeList(rootList, i.children, i.productLinkPath) if (i.children.length == 0) { delete i.children } @@ -179,8 +178,7 @@ // 鎺掑簭鏁扮粍 鎸夌収productLinkPath insertAndSortObjectsByProductLinkPath(array, newObj) { // 鏌ユ壘鏂板璞″簲璇ユ彃鍏ョ殑浣嶇疆 - let insertIndex = array.findIndex(obj => Number(newObj.productLinkPath.substring(newObj.productLinkPath.length - 6, newObj.productLinkPath.length)) < Number(obj.productLinkPath.substring(obj.productLinkPath.length - 6, obj.productLinkPath.length))); - + let insertIndex = array.findIndex(obj => newObj.id < obj.id); // 濡傛灉娌℃湁鎵惧埌鍚堥�傜殑浣嶇疆锛屽垯鏀惧湪鏁扮粍鏈熬 if (insertIndex === -1) { insertIndex = array.length; @@ -190,16 +188,10 @@ // 娴嬭瘯6 姝e紡5 // 瀵规暟缁勮繘琛屾帓搴� array.sort((a, b) => { - if (Number(a.productLinkPath.substring(a.productLinkPath.length - 5, a.productLinkPath.length)) < Number(b.productLinkPath.substring(b.productLinkPath.length - 5, b.productLinkPath.length))) { - return -1; - } - if (Number(a.productLinkPath.substring(a.productLinkPath.length - 5, a.productLinkPath.length)) > Number(b.productLinkPath.substring(b.productLinkPath.length - 5, b.productLinkPath.length))) { - return 1; - } - // a must be equal to b + if (a.id < b.id) return -1; + if (a.id > b.id) return 1; return 0; }); - // 杩斿洖鏇存柊鍚庣殑鏁扮粍 return array; }, @@ -272,23 +264,12 @@ if (type.value == item.resourcesClassification) item.resourceClass = type.name; }); - if (this.data.tabValue == "jsek_teachingResources") {} else if (this.data.tabValue == "jsek_cloudLearning") { - item.isbuy = this.isShowNeedBuy(item); - item.isShopCar = this.isShoppingCart(item); - } + item.isbuy = this.isShowNeedBuy(item); + item.isShopCar = this.isShoppingCart(item); } }); // 鏄剧ず 闇�瑕佽喘涔扮殑鍜岄渶瑕佸厤璐归鍙栫殑 - // const arr = res.datas.cmsDatas[0].datas.filter(item => this.resourceIsBuy(item)) - // if (!arr.length) { - // return this.setData({ - // loading: false, - // haider: true, - // noData: true - // }) - // } - const num = query.cmsPath.length + 6 - this.getTreeList(res.datas.cmsDatas[0].datas, num, list, '\\') + this.getTreeList(res.datas.cmsDatas[0].datas, list, query.cmsPath) list = this.ensureTreeConsistency(list) list = this.changeResourceChildren(list) console.log('淇敼鍚庝簯', list); @@ -322,156 +303,6 @@ }) }, - // 鑾峰彇鏁欏璧勬簮 浜戝涔� 浜戞祴璇� - 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, - }); - } - console.log(list, '浜戝缈�'); - } 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: [], - learnSelectType: [], - }, - 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.isShowNeedBuy(item); - item.isShopCar = this.isShoppingCart(item); - }); - return data.datas.cmsDatas[0].datas; - }, async getBookInfo(id) { this.setData({ "mockData'.id": 0, @@ -515,38 +346,12 @@ bookDetail: res.datas, buyIdList: res.datas.purchasedSaleMethodIdList, }); - // this.getResourceData({ - // productLinkPath: this.data.productLinkPath, - // refCode: this.data.refCode, - // }); - // this.getResourceCode( - // res.datas.id, - // res.datas.rootCmsItemId - // ) this.getResourceDataList({ productLinkPath: this.data.productLinkPath, refCode: this.data.refCode, }) }); - }, - getResourceCode(bookId, cmsId) { - let query = { - path: '*', - queryType: '*', - productId: bookId, - cmsPath: cmsId, - itemFields: { - SysType: 'Cms' - }, - pading: { - start: 99, - size: 0 - } - } - app.MG.store.getProductDetail(query).then(res => { - console.log('鍥句功璧勬簮', res.datas.cmsDatas[0].datas); - }) }, // 鑾峰彇宸茶喘涔板晢鍝� getShoppingCartProductGet() { -- Gitblit v1.9.1