yujialong 6 months ago
parent 6a2dd7ce78
commit d6c7ff0402
  1. BIN
      src/assets/images/about-bg.png
  2. 73
      src/components/menuTree/index.vue
  3. 452
      src/layouts/footer/index.vue
  4. 304
      src/layouts/header/index.vue
  5. 12
      src/layouts/home/index.vue
  6. 174
      src/layouts/navbar/index.vue
  7. 41
      src/mixins/page/index.js
  8. 2216
      src/pages/aboutUs/index.vue
  9. 287
      src/pages/article/index.vue
  10. 1612
      src/pages/column/index.vue
  11. 1753
      src/pages/home/index.vue
  12. 1190
      src/pages/index/list/index.vue
  13. 898
      src/pages/index/show/index.vue

Binary file not shown.

Before

Width:  |  Height:  |  Size: 695 KiB

After

Width:  |  Height:  |  Size: 633 KiB

@ -1,26 +1,19 @@
<template>
<div class="menu-child">
<template v-for="item in this.menuList">
<el-submenu :popper-class="site == 2 && $store.getters.getModelType ? 'iasf-menu-popup' : ''"
:class="{active: $route.query.id == item.id}"
:key="item.id"
:index="String(item.id)"
:id="item.id"
v-if="item.children && item.children.length && item.children.find(i=>i.menuVisible !==1)">
<el-submenu :popper-class="$store.getters.getModelType ? 'iasf-menu-popup' : isHome ? 'home-menu-popup' : ''"
:class="{ active: $route.query.id == item.id }" :key="item.id" :index="String(item.id)" :id="item.id"
v-if="item.children && item.children.length && item.children.find(i => i.menuVisible !== 1)">
<template slot="title">
<span slot="title"
:id="item.id">{{item.columnName}}</span>
<span slot="title" :id="item.id">{{ item.columnName }}</span>
</template>
<menuTree :menuList="item.children"></menuTree>
</el-submenu>
<template v-else>
<template v-if="item.menuVisible!==1">
<el-menu-item :key="item.id"
:id="item.id"
:index="String(item.id)"
:class="{active: $route.query.id == item.id}">
<span slot="title"
:id="item.id">{{item.columnName}}</span>
<template v-if="item.menuVisible !== 1">
<el-menu-item :key="item.id" :id="item.id" :index="String(item.id)"
:class="{ active: $route.query.id == item.id }">
<span slot="title" :id="item.id">{{ item.columnName }}</span>
</el-menu-item>
</template>
</template>
@ -55,38 +48,40 @@ export default {
</script>
<style lang="scss" scoped>
.menu-child {
/deep/ .el-menu-item {
background-color: transparent !important;
}
&:hover {
background-color: transparent !important;
}
}
@media (max-width: 1200px) {
.menu-child {
/deep/ .el-menu-item {
background-color: transparent !important;
height: 40px;
line-height: 40px;
color: black !important;
background-color: transparent !important;
}
&:hover {
background-color: transparent !important;
background-color: transparent !important;
}
}
@media (max-width: 1200px) {
.menu-child {
/deep/ .el-menu-item {
height: 40px;
line-height: 40px;
color: black !important;
background-color: transparent !important;
}
}
&:hover {
background-color: transparent !important;
}
.el-submenu {
&:focus-visible {
outline: none;
}
.el-submenu {
&:focus-visible {
outline: none;
}
/deep/ .el-submenu__title {
height: 40px;
line-height: 40px;
font-size: 1rem;
color: black !important;
}
/deep/ .el-submenu__title {
height: 40px;
line-height: 40px;
font-size: 1rem;
color: black !important;
}
}
}
</style>

@ -1,82 +1,58 @@
<template>
<div>
<div v-if="showDefaultPath.includes($route.path)"
:class="['footer', {iasf: isIasf}]">
<div v-if="showDefaultPath.includes($route.path)" :class="['footer', { iasf: isIasf }]">
<template v-if="isIasf">
<div class="mask"></div>
<ul v-if="isIasf"
class="entry">
<li :class="{'cursor-pointer': isLink(modules[13].form.link.linkName)}"
@click="openLink(modules[14].form)">
<img class="icon"
:src="modules[14].form.pic"
alt="">
<ul v-if="isIasf" class="entry">
<li :class="{ 'cursor-pointer': isLink(modules[13].form.link.linkName) }" @click="openLink(modules[14].form)">
<img class="icon" :src="modules[14].form.pic" alt="">
<p class="text">{{ modules[14].form.title }}</p>
</li>
<li :class="{'cursor-pointer': isLink(modules[14].form.link.linkName)}"
@click="openLink(modules[15].form)">
<img class="icon"
:src="modules[15].form.pic"
alt="">
<li :class="{ 'cursor-pointer': isLink(modules[14].form.link.linkName) }" @click="openLink(modules[15].form)">
<img class="icon" :src="modules[15].form.pic" alt="">
<p class="text">{{ modules[15].form.title }}</p>
</li>
<li :class="{'cursor-pointer': isLink(modules[15].form.link.linkName)}"
@click="openLink(modules[16].form)">
<img class="icon"
:src="modules[16].form.pic"
alt="">
<li :class="{ 'cursor-pointer': isLink(modules[15].form.link.linkName) }" @click="openLink(modules[16].form)">
<img class="icon" :src="modules[16].form.pic" alt="">
<p class="text">{{ modules[16].form.title }}</p>
</li>
<li :class="{'cursor-pointer': isLink(modules[16].form.link.linkName)}"
@click="openLink(modules[17].form)">
<img class="icon"
:src="modules[17].form.pic"
alt="">
<li :class="{ 'cursor-pointer': isLink(modules[16].form.link.linkName) }" @click="openLink(modules[17].form)">
<img class="icon" :src="modules[17].form.pic" alt="">
<p class="text">{{ modules[17].form.title }}</p>
</li>
<li :class="{'cursor-pointer': isLink(modules[17].form.link.linkName)}"
@click="openLink(modules[18].form)">
<img class="icon"
:src="modules[18].form.pic"
alt="">
<li :class="{ 'cursor-pointer': isLink(modules[17].form.link.linkName) }" @click="openLink(modules[18].form)">
<img class="icon" :src="modules[18].form.pic" alt="">
<p class="text">{{ modules[18].form.title }}</p>
</li>
</ul>
</template>
<div class="relative">
<div class="info">
<div class="leftBox">
<p class="meta">Copyright ©2002- 2021</p>
<p class="meta">Institute of Advanced Science Facilities, ShenzhenIASF</p>
<p class="meta">Tel400-0010-998</p>
</div>
<div v-for="(item, i) in columns"
:key="i"
class="column">
<h6 @click="columnTo(item)">{{ item.columnName }}</h6>
<ul v-if="item.children.length"
class="children">
<li v-for="(column, j) in item.children"
:key="j"
@click="columnTo(column)">{{ column.columnName }}</li>
</ul>
<div class="relative text-center">
<img src="https://huorantech.com/images/about/logo.png" alt="">
<div class="flex j-center a-center m-t-20">
<div class="flex">
<div v-for="(item, i) in columns" :key="i" class="column">
<h6 @click="columnTo(item)">{{ item.columnName }}</h6>
<ul v-if="item.children.length" class="children">
<li v-for="(column, j) in item.children" :key="j" @click="columnTo(column)">{{ column.columnName }}</li>
</ul>
</div>
</div>
</div>
<a class="copyright">粤ICP备2020131940号 粤公安网34565432456765432号</a>
<div class="text-center">
<p class="meta">广东省深圳市龙华区民治街道红山社区龙光玖钻商务中心南期A座2311</p>
<a class="copyright" href="https://beian.miit.gov.cn/#/Integrated/index" target="_blank">粤ICP备20072679号</a>
</div>
</div>
</div>
<div v-if="showContactPath.includes($route.path)"
class="contact">
<div v-if="showContactPath.includes($route.path)" class="contact">
<div class="inner">
<div class="title">
<h6>Contact us</h6>
<p class="text">CONTACT US</p>
</div>
<div class="region">
<img class="dot"
src="@/assets/images/dot.png"
alt="">
<img class="dot" src="@/assets/images/dot.png" alt="">
<p class="name">Shenzhen</p>
</div>
<div class="info">
@ -86,22 +62,17 @@
<div class="texts">
<div class="lines">
<div class="line">
<img class="icon"
src="@/assets/images/mail.png"
alt="">
<img class="icon" src="@/assets/images/mail.png" alt="">
Email: {{ isSfel ? 'fel@mail.iasf.ac.cn' : 'std@mail.iasf.ac.cn' }}
</div>
<div class="line">
<img class="icon"
src="@/assets/images/tel.png"
alt="">
<img class="icon" src="@/assets/images/tel.png" alt="">
Telephone: {{ isSfel ? '0755-21096052' : '0086-755-21096026' }}
</div>
<div class="line">
<img class="icon"
src="@/assets/images/address.png"
alt="">
Address: {{ isSfel ? '自由电子激光工程经理部' : '268 Zhenyuan St, Building A3, Floor 3-6, Guangming District, Shenzhen, Guangdong, P.R.China' }}
<img class="icon" src="@/assets/images/address.png" alt="">
Address: {{ isSfel ? '自由电子激光工程经理部' :
'268 Zhenyuan St, Building A3, Floor 3-6, Guangming District, Shenzhen, Guangdong, P.R.China' }}
</div>
</div>
<div class="qrcode">
@ -244,190 +215,223 @@ export default {
};
</script>
<style lang="scss" scoped>
.leftBox {
margin-right: 100px;
}
.footer {
position: relative;
padding: 64px 20% 25px;
color: #fff;
background-color: #091733;
overflow: hidden;
.info {
display: flex;
}
.meta {
margin-bottom: 10px;
font-size: 14px;
position: relative;
padding: 48px 20% 25px;
color: #fff;
background-color: #091733;
overflow: hidden;
.info {
display: flex;
}
.meta {
margin-bottom: 10px;
font-size: 14px;
}
.column {
margin: 0 20px;
h6 {
margin-bottom: 20px;
font-size: 16px;
white-space: nowrap;
cursor: pointer;
}
.column {
margin: 0 20px;
h6 {
margin-bottom: 20px;
font-size: 16px;
white-space: nowrap;
cursor: pointer;
}
}
.children {
li {
margin: 12px 0;
font-size: 14px;
color: #6d7384;
white-space: nowrap;
cursor: pointer;
}
}
.copyright {
font-size: 14px;
color: #6d7384;
}
&.iasf {
padding-top: 50px;
background: url(http://10.10.11.7/images/iasf/footer.jpg) 0 -400px/100% auto no-repeat;
background-color: #091733;
.children {
li {
margin: 12px 0;
font-size: 14px;
color: #6d7384;
white-space: nowrap;
cursor: pointer;
}
}
.copyright {
font-size: 14px;
color: #6d7384;
li {
color: #fff;
}
}
&.iasf {
padding-top: 50px;
background: url(http://10.10.11.7/images/iasf/footer.jpg) 0 -400px/100% auto no-repeat;
background-color: #091733;
.children {
li {
color: #fff;
}
}
.mask {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background-color: rgba(0, 0, 0, 0.6);
}
.mask {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background-color: rgba(0, 0, 0, 0.6);
}
}
}
.entry {
position: relative;
display: flex;
justify-content: space-between;
margin-bottom: 100px;
li {
display: inline-flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
}
img {
max-width: 100px;
position: relative;
display: flex;
justify-content: space-between;
margin-bottom: 100px;
li {
display: inline-flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
}
img {
max-width: 100px;
}
.text {
margin-top: 15px;
font-size: 1rem;
font-family: PingFangSC-Medium, PingFang SC;
color: #fff;
}
}
.contact {
position: relative;
padding: 0 0 73px 0;
background: url(../../assets/images/map.png) 0 0 / cover no-repeat;
.inner {
width: 1082px;
margin: 0 auto;
}
.title {
width: 419px;
height: 263px;
padding: 147px 0 0 40px;
background-color: #0854fe;
h6 {
z-index: 2;
position: relative;
margin-bottom: 20px;
font-size: 45px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #fff;
}
.text {
margin-top: 15px;
font-size: 1rem;
font-family: PingFangSC-Medium, PingFang SC;
color: #fff;
margin-top: -65px;
font-size: 48px;
-webkit-text-fill-color: transparent;
-webkit-text-stroke: 1px #4073e5;
}
}
.contact {
position: relative;
padding: 0 0 73px 0;
background: url(../../assets/images/map.png) 0 0 / cover no-repeat;
.inner {
width: 1082px;
margin: 0 auto;
}
.region {
position: absolute;
top: 152px;
left: 70%;
display: flex;
align-items: center;
font-size: 20px;
color: #fff;
img {
margin-right: 20px;
}
.title {
width: 419px;
height: 263px;
padding: 147px 0 0 40px;
background-color: #0854fe;
h6 {
z-index: 2;
position: relative;
margin-bottom: 20px;
font-size: 45px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #fff;
}
.text {
margin-top: -65px;
font-size: 48px;
-webkit-text-fill-color: transparent;
-webkit-text-stroke: 1px #4073e5;
}
}
.info {
margin: 55px 0 0 8px;
.texts {
display: flex;
align-items: center;
margin-top: 24px;
}
.region {
position: absolute;
top: 152px;
left: 70%;
display: flex;
align-items: center;
font-size: 20px;
color: #fff;
img {
margin-right: 20px;
}
.item {
margin-right: 75px;
}
.info {
margin: 55px 0 0 8px;
.texts {
display: flex;
align-items: center;
margin-top: 24px;
}
.item {
margin-right: 75px;
}
.line {
display: flex;
align-items: center;
margin-bottom: 20px;
font-size: 16px;
color: #fff;
img {
margin-right: 8px;
}
}
.line {
display: flex;
align-items: center;
margin-bottom: 20px;
font-size: 16px;
color: #fff;
img {
margin-right: 8px;
}
}
.qrcode {
text-align: center;
.text {
margin-top: 10px;
font-size: 12px;
color: #fff;
}
}
.qrcode {
text-align: center;
.text {
margin-top: 10px;
font-size: 12px;
color: #fff;
}
}
}
@media (max-width: 1500px) {
.footer {
padding: 64px 10% 25px;
}
.footer {
padding: 64px 10% 25px;
}
}
@media (max-width: 1350px) {
.inner {
width: 100% !important;
.title {
width: 100%;
text-align: center;
}
.region {
top: 300px;
left: 50%;
}
.info {
margin-top: 90px;
}
.inner {
width: 100% !important;
.title {
width: 100%;
text-align: center;
}
.footer {
.info {
flex-direction: column;
.column {
margin-top: 20px;
margin-left: 0;
}
}
.region {
top: 300px;
left: 50%;
}
.entry {
flex-direction: column;
li {
margin-bottom: 30px;
}
.info {
margin-top: 90px;
}
}
.footer {
.info {
flex-direction: column;
.column {
margin-top: 20px;
margin-left: 0;
}
}
}
.entry {
flex-direction: column;
li {
margin-bottom: 30px;
}
}
}
</style>

@ -1,47 +1,30 @@
<template>
<div :class="['header', { estate: isEstate, iasf: isIasf }]">
<a class="logo"
@click="toIndex">
<div :class="['header', { channel: isHome, estate: isEstate, iasf: isIasf }]">
<a class="logo" @click="toIndex">
<template v-if="GTA">
<img src="@/assets/images/logo2.png"
alt="">
<img src="@/assets/images/logo2.png" alt="">
产业学院平台
</template>
<img v-else
src="@/assets/images/logo.png"
alt="">
<img v-else src="@/assets/images/logo.png" alt="">
</a>
<!-- pc端 -->
<template v-if="$store.getters.getModelType">
<navbar v-if="navShow"
ref="nav"
:isHome.sync="isHome"
:isEstate.sync="isEstate"
:isIasf.sync="isIasf"
@showMoreBtns="updateBtnsType"></navbar>
<navbar v-if="navShow" ref="nav" :isHome.sync="isHome" :isEstate.sync="isEstate" :isIasf.sync="isIasf"
@showMoreBtns="updateBtnsType"></navbar>
<div class="tools">
<div class="login"
@click="toLogin">
<img src="@/assets/images/user.png"
alt="">
<div class="login" @click="toLogin">
<img src="@/assets/images/user.png" alt="">
<span>注册登录</span>
</div>
</div>
</template>
<!-- 手机端 -->
<div v-else
class="mobile-tools">
<i class="login el-icon-user-solid"
@click="toLogin"></i>
<i class="menu-icon"
:class="modelType ? 'el-icon-s-fold': 'el-icon-s-unfold' "
@click.stop="updateModelType"></i>
<div class="contentBox"
v-show="modelType">
<navbar ref="nav"
:isHome.sync="isHome"
@updateModelType="updateType"></navbar>
<div v-else class="mobile-tools">
<i class="login el-icon-user-solid" @click="toLogin"></i>
<i class="menu-icon" :class="modelType ? 'el-icon-s-fold' : 'el-icon-s-unfold'" @click.stop="updateModelType"></i>
<div class="contentBox" v-show="modelType">
<navbar ref="nav" :isHome.sync="isHome" @updateModelType="updateType"></navbar>
</div>
</div>
@ -187,142 +170,165 @@ export default {
</script>
<style scoped lang="scss">
$height: 90px;
.header {
z-index: 10;
position: fixed;
top: 0;
left: 0;
display: flex;
justify-content: space-between;
z-index: 10;
position: fixed;
top: 0;
left: 0;
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
height: $height;
padding: 0 5% 0 5%;
&:not(.channel) {
background-color: #fff;
border-bottom: 1px solid #f7f7f7;
}
&.estate {
background-color: rgba(0, 0, 0, 0.15);
}
.logo {
display: inline-flex;
align-items: center;
width: 100%;
height: $height;
padding: 0 5% 0 5%;
&:not(.channel) {
background-color: #fff;
border-bottom: 1px solid #f7f7f7;
}
&.estate {
background-color: rgba(0, 0, 0, 0.15);
}
.logo {
display: inline-flex;
align-items: center;
font-size: 20px;
font-weight: 600;
color: #333;
cursor: pointer;
img {
width: 150px;
}
}
.tools {
.login {
display: inline-flex;
align-items: center;
cursor: pointer;
&:hover {
opacity: 0.9;
}
span {
margin-left: 5px;
color: #666;
font-size: 14px;
}
}
}
.search {
margin-right: 43px;
font-size: 20px;
font-weight: 600;
color: #333;
cursor: pointer;
img {
width: 150px;
}
.mobile-tools {
display: inline-flex;
align-items: center;
.login {
font-size: 1.5rem;
color: #c1c1c1;
cursor: pointer;
}
}
.tools {
.login {
display: inline-flex;
align-items: center;
cursor: pointer;
&:hover {
opacity: 0.9;
}
span {
margin-left: 5px;
color: #666;
font-size: 14px;
}
}
.menu-icon {
margin-left: 10px;
font-size: 1.8rem;
color: #c1c1c1;
cursor: pointer;
}
.search {
margin-right: 43px;
}
.mobile-tools {
display: inline-flex;
align-items: center;
.login {
font-size: 1.5rem;
color: #c1c1c1;
cursor: pointer;
}
}
.menu-icon {
margin-left: 10px;
font-size: 1.8rem;
color: #c1c1c1;
cursor: pointer;
}
}
.search-wrap {
position: absolute;
top: 67px;
right: 89px;
display: flex;
align-items: center;
padding: 10px 15px 10px 10px;
background-color: #fff;
box-shadow: 0px 6px 9px 0px rgba(0, 0, 0, 0.3);
input {
width: 300px;
height: 40px;
padding: 0 40px 0 15px;
font-size: 1.14rem;
color: #333;
line-height: 46px;
border: 0;
border-radius: 4px;
outline: none;
}
.search-icon {
padding-right: 15px;
margin: 0 15px;
cursor: pointer;
border-right: 1px solid #ccc;
}
.close-icon {
font-size: 2rem;
cursor: pointer;
}
position: absolute;
top: 67px;
right: 89px;
display: flex;
align-items: center;
padding: 10px 15px 10px 10px;
background-color: #fff;
box-shadow: 0px 6px 9px 0px rgba(0, 0, 0, 0.3);
input {
width: 300px;
height: 40px;
padding: 0 40px 0 15px;
font-size: 1.14rem;
color: #333;
line-height: 46px;
border: 0;
border-radius: 4px;
outline: none;
}
.search-icon {
padding-right: 15px;
margin: 0 15px;
cursor: pointer;
border-right: 1px solid #ccc;
}
.close-icon {
font-size: 2rem;
cursor: pointer;
}
}
.menu-child {
/deep/ .el-submenu__title {
font-size: 1rem;
}
/deep/ .el-submenu__title {
font-size: 1rem;
}
}
.contentBox {
width: 100%;
position: absolute;
top: 90px;
left: 0;
background-color: white;
z-index: 9999;
max-height: 30rem;
overflow-y: scroll;
width: 100%;
position: absolute;
top: 90px;
left: 0;
background-color: white;
z-index: 9999;
max-height: 30rem;
overflow-y: scroll;
}
@media (max-width: 1660px) {
.header {
.logo {
left: 10px;
}
.search {
margin-right: 20px !important;
}
.tools {
right: 30px;
}
.header {
.logo {
left: 10px;
}
.search {
margin-right: 20px !important;
}
.tools {
right: 30px;
}
}
}
@media (max-width: 1200px) {
.header {
color: black !important;
background-color: #fff;
}
.search-wrap {
right: 10px;
top: 0;
width: 70%;
input {
width: 15rem;
padding: 0 0.5rem 0 0.1rem;
}
.header {
color: black !important;
background-color: #fff;
}
.search-wrap {
right: 10px;
top: 0;
width: 70%;
input {
width: 15rem;
padding: 0 0.5rem 0 0.1rem;
}
}
}
</style>

@ -2,8 +2,7 @@
<div :class="['main', { channel: isHome, 'site-en': handleClass() }]">
<v-head ref="header"></v-head>
<div class="layout">
<transition name="move"
mode="out-in">
<transition name="move" mode="out-in">
<router-view class="view"></router-view>
</transition>
<el-backtop target=".layout"></el-backtop>
@ -77,9 +76,10 @@ export default {
</script>
<style lang="scss" scoped>
.main:not(.channel) {
min-height: calc(100% - 90px);
.layout {
padding-top: 90px;
}
min-height: calc(100% - 90px);
.layout {
padding-top: 90px;
}
}
</style>

@ -1,19 +1,12 @@
<template>
<div>
<el-menu :class="['nav', {estate: isEstate,changing: !showMenu}]"
ref="elMenu"
:key="menuRefresh"
:mode="$store.getters.getModelType ? 'horizontal' : 'vertical' "
:background-color="bgColor"
:text-color="textColor"
:active-text-color="activeTextColor"
@open="jump"
@select="jump"
:default-active="String(active)">
<el-menu :class="['nav', { home: isHome, estate: isEstate, changing: !showMenu }]" ref="elMenu" :key="menuRefresh"
:mode="$store.getters.getModelType ? 'horizontal' : 'vertical'" :background-color="bgColor"
:text-color="textColor" :active-text-color="activeTextColor" @open="jump" @select="jump"
:default-active="String(active)">
<menuTree :menuList="menus" />
<el-submenu :popper-class="site == 2 && $store.getters.getModelType ? 'iasf-menu-popup' : ''"
v-show="showMoreBtns"
index="522222">
<el-submenu :popper-class="$store.getters.getModelType ? 'iasf-menu-popup' : isHome ? 'home-menu-popup' : ''"
v-show="showMoreBtns" index="522222">
<template slot="title">
<div class="moreBtns">{{ $t('column.more') }}</div>
</template>
@ -30,7 +23,7 @@ import mixins from '@/mixins/article'
import { mapMutations, mapGetters } from 'vuex'
import Setting from '@/setting'
export default {
props: ['isEstate', 'isIasf'],
props: ['isHome', 'isEstate', 'isIasf'],
mixins: [mixins],
data () {
return {
@ -65,12 +58,18 @@ export default {
this.getColumn()
this.setSite(siteId)
}
this.handleColor()
},
isHome () {
this.handleColor()
},
getNavSum () {
this.getColumn()
}
},
mounted () {
this.lastHome = this.isHome
this.handleColor()
this.getColumn()
},
methods: {
@ -120,6 +119,19 @@ export default {
}
}).catch(err => { })
},
//
handleColor () {
const home = this.isHome
if (this.lastHome !== home) this.showMenu = false
this.bgColor = home ? 'transparent' : '#fff'
this.lastHome !== home && this.$nextTick(() => {
setTimeout(() => {
this.showMenu = true
}, 200)
})
this.lastHome = home
// this.menuRefresh++
},
//
getPath (data, id) {
for (const e of data) {
@ -146,82 +158,100 @@ export default {
<style lang="scss" scoped>
$height: 90px;
.moreBtns {
font-size: 1rem;
font-weight: bold;
padding-top: 0.2rem;
font-size: 1rem;
font-weight: bold;
padding-top: 0.2rem;
}
.changing {
opacity: 0;
opacity: 0;
}
/deep/.nav.el-menu--horizontal {
display: flex;
position: absolute;
top: 0;
left: 50%;
transform: translateX(-50%);
border: 0;
outline: none;
.el-menu-item,
.el-submenu__title {
height: $height;
line-height: $height;
span {
font-size: 1rem;
font-weight: 600;
}
&:hover {
background-color: transparent !important;
span {
color: #499eff;
}
}
}
.el-submenu__title {
display: inline-flex;
justify-content: center;
align-items: center;
}
.menu-child {
display: flex;
position: absolute;
top: 0;
left: 50%;
transform: translateX(-50%);
border: 0;
outline: none;
}
.el-submenu__icon-arrow {
position: static;
margin: 0 0 0 5px;
color: inherit;
}
.is-active {
color: #333 !important;
}
.active,
.active .el-submenu__title {
color: #1583ff !important;
}
&.home {
.el-menu-item,
.el-submenu__title {
height: $height;
line-height: $height;
&:hover {
background-color: transparent !important;
span {
font-size: 1rem;
font-weight: 600;
color: #499eff;
}
&:hover {
background-color: transparent !important;
span {
color: #1583ff;
}
}
}
.el-submenu__title {
display: inline-flex;
justify-content: center;
align-items: center;
}
.menu-child {
display: flex;
}
.el-submenu__icon-arrow {
position: static;
margin: 0 0 0 5px;
color: inherit;
}
}
.is-active {
color: #333 !important;
color: #f9f9f9 !important;
}
.active,
.active .el-submenu__title {
color: #1583ff !important;
}
&.home {
.el-menu-item,
.el-submenu__title {
&:hover {
background-color: transparent !important;
span {
color: #fff;
}
}
}
.is-active {
color: #f9f9f9 !important;
}
.active,
.active .el-submenu__title {
color: #fff !important;
}
color: #1583ff !important;
}
}
}
@media (max-width: 1200px) {
/deep/.nav {
.el-menu-item {
padding: 0 8px;
color: black !important;
}
/deep/.nav {
.el-menu-item {
padding: 0 8px;
color: black !important;
}
}
}
</style>

@ -1,25 +1,36 @@
import Setting from '@/setting'
import Util from '@/libs/util'
export default {
data() {
data () {
return {
id: this.$route.query.id,
preview: this.$route.query.preview,
listPreview: this.$route.query.listPreview,
modules: [],
articles: []
}
},
computed: {
site() {
site () {
return this.$route.query.siteId || this.$store.state.content.site
}
},
mounted() {
this.getInfo && this.$route.query.id && this.getInfo()
mounted () {
this.getInfo && this.$route.query.id && this.init()
},
methods: {
// 初始化
async init () {
// 预览直接可以看长页
if (this.listPreview || this.preview) {
this.getInfo()
} else {
// 前台正常进入长页,则需要先判断该长页的导航菜单字段是否被禁用
const { data } = await this.$post(`${this.api.findColumn}?id=${this.id}`)
data.menuVisible || this.getInfo()
}
},
// 打开链接
async openLink(item) {
async openLink (item) {
const { link } = item
if (link.linkName === '无' || link.linkName === '') return false
let href = link.linkAddress
@ -58,28 +69,28 @@ export default {
this.$post(`${this.api.findColumn}?id=${this.id}`).then(({ data }) => {
href = this.$router.resolve(href + '&id=' + this.id + '&columnName=' + data.columnName + '&path=' + this.$route.path.replace('/', '')).href
this.toHref(link.isOpen, href)
}).catch(res => {})
}).catch(res => { })
} else {
this.toHref(link.isOpen, href)
}
},
// 跳转地址
toHref(isOpen, href) {
toHref (isOpen, href) {
if (isOpen) {
var userAgent = navigator.userAgent;
var isSafari = /Safari/.test(userAgent) && !/Chrome/.test(userAgent);
if(isSafari) {
if (isSafari) {
window.location.href = href
}else {
} else {
window.open(href)
}
} else {
window.location.href = href
}
},
// 跳转文章页面
toArtice(item, form) {
toArtice (item, form) {
if (item.articleTemplate === 24) { // 链接
let href = item.linkAddress
const cType = item.connectionType
@ -103,15 +114,15 @@ export default {
}
},
// 关联栏目的查看全部跳转
toAll(form) {
toAll (form) {
this.$router.push(`/column?id=${form.column[form.column.length - 1]}&siteId=${form.site}`)
},
// 判断是否有添加链接
isLink(linkName) {
isLink (linkName) {
return linkName !== '无' && linkName !== ''
},
// 关联栏目专用,获取栏目标题
getColumnTitle(form) {
getColumnTitle (form) {
return form.columnTitle == 1 ? form.columnName : form.columnTitleCustom
}
}

File diff suppressed because it is too large Load Diff

@ -1,42 +1,35 @@
<template>
<div v-show="loaded"
class="wrap">
<div v-show="loaded" class="wrap">
<!-- 人物详情不展示banner -->
<div v-if="form.articleTemplate !== 23 && !isPeople"
class="banner"
:style="{backgroundImage: form.bannerImg ? ('url(' + form.bannerImg + ')') : ''}">
<div v-if="form.articleTemplate !== 23 && !isPeople" class="banner"
:style="{ backgroundImage: form.bannerImg ? ('url(' + form.bannerImg + ')') : '' }">
{{ form.columnName }}
</div>
<div class="content">
<Breadcrumb ref="breadcrumb"
:data.sync="routes" />
<Breadcrumb ref="breadcrumb" :data.sync="routes" />
<div class="article">
<div class="left">
<template v-if="!isPeople">
<h2>{{ form.title }}</h2>
<div class="meta">{{ form.source && form.source + ' | ' }} {{ form.author && form.author + ' | ' }} {{ form.releaseTime }}</div>
<div class="meta">{{ form.edit && $t('column.edit') + ':' + form.edit }} {{ form.audit && ' | ' + $t('column.auditor') + ':' + form.audit }} {{ form.label && ' | ' + $t('column.label') + ':' + form.label }}</div>
<div class="meta">{{ form.source && form.source + ' | ' }} {{ form.author && form.author + ' | ' }} {{
form.releaseTime }}</div>
<div class="meta">{{ form.edit && $t('column.edit') + ':' + form.edit }} {{ form.audit && ' | ' +
$t('column.auditor') + ':' + form.audit }} {{ form.label && ' | ' + $t('column.label') + ':' + form.label
}}</div>
</template>
<p v-if="form.summary"
class="brief">{{ form.summary }}</p>
<div class="des"
id="mainBody"
v-html="form.mainBody"></div>
<div v-if="form.fileList && form.fileList.length"
class="annex">
<h6>{{$t('column.attachmentDownload')}}</h6>
<p v-if="form.summary" class="brief">{{ form.summary }}</p>
<div class="des" id="mainBody" v-html="form.mainBody"></div>
<div v-if="form.fileList && form.fileList.length" class="annex">
<h6>{{ $t('column.attachmentDownload') }}</h6>
<ul class="files">
<li v-for="(file, i) in form.fileList"
:key="i">
<li v-for="(file, i) in form.fileList" :key="i">
<span class="name">{{ file.fileName }}</span>
<span class="download"
@click="download(file)">{{$t('column.download')}}</span>
<span class="download" @click="download(file)">{{ $t('column.download') }}</span>
</li>
</ul>
</div>
</div>
<RightColumns ref="right"
:party="isParty" />
<RightColumns ref="right" :party="isParty" />
</div>
</div>
</div>
@ -189,136 +182,162 @@ export default {
<style lang="scss" scoped>
@import './editor.css';
.content {
width: 1200px;
/deep/ .el-breadcrumb {
font-size: 0.98rem;
}
width: 1200px;
/deep/ .el-breadcrumb {
font-size: 0.98rem;
}
}
.banner {
display: flex;
align-items: center;
height: 21.6rem;
padding-left: 10%;
font-size: 2rem;
font-weight: 600;
color: #fff;
background: url(../../assets/images/intro-bg.png) center center/cover no-repeat;
object-fit: cover;
display: flex;
align-items: center;
height: 21.6rem;
padding-left: 10%;
font-size: 2rem;
font-weight: 600;
color: #fff;
background: url(../../assets/images/intro-bg.png) center center/cover no-repeat;
object-fit: cover;
}
.article {
display: flex;
justify-content: space-between;
.left {
width: 70%;
display: flex;
justify-content: space-between;
.left {
width: 70%;
}
h2 {
font-size: 1.9rem;
color: #1c1c1c;
}
.meta {
margin: 1rem 0;
font-size: 0.88rem;
color: #9b9b9b;
}
.brief {
padding-bottom: 1.5rem;
margin: 1rem 0;
font-size: 1.2rem;
line-height: 1.6;
color: #606060;
border-bottom: 1px solid #d8d8d8;
}
/deep/.des {
// width: 100%;
// overflow: auto;
a {
color: rgb(0, 0, 238);
word-wrap: break-word;
}
h2 {
font-size: 1.9rem;
color: #1c1c1c;
img {
max-width: 100%;
object-fit: cover;
}
.meta {
margin: 1rem 0;
font-size: 0.88rem;
color: #9b9b9b;
ul {
// padding-left: 40px;
list-style: disc;
li {
list-style: inherit;
}
}
.brief {
padding-bottom: 1.5rem;
margin: 1rem 0;
font-size: 1.2rem;
line-height: 1.6;
color: #606060;
border-bottom: 1px solid #d8d8d8;
ol {
// padding-left: 40px;
list-style: decimal;
li {
list-style: inherit;
}
}
/deep/.des {
// width: 100%;
// overflow: auto;
a {
color: rgb(0, 0, 238);
word-wrap: break-word;
}
img {
max-width: 100%;
object-fit: cover;
}
ul {
// padding-left: 40px;
list-style: disc;
li {
list-style: inherit;
}
}
ol {
// padding-left: 40px;
list-style: decimal;
li {
list-style: inherit;
}
}
}
.annex {
margin-top: 30px;
h6 {
padding-left: 8px;
margin-bottom: 20px;
font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
line-height: 1;
color: #333;
border-left: 4px solid #1583ff;
}
.annex {
margin-top: 30px;
h6 {
padding-left: 8px;
margin-bottom: 20px;
font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
line-height: 1;
color: #333;
border-left: 4px solid #1583ff;
}
li {
display: flex;
align-items: center;
margin-bottom: 10px;
}
.name {
margin-right: 8px;
font-size: 14px;
}
.download {
color: #1583ff;
cursor: pointer;
}
li {
display: flex;
align-items: center;
margin-bottom: 10px;
}
.name {
margin-right: 8px;
font-size: 14px;
}
.download {
color: #1583ff;
cursor: pointer;
}
}
}
@media (max-width: 1420px) {
.content {
width: 98%;
}
.content {
width: 98%;
}
}
@media (max-width: 1200px) {
.article {
/deep/.des {
img {
max-width: 100%;
max-height: 15rem;
}
}
.article {
/deep/.des {
img {
max-width: 100%;
max-height: 15rem;
}
}
.banner {
}
.banner {
font-size: 1.5rem;
}
.article {
flex-direction: column;
.left {
width: 100%;
margin-bottom: 20px;
h2 {
font-size: 1.5rem;
}
}
.article {
flex-direction: column;
.left {
width: 100%;
margin-bottom: 20px;
h2 {
font-size: 1.5rem;
}
}
}
.article {
.des {
img {
height: 15rem !important;
}
}
}
.right {
width: 100%;
}
.article {
.des {
img {
height: 15rem !important;
}
}
}
.right {
width: 100%;
}
}
</style>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,126 +1,78 @@
<template>
<div class="wrap">
<div class="inner">
<Breadcrumb ref="breadcrumb"
:data.sync="routes" />
<Breadcrumb ref="breadcrumb" :data.sync="routes" />
<div class="top">
<el-carousel class="pics fadeInLeft"
:interval="6000"
height="278px"
:arrow="form.pics.length > 1 ? 'hover' : 'never'"
:indicator-position="form.pics.length > 1 ? '' : 'none'">
<el-carousel-item v-for="(item, i) in form.pics"
:key="i">
<el-image class="pic"
:src="item"
:preview-src-list="form.pics">
<el-carousel class="pics fadeInLeft" :interval="6000" height="278px"
:arrow="form.pics.length > 1 ? 'hover' : 'never'" :indicator-position="form.pics.length > 1 ? '' : 'none'">
<el-carousel-item v-for="(item, i) in form.pics" :key="i">
<el-image class="pic" :src="item" :preview-src-list="form.pics">
</el-image>
</el-carousel-item>
</el-carousel>
<div class="right fadeInRight"
id="fields">
<div class="right fadeInRight" id="fields">
<h6>{{ form.mall.productName }}</h6>
<div v-if="isCourse"
class="meta">
<div v-if="isCourse" class="meta">
<span class="val">{{ form.numberOfExperimentalItems }}</span> 个实验项目&emsp;&emsp;
已有 <span class="val">{{ form.goodsRes.learningCount }}</span>人学过
</div>
<div class="des"
v-html="form.mall.productIntroduction"></div>
<div class="des" v-html="form.mall.productIntroduction"></div>
<div class="fields">
<div class="field">
<img src="@/assets/images/product/1.png"
alt=""> 适用专业
<el-tooltip class="text"
effect="dark"
:visible-arrow="false"
:content="form.goodsRes.professionalName"
placement="bottom">
<img src="@/assets/images/product/1.png" alt=""> 适用专业
<el-tooltip class="text" effect="dark" :visible-arrow="false" :content="form.goodsRes.professionalName"
placement="bottom">
<div>
{{ form.goodsRes.professionalName }}
</div>
</el-tooltip>
</div>
<div v-if="form.mall.applicationScenario"
class="field">
<img src="@/assets/images/product/2.png"
alt=""> 适用场景
<div v-if="form.mall.applicationScenario" class="field">
<img src="@/assets/images/product/2.png" alt=""> 适用场景
<div class="text">{{ form.mall.applicationScenario }}</div>
</div>
<div v-if="form.mall.matchingCourse"
class="field">
<img src="@/assets/images/product/3.png"
alt=""> 匹配课程
<el-tooltip class="text"
effect="dark"
:visible-arrow="false"
:content="form.mall.matchingCourse"
placement="bottom">
<div v-if="form.mall.matchingCourse" class="field">
<img src="@/assets/images/product/3.png" alt=""> 匹配课程
<el-tooltip class="text" effect="dark" :visible-arrow="false" :content="form.mall.matchingCourse"
placement="bottom">
<div class="text">
{{ form.mall.matchingCourse }}
</div>
</el-tooltip>
</div>
<div v-if="form.mall.courseHours"
class="field">
<img src="@/assets/images/product/4.png"
alt=""> 预计课时
<div v-if="form.mall.courseHours" class="field">
<img src="@/assets/images/product/4.png" alt=""> 预计课时
<div class="text">{{ form.mall.courseHours }}</div>
</div>
<div v-if="form.goodsRes.typeName"
class="field">
<img src="@/assets/images/product/5.png"
alt=""> 产品类型
<div v-if="form.goodsRes.typeName" class="field">
<img src="@/assets/images/product/5.png" alt=""> 产品类型
<div class="text">{{ form.goodsRes.typeName }}</div>
</div>
</div>
<button v-if="!GTA"
class="btn"
@click="showQrcode">会员价采购</button>
<button v-if="!GTA" class="btn" @click="showQrcode">会员价采购</button>
</div>
</div>
<div class="course"
id="part0">
<div class="course" id="part0">
<div class="detail">
<ul class="tab fadeInDown">
<li v-for="(tab, i) in tabs"
:key="i"
:class="{active: curTab === tab.id}"
@click="tabChange(tab)">{{ tab.name }}</li>
<ul class="tab">
<li v-for="(tab, i) in tabs" :key="i" :class="{ active: curTab === tab.id }" @click="tabChange(tab)">{{
tab.name }}</li>
</ul>
<div class="courses fadeInUp">
<div class="des"
v-html="form.mall.detailedIntroduction"></div>
<div class="chapter"
id="part1"
v-for="(item, i) in chapterList"
:key="i">
<div class="des" v-html="form.mall.detailedIntroduction"></div>
<div class="chapter" id="part1" v-for="(item, i) in chapterList" :key="i">
<div class="chapterName">{{ item.name }}</div>
<div class="section"
v-if="item.subsectionList.length">
<div v-for="(section, j) in item.subsectionList"
:key="j">
<div class="sectionName"
:title="section.name">
<div class="section" v-if="item.subsectionList.length">
<div v-for="(section, j) in item.subsectionList" :key="j">
<div class="sectionName" :title="section.name">
<div class="val">
<img v-if="section.fileType === 'pptx'"
src="@/assets/images/exts/ppt.png"
alt="">
<img v-else-if="section.fileType === 'mp4'"
src="@/assets/images/exts/video.png"
alt="">
<img v-if="section.fileType === 'pptx'" src="@/assets/images/exts/ppt.png" alt="">
<img v-else-if="section.fileType === 'mp4'" src="@/assets/images/exts/video.png" alt="">
<img v-else-if="section.fileType === 'doc' || section.fileType === 'docx'"
src="@/assets/images/exts/word.png"
alt="">
<img v-else-if="section.fileType === 'txt'"
src="@/assets/images/exts/txt.png"
alt="">
<img v-else-if="section.fileType === 'pdf'"
src="@/assets/images/exts/pdf.png"
alt="">
<img v-else
src="@/assets/images/exts/pic.png"
alt="">
src="@/assets/images/exts/word.png" alt="">
<img v-else-if="section.fileType === 'txt'" src="@/assets/images/exts/txt.png" alt="">
<img v-else-if="section.fileType === 'pdf'" src="@/assets/images/exts/pdf.png" alt="">
<img v-else src="@/assets/images/exts/pic.png" alt="">
{{ section.name }}
</div>
</div>
@ -132,33 +84,20 @@
<div class="products">
<h6 class="fadeInUp">热门产品推荐</h6>
<ul class="product fadeInDown">
<li v-for="(item, i) in hots"
:key="i"
@click="toDetail(item.mallId)">
<img :src="item.coverDrawing"
alt="" />
<img v-if="item.logoOfOurSchool"
class="my-school"
src="@/assets/images/my-school.png"
alt="">
<li v-for="(item, i) in hots" :key="i" @click="toDetail(item.mallId)">
<img :src="item.coverDrawing" alt="" />
<img v-if="item.logoOfOurSchool" class="my-school" src="@/assets/images/my-school.png" alt="">
<div class="texts">
<div class="title">{{ item.productName }}</div>
<div :class="['desc', {'not-tag': !item.tagsName}]"
v-html="item.productIntroduction"></div>
<div v-if="item.tagsName"
class="tags">
<el-tag v-for="(tag, i) in item.tagsName.split(',')"
:key="i"
class="tag">{{ tag }}</el-tag>
<div :class="['desc', { 'not-tag': !item.tagsName }]" v-html="item.productIntroduction"></div>
<div v-if="item.tagsName" class="tags">
<el-tag v-for="(tag, i) in item.tagsName.split(',')" :key="i" class="tag">{{ tag }}</el-tag>
</div>
<div class="metas">
<el-tag v-if="item.selected"
type="danger"
effect="dark">
<el-tag v-if="item.selected" type="danger" effect="dark">
官方精选
</el-tag>
<div v-if="item.isCourse"
class="meta">{{ item.learningCount }}人学过</div>
<div v-if="item.isCourse" class="meta">{{ item.learningCount }}人学过</div>
</div>
</div>
</li>
@ -168,34 +107,18 @@
</div>
<!-- 选择链接 -->
<el-dialog title="请选择链接"
:visible.sync="linkVisible"
width="420px"
center
:close-on-click-modal="false">
<div v-if="withLink"
class="buy">
<div v-for="(link, i) in form.mallNonAssociatedLinks"
:key="i"
class="link-line">
<el-dialog title="请选择链接" :visible.sync="linkVisible" width="420px" center :close-on-click-modal="false">
<div v-if="withLink" class="buy">
<div v-for="(link, i) in form.mallNonAssociatedLinks" :key="i" class="link-line">
{{ link.urlName }}
<a class="url"
:href="link.url"
target="_blank">{{ link.url }}</a>
<a class="url" :href="link.url" target="_blank">{{ link.url }}</a>
</div>
</div>
</el-dialog>
<el-dialog title=""
:visible.sync="qrcodeVisible"
width="500px"
center
:top="qrcodeTop"
custom-class="qrcode-dia">
<el-dialog title="" :visible.sync="qrcodeVisible" width="500px" center :top="qrcodeTop" custom-class="qrcode-dia">
<div>
<img width="100%"
src="@/assets/images/occupationlab.png"
alt="">
<img width="100%" src="@/assets/images/occupationlab.png" alt="">
</div>
</el-dialog>
</div>
@ -476,352 +399,421 @@ export default {
<style lang="scss" scoped>
.wrap {
padding: 24px;
background: url(../../../assets/images/product/bg1.png) 0 373px no-repeat,
url(../../../assets/images/product/bg2.png) bottom right no-repeat;
background-color: #f3f6fa;
.inner {
width: 1146px;
margin: 0 auto;
}
.top {
display: flex;
padding: 24px;
background: url(../../../assets/images/product/bg1.png) 0 373px no-repeat,
url(../../../assets/images/product/bg2.png) bottom right no-repeat;
background-color: #f3f6fa;
.inner {
width: 1146px;
margin: 0 auto;
background-color: #fff;
border-radius: 10px;
.pics {
width: 484px;
margin-right: 20px;
.pic {
width: 100%;
height: 100%;
border-radius: 8px;
}
}
.top {
display: flex;
padding: 24px;
background-color: #fff;
border-radius: 10px;
.pics {
width: 484px;
margin-right: 20px;
.pic {
width: 100%;
height: 100%;
border-radius: 8px;
}
}
.right {
width: 592px;
overflow: hidden;
}
h6 {
font-size: 24px;
font-weight: 600;
color: #2e2d31;
}
.meta {
margin: 10px 0;
font-size: 12px;
color: #2e2d31;
.val {
color: #007eff;
}
}
.des {
margin-bottom: 15px;
font-size: 14px;
color: #666;
line-height: 20px;
@include mul-ellipsis(3);
}
.field {
display: inline-flex;
align-items: center;
margin: 0 20px 10px 0;
font-size: 14px;
color: #2e2d31;
&:last-child {
margin-right: 0;
}
.label {
color: #333;
}
.text {
max-width: 160px;
@include ellipsis;
}
img {
margin-right: 5px;
}
}
.fields {
display: flex;
// justify-content: space-between;
flex-wrap: wrap;
height: 60px;
margin: 10px 0 10px;
overflow: hidden;
}
.btn {
width: 119px;
height: 46px;
color: #fff;
background: #007eff;
border-radius: 6px;
border: 0;
cursor: pointer;
&:hover {
opacity: 0.9;
}
&:first-child {
margin-left: 11px;
}
}
.right {
width: 592px;
overflow: hidden;
}
.tab {
z-index: 100;
position: sticky;
top: 20px;
display: flex;
padding: 10px 10px 20px;
background-color: #fff;
li {
position: relative;
margin-right: 20px;
font-size: 18px;
line-height: 25px;
color: #0b1d30;
cursor: pointer;
&:after {
content: '';
position: absolute;
bottom: -10px;
left: 50%;
width: 53px;
height: 4px;
transform: translateX(-50%);
}
&.active:after {
background-color: #007eff;
}
}
h6 {
font-size: 24px;
font-weight: 600;
color: #2e2d31;
}
.course {
display: flex;
margin-top: 20px;
.detail {
width: calc(100% - 294px);
padding: 20px 24px;
background-color: #fff;
border-radius: 10px;
}
.meta {
margin: 10px 0;
font-size: 12px;
color: #2e2d31;
.val {
color: #007eff;
}
}
.des {
margin-bottom: 15px;
font-size: 14px;
color: #666;
line-height: 20px;
@include mul-ellipsis(3);
}
.field {
display: inline-flex;
align-items: center;
margin: 0 20px 10px 0;
font-size: 14px;
color: #2e2d31;
&:last-child {
margin-right: 0;
}
.label {
color: #333;
}
.text {
max-width: 160px;
@include ellipsis;
}
img {
margin-right: 5px;
}
}
.fields {
display: flex;
// justify-content: space-between;
flex-wrap: wrap;
height: 60px;
margin: 10px 0 10px;
overflow: hidden;
}
.btn {
width: 119px;
height: 46px;
color: #fff;
background: #007eff;
border-radius: 6px;
border: 0;
cursor: pointer;
&:hover {
opacity: 0.9;
}
&:first-child {
margin-left: 11px;
}
}
}
.tab {
z-index: 100;
position: sticky;
top: 90px;
display: flex;
padding: 10px 10px 20px;
background-color: #fff;
li {
position: relative;
margin-right: 20px;
font-size: 18px;
line-height: 25px;
color: #0b1d30;
cursor: pointer;
&:after {
content: '';
position: absolute;
bottom: -10px;
left: 50%;
width: 53px;
height: 4px;
transform: translateX(-50%);
}
&.active:after {
background-color: #007eff;
}
}
}
.course {
display: flex;
margin-top: 20px;
.detail {
width: calc(100% - 294px);
padding: 20px 24px;
background-color: #fff;
border-radius: 10px;
}
}
.courses {
padding-top: 10px;
overflow: hidden;
/deep/.des {
div,
p,
span {
font-family: PingFangSC-Regular !important;
}
img {
max-width: 100%;
object-fit: cover;
}
}
.courses {
padding-top: 10px;
.chapters {
margin-top: 16px;
max-height: calc(100% - 53px);
overflow: auto;
}
.chapter {
padding-top: 60px;
margin-bottom: 20px;
}
.chapterName {
padding: 0 12px;
margin-bottom: 15px;
color: #333;
font-size: 14px;
}
.sectionName {
position: relative;
display: flex;
justify-content: space-between;
padding: 12px;
font-size: 14px;
color: #666;
border-radius: 8px;
@include ellipsis;
img {
margin-right: 8px;
}
&:hover {
color: #007eff;
background: #f6fbff;
}
.val {
display: inline-flex;
align-items: center;
}
.icon {
font-size: 18px;
color: #666;
}
}
}
.products {
width: 270px;
margin-left: 24px;
&>h6 {
font-size: 14px;
color: #0b1d30;
}
}
.product {
margin-top: 11px;
li {
position: relative;
margin-bottom: 15px;
cursor: pointer;
border-radius: 10px;
background-color: #fff;
transition: all 0.3s;
overflow: hidden;
img {
width: 100%;
height: 140px;
transition: 0.3s;
object-fit: cover;
}
.my-school {
position: absolute;
top: 0;
right: 0;
width: 57px;
height: 22px;
}
.texts {
padding: 10px;
}
.title {
margin-bottom: 10px;
color: #0b1d30;
font-size: 14px;
font-weight: 600;
word-wrap: break-word;
word-break: break-all;
overflow: hidden;
/deep/.des {
div,
p,
span {
font-family: PingFangSC-Regular !important;
}
img {
max-width: 100%;
object-fit: cover;
}
}
.chapters {
margin-top: 16px;
max-height: calc(100% - 53px);
overflow: auto;
}
.chapter {
padding-top: 60px;
margin-bottom: 20px;
}
.chapterName {
padding: 0 12px;
margin-bottom: 15px;
color: #333;
font-size: 14px;
}
.sectionName {
position: relative;
display: flex;
justify-content: space-between;
padding: 12px;
font-size: 14px;
color: #666;
border-radius: 8px;
@include ellipsis;
img {
margin-right: 8px;
}
&:hover {
color: #007eff;
background: #f6fbff;
}
.val {
display: inline-flex;
align-items: center;
}
.icon {
font-size: 18px;
color: #666;
}
text-overflow: ellipsis;
white-space: nowrap;
}
.desc {
min-height: 34px;
color: #757f92;
font-size: 12px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
&.not-tag {
-webkit-line-clamp: 3;
}
}
.products {
width: 270px;
margin-left: 24px;
& > h6 {
font-size: 14px;
color: #0b1d30;
}
.tags {
margin-top: 10px;
}
.tag {
margin-right: 8px;
color: #007eff;
background-color: #f9f9f9;
border: 0;
}
.type {
display: inline-block;
padding: 4px 11px;
font-size: 12px;
color: #666;
border: 1px solid #dadada;
border-radius: 20px;
}
.metas {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 10px;
}
.meta {
display: inline-flex;
align-items: center;
color: #b5bfd5;
font-size: 12px;
.icon {
width: 14px;
max-height: 14px;
margin-right: 3px;
}
}
.product {
margin-top: 11px;
li {
position: relative;
margin-bottom: 15px;
cursor: pointer;
border-radius: 10px;
background-color: #fff;
transition: all 0.3s;
overflow: hidden;
img {
width: 100%;
height: 140px;
transition: 0.3s;
object-fit: cover;
}
.my-school {
position: absolute;
top: 0;
right: 0;
width: 57px;
height: 22px;
}
.texts {
padding: 10px;
}
.title {
margin-bottom: 10px;
color: #0b1d30;
font-size: 14px;
font-weight: 600;
word-wrap: break-word;
word-break: break-all;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.desc {
min-height: 34px;
color: #757f92;
font-size: 12px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
&.not-tag {
-webkit-line-clamp: 3;
}
}
.tags {
margin-top: 10px;
}
.tag {
margin-right: 8px;
color: #007eff;
background-color: #f9f9f9;
border: 0;
}
.type {
display: inline-block;
padding: 4px 11px;
font-size: 12px;
color: #666;
border: 1px solid #dadada;
border-radius: 20px;
}
.metas {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 10px;
}
.meta {
display: inline-flex;
align-items: center;
color: #b5bfd5;
font-size: 12px;
.icon {
width: 14px;
max-height: 14px;
margin-right: 3px;
}
}
&:hover {
box-shadow: 0px 5px 12px 4px rgba(142, 123, 253, 0.09), 0px 3px 6px 0px rgba(142, 123, 253, 0.12),
0px 1px 2px -2px rgba(142, 123, 253, 0.16);
img {
transform: scale(1.05);
}
}
}
&:hover {
box-shadow: 0px 5px 12px 4px rgba(142, 123, 253, 0.09), 0px 3px 6px 0px rgba(142, 123, 253, 0.12),
0px 1px 2px -2px rgba(142, 123, 253, 0.16);
img {
transform: scale(1.05);
}
}
}
}
}
.link-line {
margin: 5px 0;
.url {
color: #007eff;
text-decoration: underline;
}
margin: 5px 0;
.url {
color: #007eff;
text-decoration: underline;
}
}
.buy {
text-align: center;
.tips {
margin-bottom: 10px;
font-size: 14px;
}
img {
width: 85%;
}
text-align: center;
.tips {
margin-bottom: 10px;
font-size: 14px;
}
img {
width: 85%;
}
}
/deep/.qrcode-dia {
.el-dialog__header,
.el-dialog__body {
padding: 0;
}
.el-dialog__headerbtn .el-dialog__close {
color: #fff;
}
.el-dialog__header,
.el-dialog__body {
padding: 0;
}
.el-dialog__headerbtn .el-dialog__close {
color: #fff;
}
}
@media (max-width: 1200px) {
.wrap {
.inner {
width: 100%;
}
.top {
flex-direction: column;
.pics {
width: 100%;
margin-bottom: 20px;
}
.el-image__preview {
object-fit: cover;
}
.right {
width: 100%;
}
}
.course {
flex-direction: column;
.detail {
width: 100%;
margin-bottom: 20px;
}
.products {
width: 100%;
margin-left: 0;
}
}
.wrap {
.inner {
width: 100%;
}
.top {
flex-direction: column;
.pics {
width: 100%;
margin-bottom: 20px;
}
.el-image__preview {
object-fit: cover;
}
.right {
width: 100%;
}
}
.course {
flex-direction: column;
.detail {
width: 100%;
margin-bottom: 20px;
}
.products {
width: 100%;
margin-left: 0;
}
}
}
}
@media (max-width: 480px) {
.wrap {
.tab {
position: static;
}
.wrap {
.tab {
position: static;
}
}
}
</style>
Loading…
Cancel
Save