From 75a9abca4f4cf0ebe579705abc369489cfe20e7c Mon Sep 17 00:00:00 2001 From: litian <C21AF165> Date: 星期五, 28 六月 2024 11:16:37 +0800 Subject: [PATCH] 小程序,课程 --- pages/digitalCourses/digitalCoursesDetails/index.js | 357 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 326 insertions(+), 31 deletions(-) diff --git a/pages/digitalCourses/digitalCoursesDetails/index.js b/pages/digitalCourses/digitalCoursesDetails/index.js index 4c3d661..27e1095 100644 --- a/pages/digitalCourses/digitalCoursesDetails/index.js +++ b/pages/digitalCourses/digitalCoursesDetails/index.js @@ -1,5 +1,6 @@ // pages/digitalCourses/digitalCoursesDetails/index.js const app = getApp() +import moment from 'moment' import Toast from "tdesign-miniprogram/toast"; Page({ @@ -8,7 +9,9 @@ */ data: { loading: true, - digitalsData: [], + digitalsData: {}, + expire: false, //鍟嗗搧鎴栧瓙鍟嗗搧閿�鍞柟寮忔槸鍚﹁繃鏈� + isBuy: false, tabValue: 0, learnResourceIcon: { name: "/static/images/digitalTextbooks/shengshu-t@2x.png", @@ -43,20 +46,22 @@ }, dialogBox: false, - lecturerList: [{ - icon: '', - name: '鏋楀磭寰�', - title: '璁插笀', - introduce: '涓浗瀛︾敓鍙戝睍鏍稿績绱犲吇鐮斿埗棣栧腑涓撳锛屽洿缁曞ぇ涓皬瀛︽暀鏉愬缓璁惧紑灞曚簡涓�绯诲垪寮�鍒涙�с�佸鍩烘�у伐浣溿�傚缓绔嬪畬鍠勪簡鎴戝浗鍙戝睍蹇冪悊瀛︽暀鏉愪綋绯汇��' - }, - { - icon: '', - name: '鏋楀磭寰�', - title: '鏁欐巿', - introduce: '涓浗瀛︾敓鍙戝睍鏍稿績绱犲吇鐮斿埗棣栧腑涓撳锛屽洿缁曞ぇ涓皬瀛︽暀鏉愬缓璁惧紑灞曚簡涓�绯诲垪寮�鍒涙�с�佸鍩烘�у伐浣溿�傚缓绔嬪畬鍠勪簡鎴戝浗鍙戝睍蹇冪悊瀛︽暀鏉愪綋绯汇�備腑鍥藉鐢熷彂灞曟牳蹇冪礌鍏荤爺鍒堕甯笓瀹讹紝鍥寸粫澶т腑灏忓鏁欐潗寤鸿寮�灞曚簡涓�绯诲垪寮�鍒涙�с�佸鍩烘�у伐浣溿�傚缓绔嬪畬鍠勪簡鎴戝浗鍙戝睍蹇冪悊瀛︽暀鏉愪綋绯�' - } - ] - + lecturerList: [], + selectActive: 'learn', + learnList: [], + testList: [], + openTeachids: [], + onlineQuestionsList: [], + //鍒嗛〉 + page: 1, + limit: 6, + questionTotalCount: 0, + bottomLoading: false, + isMoreData: false, + noteList: [], + notePage: 1, + noteLimit: 6, + noteTotalCount: 0, }, formatDate(dateString) { if (!dateString) { @@ -162,7 +167,6 @@ }, digitalCoursesDetailsGet(digitalTextId) { - let query = { path: '*', queryType: '*', @@ -176,6 +180,7 @@ author: [], isbn: [], publicationDate: [], + speaker: [], bookClassification: [], paperPrice: [], JDLink: [], @@ -194,20 +199,59 @@ affiliatedUnit: [], publishingUnit: [], classHours: [], - productLinkPath: [] + productLinkPath: [], + //epub璇曡鐧惧垎姣� } } app.MG.store.getProductDetail(query).then(res => { console.log(res); + if (res.datas.purchasedSaleMethodIdList.includes(res.datas.defaultSaleMethodId)) { + this.setData({ + isBuy: true + }) + } else { + this.setData({ + isBuy: false + }) + } + let times = new Date(res.datas.defaultSaleMethod.endDate).getTime() + let startTime = new Date(res.datas.defaultSaleMethod.beginDate).getTime() + if (times < new Date().getTime() || new Date().getTime() < startTime) { + this.setData({ + expire: true + }) + } else { + this.setData({ + expire: res.false + }) + } res.datas.publicationDate = this.formatDate(res.datas.publicationDate) res.datas.price = res.datas.price.toFixed(2) wx.setNavigationBarTitle({ title: res.datas.name, }) + let lecturer = [] + if (res.datas.datas.speaker && res.datas.datas.speaker.length > 0) { + res.datas.datas.speaker.forEach(item => { + if (res.datas.subItems && res.datas.subItems.QueryCms.length > 0) { + res.datas.subItems.QueryCms.forEach(item1 => { + if (JSON.parse(item.Data.Value).items[0] == item1.id) { + lecturer.push({ + name: item1.name, + icon: item1.icon ? item1.icon : '', + description: item1.description ? item1.description : '', + }) + } + }) + + } + }) + } this.setData({ + lecturerList: lecturer, digitalsData: res.datas, loading: false }) @@ -219,9 +263,211 @@ tabValue: value }) console.log(this.data.tabValue); + if (this.data.tabValue == 2) { + this.getResource() + } + if (this.data.tabValue == 3) { + this.selectComponent("#note").getNoteList(); + } + if (this.data.tabValue == 4) { + this.selectComponent("#question").getDataList(); + } }, + selectChange(event) { + console.log(event) + const value = event.target.dataset.value + this.setData({ + selectActive: value + }) + this.getResource() + }, + getResource() { + let query = { + storeInfo: app.config.digitalCourses, + path: '*', + queryType: '*', + productId: this.data.digitalsData.id, + cmsPath: this.data.digitalsData.rootCmsItemId + '', + cmsType: '*', + itemFields: { + SysType: 'CmsFolder', + selectType: [], + freeFile: [], + file: [], + protectedFile: [], + resourcesClassification: [], + isDownload: [], + jsek_resourceBrief: [], + jsek_link: [], + jsek_questionBank: [], + learnSelectType: [] + }, + pading: { + start: 99, + size: 0 + } + } + app.MG.store.getProductDetail(query).then((res) => { + console.log(res.datas, 1111) + let test = [] + let learn = [] + if (res.datas.cmsDatas[0].datas.length > 0) { + res.datas.cmsDatas[0].datas.forEach((item) => { + if (item.type == 'questionBankFolder' || item.type == 'questionBankItem') { + test.push(item) + } else if (item.type != "resourceItem") { + learn.push(item) + } + }) + if (this.data.selectActive === 'learn') { + let list = [] + // 娴嬭瘯 6浣�// 姝e紡 5浣�// 娴嬭瘯璋冪敤浼�20锛屽唴閮�7 姝e紡璋冪敤浼�17 鍐呴儴浼�6 + let addNum = query.cmsPath.length > 5 ? 7 : query.cmsPath.length > 6 ? 8 : 6 + const num = query.cmsPath.length + addNum + if (learn.some((item) => item.sysType == 'CmsFolder')) { + this.getTreeList(learn, num, list, '\\', addNum) + list = this.ensureTreeConsistency(list) + } else { + list = learn + } + let result = []; + this.findChildIds(list, result) + if (list.length > 0) { + this.setData({ + learnList: list, + openTeachids: result, + }); + } + } else { + const data = test.filter( + (item) => item.type == 'questionBankFolder' && item.childrenFolderCount > 0 + ) + if (data.length > 0) { + let list = [] + let addNum = query.cmsPath.length > 5 ? 7 : query.cmsPath.length > 6 ? 8 : 6 + const num = query.cmsPath.length + addNum + this.getTreeList(data, num, list, '\\', addNum) + list = this.ensureTreeConsistency(list) + let result = []; + this.findChildIds(list[0].children, result) + this.setData({ + testList: list[0].children, + openTeachids: result, + }); + } + } + } + }) + }, + // 鎵佸钩鍖栨暟鎹浆鎹ree + getTreeList(rootList, pathLength, newArr, path, addNum) { + for (const item of rootList) { + // 姝ゅ鍘熸湰 item.productLinkPath.length == pathLength 浣� productLinkPath 闀垮害涓埆涔﹀瓨鍦�4銆�5浣嶄氦閿� + if ((pathLength - item.productLinkPath.length >= 0 && pathLength - item.productLinkPath.length <= 3) && item.productLinkPath.includes(path)) { + if (item.sysType == 'CmsItem') { + if (item.selectType == 'webpage') { + item.disabled = true + } else { + if (item.isDownload != 1) { + item.disabled = true + } + } + if (item.file && item.fileMap && item.fileMap[item.file]) { + if (item.fileMap[item.file].protectType == 'Private') item.disabled = true + } + } + // newArr.push(item) + // 鍦ㄦ彃鍏ヨ繃绋嬩腑瀵规暟鎹繘琛屾帓搴� + newArr = this.insertAndSortObjectsByProductLinkPath(newArr, item, addNum) + } + } + //缁欐暟缁勯噷闈㈠啀娣诲姞涓�涓猚hildren鐨勭┖鏁扮粍 + for (const i of newArr) { + i.children = [] + this.getTreeList(rootList, pathLength + addNum, i.children, i.productLinkPath, addNum) + if (i.children.length == 0) { + delete i.children + } + } + return newArr + }, + + // 鍘婚櫎鏍戠粨鏋勫浣欓」 + ensureTreeConsistency(tree) { + for (let index = 0; index < tree.length; index++) { + const item = tree[index]; + if (item.children && item.children.length) { + const isFloder = item.children.findIndex(citem => citem.sysType == 'CmsFolder') + const isItem = item.children.findIndex(citem => citem.sysType == 'CmsItem') + if (isFloder > -1 && isItem > -1) { + item.children = item.children.filter(ditem => ditem.sysType == 'CmsItem') + } + this.ensureTreeConsistency(item.children) + } + } + return tree + }, + + // 鎺掑簭鏁扮粍 鎸夌収productLinkPath + insertAndSortObjectsByProductLinkPath(array, newObj, addNum) { + // 鏌ユ壘鏂板璞″簲璇ユ彃鍏ョ殑浣嶇疆 + let insertIndex = array.findIndex(obj => Number(newObj.productLinkPath.substring(newObj.productLinkPath.length - addNum, newObj.productLinkPath.length)) < Number(obj.productLinkPath.substring(obj.productLinkPath.length - addNum, obj.productLinkPath.length))); + + // 濡傛灉娌℃湁鎵惧埌鍚堥�傜殑浣嶇疆锛屽垯鏀惧湪鏁扮粍鏈熬 + if (insertIndex === -1) { + insertIndex = array.length; + } + // 鎻掑叆鏂板璞″埌鏁扮粍 + array.splice(insertIndex, 0, newObj); + // 娴嬭瘯6 姝e紡5 + // 瀵规暟缁勮繘琛屾帓搴� + array.sort((a, b) => { + if (Number(a.productLinkPath.substring(a.productLinkPath.length - addNum, a.productLinkPath.length)) < Number(b.productLinkPath.substring(b.productLinkPath.length - addNum, b.productLinkPath.length))) { + return -1; + } + if (Number(a.productLinkPath.substring(a.productLinkPath.length - addNum, a.productLinkPath.length)) > Number(b.productLinkPath.substring(b.productLinkPath.length - addNum, b.productLinkPath.length))) { + return 1; + } + // a must be equal to b + return 0; + }); + + // 杩斿洖鏇存柊鍚庣殑鏁扮粍 + return array; + }, + + // 鑾峰彇灞曞紑椤� + findChildIds(data, result) { + let index = 0 + for (let i = 0; i < data.length; i++) { + if (index < 3) { + const item = data[i] + if (item.childrenFolderCount > 0) { + result.push(item.id) + for (let j = 0; j < item.children.length; j++) { + if (index < 3) { + const childrenItme = item.children[j] + if (item.childrenCount > 0) { + result.push(childrenItme.id) + index += 1 + } + } else { + break + } + } + } else if (item.childrenCount > 0) { + result.push(item.id) + index += 1 + } + } else { + break + } + } + }, + //瀛︿範绗旇 + //鍦ㄧ嚎鎻愰棶 // 鍥句功娣诲姞璐墿杞� async addBookShopcCar() { if (!this.data.expire) { @@ -277,7 +523,6 @@ }, //璐拱鎸夐挳 - async buyBtn() { if (!this.data.expire) { let bookOrdersId = ""; @@ -301,7 +546,6 @@ orderNum: bookOrdersId, }) .then((res) => { - this.digitalTextbooksDetailsGet(this.data.digitalTextId) if (res) { wx.showToast({ title: "棰嗗彇鎴愬姛", @@ -328,15 +572,8 @@ }); } }, - showDialog(e) { - const { - key - } = e.currentTarget.dataset; - this.setData({ - [key]: true, - dialogKey: key - }); - }, + + closeDialog() { const { @@ -346,9 +583,8 @@ [dialogKey]: false }); }, + //鐢宠璇佷功 onCertificate() { - - var page = getCurrentPages().pop(); // 鑾峰彇褰撳墠椤甸潰瀹炰緥 page.setData({ // 鍔ㄦ�佽缃姝㈡粴鍔ㄧ殑鏍峰紡 @@ -370,5 +606,64 @@ dialogBox: false, scrollJudge: true }) - } + }, + setCoolect() { + // 棣栭〉娴嬭瘯鐧诲綍鍔熻兘锛屽悗缁敞閲� + // 妫�鏌ョ櫥褰曠姸鎬� + const token = wx.getStorageSync(app.config.tokenKey) + if (!token) { + loginInfo(app, (data) => { + // 濡傛灉涓嶆槸绗竴娆$櫥褰曪紝浼氭墽琛屽洖璋� + if (data) { + if (this.data.digitalsData.isFavourite) { + app.MG.store + .delProductLink({ + productIds: [this.data.digitalsData.id], + linkType: 'Favoriteclass' + }) + .then(() => { + this.setData({ + "digitalsData.isFavourite": false + }) + }) + } else { + let params = { + productIds: [this.data.digitalsData.id], + linkType: 'Favoriteclass' + } + app.MG.store.addProductLink(params).then((res) => { + this.setData({ + "digitalsData.isFavourite": true + }) + }) + } + } else { + // 鍑虹幇閿欒锛岃繑鍥瀎alse + } + }) + } else { + if (this.data.digitalsData.isFavourite) { + app.MG.store + .delProductLink({ + productIds: [this.data.digitalsData.id], + linkType: 'Favoriteclass' + }) + .then(() => { + this.setData({ + "digitalsData.isFavourite": false + }) + }) + } else { + let params = { + productIds: [this.data.digitalsData.id], + linkType: 'Favoriteclass' + } + app.MG.store.addProductLink(params).then((res) => { + this.setData({ + "digitalsData.isFavourite": true + }) + }) + } + } + }, }) \ No newline at end of file -- Gitblit v1.9.1