From ef37c59e055a990ce247b265b27d3fcef430a243 Mon Sep 17 00:00:00 2001 From: 杨磊 <505174330@qq.com> Date: 星期五, 15 八月 2025 10:19:18 +0800 Subject: [PATCH] first submit --- src/views/home/index.vue | 650 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 650 insertions(+), 0 deletions(-) diff --git a/src/views/home/index.vue b/src/views/home/index.vue new file mode 100644 index 0000000..9e4900a --- /dev/null +++ b/src/views/home/index.vue @@ -0,0 +1,650 @@ +<template> + <div class="indexPage"> + <el-carousel :height="screenheight + 'px'"> + <el-carousel-item v-for="item in bannerList" :key="item.id"> + <div + class="bannerBox imgBox" + :style="item.caupress_link ? 'cursor: pointer' : ''" + > + <img + id="autoHeight" + class="bannerImg" + :src="item.icon" + @click="bannerLink(item)" + /> + </div> + </el-carousel-item> + </el-carousel> + <div class="bookListBox"> + <div class="contentBox"> + <div class="bookListTitle"> + <div class="title">鎺ㄨ崘鏁欐潗</div> + <div class="more">鏇村></div> + </div> + <div class="recommendList"> + <div + class="recommendItem" + v-for="item in bookListData" + :key="item.id" + > + <div class="recommendItemImg"> + <img class="autoImg" :src="item.icon" /> + </div> + <div class="infoBox"> + <div class="bookName">{{ item.name }}</div> + <div class="author"> + 浣滆�咃細{{ + item.authorcaupress_author ? item.caupress_author : "-" + }} + </div> + <div class="priceBox"> + <span class="oldPrice" v-if="item.oldPrice" + >鍘熶环锛毬{ tool.toDecimal2(item.oldPrice) }}</span + > + <span class="price" v-if="item.price && item.price > 0"> + 瀹氫环锛毬� + <span>{{ tool.toDecimal2(item.price) }}</span> + </span> + <span class="price" v-else> + 瀹氫环锛�<span class="freePrice">鍏嶈垂</span> + </span> + </div> + </div> + </div> + </div> + + <div class="funBox"> + <div class="authentication"></div> + <div class="manual"></div> + </div> + <div class="bookListTitle"> + <div class="title">鎺ㄨ崘鏁欐潗</div> + <div class="more">鏇村></div> + </div> + <div class="recommendList"> + <div + class="recommendItem" + v-for="item in bookListData" + :key="item.id" + > + <div class="recommendItemImg"> + <img class="autoImg" :src="item.icon" /> + </div> + <div class="infoBox"> + <div class="bookName">{{ item.name }}</div> + <div class="author"> + 浣滆�咃細{{ + item.authorcaupress_author ? item.caupress_author : "-" + }} + </div> + <div class="priceBox"> + <span class="oldPrice" v-if="item.oldPrice" + >鍘熶环锛毬{ tool.toDecimal2(item.oldPrice) }}</span + > + <span class="price" v-if="item.price && item.price > 0"> + 瀹氫环锛毬� + <span>{{ tool.toDecimal2(item.price) }}</span> + </span> + <span class="price" v-else> + 瀹氫环锛�<span class="freePrice">鍏嶈垂</span> + </span> + </div> + </div> + </div> + </div> + </div> + </div> + </div> +</template> + +<script> +export default { + name: "home", + data() { + return { + bannerList: [], + informationData: [], + noticeData: [], + honorData: [], + menuData: [], + bookListData: [], + bookListTotal: 0, + bookListLoading: true, + showMenuIndex: 0, + screenheight: document.documentElement.clientWidth / 4, + }; + }, + created() { + window.onresize = () => { + let c = 2.628; + if (document.documentElement.clientWidth >= 1220) { + this.screenheight = document.documentElement.clientWidth / c; + } + }; + var url = window.location.href; + if (url.indexOf("WeChatScanningCodeLogin") > -1) { + var querys = url.substring(url.indexOf("?") + 1).split("&"); + var result = {}; + for (var i = 0; i < querys.length; i++) { + var temp = querys[i].split("="); + if (temp.length < 2) { + result[temp[0]] = ""; + } else { + result[temp[0]] = temp[1]; + } + } + if (result && result.code) { + this.MG.identity + .loginByWeChatOpenCode({ + code: result.code, + appRefCode: this.config.appRefCode, + platform: "PCWeb", + }) + .then((res) => { + if (res && res.status == "Ok") { + this.$store.dispatch("setToken", res.token); + this.getUserInfo(() => { + window.location.href = this.config.requestCtx; + }); + } + }); + } else { + this.getBanner(); + this.getHonor(); + this.getBookMenu(); + } + } else { + this.getBanner(); + this.getHonor(); + this.getBookMenu(); + } + }, + methods: { + //鐐瑰嚮杞挱鍥捐烦杞� + + bannerLink(val) { + if (val.caupress_link) { + window.open(val.caupress_link); + } + }, + getUserInfo(callback) { + this.MG.identity.getCurrentAppUser().then((res) => { + // 鐢ㄦ埛淇℃伅浼樺厛绾э細鏁欏笀璁よ瘉 > 寰俊 > 瀛︾敓锛堟敞鍐屾椂榛樿锛� + if (res) { + let teacherRole = res.roleLinks.find( + (item) => item.role.refCode == "teacher" + ); + let teacherInfo = res.infoList.find( + (item) => item.type == "teacherInfo" + ); + let wechatInfo = res.infoList.find((item) => item.type == "WeChat"); + let studentInfo = res.infoList.find((item) => item.type == "Default"); + let phoneInfo = res.secretList.find( + (item) => item.type == "MobilePhone" + ); + if (teacherRole && teacherInfo) { + let data = {}; + try { + data = JSON.parse(teacherInfo.data); + } catch (error) { + data = {}; + } + this.$store.dispatch("setUserInfo", { + ...data, + name: data.fullName, + phoneNumber: phoneInfo?.credential, + role: "Teacher", + roleId: teacherRole.role.id, + }); + } else if (wechatInfo) { + this.$store.dispatch("setUserInfo", { + ...wechatInfo, + phoneNumber: phoneInfo?.credential, + role: "Student", + }); + } else if (studentInfo) { + this.$store.dispatch("setUserInfo", { + ...studentInfo, + phoneNumber: phoneInfo?.credential, + role: "Student", + }); + } + } + // 娓呯┖鏈湴鍌ㄥ瓨鐨勭敵璇锋牱涔︽竻鍗� + this.$store.commit("emptyBookList"); + callback(); + }); + }, + getBanner() { + this.MG.resource + .getItem({ + path: this.config.refCodes.index.banner, + fields: { + caupress_link: [], + }, + coverSize: { + height: 750, + }, + paging: { + start: 0, + size: 999, + }, + }) + .then((res) => { + this.bannerList = res.datas; + }); + }, + + getHonor() { + this.MG.resource + .getItem({ + path: this.config.refCodes.index.honor, + coverSize: { + height: 200, + }, + paging: { + start: 0, + size: 999, + }, + }) + .then((res) => { + this.honorData = res.datas; + }); + }, + getBookMenu() { + this.MG.store + .getStoreChannelList({ + storeRefCode: this.config.goodsStore, + path: this.config.refCodes.index.column, + start: 0, + size: 999, + }) + .then((res) => { + if (res.datas && res.datas.length) { + this.menuData = res.datas; + this.getBookList(); + } + }); + }, + getBookList() { + this.bookListLoading = true; + this.MG.store + .getProductList({ + path: + this.config.refCodes.index.column + + "\\" + + this.menuData[this.showMenuIndex].refCode, + paging: { + start: 0, + size: 5, + }, + fields: { + caupress_author: [], + caupress_recommendationReason: [], + }, + coverSize: { + width: 150, + }, + }) + .then((res) => { + this.bookListData = res.datas; + this.bookListTotal = res.total; + this.bookListLoading = false; + }); + }, + toInformation(selected) { + this.$router.push({ + name: "informationCenter-index", + query: { + tabsSelected: selected, + }, + }); + }, + toDetails(tabsSelected, linkInfo) { + this.$router.push({ + name: "informationCenter-detail", + query: { + tabsSelected: tabsSelected, + path: linkInfo[0].LinkPath, + id: linkInfo[0].ChildrenId, + }, + }); + }, + toDetail(row) { + this.$router.push({ + name: "teachingServices-detail", + query: { id: row.id, cmsPath: row.rootCmsItemId }, + }); + }, + // 璺宠浆鑷冲垪琛ㄩ〉 + toList() { + this.$router.push({ + path: "/teachingServices", + query: { + searchOptionHidden: true, + searchPath: + this.config.refCodes.index.column + + "\\" + + this.menuData[this.showMenuIndex].refCode, + }, + }); + }, + }, +}; +</script> + +<style lang="less" scoped> +@import "@/assets/css/theme.less"; +.indexPage { + min-width: 1220px; + background-color: #fff; + .bannerBox { + background: #f3f3f3; + } + .imgBox { + position: relative; + width: 100%; + height: 100%; + } + // 鏈ぞ璧勮 + .informationBox { + padding-right: 30px; + border-right: 1px dashed #b3b3b3; + .informationList { + .informationItem { + margin-bottom: 50px; + cursor: pointer; + .imgBox { + position: relative; + width: 150px; + height: 90px; + margin-right: 30px; + background: #f2f2f2; + .date { + color: #999999; + text-align: center; + font-size: 30px; + padding-top: 20px; + .year { + font-size: 17px; + margin-top: 5px; + } + } + } + .infoBox { + .title { + font-size: 16px; + color: #444444; + margin-bottom: 20px; + font-weight: bold; + line-height: 1.5; + cursor: pointer; + } + .detail { + font-size: 12px; + color: #444444; + line-height: 2; + display: -webkit-box; + overflow: hidden; + text-overflow: ellipsis; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + } + } + } + } + } + // 鏈ぞ閫氱煡 + .noticeBox { + width: 400px; + padding-left: 30px; + .noticeList { + .noticeItem { + margin-bottom: 40px; + cursor: pointer; + .indexBox { + width: 60px; + height: 60px; + text-align: center; + line-height: 60px; + font-size: 36px; + color: #b3b3b3; + background: #f2f2f2; + margin-right: 30px; + } + .infoBox { + .title { + font-size: 16px; + color: #444444; + height: 40px; + line-height: 20px; + margin-bottom: 8px; + cursor: pointer; + display: -webkit-box; + overflow: hidden; + text-overflow: ellipsis; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + } + .date { + font-size: 12px; + color: #bcbcbc; + } + } + } + } + } + // 涔︾睄鍒楄〃 + .bookListBox { + width: 100%; + padding: 80px 0; + margin-top: 60px; + background-repeat: no-repeat; + background-size: 100% 100%; + background-image: url("@/assets/images/tuijian-bg.png"); + background-repeat: no-repeat; + background-size: 100% 42%; + .contentBox { + min-height: 776px; + } + .menuBox { + width: 180px; + border-right: 1px solid #d9d9d9; + padding: 30px 0 30px; + .menuItem { + padding-left: 30px; + border-right: 3px solid #fff; + font-size: 16px; + height: 40px; + line-height: 40px; + cursor: pointer; + margin-bottom: 20px; + &:hover { + background: #f2f2f2; + } + &.active { + color: @color; + border-color: @color; + } + } + } + .bookList { + padding: 40px; + min-height: 826px; + box-sizing: border-box; + + .bookItem { + margin-bottom: 30px; + cursor: pointer; + .imgBox { + width: 150px; + height: 200px; + border: 1px solid #e6e6e6; + } + .infoBox { + margin-left: 30px; + .title { + color: #333333; + font-size: 20px; + margin-top: 14px; + margin-bottom: 12px; + font-weight: bold; + cursor: pointer; + } + .author { + color: #808080; + margin-bottom: 20px; + } + .reasonBox { + display: flex; + line-height: 24px; + font-size: 14px; + color: #333333; + margin-bottom: 20px; + min-height: 72px; + .reasonTxt { + flex: 1; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 3; + -webkit-box-orient: vertical; + } + } + } + } + .allList { + width: 160px; + height: 40px; + line-height: 40px; + font-size: 16px; + background: #e5f3eb; + color: @color; + text-align: center; + border-radius: 50px; + margin: 10px auto; + cursor: pointer; + } + } + } + .boxTitle { + font-size: 18px; + color: #333333; + margin-bottom: 30px; + font-weight: bold; + span { + float: right; + font-size: 12px; + color: #999999; + line-height: 18px; + cursor: pointer; + } + } + .honorBox { + margin-bottom: 60px; + } +} +// 妯″潡鏍囬 +.blockTitle { + text-align: center; + font-size: 24px; + font-weight: bold; + margin-top: 60px; + margin-bottom: 30px; + span { + display: inline-block; + width: 60px; + height: 6px; + margin-top: 10px; + background: @color; + } +} + +.bookListTitle { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 20px; + + .title { + font-size: 20px; + color: #333333; + font-weight: bold; + } + .more { + font-size: 14px; + color: #999999; + cursor: pointer; + } +} +.recommendList { + display: flex; + padding-top: 20px; + + .recommendItem { + flex: 1; + margin-right: 20px; + height: 300px; + background-repeat: no-repeat; + background-size: 100% 100%; + cursor: pointer; + border: 1px solid #dedede; + background-color: #fff; + padding-top: 10px; + &:last-child { + margin-right: 0; + } + } +} + +.recommendItemImg { + width: 150px; + height: 200px; + position: relative; + margin: 0 auto; +} +.infoBox { + text-align: center; + margin-top: 10px; +} +.author { + margin-top: 10px; +} +.priceBox { + margin-top: 10px; + .oldPrice { + font-size: 16px; + color: #444444; + text-decoration: line-through; + margin-right: 20px; + } + .price { + span { + font-weight: bold; + font-size: 14px; + } + } +} + +.funBox { + display: flex; + justify-content: space-between; + align-items: center; + margin-top: 60px; + margin-bottom: 60px; + .authentication { + width: 40%; + height: 80px; + background-repeat: no-repeat; + background-size: 100% 100%; + background-image: url("@/assets/images/xiehe/home/jiaoshirenzheng.png"); + } + .manual { + width: 40%; + height: 80px; + background-repeat: no-repeat; + background-size: 100% 100%; + background-image: url("@/assets/images/xiehe/home/jiaoshirenzheng.png"); + } +} +</style> -- Gitblit v1.9.1