杨磊
3 天以前 72dbfec77a747b9a08bc71b630464d4383877082
src/views/home/index.vue
@@ -1,17 +1,13 @@
<template>
  <div class="homePage">
    <el-carousel :height="screenheight + 'px'">
      <el-carousel-item v-for="(item, index) in banner" :key="index">
        <div class="bannerBox imgBox">
          <img id="autoHeight" class="bannerImg" :src="item.icon" @click="bannerLink(item)" />
        </div>
      </el-carousel-item>
    </el-carousel>
    <div class="contentBox" style="margin-top: 50px">
    <div class="bannerBox imgBox">
      <img class="bannerImg" :src="banner[0]?.icon" @click="bannerLink(item)" />
    </div>
    <div v-if="informationList.length > 0" class="contentBox" style="margin-top: 50px">
      <div class="informationBox">
        <div class="bookListTitle">
          <div class="title">新闻资讯</div>
          <div class="more">更多></div>
          <div class="more" @click="toMore">更多></div>
        </div>
        <div class="informationList">
          <div class="informationItem" v-for="(item, index) in informationList" :key="index">
@@ -29,7 +25,7 @@
      <div class="contentBox">
        <div class="bookListTitle">
          <div class="title">推荐教材</div>
          <div class="more">更多></div>
          <div class="more" @click="toMore">更多></div>
        </div>
        <div class="recommendList">
          <div
@@ -43,16 +39,12 @@
            </div>
            <div class="infoBox">
              <div class="bookName">{{ item.name }}</div>
              <div class="author">
                作者:{{ item.authorcaupress_author ? item.caupress_author : '-' }}
              </div>
              <div class="author">作者:{{ item.author ? item.author : '-' }}</div>
              <div class="priceBox">
                <span class="oldPrice" v-if="item.oldPrice">原价:¥{{ item.oldPrice }}</span>
                <span class="price" v-if="item.price && item.price > 0">
                  定价:¥
                  <span>{{ item.price }}</span>
                  <span> ¥{{ item.price }}</span>
                </span>
                <span class="price" v-else> 定价:<span class="freePrice">免费</span> </span>
                <span class="oldPrice" v-if="item.oldPrice"> ¥{{ item.oldPrice }}</span>
              </div>
            </div>
          </div>
@@ -90,9 +82,10 @@
              />
            </el-tabs>
          </div>
          <div class="more" style="margin-left: 30px; font-weight: normal" @click="toMore">
            更多>
          </div>
        </div>
        <div class="more">更多></div>
      </div>
      <div class="recommendList">
        <div
@@ -106,16 +99,12 @@
          </div>
          <div class="infoBox">
            <div class="bookName">{{ item.name }}</div>
            <div class="author">
              作者:{{ item.authorcaupress_author ? item.caupress_author : '-' }}
            </div>
            <div class="author">作者:{{ item.author ? item.author : '-' }}</div>
            <div class="priceBox">
              <span class="oldPrice" v-if="item.oldPrice">原价:¥{{ item.oldPrice }}</span>
              <span class="price" v-if="item.price && item.price > 0">
                定价:¥
                <span>{{ item.price }}</span>
                <span>¥{{ item.price }}</span>
              </span>
              <span class="price" v-else> 定价:<span class="freePrice">免费</span> </span>
              <span class="oldPrice" v-if="item.oldPrice">¥{{ item.oldPrice }}</span>
            </div>
          </div>
        </div>
