From cf7e71c6d0fb64eeb6b5deac540da843b4bb465c Mon Sep 17 00:00:00 2001
From: QYF-GitLab1 <1940665526@qq.com>
Date: 星期二, 26 八月 2025 10:41:52 +0800
Subject: [PATCH] 关于我们-理念与品牌文化

---
 src/views/home/index.vue |  652 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 647 insertions(+), 5 deletions(-)

diff --git a/src/views/home/index.vue b/src/views/home/index.vue
index 69936ea..d5dddec 100644
--- a/src/views/home/index.vue
+++ b/src/views/home/index.vue
@@ -1,23 +1,398 @@
 <template>
   <div class="homePage">
-    <el-carousel :height="screenheight">
-      <el-carousel-item v-for="item in 4" :key="item">
-        <h3 class="small justify-center" text="2xl">{{ item }}</h3>
+    <el-carousel :height="'615px'">
+      <el-carousel-item v-for="(item, index) in banner" :key="index">
+        <div class="bannerBox">
+          <img id="autoHeight" class="bannerImg" :src="item.icon" @click="bannerLink(item)" />
+        </div>
       </el-carousel-item>
     </el-carousel>
+    <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" @click="toMore">鏇村></div>
+        </div>
+        <div class="informationList">
+          <div class="informationItem" v-for="(item, index) in informationList" :key="index">
+            <div class="imgBox"><img class="autoImg" :src="item.icon" alt="" /></div>
+            <div class="informationContent">
+              <div class="informationTitle" :alt="item.name">{{ item.name }}</div>
+              <div class="informationDate">{{ moment(item.publishDate).format('YYYY-MM-DD') }}</div>
+              <div class="informationText">{{ item.description }}</div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div class="bookListBox">
+      <div class="contentBox">
+        <div class="bookListTitle">
+          <div class="titleBox">
+            <span class="titleTextBg">鎺ㄨ崘</span>
+            <span>鏁欐潗</span>
+          </div>
+          <div class="more" @click="toMore">鏇村></div>
+        </div>
+        <div class="recommendList">
+          <div class="recommendItem" v-for="item in bookListData" :key="item.id" @click="toDetail(item)">
+            <div class="recommendItemImg">
+              <img class="autoImg" :src="item.icon" />
+            </div>
+            <div class="infoBox">
+              <div class="bookName">{{ item.name }}</div>
+              <div class="author">
+                {{ item.author ? item.author : '-' }} 钁�
+              </div>
+              <div class="priceBox">
+                <span class="price" v-if="item.price && item.price > 0">
+                  <span> 楼{{ item.price }}</span>
+                </span>
+                <span class="oldPrice" v-if="item.oldPrice > 0"> 楼{{ item.oldPrice }}</span>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div class="contentBox">
+      <div class="funBox">
+        <div class="authentication">
+          <div class="cardNav" @click="toAuthentication(true)">
+            <img id="rightImg" src="@/assets/images/xiehe/home/jxfw.png" alt="">
+            <div class="cardTitle">鏁欏笀璁よ瘉</div>
+            <div class="cardText">
+              瀛︽牎浠昏鑰佸笀涓婁紶鏁欏笀璇佹槑鏂囦欢锛岄�氳繃璁よ瘉鍚庯紝鍙繘琛屾暟瀛楁暀鏉愯瘯鐢ㄧ敵璇峰強寮�璇惧紑鐝�
+            </div>
+          </div>
+        </div>
+        <div class="manual">
+          <div class="cardNav" @click="toAuthentication(false)">
+            <img id="rightImg" src="@/assets/images/xiehe/home/jxfw.png" alt="">
+            <div class="cardTitle">鎿嶄綔鎵嬪唽</div>
+            <div class="cardText">蹇�熶簡瑙d娇鐢ㄦ楠わ紝杞绘澗寮�鍚暀瀛︽敮鎸佷箣鏃�</div>
+          </div>
+        </div>
+      </div>
+
+      <div class="bookListTitle">
+        <div class="title" style="display: flex; line-height: 50px">
+          <div class="titleBox">
+            <span class="titleTextBg">鏁欏</span>
+            <span>瀵艰埅</span>
+          </div>
+          <div class="titleTabs" v-if="classfeild.length > 0">
+            <el-tabs v-model="activeName" @tab-change="handleClick">
+              <el-tab-pane v-for="item in classfeild" :key="item.value" :label="item.name" :name="item.value" />
+            </el-tabs>
+          </div>
+          <div class="more" style="margin-left: 30px; font-weight: normal" @click="toMore">
+            鏇村>
+          </div>
+        </div>
+      </div>
+      <div class="recommendList">
+        <div class="recommendItem" v-for="item in navBookList" :key="item.id" @click="toDetail(item)">
+          <div class="recommendItemImg">
+            <img class="autoImg" :src="item.icon" />
+          </div>
+          <div class="infoBox">
+            <div class="bookName">{{ item.name }}</div>
+            <div class="author">
+              {{ item.author ? item.author : '-' }} 钁�
+            </div>
+            <div class="priceBox">
+              <span class="price" v-if="item.price && item.price > 0">
+                <span>楼{{ item.price }}</span>
+              </span>
+              <span class="oldPrice" v-if="item.oldPrice > 0">楼{{ item.oldPrice }}</span>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <teacherCertification :isShow="teacherDialog" @dialog-Change="dialogChange" />
   </div>
 </template>
 
 <script setup>
