111
杨磊
20 小时以前 5bf3b9847d3972a817c452c38973943d8f8548ed
111
2个文件已添加
9个文件已修改
415 ■■■■■ 已修改文件
src/assets/images/Mouse_fill.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/images/pageFooter/xieheCode.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/main.css 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/components/footerPage.vue 164 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/components/headerPage.vue 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/components/login.vue 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/aboutUs/index.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/bookStore/detail.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/bookStore/index.vue 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/home/index.vue 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/home/search.vue 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/images/Mouse_fill.png
src/assets/images/pageFooter/xieheCode.png
src/assets/main.css
@@ -16,7 +16,7 @@
/* 居中布局 */
.contentBox {
  width: 1200px;
  width: 1369px;
  margin: 0 auto;
}
@@ -114,7 +114,6 @@
.avatar-uploader .el-upload:hover {
  border-color: #019e58;
}
.avatarCover {
  display: block;
  position: absolute;
@@ -180,8 +179,12 @@
.el-input-group__append,
.el-input-group__prepend {
  /* vertical-align: initial !important; */
  /* align-items: stretch !important; */
  vertical-align: initial !important;
  align-items: stretch !important;
}
.el-select__wrapper {
  height: 40px !important;
}
/* 个人中心页面公共样式 */
@@ -226,3 +229,6 @@
.grey {
  color: #949494;
}
.el-dialog__header {
  padding: 0; /* 或者自定义的值 */
}
src/layout/components/footerPage.vue
@@ -1,21 +1,21 @@
<template>
  <div class="pageFooter">
    <div class="footerContent contentBox flex">
      <div class="infoBox flex1">
      <div class="infoBox">
        <ul class="linkBox">
          <li class="link" @click="toAboutus(index)" v-for="(item, index) in linkList" :key="index">
          <li class="link" @click="innerLink(item)" v-for="(item, index) in linkList" :key="index">
            {{ item.name }}
          </li>
        </ul>
        <ul class="linkBox">
          <li class="link" @click="toAboutus(index)" v-for="(item, index) in newList" :key="index">
          <li class="link" @click="innerLink(item)" v-for="(item, index) in newList" :key="index">
            {{ item.name }}
          </li>
        </ul>
        <ul class="linkBox">
          <li
            class="link"
            @click="toAboutus(index)"
            @click="toAboutus(item)"
            v-for="(item, index) in serviceList"
            :key="index"
          >
@@ -23,18 +23,20 @@
          </li>
        </ul>
        <ul class="linkBox">
          <li class="link" @click="toAboutus(index)">天猫旗舰店</li>
          <li class="link" style="opacity: 1; font-size: 20px" @click="toAboutus(index)">
          <li class="link" @click="toAboutus({ name: '天猫旗舰店' })">天猫旗舰店</li>
          <li
            class="link"
            style="opacity: 1; font-size: 16px"
            @click="toAboutus({ name: '京东旗舰店' })"
          >
            京东旗舰店
          </li>
        </ul>
      </div>
      <div class="QRCodeBox">
        <div style="font-size: 16px; color: #fff">媒体矩阵</div>
        <div class="codeItem">
          <img src="@/assets/images/pageFooter/wechatCode.png" />
        </div>
        <div class="codeItem">
          <img src="@/assets/images/pageFooter/weiboCode.png" />
          <img src="@/assets/images/pageFooter/xieheCode.png" />
        </div>
      </div>
    </div>
@@ -47,13 +49,135 @@
      >
      <span style="display: block">Copyright©2013 中国协和医科大学出版社有限公司 版权所有!</span>
    </div>
    <teacherCertification :isShow="teacherDialog" @dialog-Change="dialogChange" />
  </div>
</template>
<script setup lang="ts">
import { reactive } from 'vue'
import { inject, onMounted, reactive, ref } from 'vue'
import teacherCertification from '@/views/personalCenter/teacherCertification.vue'
const MG = inject('MG')
const config = inject('config')
import { useRouter, useRoute } from 'vue-router'
const router = useRouter()
import { ElMessage } from 'element-plus'
const logIn = inject('logIn')
const toLinkList = reactive([])
const thirdPartyLink = reactive([])
let teacherDialog = ref(false)
onMounted(() => {
  getBanner()
  getLinkList()
})
const toAboutus = () => {}
const dialogChange = (val) => {
  getTeacherInfo()
  if (val == false) {
    teacherDialog.value = false
  } else {
    teacherDialog.value = true
  }
}
//教师信息
function getTeacherInfo() {
  const data = {
    start: 0,
    size: 10,
    topicIdOrRefCode: 'teacherRoleApproval',
    appRefCode: config.appRefCode,
    sort: {
      type: 'Desc',
      field: 'CreateDate',
    },
  }
  MG.ugc.getTopicMessageList(data).then((res) => {
    try {
      const resData = res.datas.find((i) => i.appUserCreator.userId == userId.value)
      if (resData) {
        teacherState.value = resData.state
        if (resData.feedBack != null) {
          reasonTxt.value = JSON.parse(resData.feedBack).reason
        }
      } else {
        teacherState.value = ''
      }
      loading.value = false
    } catch (error) {
      loading.value = false
    }
  })
}
const getBanner = () => {
  MG.resource
    .getItem({
      path: 'friendshipLink',
      fields: { link: [] },
      paging: { start: 0, size: 99 },
    })
    .then((res) => {
      console.log(res, 'link')
      toLinkList.push(...res.datas)
    })
}
const getLinkList = () => {
  MG.resource
    .getItem({
      path: 'purchaseMethod',
      fields: { link: [] },
      paging: { start: 0, size: 99 },
    })
    .then((res) => {
      toLinkList.push(...res.datas)
      console.log(toLinkList, 'toLinkList')
    })
}
const innerLink = (item) => {
  console.log(item, 'item')
  switch (item.name) {
    case '关于我们':
      router.push('/aboutUs')
      break
    case '联系我们':
      router.push('/aboutUs')
      break
    case '意见反馈':
      ElMessage({
        message: '建设中...',
        type: 'warning',
      })
      break
    case '操作指南':
      ElMessage({
        message: '建设中...',
        type: 'warning',
      })
      break
    case '教师认证':
      console.log(localStorage.getItem(config.tokenKey))
      if (localStorage.getItem(config.tokenKey)) {
        teacherDialog.value = true
      } else {
        logIn()
      }
      break
    default:
      break
  }
}
const toAboutus = (item) => {
  console.log(item.name, 'item')
  const currentLink = toLinkList.find((i) => i.name === item.name)
  console.log(currentLink, 'currentLink')
  console.log(toLinkList, 'toLinkList')
  if (currentLink) {
    window.open(currentLink.link)
  }
}
const linkList = reactive([
  {
@@ -105,7 +229,7 @@
    url: '',
  },
  {
    name: '北京市卫健委',
    name: '北京市卫生健康委',
    url: '',
  },
])
@@ -115,8 +239,11 @@
.pageFooter {
  background: #444444;
  background-image: url('@/assets/images/xiehe/home/footer-bg.png');
  background-repeat: no-repeat;
  background-size: 100% 100%;
  .footerContent {
    padding: 30px 0;
    justify-content: start;
    .infoBox {
      display: flex;
      .linkBox {
@@ -127,6 +254,8 @@
          cursor: pointer;
          color: #fff;
          margin-top: 20px;
          font-size: 14px;
          opacity: 0.7;
          &::after {
            margin-left: 15px;
@@ -137,7 +266,7 @@
          &:first-child {
            color: #fff;
            opacity: 1;
            font-size: 20px;
            font-size: 16px;
            margin-bottom: 10px;
          }
        }
@@ -159,10 +288,11 @@
      }
    }
    .QRCodeBox {
      margin-left: 240px;
      .codeItem {
        display: inline-block;
        text-align: center;
        margin-left: 40px;
        p {
          font-size: 16px;
        }
@@ -180,8 +310,8 @@
    height: 80px;
    line-height: 40px;
    font-size: 12px;
    border-top: 1px solid #e6e6e6;
    font-size: 14px;
    border-top: 1px solid #ccc;
    .beian {
      cursor: pointer;
    }
src/layout/components/headerPage.vue
@@ -15,7 +15,7 @@
      </div>
      <div class="searchBox" v-show="!hideSerch">
        <el-input
          style="width: 500px; height: 50px"
          style="width: 500px; height: 36px"
          placeholder="请输入内容"
          v-model="searchKey"
          :suffix-icon="Search"
@@ -23,16 +23,19 @@
        >
        </el-input>
        <div class="loginInfoBox">
          <div v-if="!userInfo" class="loginBtnBox">
            <a
          <div v-if="!userInfo" class="loginBtnBox" style="width: 200px">
            <div
              class="loginBtn"
              @click="
                () => {
                  console.log(loginRef.value)
                  loginRef.logIn()
                }
              "
              >注册/登录</a
            >
              <el-icon><UserFilled /></el-icon>
              注册/登录
            </div>
          </div>
          <div v-else class="userInfoBox">
            <el-dropdown @command="handleCommand">
@@ -62,7 +65,8 @@
      <div
        :class="{
          navItem: true,
          active: $route.fullPath.indexOf(item.path) > -1,
          // active: $route.fullPath.indexOf(item.path) > -1,
          active: item.pathList.findIndex((citem) => citem == $route.path) > -1,
        }"
        v-for="(item, index) in navData"
        :key="index"
@@ -79,10 +83,12 @@
import { onMounted, provide, ref } from 'vue'
import { Search, Avatar, SwitchButton } from '@element-plus/icons-vue'
import { useUserStore } from '@/store'
import { useRouter } from 'vue-router'
import { useRouter, useRoute } from 'vue-router'
import { ElMessage } from 'element-plus'
const userStore = useUserStore()
const router = useRouter()
const route = useRoute()
const loginRef = ref()
const props = defineProps({
@@ -102,24 +108,29 @@
  {
    name: '首页',
    path: '/home',
    pathList: ['/home', '/search'],
  },
  {
    name: '教育出版',
    path: '/bookStore',
    pathList: ['/bookStore', '/bookdetail'],
  },
  {
    name: '读者服务',
    path: '/teachingServices',
    pathList: ['/teachingServices'],
  },
  {
    name: '关于我们',
    path: '/aboutUs',
    pathList: ['/aboutUs'],
  },
])
onMounted(() => {
  userInfo.value = userStore.userInfo
  console.log(userInfo.value, 'userInfo')
  console.log(route, 'route')
})
const gotoSearch = () => {
@@ -159,7 +170,6 @@
.pageHeader {
  width: 100%;
  background-color: #fff;
  border-bottom: 1px solid #e6e6e6;
  .topBar {
    background: #e6e6e6;
    color: #808080;
@@ -173,6 +183,16 @@
  .loginInfoBox {
    width: 200px;
    margin-left: 20px;
    .loginBtn {
      width: 100px;
      background-color: #144941;
      height: 36px;
      line-height: 36px;
      text-align: center;
      border-radius: 20px;
      color: #ffffff;
      cursor: pointer;
    }
  }
  .logoBox {
    padding: 25px 0;
@@ -223,9 +243,14 @@
  }
}
</style>
<style>
<style scoped>
.pageHeader .searchBox .el-input-group__prepend {
  background: #fff;
  color: #444;
}
::v-deep(.el-input__wrapper) {
  border-radius: 50px !important;
  height: 36px;
  line-height: 36px;
}
</style>
src/layout/components/login.vue
@@ -1,13 +1,13 @@
<template>
  <el-dialog
    align-center
    append-to-body
    v-model="dialogFormVisible"
    @close="closeDialog"
    @open="openDialog"
    class="fansdialog"
    style="padding: 0; padding-bottom: 0px"
  >
    <div style="display: flex; justify-content: space-around">
    <div style="display: flex; justify-content: space-between">
      <el-image :src="dialogLeftImg" class="leftImg" />
      <div class="logIn">
@@ -16,15 +16,17 @@
            <li
              @click="signUpWay = 'authSignUp'"
              :style="{
                color: signUpWay == 'authSignUp' ? '#144941' : '#545C63',
                color: signUpWay == 'authSignUp' ? '#019E58' : '#545C63',
              }"
              style="font-weight: 700"
            >
              手机号登录
            </li>
            <li>|</li>
            <li
              @click="wechatLoginOpen"
              :style="{ color: signUpWay == 'wechat' ? '#144941' : '#545C63' }"
              :style="{ color: signUpWay == 'wechat' ? '#019E58' : '#545C63' }"
              style="font-weight: 700"
            >
              微信登录
            </li>
@@ -378,14 +380,16 @@
}
.fansdialog {
  width: 806px;
  padding: 0 !important;
  margin: 0 !important;
  .leftImg {
    box-sizing: border-box;
    width: 403px;
  }
  .el-dialog__header {
    padding: 0;
  ::v-deep(.el-dialog__header) {
    padding: 0 !important;
    padding-bottom: 0 !important;
  }
  .el-dialog__body {
@@ -393,6 +397,7 @@
    height: 575px;
    display: flex;
    padding: 0 !important;
    margin: 0 !important;
  }
  .leftImg {
@@ -403,6 +408,7 @@
  .el-dialog__header {
    padding: 0;
    padding-bottom: 0 !important;
  }
  .el-dialog__body {
@@ -418,11 +424,6 @@
  p span {
    line-height: 24px;
  }
  .el-dialog__header {
    font-size: 18px;
    color: #333;
  }
  .el-dialog__body {
@@ -467,7 +468,7 @@
  padding-top: 48px;
  display: flex;
  flex-direction: column;
  justify-content: space-around;
  justify-content: space-between;
  .signUpTitle {
    width: 100%;
@@ -814,19 +815,18 @@
  background: #fff;
}
// .el-select {
//   width: 100px;
//   height: 30px;
//   color: red;
//   border: none !important;
::v-deep(.el-select) {
  width: 100px;
  height: 30px;
  color: red;
  border: none !important;
//   /deep/ .select-trigger {
//     height: 100%;
//     .el-input--suffix {
//       height: 100%;
//       background-color: #fff;
//     }
//   }
// }
  ::v-deep(.select-trigger) {
    height: 100%;
    .el-input--suffix {
      height: 100%;
      background-color: #fff;
    }
  }
}
</style>
src/views/aboutUs/index.vue
@@ -20,7 +20,7 @@
          <div class="titleBox1">
            <img class="autoImg" src="@/assets/images/xiehe/about/yinhao.png" alt="" />
          </div>
          <div class="titleText">Publisher Introduction</div>
          <div class="titleText">PUBLISHER INTRODUCTION</div>
        </div>
        <div class="textBox" v-html="publisherIntroduction"></div>
        <div class="statisticsBox">
@@ -60,7 +60,7 @@
        <div class="CultureBox">
          <div class="brandCultureTitle">
            <div>理念与品牌文化</div>
            <div class="enText">Philosophy & Brand Culture</div>
            <div class="enText">PHILOSOPHY & BRAND CULTURE</div>
          </div>
          <div class="cultureList" v-loading="loading">
            <div class="cultureItem firstItem">
@@ -228,7 +228,7 @@
    text-align: center;
  }
  .enText {
    font-size: 36px;
    font-size: 28px;
    opacity: 0.45;
    margin-top: 20px;
  }
src/views/bookStore/detail.vue
@@ -42,20 +42,13 @@
                  src="@/assets/images/xiehe/detail/Collection_fill.png"
                  style="margin-right: 10px"
                />
                <span
                  @click="collectBook"
                  v-else
                  class="iconfont icon-shoucang"
                  style="margin-right: 10px"
                >
                </span>
                <span v-else class="iconfont icon-shoucang" style="margin-right: 10px"> </span>
                <div class="collectText" @click="collectBook" v-if="bookInfo.isFavourite">
                  已收藏
                </div>
                <div class="collectText" @click="collectBook" v-else>
                  <img
                    @click="collectBook"
                    class="buyIcon"
                    src="@/assets/images/xiehe/detail/Collection.png"
                    style="margin-right: 10px"
@@ -176,7 +169,7 @@
              <el-button v-if="currentRoute == 'teachingServices'" plain @click="addPaperBook"
                >纸质样书</el-button
              >
              <el-button plain @click="applyTextBook">申请使用</el-button>
              <el-button plain @click="applyTextBook">申请试用</el-button>
            </div>
          </div>
        </div>
@@ -225,7 +218,7 @@
          <div class="resourcesBox">
            <el-empty v-if="!resourceHave" :image-size="150" description="暂无内容"></el-empty>
            <div class="distribution" v-if="resourceHave">
              <div class="title">资源分布</div>
              <div class="titleBorderBox">资源分布</div>
              <div class="echartsBox">
                <div class="left">
                  <div id="chartsContent" style="width: 600px; height: 400px"></div>
@@ -818,6 +811,7 @@
    display: flex;
    justify-content: space-between;
    margin-bottom: 20px;
    margin-top: 20px;
  }
  .left {
  }
src/views/bookStore/index.vue
@@ -12,7 +12,7 @@
        <img class="autoimg" src="@/assets/images/bookStore/feblei.png" />
      </div>
      <div class="classificationBox">
        <div style="width: 100px">分类:</div>
        <div style="width: 100px; line-height: 60px">分类:</div>
        <div class="classificaListBox">
          <div
            class="classificaItem"
@@ -30,7 +30,7 @@
        <div class="bookfilterList">
          <div class="listTitle">
            <div>结果:共计{{ total }}条</div>
            <div style="width: 300px">
            <div style="width: 340px">
              <el-input
                v-model="input3"
                placeholder="输入教材名称、作者姓名、出品方名称搜索"
@@ -89,7 +89,12 @@
        <div class="recommendBox">
          <div class="recommendTitle">推荐教材</div>
          <div class="newRecommendList">
            <div class="recommendItem" v-for="item in recommendBookListData" :key="item.id">
            <div
              class="recommendItem"
              v-for="item in recommendBookListData"
              :key="item.id"
              @click="toDetail(item)"
            >
              <div class="recommendItemImg">
                <img class="autoImg" :src="item.icon" />
              </div>
@@ -253,7 +258,7 @@
      text-align: center;
    }
    .enText {
      font-size: 36px;
      font-size: 28px;
      opacity: 0.45;
      margin-top: 20px;
    }
@@ -265,6 +270,7 @@
    margin-top: 30px;
    .classificaListBox {
      display: flex;
      justify-content: space-between;
      flex-wrap: wrap;
      .classificaItem {
        display: flex;
@@ -333,6 +339,9 @@
    &:last-child {
      margin-right: 0;
    }
  }
  .recommendItem:hover {
    background-image: url(@/assets/images/Mouse_fill.png);
  }
  .recommendItemImg {
    width: 150px;
@@ -425,3 +434,9 @@
  color: #144941;
}
</style>
<style>
.el-input-group__append {
  background-color: #144941;
  color: #fff;
}
</style>
src/views/home/index.vue
@@ -7,11 +7,11 @@
        </div>
      </el-carousel-item>
    </el-carousel>
    <div class="contentBox" style="margin-top: 50px">
    <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 +29,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
@@ -47,12 +47,10 @@
                作者:{{ item.authorcaupress_author ? item.caupress_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 +88,8 @@
              />
            </el-tabs>
          </div>
          <div class="more" style="margin-left: 20px" @click="toMore">更多></div>
        </div>
        <div class="more">更多></div>
      </div>
      <div class="recommendList">
        <div
@@ -110,12 +107,10 @@
              作者:{{ item.authorcaupress_author ? item.caupress_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>
@@ -136,6 +131,7 @@
const MG = inject('MG')
const config = inject('config')
const logIn = inject('logIn')
const tool = inject('tool')
const toolClass = inject('toolClass')
const banner = reactive([])
@@ -164,6 +160,12 @@
  getBookList()
  getNavBookList()
})
const toMore = () => {
  router.push({
    path: '/bookStore',
  })
}
const toDetail = (item) => {
  router.push({
@@ -265,7 +267,11 @@
const toAuthentication = (type) => {
  if (type) {
    teacherDialog.value = true
    if (localStorage.getItem(config.tokenKey)) {
      teacherDialog.value = true
    } else {
      logIn()
    }
  } else {
    ElMessage({
      message: '建设中...',
@@ -422,6 +428,9 @@
      margin-right: 0;
    }
  }
  .recommendItem:hover {
    background-image: url(@/assets/images/Mouse_fill.png);
  }
}
.recommendItemImg {
@@ -435,21 +444,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;
    }
  }
}
@@ -478,7 +492,7 @@
.titleTabs {
  margin-left: 50px;
  width: 70%;
  width: 75%;
}
.bookListTitle {
  display: flex;
src/views/home/search.vue
@@ -23,17 +23,6 @@
        <div class="bookfilterList">
          <div class="listTitle">
            <div>结果:共计{{ total }}条</div>
            <div style="width: 300px">
              <el-input
                v-model="input3"
                placeholder="输入教材名称、作者姓名、出品方名称搜索"
                class="input-with-select"
              >
                <template #append>
                  <el-button :icon="Search" @click="getBookList" />
                </template>
              </el-input>
            </div>
          </div>
          <div>
@@ -79,37 +68,13 @@
            />
          </div>
        </div>
        <div class="recommendBox">
          <div class="recommendTitle">推荐教材</div>
          <div class="newRecommendList">
            <div class="recommendItem" v-for="item in recommendBookListData" :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">原价:¥{{ item.oldPrice }}</span>
                  <span class="price" v-if="item.price && item.price > 0">
                    定价:¥
                    <span>{{ item.price }}</span>
                  </span>
                  <span class="price" v-else> 定价:<span class="freePrice">免费</span> </span>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>
<script setup>
import { ref, onBeforeMount, inject, reactive, onMounted } from 'vue'
import { ref, onBeforeMount, inject, reactive, onMounted, watch } from 'vue'
import { useRouter, useRoute } from 'vue-router'
const MG = inject('MG')
@@ -126,6 +91,15 @@
const route = useRoute()
const router = useRouter()
let currentLevel = ref('all')
watch(
  () => route.query, // 监听 path 变化
  (newPath, oldPath) => {
    console.log('路由路径从', oldPath, '变为', newPath)
    input3.value = newPath.key
    getBookList()
  },
)
const toDetail = (item) => {
  router.push({
@@ -282,7 +256,7 @@
    padding: 20px;
    .bookfilterList {
      width: 80%;
      width: 100%;
      border: 1px solid #e4e7ed;
      height: 100%;
      border-radius: 10px;
@@ -330,6 +304,9 @@
      margin-right: 0;
    }
  }
  .recommendItem:hover {
    background-image: url(@/assets/images/Mouse_fill.png);
  }
  .recommendItemImg {
    width: 150px;
    height: 200px;