From dcd5065a6ed1b75b0e3c1491d267ab73b4997f11 Mon Sep 17 00:00:00 2001 From: yiming <m13691596795@163.com> Date: 星期四, 06 六月 2024 11:38:59 +0800 Subject: [PATCH] 数字教材详情 --- pages/home/home.js | 701 +++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 593 insertions(+), 108 deletions(-) diff --git a/pages/home/home.js b/pages/home/home.js index 68bb735..0feef1c 100644 --- a/pages/home/home.js +++ b/pages/home/home.js @@ -1,155 +1,640 @@ -import { fetchHome } from '../../services/home/home'; -import { fetchGoodsList } from '../../services/good/fetchGoods'; -import Toast from 'tdesign-miniprogram/toast/index'; +import { + fetchHome +} from '../../services/home/home'; +import moment from 'moment' +import { + loginInfo +} from '../../assets/js/login'; const app = getApp() Page({ data: { - imgSrcs: [], - tabList: [], - goodsList: [], - goodsListLoadStatus: 0, - pageLoading: false, - current: 1, - autoplay: true, - duration: '500', - interval: 5000, - navigation: { type: 'dots' }, - swiperImageProps: { mode: 'scaleToFill' }, - bannerList: [], + barHeight: '', + navBarHeight: '', + searchVal: '', + scoll: false, + isWhite: false, + userInfo: {}, + tabList: [], //鐩綍 + current: 1, //杞挱鍥惧弬鏁� + autoplay: true, //杞挱鍥惧弬鏁� + duration: '500', //杞挱鍥惧弬鏁� + interval: 5000, //杞挱鍥惧弬鏁� + navigation: { + type: 'dots' + }, //杞挱鍥惧弬鏁� + bannerList: [], //杞挱鍥惧垪琛� + specialSubjectList: [], //涓撻璁ㄨ + activeItem: 0, //绮鹃�夎绋嬮粯璁ら�変腑 + courseTypeList: [], //绮鹃�夎绋嬪垎绫� + courseList: [], + bookTypeList: [], //鍥句功绫诲瀷 + activeItem1: 0, + bookTypeData: {}, + booksList: [], + readBookList: [], //鏁板瓧闃呰 + textbookList: [], //鏁板瓧鏁欐潗 + rankingList: [], //鎺掕姒� + shoppingCartGetId: [], + baseRefresh: { + value: false + }, + loading: true }, - - goodListPagination: { - index: 0, - num: 20, - }, - - privateData: { - tabIndex: 0, - }, - onShow() { - this.getTabBar().init(); + this.setData({ + searchVal: "", + }); + console.log(this.data.searchVal) + this.loadHomePage(); this.getBannerList() + }, onLoad() { - this.init(); - }, + const systInfo = wx.getSystemInfoSync(); + const menu = wx.getMenuButtonBoundingClientRect(); // 鑳跺泭淇℃伅 + const navBarHeight = (menu.top - systInfo.statusBarHeight) * 2 + menu.height; // 瀵艰埅鏍忛珮搴� + this.setData({ + barHeight: systInfo.statusBarHeight, + navBarHeight: navBarHeight, + }); - onReachBottom() { - if (this.data.goodsListLoadStatus === 0) { - this.loadGoodsList(); + // 棣栭〉娴嬭瘯鐧诲綍鍔熻兘锛屽悗缁敞閲� + // 妫�鏌ョ櫥褰曠姸鎬� + const token = wx.getStorageSync(app.config.tokenKey) + if (!token) { + loginInfo(app, (data) => { + // 濡傛灉涓嶆槸绗竴娆$櫥褰曪紝浼氭墽琛屽洖璋� + if (data) { + // 鐧诲綍鎴愬姛锛岃嚜鍔ㄨ褰晅oken鍜岀敤鎴蜂俊鎭紝骞惰繑鍥瀟rue + } else { + // 鍑虹幇閿欒锛岃繑鍥瀎alse + } + }) + } else { + // 濡傛灉鏄涓�娆$櫥褰曪紝浼氳烦杞嚦缁戝畾鐢ㄦ埛淇℃伅椤甸潰锛屽~鍐欏畬鐢ㄦ埛淇℃伅鍚庤繘琛岀櫥褰曞苟鍌ㄥ瓨token鍜岀敤鎴蜂俊鎭紝缁撴潫鍚庤烦杞洖褰撳墠椤甸潰锛堟惡甯﹂〉闈㈠弬鏁帮級 } - }, - onPullDownRefresh() { this.init(); }, - - init() { - this.loadHomePage(); + onReachBottom() {}, + onPullDownRefresh() { + this.setData({ + 'baseRefresh.value': true, + isWhite: false + }) + this.getBannerList(); + this.init(); }, + init() { + this.getSubjectList(); + this.getCourseTypeListList(); + this.getBookTypeList(); + this.getReadBookList(); + this.getTextbookListList(); + this.getRankingList(); + + setTimeout(() => { + this.setData({ + 'baseRefresh.value': false, + }) + }, 500); + }, + getBannerList() { const list = [] app.MG.resource.getItem({ - path: 'jsek_banner\\jsek_homeBanner', - fields: { jsek_link: [] }, - paging: { start: 0, size: 9 } + path: 'jsek_banner\\jsek_homeBannerApplet', + fields: { + jsek_link: [] + }, + paging: { + start: 0, + size: 9 + } }).then(res => { for (let i = 0; i < res.datas.length; i++) { const item = res.datas[i] list.push({ value: item.icon, - link: item.jsek_link + link: item.jsek_link, + }) } this.setData({ - bannerList: list + bannerList: list, + loading: false }) }) - console.log('杞挱鍥�', this.data.bannerList); }, - loadHomePage() { - wx.stopPullDownRefresh(); + navToActivityDetail(e) { + let { + info + } = e.currentTarget.dataset + console.log(info) + if (info.link) { + wx.navigateTo({ + url: info.link, + }); + } + }, - this.setData({ - pageLoading: true, - }); - fetchHome().then(({ swiper, tabList }) => { + loadHomePage() { + fetchHome().then(({ + tabList + }) => { this.setData({ tabList, - imgSrcs: swiper, - pageLoading: false, }); - this.loadGoodsList(true); }); }, - - tabChangeHandle(e) { - this.privateData.tabIndex = e.detail; - this.loadGoodsList(true); + //鐐瑰嚮鐩綍 + toPages(item) { + let info = item.target.dataset.info + console.log(info); + if (info.url) { + if (info.text == "鍥句功鏈嶅姟") { + wx.switchTab({ + url: info.url + }) + } else { + wx.navigateTo({ + url: info.url + }) + } + } else { + wx.showToast({ + title: "寤鸿涓�", + icon: 'none', + duration: 2000 + }) + } }, - - onReTry() { - this.loadGoodsList(); - }, - - async loadGoodsList(fresh = false) { - if (fresh) { - wx.pageScrollTo({ - scrollTop: 0, + //涓撻璁ㄨ + getSubjectList() { + const obj = { + storeInfo: "jsek_seminar", + path: 'jsek_homepageSeminar', + coverSize: { + width: 400 + }, + paging: { + start: 0, + size: 4 + }, + filterList: [{ + value: 'Normal', + field: 'state' + }], + fields: { + liveTime: [], + lecturer: [], + startTime: [], + jsek_link: [], + position: [] + } + } + app.MG.store.getProductList(obj).then((res) => { + res.datas.forEach((item) => { + item.liveTime = item.liveTime ? moment(item.liveTime).format("MM-DD HH:mm:ss") : ''; + item.startTime = item.startTime ? moment(item.startTime).format("MM-DD HH:mm:ss") : ''; + item.price = item.price ? item.price.toFixed(2) : item.price; }); - } - - this.setData({ goodsListLoadStatus: 1 }); - - const pageSize = this.goodListPagination.num; - let pageIndex = this.privateData.tabIndex * pageSize + this.goodListPagination.index + 1; - if (fresh) { - pageIndex = 0; - } - - try { - const nextList = await fetchGoodsList(pageIndex, pageSize); this.setData({ - goodsList: fresh ? nextList : this.data.goodsList.concat(nextList), - goodsListLoadStatus: 0, - }); + specialSubjectList: res.datas + }) + }) + }, - this.goodListPagination.index = pageIndex; - this.goodListPagination.num = pageSize; - } catch (err) { - this.setData({ goodsListLoadStatus: 3 }); + + //绮鹃�夎绋嬪垎绫� + getCourseTypeListList() { + const data = { + path: 'jsek_homepageDigitalCourses', + queryType: '\\', + searchList: [], + size: '20', + start: '0', + storeRefCode: app.config.digitalCourses, + sort: { + type: 'Asc', + field: 'LinkOrder' + }, + filterList: [{ + value: 'Normal', + field: 'state' + }] + } + app.MG.store.getStoreChannelList(data).then((res) => { + if (res.datas && res.datas.length > 0) { + let dataList = []; + dataList.push(...res.datas) + this.setData({ + courseTypeList: dataList, + activeItem: 0 + }) + this.getCourseList(res.datas[0]) + } + }) + }, + //绮鹃�夎绋嬪垪琛� + getCourseList(item) { + const obj = { + storeInfo: "app.config.goodsStore", + path: item.pathList + '\\' + item.id, + coverSize: { + width: 260 + }, + paging: { + start: 0, + size: 4 + }, + filterList: [{ + value: 'Normal', + field: 'state' + }], + fields: { + courseLeader: [], + affiliatedUnit: [], + publishingUnit: [], + classHours: [] + } + } + app.MG.store.getProductList(obj).then((res) => { + res.datas.forEach((item) => { + item.price = item.price ? item.price.toFixed(2) : item.price; + }); + this.setData({ + courseList: res.datas + }) + }) + }, + tabChangeHandle(item) { + let info = this.data.courseTypeList[item.detail.value] + this.setData({ + courseList: [] + }) + this.getCourseList(info) + }, + //鍥句功鏈嶅姟鍒嗙被 + getBookTypeList() { + const data = { + path: 'jsek_homepageBookService', + filterList: [{ + value: 'Normal', + field: 'state' + }], + queryType: '\\', + searchList: [], + size: '20', + start: '0', + storeRefCode: app.config.goodsStore, + sort: { + type: 'Asc', + field: 'LinkOrder' + } + } + app.MG.store.getStoreChannelList(data).then((res) => { + if (res.datas && res.datas.length > 0) { + let dataList = []; + dataList.push(...res.datas) + this.setData({ + bookTypeList: dataList, + activeItem1: 0, + bookTypeData: dataList[0], + }) + this.getBooksList(dataList[0]) + } + }) + }, + //鍥句功鏈嶅姟鍒楄〃 + getBooksList(item) { + const obj = { + storeInfo: app.config.goodsStore, + path: item.pathList + '\\' + item.id, + queryType: '*', + coverSize: { + width: 150 + }, + paging: { + start: 0, + size: 6 + }, + filterList: [{ + value: 'Normal', + field: 'state' + }], + fields: { + author: [] + } + } + app.MG.store.getProductList(obj).then((res) => { + this.setData({ + booksList: res.datas, + }) + }) + }, + //鍥句功鏈嶅姟 + tabBookClick(item) { + let info = this.data.bookTypeList[item.detail.value] + this.setData({ + bookTypeData: info, + }) + this.getBooksList(info) + }, + //鏁板瓧闃呰 + getReadBookList() { + const obj = { + storeInfo: app.config.digitalRead, + path: 'jsek_homepageDigitalReading', + coverSize: { + width: 150 + }, + paging: { + start: 0, + size: 3 + }, + filterList: [{ + value: 'Normal', + field: 'state' + }], + fields: { + author: [] + } + } + app.MG.store.getProductList(obj).then((res) => { + this.setData({ + readBookList: res.datas + }) + }) + }, + //鏁板瓧鏁欐潗 + getTextbookListList() { + const obj = { + storeInfo: app.config.digitalTextbooks, + path: 'jsek_homepageDigitalTextbooks', + coverSize: { + width: 150 + }, + paging: { + start: 0, + size: 6 + }, + filterList: [{ + value: 'Normal', + field: 'state' + }], + fields: { + author: [], + } + } + app.MG.store.getProductList(obj).then((res) => { + res.datas.forEach((item) => { + item.price = item.price ? item.price.toFixed(2) : item.price; + }); + this.setData({ + textbookList: res.datas + }) + }) + }, + //鑾峰彇鎺掕姒� + getRankingList() { + const obj = { + storeInfo: app.config.goodsStore, + path: '*', + queryType: '*', + coverSize: { + width: 150 + }, + paging: { + start: 0, + size: 10 + }, + fields: { + author: [], + }, + filterList: [{ + value: 'Normal', + field: 'state' + }], + sort: { + Name: 'Asc', + BaseType: '' + + } + } + app.MG.store.getProductList(obj).then((res) => { + this.setData({ + rankingList: res.datas + }) + }) + }, + // 璺宠浆鍥句功璇︽儏 + goDetail(e) { + const { + book + } = e.currentTarget.dataset; + wx.navigateTo({ + url: `/packageBookService/pages/bookServices/detail/index?id=${book.id}&name=${book.name}`, + }); + }, + goSubjectDetail(e) { + const { + book + } = e.currentTarget.dataset; + wx.showToast({ + title: "寤鸿涓�", + icon: 'none', + duration: 1000 + }) + }, + goCourseDetail(e) { + const { + book + } = e.currentTarget.dataset; + wx.showToast({ + title: "寤鸿涓�", + icon: 'none', + duration: 1000 + }) + }, + goReadBookDetail(e) { + const { + book + } = e.currentTarget.dataset; + wx.navigateTo({ + url: '/pages/home/digitalRead/index?productId=' + book.id, + }); + }, + goTextBookDetail(e) { + const { + book + } = e.currentTarget.dataset; + wx.showToast({ + title: "寤鸿涓�", + icon: 'none', + duration: 1000 + }) + }, + + + getShoppingCartList() { + let query = { + start: 0, + size: 999, + filterList: [], + searchList: [] + } + app.MG.store.getShoppingCartProductList(query).then((res) => { + let idList = []; + res.datas.forEach((item) => { + idList.push(item.saleMethod.id) + }) + this.setData({ + shoppingCartGetId: idList + }) + }) + }, + addCart(e) { + const { + info + } = e.currentTarget.dataset; + wx.showToast({ + title: "寤鸿涓�", + icon: 'none', + duration: 1000 + }) + return; + if (wx.getStorageSync(app.config.tokenKey)) { + let query = { + start: 0, + size: 999, + filterList: [], + searchList: [] + } + try { + if ( + this.data.shoppingCartGetId.includes( + info.defaultSaleMethodId + ) + ) { + wx.showToast({ + title: "璇ヤ功宸插湪璐墿杞︼紝璇峰嬁閲嶅娣诲姞绌�", + icon: 'none', + duration: 1000 + }) + } else { + let query = { + requests: [{ + saleMethodId: info.defaultSaleMethodId, + storeEventId: null, + agentCode: '鐢靛瓙涔�' + }] + } + const addRes = app.MG.store.addShoppingCart(query) + if (addRes) { + wx.showToast({ + title: "娣诲姞鎴愬姛", + icon: 'success', + duration: 1000 + }) + } + this.getShoppingCartList() + } + } catch (error) { + console.error('鍑洪敊浜嗭細', error) + } + } + + }, + onMoreGuide(e) { + let type = e.currentTarget.dataset.info + if (type == "tushufuwu") { + let assortCode = ""; + if (this.data.bookTypeData.name == '楂樼瓑鏁欒偛') { + assortCode = "jsek_higherEducation" + } + if (this.data.bookTypeData.name == '鑱屼笟鏁欒偛') { + assortCode = "jsek_vocationalEducation" + } + if (this.data.bookTypeData.name == '鏁欏笀鏁欒偛') { + assortCode = "jsek_teacherEducation" + } + if (this.data.bookTypeData.name == '灏戝効鏁欒偛') { + assortCode = "jsek_childrenEducation" + } + if (this.data.bookTypeData.name == '鑰冭瘯鍩硅') { + assortCode = "jsek_examTraining" + } + if (this.data.bookTypeData.name == '涓婚鍑虹増') { + assortCode = "jsek_themePublishing" + } + if (this.data.bookTypeData.name == '瀛︽湳钁椾綔') { + assortCode = "jsek_academicWorks" + } + if (this.data.bookTypeData.name == '澶т紬璇荤墿') { + assortCode = "jsek_popularReadingMaterials" + } + wx.navigateTo({ + url: '/packageBookService/pages/bookServices/list/index?assorName=' + this.data.bookTypeData.name + '&assortCode=' + assortCode + }) + } else if (type == "shuziyuedu") { + wx.navigateTo({ + url: '/pages/home/digitalRead/index' + }) + } else { + wx.showToast({ + title: "寤鸿涓�", + icon: 'none', + duration: 1000 + }) + } + + }, + + + // 鐩戝惉婊氬姩鏉� + onScroll(e) { + if (this.data.scoll) { + if (e.detail.scrollTop < 20) { + this.data.scoll = false + this.isChange(false); + } + } else { + if (e.detail.scrollTop > 20) { + this.data.scoll = true + this.isChange(true); + } } }, - - goodListClickHandle(e) { - const { index } = e.detail; - const { spuId } = this.data.goodsList[index]; - wx.navigateTo({ - url: `/pages/goods/details/index?spuId=${spuId}`, - }); + isChange(data) { + this.setData({ + isWhite: data + }) }, - goodListAddCartHandle() { - Toast({ - context: this, - selector: '#t-toast', - message: '鐐瑰嚮鍔犲叆璐墿杞�', - }); - }, + onRetrievalPage() { - navToSearchPage() { - wx.navigateTo({ url: '/pages/goods/search/index' }); - }, + // 棣栭〉娴嬭瘯鐧诲綍鍔熻兘锛屽悗缁敞閲� + // 妫�鏌ョ櫥褰曠姸鎬� + const token = wx.getStorageSync(app.config.tokenKey) + if (!token) { + loginInfo(app, (data) => { + // 濡傛灉涓嶆槸绗竴娆$櫥褰曪紝浼氭墽琛屽洖璋� + if (data) { + wx.navigateTo({ + url: '/pages/retrievalPage/index?searchVal=' + this.data.searchVal + }) + } else { + // 鍑虹幇閿欒锛岃繑鍥瀎alse + } + }) + } else { + wx.navigateTo({ + url: '/pages/retrievalPage/index?searchVal=' + this.data.searchVal + }) + } - navToActivityDetail({ detail }) { - const data = this.data.bannerList[detail.index] - console.log('璺宠浆', data.link); - // const { index: promotionID = 0 } = detail || {}; - // wx.navigateTo({ - // url: `/pages/promotion-detail/index?promotion_id=${promotionID}`, - // }); }, -}); +}); \ No newline at end of file -- Gitblit v1.9.1