-import { ref } from 'vue'
-let screenheight = ref(document.documentElement.clientHeight / 4)
+import moment from 'moment'
+import { ElMessage } from 'element-plus'
+import teacherCertification from '@/views/personalCenter/teacherCertification.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([])
+let teacherDialog = ref(false)
+onBeforeMount(() => {
+  console.log(document.documentElement.clientWidth / 2.628)
+  window.onresize = () => {
+    let c = 2.628
+    if (document.documentElement.clientWidth >= 1220) {
+      screenheight.value = document.documentElement.clientWidth / c
+      console.log(document.documentElement.clientWidth / c)
+    }
+  }
+})
+
+// 鑾峰彇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({
+    path: '/bookdetail',
+    query: {
+      bookId: item.id,
+    },
+  })
+}
+
+const handleClick = (tab, event) => {
+  console.log(tab)
+
+  activeName.value = tab
+  getNavBookList()
+}
+
+const classifList = () => {
+  const query = {
+    refCodes: ['digitalTextbooks'],
+  }
+  MG.resource.getCmsTypeByRefCode(query).then((res) => {
+    const types = toolClass.handleTypeList(res)
+    const typeData = types[0].cmsTypeLinks[0].children
+    const temp_classfeild = typeData.find((item) => item.typeField.refCode === 'teachingLevel')
+      ?.typeField.cfg.option
+
+    const noCheck = temp_classfeild.map((item) => {
+      return {
+        name: item.name,
+        value: item.value,
+      }
+    })
+
+    classfeild.value = noCheck
+  })
+}
+
+const getNavBookList = () => {
+  MG.store
+    .getProductList({
+      path: '*',
+      queryType: '*',
+      storeInfo: 'defaultGoodsStore1',
+      paging: {
+        start: 0,
+        size: 5,
+      },
+      fields: {
+        'teachingLevel=': activeName.value,
+        author: [],
+      },
+    })
+    .then((res) => {
+      navBookList.value = res.datas?.map(item => {
+        return {
+          ...item,
+          price: toolClass.toDecimal2(item.price),
+          oldPrice: toolClass.toDecimal2(item.oldPrice),
+        }
+      })
+    })
+}
+
+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 toAuthentication = (type) => {
+  if (type) {
+    if (localStorage.getItem(config.tokenKey)) {
+      teacherDialog.value = true
+    } else {
+      logIn()
+    }
+  } else {
+    ElMessage({
+      message: '寤鸿涓�...',
+      type: 'warning',
+    })
+  }
+}
+
+const getBookList = () => {
+  MG.store
+    .getProductList({
+      path: 'recommendedTextbooks',
+      paging: {
+        start: 0,
+        size: 5,
+      },
+      fields: {
+        author: [],
+        isbn: []
+      },
+    })
+    .then((res) => {
+      bookListData.value = res.datas?.map(item => {
+        return {
+          ...item,
+          price: toolClass.toDecimal2(item.price),
+          oldPrice: toolClass.toDecimal2(item.oldPrice),
+        }
+      })
+    })
+}
+
+const getInformationList = () => {
+  MG.resource
+    .getItem({
+      path: 'information',
+      fields: { publishDate: [], content: [] },
+      paging: { start: 0, size: 9 },
+    })
+    .then((res) => {
+      informationList.push(...res.datas)
+      console.log(res.datas)
+    })
+}
+
+const getBanner = () => {
+  MG.resource
+    .getItem({
+      path: 'banner\\homeBanner',
+      fields: { link: [] },
+      paging: { start: 0, size: 9 },
+    })
+    .then((res) => {
+      banner.push(...res.datas)
+      console.log(res.datas)
+    })
+}
 </script>
 
 <style lang="less" scoped>
 .homePage {
   min-width: 1220px;
+  min-height: calc(100vh - 61.8%);
   background-color: #fff;
+  padding-bottom: 100px;
+
+  .titleBox {
+    min-width: 127px;
+    font-family: JDLangZhengTi, JDLangZhengTi;
+    font-weight: 400;
+    font-size: 24px;
+    color: #000;
+    line-height: 24px;
+    text-align: left;
+    white-space: nowrap;
+
+    .titleTextBg {
+      padding: 2px 5px;
+      box-sizing: border-box;
+      background-image: url('@/assets/images/xiehe/home/Text_bg2@.png');
+      background-size: 100% 100%;
+      background-repeat: no-repeat;
+      background-position: center;
+      color: #fff;
+    }
+  }
+
+  .bannerBox {
+    width: 100%;
+    height: 100%;
+  }
 }
