After Width: | Height: | Size: 672 B |
After Width: | Height: | Size: 315 B |
After Width: | Height: | Size: 199 B |
After Width: | Height: | Size: 468 B |
Before Width: | Height: | Size: 709 B After Width: | Height: | Size: 378 B |
After Width: | Height: | Size: 482 B |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 985 KiB After Width: | Height: | Size: 382 KiB |
After Width: | Height: | Size: 8.1 KiB |
After Width: | Height: | Size: 664 B |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 449 B |
After Width: | Height: | Size: 369 B |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 722 B After Width: | Height: | Size: 367 B |
After Width: | Height: | Size: 209 B |
After Width: | Height: | Size: 680 B |
@ -0,0 +1,30 @@ |
||||
<template> |
||||
<div class="breadcrumb"> |
||||
<span class="cur">当前位置:</span> |
||||
<el-breadcrumb separator="/"> |
||||
<el-breadcrumb-item :to="{ path: '/' }">超竞学生端</el-breadcrumb-item> |
||||
<el-breadcrumb-item v-for="(item,index) in pages" :key="index" :to="{ path: index == pages.length - 1 ? curRoute : route }">{{item}}</el-breadcrumb-item> |
||||
</el-breadcrumb> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
props: ['data','route'], |
||||
data() { |
||||
return { |
||||
pages: this.data.split('/'), |
||||
curRoute: this.$route.path |
||||
}; |
||||
}, |
||||
methods: { |
||||
update(data){ |
||||
console.log(2222,data) |
||||
this.pages = data.split('/') |
||||
} |
||||
} |
||||
}; |
||||
</script> |
||||
<style lang="scss" scoped> |
||||
|
||||
</style> |
@ -0,0 +1,28 @@ |
||||
<template> |
||||
<div> |
||||
<div class="copyright">广州超竞教育投资有限公司版权所有</div> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
|
||||
}; |
||||
}, |
||||
mounted(){ |
||||
|
||||
}, |
||||
methods: { |
||||
|
||||
}, |
||||
}; |
||||
</script> |
||||
<style lang="scss" scoped> |
||||
.copyright{ |
||||
padding: 20px 0; |
||||
color: rgba(0, 0, 0, 0.45); |
||||
font-size: 12px; |
||||
text-align: center; |
||||
} |
||||
</style> |
@ -1,70 +1,193 @@ |
||||
<template> |
||||
<div class="header_tab" v-show="hideSidebar"> |
||||
<el-tabs v-model="activeName" @tab-click="tabChange"> |
||||
<el-tab-pane v-for="(tab,index) in tabList" :key="index" :label="tab.title" :name="tab.index"></el-tab-pane> |
||||
</el-tabs> |
||||
<div> |
||||
<div class="logo"> |
||||
<img src="../../assets/img/logo-full.png" width="125"> |
||||
</div> |
||||
<el-menu |
||||
class="sidebar-el-menu" |
||||
:default-active="onRoutes" |
||||
:collapse="collapse" |
||||
background-color="#141414" |
||||
text-color="#fff" |
||||
active-text-color="#fff" |
||||
unique-opened |
||||
router |
||||
> |
||||
<template v-for="item in menus"> |
||||
<template v-if="item.subs"> |
||||
<el-submenu :index="item.index" :key="item.index"> |
||||
<template slot="title"> |
||||
<i :class="item.icon"></i> |
||||
<span slot="title">{{ item.title }}</span> |
||||
</template> |
||||
<template v-for="subItem in item.subs"> |
||||
<el-submenu |
||||
v-if="subItem.subs" |
||||
:index="subItem.index" |
||||
:key="subItem.index" |
||||
> |
||||
<template slot="title">{{ subItem.title }}</template> |
||||
<el-menu-item |
||||
v-for="(threeItem,i) in subItem.subs" |
||||
:key="i" |
||||
:index="threeItem.index" |
||||
>{{ threeItem.title }}</el-menu-item> |
||||
</el-submenu> |
||||
<el-menu-item |
||||
v-else |
||||
:index="subItem.index" |
||||
:key="subItem.index" |
||||
>{{ subItem.title }}</el-menu-item> |
||||
</template> |
||||
</el-submenu> |
||||
</template> |
||||
<template v-else> |
||||
<el-menu-item :index="item.index" :key="item.index"> |
||||
<i :class="item.icon"></i> |
||||
<span slot="title">{{ item.title }}</span> |
||||
</el-menu-item> |
||||
</template> |
||||
</template> |
||||
</el-menu> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import { mapState } from 'vuex' |
||||
import bus from '@/libs/bus'; |
||||
import Setting from '@/setting'; |
||||
export default { |
||||
data() { |
||||
return { |
||||
activeName: this.$route.path, |
||||
tabList: [ |
||||
return { |
||||
collapse: false, |
||||
defaultMenus: [ |
||||
{ |
||||
icon: 'el-icon-folder-checked', |
||||
icon: 'menu-icon icon-index', |
||||
index: '/index/list', |
||||
title: '我的首页' |
||||
}, |
||||
{ |
||||
icon: 'el-icon-lx-home', |
||||
icon: 'menu-icon icon-practise', |
||||
index: '/practice/list', |
||||
title: '我的练习' |
||||
}, |
||||
{ |
||||
icon: 'el-icon-lx-cascades', |
||||
icon: 'menu-icon icon-exam', |
||||
index: '/exam/list', |
||||
title: '我的考试' |
||||
}, |
||||
{ |
||||
icon: 'el-icon-lx-copy', |
||||
icon: 'menu-icon icon-ache', |
||||
index: '/achievement/list', |
||||
title: '我的成绩' |
||||
}, |
||||
{ |
||||
icon: 'el-icon-lx-copy', |
||||
icon: 'menu-icon icon-wrong', |
||||
index: '/wrongBook/list', |
||||
title: '错题练习' |
||||
}, |
||||
{ |
||||
icon: 'el-icon-chat-dot-round', |
||||
icon: 'menu-icon icon-msg', |
||||
index: '/messageBoard/list', |
||||
title: '交流互动' |
||||
} |
||||
], |
||||
hideNavList: ['article','matchDetail','courseSection','personalCenter'] |
||||
menus: [], |
||||
actives: { |
||||
index: ['index-add'], |
||||
} |
||||
}; |
||||
}, |
||||
computed: { |
||||
hideSidebar() { |
||||
let route = this.$route.name |
||||
if(this.hideNavList.includes(route)) return false |
||||
return true |
||||
} |
||||
onRoutes() { |
||||
let actives = this.actives |
||||
for(let i in this.actives){ |
||||
if(actives[i].includes(this.$route.name)) return `/${i}` |
||||
} |
||||
return this.$route.path |
||||
}, |
||||
...mapState('auth', [ |
||||
'routes' |
||||
]) |
||||
}, |
||||
created() { |
||||
this.initMenu() |
||||
// 通过 Event Bus 进行组件间通信,来折叠侧边栏 |
||||
bus.$on('collapse', msg => { |
||||
this.collapse = msg; |
||||
bus.$emit('collapse-content', msg); |
||||
}); |
||||
}, |
||||
methods: { |
||||
tabChange(tab){ |
||||
location.hash = tab.name |
||||
this.$router.push(tab.name) |
||||
}, |
||||
initMenu(){ |
||||
if(Setting.dynamicRoute){ |
||||
let routes = this.routes |
||||
let menus = [] |
||||
this.defaultMenus.map(e => { |
||||
routes.find(n => n.path == e.index) && menus.push(e) |
||||
}) |
||||
this.menus = menus |
||||
this.active = menus[0].index |
||||
}else{ |
||||
this.menus = this.defaultMenus |
||||
} |
||||
} |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
/deep/.el-tabs__item:focus{ |
||||
outline: none; |
||||
box-shadow: none !important; |
||||
.nav{ |
||||
height: 100%; |
||||
background-color: #141414; |
||||
overflow: auto; |
||||
.logo{ |
||||
padding: 20px 0; |
||||
text-align: center; |
||||
} |
||||
/deep/.el-menu{ |
||||
border-right: 0 !important; |
||||
.el-menu-item{ |
||||
display: flex; |
||||
align-items: center; |
||||
&.is-active{ |
||||
background-color: #CC221C !important; |
||||
} |
||||
.menu-icon{ |
||||
width: 24px; |
||||
height: 24px; |
||||
margin-right: 12px; |
||||
background: url(../../assets/img/home.png) no-repeat; |
||||
&.icon-practise{ |
||||
background-image: url(../../assets/img/practise.png); |
||||
} |
||||
&.icon-exam{ |
||||
background-image: url(../../assets/img/exam.png); |
||||
} |
||||
&.icon-ache{ |
||||
background-image: url(../../assets/img/ache.png); |
||||
} |
||||
&.icon-wrong{ |
||||
background-image: url(../../assets/img/wrong.png); |
||||
} |
||||
&.icon-msg{ |
||||
background-image: url(../../assets/img/msg.png); |
||||
} |
||||
} |
||||
span{ |
||||
font-size: 15px; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
.sidebar::-webkit-scrollbar { |
||||
width: 0; |
||||
} |
||||
.sidebar-el-menu:not(.el-menu--collapse) { |
||||
width: 100%; |
||||
} |
||||
.sidebar > ul { |
||||
height: 100%; |
||||
} |
||||
</style> |
||||
</style> |
@ -1,154 +1,358 @@ |
||||
@import "./default/index.scss"; |
||||
|
||||
.content-box { |
||||
-webkit-transition: left .3s ease-in-out; |
||||
transition: left .3s ease-in-out; |
||||
@font-face{ |
||||
font-family: youshe; |
||||
src: url('font/YouSheBiaoTiHei.ttf'); |
||||
} |
||||
|
||||
.content { |
||||
width: auto; |
||||
height: 100%; |
||||
padding: 20px; |
||||
box-sizing: border-box; |
||||
} |
||||
|
||||
.content-collapse { |
||||
left: 65px; |
||||
} |
||||
|
||||
.container { |
||||
padding: 30px; |
||||
background: #fff; |
||||
border: 1px solid #ddd; |
||||
border-radius: 5px; |
||||
} |
||||
|
||||
.crumbs { |
||||
margin: 10px 0; |
||||
[v-cloak] { |
||||
display: none; |
||||
} |
||||
|
||||
.pagination { |
||||
margin: 20px 0; |
||||
text-align: right; |
||||
::-webkit-scrollbar { |
||||
width: 6px; |
||||
} |
||||
|
||||
.el-button+.el-tooltip { |
||||
margin-left: 10px; |
||||
::-webkit-scrollbar-thumb { |
||||
border-radius: 10px; |
||||
background: rgba(0, 0, 0, 0.06); |
||||
} |
||||
|
||||
.ql-snow .ql-tooltip { |
||||
transform: translateX(117.5px) translateY(10px) !important; |
||||
.required{ |
||||
font-size: 16px; |
||||
color: #CC221C; |
||||
font-style: normal; |
||||
} |
||||
|
||||
.el-row { |
||||
.breadcrumb{ |
||||
display: flex; |
||||
align-items: center; |
||||
margin-bottom: 20px; |
||||
.cur,.el-breadcrumb__inner,.el-breadcrumb__separator{ |
||||
color: rgba(0,0,0,.45) !important; |
||||
font-weight: 400 !important; |
||||
font-size: 12px; |
||||
} |
||||
.el-breadcrumb__item:last-of-type .el-breadcrumb__inner{ |
||||
color: rgba(0,0,0,.85) !important; |
||||
} |
||||
} |
||||
|
||||
#app .el-table thead{ |
||||
color: #fff; |
||||
} |
||||
#app .el-table th{ |
||||
background-color: $--color-primary!important; |
||||
font-size: 16px; |
||||
font-weight: normal; |
||||
} |
||||
#app .el-select{ |
||||
display: unset; |
||||
.el-button--primary.action-btn{ |
||||
color: #CC221C !important; |
||||
font-size: 14px !important; |
||||
background-color: #fff !important; |
||||
border-radius: 4px !important; |
||||
} |
||||
|
||||
.required{ |
||||
margin-right: 5px; |
||||
color: #F56C6C; |
||||
.el-input{ |
||||
.el-input__inner{ |
||||
border-color: rgba(0, 0, 0, 0.15); |
||||
} |
||||
} |
||||
.p-title{ |
||||
display: flex; |
||||
align-items: center; |
||||
&:before{ |
||||
content: ''; |
||||
display: inline-block; |
||||
width: 3px; |
||||
height: 15px; |
||||
margin-right: 5px; |
||||
background-color: $--color-primary; |
||||
|
||||
.page{ |
||||
position: relative; |
||||
background-color: #fff; |
||||
border-radius: 8px; |
||||
.p-title{ |
||||
padding-left: 24px; |
||||
line-height: 56px; |
||||
font-size: 16px; |
||||
color: rgba(0, 0, 0, 0.85); |
||||
border-bottom: 1px solid rgba(0,0,0,.06); |
||||
} |
||||
.page-content{ |
||||
padding: 24px; |
||||
.tool{ |
||||
display: flex; |
||||
justify-content: space-between; |
||||
margin-bottom: 24px; |
||||
.filter{ |
||||
display: inline-flex; |
||||
align-items: center; |
||||
flex: 1; |
||||
li{ |
||||
display: inline-flex; |
||||
align-items: center; |
||||
margin-right: 30px; |
||||
label{ |
||||
font-size: 14px; |
||||
line-height: 14px; |
||||
color: rgba(0,0,0,.65); |
||||
white-space: nowrap; |
||||
} |
||||
} |
||||
} |
||||
.single-choice{ |
||||
dl { |
||||
display: flex; |
||||
line-height: 30px; |
||||
dt { |
||||
color: rgba(0,0,0,.65); |
||||
font-size: 14px; |
||||
white-space: nowrap; |
||||
} |
||||
dd { |
||||
display: inline-flex; |
||||
align-items: center; |
||||
flex-wrap: wrap; |
||||
span { |
||||
padding: 0 10px; |
||||
margin: 0 10px; |
||||
color: #333; |
||||
font-size: 14px; |
||||
line-height: 1.8; |
||||
white-space: nowrap; |
||||
|
||||
cursor: pointer; |
||||
&:hover { |
||||
color: #CC221C; |
||||
} |
||||
&.active { |
||||
border-radius: 4px; |
||||
color: #fff; |
||||
background-color: #CC221C; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.el-button--primary{ |
||||
@extend .action-btn; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
[v-cloak] { |
||||
display: none; |
||||
.pagination { |
||||
margin: 20px 0; |
||||
text-align: center; |
||||
button,.number{ |
||||
color: rgba(0,0,0,.65) !important; |
||||
background-color: transparent !important; |
||||
border: 1px solid rgba(0, 0, 0, 0.15) !important; |
||||
border-radius: 4px !important; |
||||
} |
||||
button i{ |
||||
color: #333; |
||||
} |
||||
.active{ |
||||
color: #fff !important; |
||||
background-color: #CC221C !important; |
||||
} |
||||
} |
||||
|
||||
.header_tab{ |
||||
box-shadow:0px 0px 25px 2px rgba(255,45,45,0.14); |
||||
.el-tabs__nav-wrap::after{ |
||||
background-color: #fff; |
||||
.el-table{ |
||||
border-radius: 8px; |
||||
border: 1px solid rgba(0, 0, 0, 0.06); |
||||
border-bottom: 0; |
||||
.cell{ |
||||
color: rgba(0, 0, 0, 0.85); |
||||
font-size: 14px; |
||||
.el-checkbox{ |
||||
&:before{ |
||||
content: '全选'; |
||||
margin-right: 5px; |
||||
color: rgba(0, 0, 0, 0.85); |
||||
font-size: 14px; |
||||
opacity: 0; |
||||
} |
||||
} |
||||
} |
||||
th{ |
||||
background: rgba(0, 0, 0, 0.04)!important; |
||||
font-size: 14px; |
||||
color: rgba(0, 0, 0, 0.85); |
||||
font-weight: normal; |
||||
.cell{ |
||||
.el-checkbox{ |
||||
&:before{ |
||||
opacity: 1; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
.el-checkbox__inner{ |
||||
border-radius: 4px; |
||||
transition: none !important; |
||||
} |
||||
.el-checkbox__input.is-indeterminate .el-checkbox__inner{ |
||||
background-color: #FFFFFF; |
||||
border-color: #DCDFE6; |
||||
} |
||||
.el-switch__core{ |
||||
background-color: #bfbfbf; |
||||
} |
||||
.el-tabs__header{ |
||||
padding: 20px 60px 0; |
||||
margin: 0; |
||||
z-index: 999; |
||||
background-color: #fff; |
||||
.el-switch__label--right{ |
||||
z-index: 2; |
||||
position: absolute; |
||||
right: 8px; |
||||
margin-left: 0; |
||||
color: #fff !important; |
||||
} |
||||
.el-tabs__item{ |
||||
padding: 0 30px; |
||||
font-size: 15px; |
||||
.el-switch__label--right.is-active{ |
||||
left: 8px; |
||||
right: auto; |
||||
} |
||||
.el-switch__label--right span{ |
||||
font-size: 12px; |
||||
} |
||||
} |
||||
|
||||
.tabs{ |
||||
display: flex; |
||||
align-items: center; |
||||
padding: 20px 1.5% 20px; |
||||
margin-bottom: 20px; |
||||
z-index: 999; |
||||
background-color: #fff; |
||||
padding: 0 24px; |
||||
border-bottom: 1px solid rgba(0,0,0,.06); |
||||
.item{ |
||||
padding: 12px 20px; |
||||
margin-right: 10px; |
||||
color:#606266; |
||||
line-height: 1; |
||||
border-radius: 4px; |
||||
background-color: #fff; |
||||
border: 1px solid #dcdfe6; |
||||
position: relative; |
||||
padding: 20px 0; |
||||
margin-right: 40px; |
||||
font-size: 16px; |
||||
color: rgba(0, 0, 0, 0.65); |
||||
cursor: pointer; |
||||
&:after{ |
||||
content: ''; |
||||
position: absolute; |
||||
bottom: 0; |
||||
left: 0; |
||||
width: 100%; |
||||
height: 3px; |
||||
border-bottom: 3px solid transparent; |
||||
border-radius: 2px; |
||||
} |
||||
&.active{ |
||||
color: #fff; |
||||
background-color: $--color-primary; |
||||
border-color: $--color-primary; |
||||
font-weight: 500; |
||||
color: rgba(0, 0, 0, 0.85); |
||||
} |
||||
&.active:after{ |
||||
border-bottom-color: $--color-primary; |
||||
} |
||||
} |
||||
} |
||||
.btns{ |
||||
display: flex; |
||||
justify-content: center; |
||||
margin-top: 20px; |
||||
|
||||
button{ |
||||
height: 30px; |
||||
padding: 0 30px; |
||||
margin: 0 15px; |
||||
.el-message{ |
||||
padding: 11px 20px; |
||||
.el-message__icon{ |
||||
font-size: 16px; |
||||
} |
||||
.el-message__content{ |
||||
font-size: 14px; |
||||
color: #333; |
||||
line-height: 30px; |
||||
background-color: #fff; |
||||
border: 1px solid #ededed; |
||||
border-radius: 4px; |
||||
cursor: pointer; |
||||
&.submit{ |
||||
color: #fff; |
||||
background-color: #e80909; |
||||
border-color: #e80909; |
||||
color: rgba(0, 0, 0, 0.65); |
||||
} |
||||
.el-icon-close{ |
||||
font-size: 14px; |
||||
color: #92998d; |
||||
} |
||||
.el-message--success{ |
||||
border: 1px solid #B7EB8F; |
||||
background: #F6FFED; |
||||
.el-message__icon{ |
||||
color: #00c700; |
||||
} |
||||
} |
||||
.el-message--warning{ |
||||
border: 1px solid #FFE58F; |
||||
background: #FFFBE6; |
||||
.el-message__icon{ |
||||
color: #ffa900; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.el-message-box{ |
||||
padding-bottom: 24px; |
||||
.el-message-box__header{ |
||||
padding: 32px 32px 12px 50px; |
||||
span{ |
||||
font-size: 16px; |
||||
color: rgba(0, 0, 0, 0.85); |
||||
font-weight: 500; |
||||
} |
||||
} |
||||
.el-message-box__status{ |
||||
top: -30px; |
||||
} |
||||
.el-message-box__status + .el-message-box__message{ |
||||
font-size: 14px; |
||||
color: rgba(0, 0, 0, 0.65); |
||||
} |
||||
.el-message-box__btns{ |
||||
padding-right: 32px; |
||||
&.el-icon-warning{ |
||||
color: #ffa900; |
||||
} |
||||
&:hover{ |
||||
opacity: .8; |
||||
} |
||||
.el-button--primary,.el-button--primary:hover, .el-button--primary:focus{ |
||||
background: #CC221C; |
||||
} |
||||
} |
||||
|
||||
.el-dialog__wrapper{ |
||||
.el-dialog{ |
||||
border-radius: 4px; |
||||
.el-dialog__header{ |
||||
border-bottom: 1px solid rgba(0, 0, 0, 0.06); |
||||
.el-dialog__title{ |
||||
font-size: 16px; |
||||
color: rgba(0, 0, 0, 0.85); |
||||
} |
||||
} |
||||
&:focus{ |
||||
outline: none; |
||||
.el-dialog__footer{ |
||||
padding: 10px 16px; |
||||
border-top: 1px solid rgba(0, 0, 0, 0.06); |
||||
.el-button{ |
||||
font-size: 14px; |
||||
border-radius: 4px; |
||||
border-color: rgba(0, 0, 0, 0.15); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.userRadio .el-radio{ |
||||
margin-right: 10px!important; |
||||
|
||||
.upload-wrap{ |
||||
position: relative; |
||||
display: flex; |
||||
justify-content: center; |
||||
align-items: center; |
||||
padding: 34px 0; |
||||
.el-button{ |
||||
span{ |
||||
display: flex; |
||||
align-items: center; |
||||
color: rgba(0, 0, 0, 0.65); |
||||
font-size: 14px; |
||||
img{ |
||||
margin-right: 8px; |
||||
} |
||||
} |
||||
} |
||||
&>.el-button{ |
||||
margin-right: 32px; |
||||
} |
||||
.el-upload-list{ |
||||
position: absolute; |
||||
bottom: 0; |
||||
left: 0; |
||||
width: 100%; |
||||
} |
||||
.link{ |
||||
position: absolute; |
||||
bottom: -20px; |
||||
left: 0; |
||||
width: 100%; |
||||
text-align: center; |
||||
} |
||||
&.lg{ |
||||
padding-bottom: 50px; |
||||
} |
||||
} |
||||
.userRadio .el-radio__input{ |
||||
display: none!important; |
||||
|
||||
@media(max-width: 1600px){ |
||||
.el-table{ |
||||
.el-switch__label--right.is-active{ |
||||
left: 8px; |
||||
} |
||||
} |
||||
} |