@@ -129,19 +118,22 @@
import moment from 'moment'
import { ElMessage } from 'element-plus'
import teacherCertification from '@/views/personalCenter/teacherCertification.vue'
import { ref, onBeforeMount, inject, reactive, onMounted } from 'vue'
import { ref, onBeforeMount, inject, reactive, onMounted, watch } from 'vue'
let screenheight = ref(document.documentElement.clientHeight / 2)
import { useRouter, useRoute } from 'vue-router'
const router = useRouter()
const route = useRoute()
const MG = inject('MG')
const config = inject('config')
const logIn = inject('logIn')
const tool = inject('tool')
const toolClass = inject('toolClass')
const banner = reactive([])
const informationList = reactive([])
let classfeild = ref([])
let activeName = ref('A1')
let callbackLink = ref(null)
let bookListData = ref([])
let navBookList = ref([])
@@ -157,13 +149,46 @@
  }
})
// 获取url参数
const getUrlParams = () => {
  let url = window.location.href
  let params = url.split('?')[1]
  let paramsObj = {}
  if (params) {
    paramsObj = params.split('&').reduce((pre, cur) => {
      pre[cur.split('=')[0]] = cur.split('=')[1]
      return pre
    }, {})
  }
  return paramsObj
}
onMounted(() => {
  // 监听是否来自数字阅读
  const params = getUrlParams()
  if (params.login) {
    localStorage.setItem('loginBack', decodeURIComponent(params.callBackUrl))
    logIn()
  }
  getBanner()
  classifList()
  getInformationList()
  getBookList()
  getNavBookList()
})
watch(
  () => route, // 监听 path 变化
  (newPath, oldPath) => {
    console.log('路由路径从', oldPath, '变为', newPath)
  },
)
const toMore = () => {
  router.push({
    path: '/bookStore',
  })
}
const toDetail = (item) => {
  router.push({
@@ -216,6 +241,7 @@
      },
      fields: {
        'teachingLevel=': activeName.value,
        author: [],
      },
    })
    .then((res) => {
@@ -265,7 +291,11 @@
const toAuthentication = (type) => {
  if (type) {
    teacherDialog.value = true
    if (localStorage.getItem(config.tokenKey)) {
      teacherDialog.value = true
    } else {
      logIn()
    }
  } else {
    ElMessage({
      message: '建设中...',
@@ -325,6 +355,27 @@
  min-height: calc(100vh - 61.8%);
  background-color: #fff;
  padding-bottom: 100px;
  .bannerBox {
    height: 615px;
    position: relative;
    .bannerText {
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      font-size: 36px;
      font-weight: 700;
      color: #fff;
      text-shadow: 0px 0px 10px #000000;
      text-align: center;
    }
    .enText {
      font-size: 28px;
      opacity: 0.45;
      margin-top: 10px;
    }
  }
}
.el-carousel__item h3 {
  color: #475669;
@@ -396,7 +447,6 @@
.bookListBox {
  width: 100%;
  padding: 80px 0;
  margin-top: 30px;
  background-repeat: no-repeat;
  background-size: 100% 100%;
  background-image: url('@/assets/images/tuijian-bg.png');
@@ -422,6 +472,9 @@
      margin-right: 0;
    }
  }
  .recommendItem:hover {
    background-image: url(@/assets/images/Mouse_fill.png);
  }
}
.recommendItemImg {
@@ -435,21 +488,26 @@
  text-align: center;
  margin-top: 10px;
}
.bookName {
  font-weight: 700;
}
.author {
  margin-top: 10px;
  color: #333333;
}
.priceBox {
  margin-top: 10px;
  .oldPrice {
    font-size: 16px;
    color: #444444;
    color: #999999;
    text-decoration: line-through;
    margin-right: 20px;
    margin-left: 20px;
  }
  .price {
    span {
      font-weight: bold;
      font-size: 14px;
      color: #d91523;
    }
  }
}
@@ -461,24 +519,24 @@
  margin-top: 60px;
  margin-bottom: 60px;
  .authentication {
    width: 40%;
    height: 100px;
    width: 48%;
    height: 123px;
    background-repeat: no-repeat;
    background-size: 100% 100%;
    background-image: url('@/assets/images/xiehe/home/jiaoshirenzheng.png');
  }
  .manual {
    width: 40%;
    height: 100px;
    width: 48%;
    height: 123px;
    background-repeat: no-repeat;
    background-size: 100% 100%;
    background-image: url('@/assets/images/xiehe/home/jiaoshirenzheng.png');
    background-image: url('@/assets/images/xiehe/home/caozuoshouce.png');
  }
}
.titleTabs {
  margin-left: 50px;
  width: 70%;
  width: 85%;
}
.bookListTitle {
  display: flex;
@@ -512,6 +570,15 @@
    font-size: 14px;
    color: #ccc;
    margin-top: 10px;
    line-height: 20px;
  }
}
::v-deep(.el-tabs__item) {
  align-items: stretch;
  height: 60px !important;
  line-height: 20px;
  text-align: center;
  white-space: pre-wrap !important;
}
</style>