+
 .el-carousel__item h3 {
   color: #475669;
   opacity: 0.75;
@@ -33,4 +408,271 @@
 .el-carousel__item:nth-child(2n + 1) {
   background-color: #d3dce6;
 }
+
+.informationList {
+  display: flex;
+  flex-wrap: wrap;
+
+  .informationItem {
+    display: flex;
+    width: 42%;
+    min-height: 100px;
+    margin-right: 5%;
+    margin-bottom: 20px;
+    border: 1px solid #ebebeb;
+    border-radius: 10px;
+    padding: 10px;
+    cursor: pointer;
+
+    .imgBox {
+      width: 30%;
+      height: 100%;
+      position: relative;
+    }
+
+    .informationContent {
+      width: 70%;
+      padding-left: 10px;
+
+      .informationTitle {
+        font-size: 14px;
+        width: 100%;
+        white-space: nowrap;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        color: #333333;
+        font-weight: bold;
+        margin-bottom: 10px;
+      }
+
+      .informationDate {
+        margin-top: 10px;
+      }
+
+      .informationText {
+        color: #666666;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        display: -webkit-box;
+        margin-top: 10px;
+        display: -webkit-box;
+        /* 灏嗗璞′綔涓哄脊鎬т几缂╃洅瀛愭ā鍨嬫樉绀� */
+        -webkit-line-clamp: 3;
+        /* 鏄剧ず鐨勮鏁� */
+        -webkit-box-orient: vertical;
+        /* 璁剧疆鎴栨绱几缂╃洅瀵硅薄鐨勫瓙鍏冪礌鐨勬帓鍒楁柟寮� */
+        overflow: hidden;
+        /* 婧㈠嚭闅愯棌 */
+      }
+    }
+  }
+
+  // .informationItem:hover {
+  //   border: 1px solid #019e58;
+  // }
+}
+
+.bookListBox {
+  width: 100%;
+  padding: 80px 0;
+  background-repeat: no-repeat;
+  background-size: 100% 100%;
+  background-image: url('@/assets/images/tuijian-bg.png');
+  background-repeat: no-repeat;
+  background-size: 100% 100%;
+}
+
+.recommendList {
+  display: flex;
+  padding-top: 20px;
+
+  .recommendItem {
+    flex: 1;
+    margin-right: 20px;
+    width: 261px;
+    height: 389px;
+    background-repeat: no-repeat;
+    background-size: 100% 100%;
+    cursor: pointer;
+    border: 1px solid #dedede;
+    background-color: #fff;
+    padding-top: 10px;
+    background: rgba(255, 255, 255, 0.73);
+    border-radius: 8px 8px 8px 8px;
+    border: 1px solid #DEDEDE;
+    box-sizing: border-box;
+    padding: 30px 0;
+    box-sizing: border-box;
+
+    &:last-child {
+      margin-right: 0;
+    }
+  }
+
+  .recommendItem:hover {
+    background-image: url(@/assets/images/Mouse_fill.png);
+    background-position: center;
+    background-size: 100% 100%;
+    background-repeat: no-repeat;
+  }
+}
+
+.recommendItemImg {
+  width: 156px;
+  height: 210px;
+  position: relative;
+  margin: 0 auto;
+}
+
+.infoBox {
+  text-align: center;
+  padding: 20px 0;
+  box-sizing: border-box;
+  font-family: Microsoft YaHei UI, Microsoft YaHei UI;
+  box-sizing: border-box;
+}
+
+.bookName {
+  font-weight: bold;
+  font-size: 18px;
+  color: #000000;
+  font-weight: 700;
+}
+
+.author {
+  font-weight: 400;
+  font-size: 16px;
+  color: #333333;
+  padding: 15px 0;
+  box-sizing: border-box;
+}
+
+.priceBox {
+  font-family: DIN, DIN;
+  font-weight: 500;
+  font-size: 18px;
+  color: #D91523;
+  padding: 15px 0;
+  box-sizing: border-box;
+
+  .oldPrice {
+    color: #999999;
+    text-decoration: line-through;
+    margin-left: 20px;
+  }
+
+  .price {
+    span {
+      font-weight: bold;
+      color: #d91523;
+    }
+  }
+}
+
+.funBox {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin-top: 60px;
+  margin-bottom: 60px;
+
+  .authentication {
+    width: 650px;
+    height: 123px;
+    background-repeat: no-repeat;
+    background-size: 100% 100%;
+    background-image: url('@/assets/images/xiehe/home/jiaoshirenzheng.png');
+  }
+
+  .manual {
+    width: 650px;
+    height: 123px;
+    background-repeat: no-repeat;
+    background-size: 100% 100%;
+    background-image: url('@/assets/images/xiehe/home/caozuoshouce.png');
+  }
+}
+
+.titleTabs {
+  margin-left: 30px;
+  width: 85%;
+}
+
+.bookListTitle {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin-bottom: 20px;
+  border-bottom: 1px solid #ebebeb;
+
+
+  .title {
+    font-size: 20px;
+    color: #333333;
+    font-weight: bold;
+  }
+
+  .more {
+    font-size: 14px;
+    color: #999999;
+    cursor: pointer;
+    font-weight: 500;
+    min-width: 60px;
+    text-align: center;
+  }
+}
+
+.cardNav {
+  margin-left: 150px;
+  margin-top: 20px;
+  padding-right: 20px;
+  cursor: pointer;
+  position: relative;
+
+  #rightImg {
+    position: absolute;
+    right: 48px;
+    top: 26px;
+    height: 30px;
+  }
+
+  .cardTitle {
+    font-family: JDLangZhengTi, JDLangZhengTi;
+    font-weight: 400;
+    font-size: 32px;
+    color: #FFFFFF;
+    margin-bottom: 5px;
+    font-weight: 500;
+  }
+
+  .cardText {
+    width: 351px;
+    font-family: PingFang SC, PingFang SC;
+    font-weight: 400;
+    font-size: 14px;
+    color: #FFFFFF;
+    line-height: 25px;
+  }
+
+
+}
+
+::v-deep(.el-tabs__item) {
+  height: 50px;
+  line-height: 22px;
+  text-align: center;
+  padding: 15px 0;
+  box-sizing: border-box;
+  margin: 0 10px;
+}
+
+
+::v-deep(.el-tabs__header) {
+  padding: 0;
+  position: relative;
+  margin: 0 0 0 0px;
+  display: flex;
+  align-items: center;
+  justify-content: space-between
+}
 </style>

--
Gitblit v1.9.1