forked from wangjiadong/comp
parent
9f34bab874
commit
b91cded52d
6 changed files with 1378 additions and 107 deletions
@ -0,0 +1,296 @@ |
||||
<template> |
||||
<div class="expert"> |
||||
<a-row :gutter="[16, 16]" type="flex" justify="space-between"> |
||||
<a-col :md="24" :xl="12"> |
||||
<a-row :gutter="[16, 16]" type="flex" justify="space-between"> |
||||
<a-col :span="12"> |
||||
<div class="card"> |
||||
<div class="top"> |
||||
<div class="text"> |
||||
本年度已开展比赛数 |
||||
</div> |
||||
<Icon icon="mainHome-time|svg" :size="20" /> |
||||
</div> |
||||
<div class="center"> |
||||
<div class="text"> |
||||
67 |
||||
</div> |
||||
</div> |
||||
<div class="bottom"> |
||||
<div class="bot_card">国赛:12</div> |
||||
<div class="bot_card">省赛:12</div> |
||||
<div class="bot_card">校赛:24</div> |
||||
</div> |
||||
</div> |
||||
</a-col> |
||||
<a-col :span="12"> |
||||
<div class="card"> |
||||
<div class="top"> |
||||
<div class="text"> |
||||
本年度已开展比赛数 |
||||
</div> |
||||
<Icon icon="mainHome-time|svg" :size="20" /> |
||||
</div> |
||||
<div class="center"> |
||||
<div class="text"> |
||||
67 |
||||
</div> |
||||
</div> |
||||
<div class="bottom"> |
||||
<div class="bot_card">国赛:12</div> |
||||
<div class="bot_card">省赛:12</div> |
||||
<div class="bot_card">校赛:24</div> |
||||
</div> |
||||
</div> |
||||
</a-col> |
||||
<a-row style="margin-top: 8px;width: 100%;"> |
||||
<a-col :span="24"> |
||||
<div class="foo_card"> |
||||
<div class="title"> |
||||
参与评分的比赛 |
||||
</div> |
||||
|
||||
<div class="table"> |
||||
<div class="t_item t_head"> |
||||
<div class="ranking">排名</div> |
||||
<div class="name">比赛名称</div> |
||||
<div class="total">比赛状态</div> |
||||
<div class="operate">操作</div> |
||||
</div> |
||||
<div class="t_item t_con" v-for="i in 6" :key="i"> |
||||
<div class="ranking"> |
||||
<div class="ol" :class="{ ac: i <= 3 }">{{ i }}</div> |
||||
</div> |
||||
<div class="name">国家电网竞赛</div> |
||||
<div class="total">已完赛</div> |
||||
<div class="operate">详情</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</a-col> |
||||
</a-row> |
||||
</a-row> |
||||
|
||||
|
||||
</a-col> |
||||
<a-col :md="24" :xl="12"> |
||||
<!-- 带评分 --> |
||||
<div class="tape-score foo_card"> |
||||
<div class="title"> |
||||
参与评分的比赛 |
||||
</div> |
||||
|
||||
<div class="table"> |
||||
<div class="t_item t_con" v-for="i in 6" :key="i"> |
||||
<div class="name">金话筒主持人大赛</div> |
||||
<div class="total">已完赛</div> |
||||
<div class="operate">详情</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</a-col> |
||||
</a-row> |
||||
</div> |
||||
</template> |
||||
|
||||
|
||||
<script setup lang="ts"> |
||||
</script> |
||||
|
||||
<style lang="less" scoped> |
||||
.expert { |
||||
padding-top: 16px; |
||||
padding-left: 16px; |
||||
|
||||
.card { |
||||
width: 100%; |
||||
width: 100%; |
||||
height: 182px; |
||||
background: #FFFFFF; |
||||
box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.02), 0px 1px 6px -1px rgba(0, 0, 0, 0.02), 0px 1px 2px 0px rgba(0, 0, 0, 0.03); |
||||
border-radius: 4px 4px 4px 4px; |
||||
padding: 20px 24px 0; |
||||
|
||||
.top { |
||||
display: flex; |
||||
justify-content: space-between; |
||||
|
||||
.text { |
||||
height: 22px; |
||||
font-family: Inter, Inter; |
||||
font-weight: 400; |
||||
font-size: 14px; |
||||
color: rgba(0, 0, 0, 0.45); |
||||
line-height: 22px; |
||||
text-align: left; |
||||
font-style: normal; |
||||
text-transform: none; |
||||
} |
||||
} |
||||
|
||||
.center { |
||||
margin-top: 4px; |
||||
width: 357px; |
||||
height: 78px; |
||||
border-radius: 0px 0px 0px 0px; |
||||
display: flex; |
||||
align-items: center; |
||||
|
||||
.text { |
||||
height: 38px; |
||||
font-family: Inter, Inter; |
||||
font-weight: 400; |
||||
font-size: 48px; |
||||
color: rgba(51, 51, 51, 0.88); |
||||
line-height: 38px; |
||||
text-align: left; |
||||
font-style: normal; |
||||
text-transform: none; |
||||
} |
||||
} |
||||
|
||||
.bottom { |
||||
margin-top: 18px; |
||||
display: flex; |
||||
justify-content: space-between; |
||||
|
||||
.bot_card { |
||||
width: 91px; |
||||
height: 22px; |
||||
font-family: Inter, Inter; |
||||
font-weight: 400; |
||||
font-size: 14px; |
||||
color: rgba(51, 51, 51, 0.88); |
||||
line-height: 22px; |
||||
text-align: left; |
||||
font-style: normal; |
||||
text-transform: none; |
||||
} |
||||
} |
||||
} |
||||
|
||||
|
||||
.foo_card { |
||||
width: 100%; |
||||
height: 502px; |
||||
background: #FFFFFF; |
||||
box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.1); |
||||
border-radius: 6px 6px 6px 6px; |
||||
|
||||
.title { |
||||
padding-left: 23px; |
||||
height: 57px; |
||||
line-height: 57px; |
||||
font-size: 16px; |
||||
color: rgba(0, 0, 0, 0.85); |
||||
position: relative; |
||||
|
||||
&::before { |
||||
content: ''; |
||||
display: block; |
||||
position: absolute; |
||||
bottom: 0; |
||||
left: 0; |
||||
width: 100%; |
||||
height: 1px; |
||||
background-color: rgba(5, 5, 5, 0.06); |
||||
} |
||||
} |
||||
|
||||
.table { |
||||
width: 100%; |
||||
padding-left: 32px; |
||||
|
||||
.t_item { |
||||
width: 100%; |
||||
height: 54px; |
||||
border-bottom: 1px solid #E7E7E7; |
||||
display: flex; |
||||
align-items: center; |
||||
|
||||
.ranking { |
||||
width: calc((80 / 756) * 100%); |
||||
} |
||||
|
||||
.name { |
||||
width: calc((542 / 756) * 100%); |
||||
} |
||||
|
||||
.total { |
||||
width: calc((74 / 756) * 100%); |
||||
} |
||||
|
||||
.operate { |
||||
width: calc((60 / 756) * 100%); |
||||
} |
||||
} |
||||
|
||||
.t_head { |
||||
font-size: 14px; |
||||
color: rgba(0, 0, 0, 0.4); |
||||
} |
||||
|
||||
.t_con { |
||||
.ranking { |
||||
.ol { |
||||
width: 24px; |
||||
height: 24px; |
||||
background: #E7E7E7; |
||||
color: rgba(0, 0, 0, 0.9); |
||||
font-size: 14px; |
||||
line-height: 24px; |
||||
text-align: center; |
||||
border-radius: 50%; |
||||
|
||||
&.ac { |
||||
background: #0052D9; |
||||
color: rgba(255, 255, 255, 0.9); |
||||
} |
||||
} |
||||
} |
||||
|
||||
.name { |
||||
font-size: 14px; |
||||
color: rgba(0, 0, 0, 0.9); |
||||
} |
||||
|
||||
.total { |
||||
font-size: 14px; |
||||
color: rgba(0, 0, 0, 0.9); |
||||
} |
||||
|
||||
.operate { |
||||
font-size: 14px; |
||||
color: #0052D9; |
||||
cursor: pointer; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
.tape-score { |
||||
height: 708px; |
||||
.table { |
||||
.t_item { |
||||
width: 100%; |
||||
height: 54px; |
||||
border-bottom: 1px solid #E7E7E7; |
||||
display: flex; |
||||
align-items: center; |
||||
|
||||
.name { |
||||
width: calc((542 / 676) * 100%); |
||||
} |
||||
|
||||
.total { |
||||
width: calc((74 / 676) * 100%); |
||||
} |
||||
|
||||
.operate { |
||||
width: calc((60 / 676) * 100%); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,455 @@ |
||||
<template> |
||||
<div class="school"> |
||||
<a-row :gutter="[16, 16]" type="flex" justify="space-between"> |
||||
<a-col :lg="12" :xl="6" v-for="i in 4" :key="i"> |
||||
<div class="card"> |
||||
<div class="top"> |
||||
<div class="text"> |
||||
本年度已开展比赛数 |
||||
</div> |
||||
<Icon icon="mainHome-time|svg" :size="20" /> |
||||
</div> |
||||
<div class="center"> |
||||
<div class="text"> |
||||
67 |
||||
</div> |
||||
</div> |
||||
<div class="bottom"> |
||||
<div class="bot_card">国赛:12</div> |
||||
<div class="bot_card">省赛:12</div> |
||||
<div class="bot_card">校赛:24</div> |
||||
</div> |
||||
</div> |
||||
</a-col> |
||||
</a-row> |
||||
<a-row :gutter="[16, 16]" type="flex" justify="space-between"> |
||||
<a-col :xs="24" :xl="8"> |
||||
<div class="ec_radar-box"> |
||||
<div class="title-box"> |
||||
<div class="tit">年度维度分析</div> |
||||
<div class="p">前沿探索</div> |
||||
<div class="p">奠定基础</div> |
||||
</div> |
||||
<div class="ec_radar" ref="ec_radar"></div> |
||||
</div> |
||||
</a-col> |
||||
<a-col :xs="24" :xl="16"> |
||||
<div class="con_right"> |
||||
<div class="title-box"> |
||||
<div class="tit">部门近两年维度积分</div> |
||||
<div class="bas"></div> |
||||
</div> |
||||
<div class="ec-box"> |
||||
<!-- 柱状图 --> |
||||
<div id="ec_bar" ref="ec_bar"></div> |
||||
<div class="infor"> |
||||
<ul class="card-box"> |
||||
<li v-for="i in 12" :key="i"> |
||||
<div class="ol">{{ i }}</div> |
||||
<div class="text">奠定基础</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</a-col> |
||||
</a-row> |
||||
|
||||
<a-row :gutter="[16, 16]" type="flex"> |
||||
<a-col :xs="24" :xl="12"> |
||||
<div class="foo_card"> |
||||
<div class="title"> |
||||
部门比赛积分排名 |
||||
</div> |
||||
|
||||
<div class="table"> |
||||
<div class="t_item t_head"> |
||||
<div class="ranking">排名</div> |
||||
<div class="name">比赛名称</div> |
||||
<div class="total">比赛积分</div> |
||||
<div class="operate">操作</div> |
||||
</div> |
||||
<div class="t_item t_con" v-for="i in 6" :key="i"> |
||||
<div class="ranking"> |
||||
<div class="ol" :class="{ ac: i <= 3 }">{{ i }}</div> |
||||
</div> |
||||
<div class="name">国家电网竞赛</div> |
||||
<div class="total">7059</div> |
||||
<div class="operate">详情</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</a-col> |
||||
<a-col :xs="24" :xl="12"> |
||||
<div class="foo_card"> |
||||
<div class="title"> |
||||
部门学生积分排名 |
||||
</div> |
||||
|
||||
<div class="table"> |
||||
<div class="t_item t_head"> |
||||
<div class="ranking">排名</div> |
||||
<div class="name">参赛选手名</div> |
||||
<div class="total">比赛积分</div> |
||||
<div class="operate">操作</div> |
||||
</div> |
||||
<div class="t_item t_con" v-for="i in 6" :key="i"> |
||||
<div class="ranking"> |
||||
<div class="ol" :class="{ ac: i <= 3 }">{{ i }}</div> |
||||
</div> |
||||
<div class="name">王晨</div> |
||||
<div class="total">4221</div> |
||||
<div class="operate">详情</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</a-col> |
||||
</a-row> |
||||
</div> |
||||
</template> |
||||
|
||||
|
||||
<script setup lang="ts"> |
||||
import { onMounted, ref } from 'vue'; |
||||
import * as echarts from 'echarts'; |
||||
import { optionRadar, optionBar } from '../chDepartment/options' |
||||
|
||||
const ec_radar = ref() |
||||
const ec_bar = ref() |
||||
onMounted(() => { |
||||
const myChart = echarts.init(ec_radar.value); |
||||
myChart.setOption(optionRadar); |
||||
const bar = echarts.init(ec_bar.value); |
||||
bar.setOption(optionBar); |
||||
window.addEventListener('resize', function () { |
||||
myChart.resize() |
||||
bar.resize() |
||||
}) |
||||
}) |
||||
|
||||
</script> |
||||
|
||||
<style lang="less" scoped> |
||||
.school { |
||||
padding: 16px 16px 0; |
||||
|
||||
.card { |
||||
width: 100%; |
||||
width: 100%; |
||||
height: 182px; |
||||
background: #FFFFFF; |
||||
box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.02), 0px 1px 6px -1px rgba(0, 0, 0, 0.02), 0px 1px 2px 0px rgba(0, 0, 0, 0.03); |
||||
border-radius: 4px 4px 4px 4px; |
||||
padding: 20px 24px 0; |
||||
|
||||
.top { |
||||
display: flex; |
||||
justify-content: space-between; |
||||
|
||||
.text { |
||||
height: 22px; |
||||
font-family: Inter, Inter; |
||||
font-weight: 400; |
||||
font-size: 14px; |
||||
color: rgba(0, 0, 0, 0.45); |
||||
line-height: 22px; |
||||
text-align: left; |
||||
font-style: normal; |
||||
text-transform: none; |
||||
} |
||||
} |
||||
|
||||
.center { |
||||
margin-top: 4px; |
||||
width: 357px; |
||||
height: 78px; |
||||
border-radius: 0px 0px 0px 0px; |
||||
display: flex; |
||||
align-items: center; |
||||
|
||||
.text { |
||||
height: 38px; |
||||
font-family: Inter, Inter; |
||||
font-weight: 400; |
||||
font-size: 48px; |
||||
color: rgba(51, 51, 51, 0.88); |
||||
line-height: 38px; |
||||
text-align: left; |
||||
font-style: normal; |
||||
text-transform: none; |
||||
} |
||||
} |
||||
|
||||
.bottom { |
||||
margin-top: 18px; |
||||
display: flex; |
||||
justify-content: space-between; |
||||
|
||||
.bot_card { |
||||
width: 91px; |
||||
height: 22px; |
||||
font-family: Inter, Inter; |
||||
font-weight: 400; |
||||
font-size: 14px; |
||||
color: rgba(51, 51, 51, 0.88); |
||||
line-height: 22px; |
||||
text-align: left; |
||||
font-style: normal; |
||||
text-transform: none; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.ec_radar-box { |
||||
margin-top: 17px; |
||||
width: 100%; |
||||
height: 459px; |
||||
background: #FFFFFF; |
||||
border-radius: 2px 2px 2px 2px; |
||||
display: flex; |
||||
flex-direction: column; |
||||
|
||||
.title-box { |
||||
height: 58px; |
||||
border-radius: 2px 2px 0px 0px; |
||||
border-bottom: 1px solid #F0F0F0; |
||||
display: flex; |
||||
|
||||
.tit { |
||||
margin-left: 4%; |
||||
height: 58px; |
||||
line-height: 58px; |
||||
font-size: 16px; |
||||
color: rgba(0, 0, 0, 0.85); |
||||
} |
||||
|
||||
.p { |
||||
margin-left: 7%; |
||||
font-size: 12px; |
||||
color: #333333; |
||||
height: 27px; |
||||
align-self: flex-end; |
||||
} |
||||
} |
||||
|
||||
.ec_radar { |
||||
width: 100%; |
||||
flex-grow: 1; |
||||
} |
||||
} |
||||
|
||||
.con_right { |
||||
margin-top: 17px; |
||||
// width: 1160px; |
||||
width: 100%; |
||||
height: 458px; |
||||
background: #FFFFFF; |
||||
box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.1); |
||||
border-radius: 4px 4px 4px 4px; |
||||
// padding-left: 16px; |
||||
display: flex; |
||||
flex-direction: column; |
||||
|
||||
.title-box { |
||||
height: 57px; |
||||
display: flex; |
||||
align-items: center; |
||||
position: relative; |
||||
padding-left: 16px; |
||||
|
||||
.tit { |
||||
height: 26px; |
||||
font-size: 16px; |
||||
color: #1890FF; |
||||
text-shadow: 0px 0px 0px #1890FF; |
||||
} |
||||
|
||||
.bas { |
||||
position: absolute; |
||||
bottom: 0; |
||||
left: 16px; |
||||
width: 100%; |
||||
height: 1px; |
||||
border: 1px solid rgba(5, 5, 5, 0.06); |
||||
|
||||
&::before { |
||||
content: ''; |
||||
display: block; |
||||
position: absolute; |
||||
bottom: 0; |
||||
left: 0; |
||||
width: 48px; |
||||
height: 2px; |
||||
background: #1890FF; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.ec-box { |
||||
display: flex; |
||||
justify-content: space-between; |
||||
flex-grow: 1; |
||||
column-gap: 22px; |
||||
padding-left: 39px; |
||||
|
||||
#ec_bar { |
||||
flex-grow: 1; |
||||
|
||||
} |
||||
|
||||
.infor { |
||||
width: 241px; |
||||
display: flex; |
||||
|
||||
.card-box { |
||||
margin: auto; |
||||
width: 100%; |
||||
height: 177px; |
||||
display: flex; |
||||
flex-wrap: wrap; |
||||
flex-direction: column; |
||||
row-gap: 9px; |
||||
|
||||
li { |
||||
width: 110px; |
||||
height: 22px; |
||||
font-size: 14px; |
||||
color: rgba(51, 51, 51, 0.88); |
||||
line-height: 22px; |
||||
display: flex; |
||||
justify-content: space-between; |
||||
align-items: center; |
||||
|
||||
&:nth-child(1)>.ol, |
||||
&:nth-child(2)>.ol, |
||||
&:nth-child(3)>.ol { |
||||
background-color: #314659; |
||||
color: #fff; |
||||
} |
||||
|
||||
.ol { |
||||
width: 20px; |
||||
height: 20px; |
||||
border-radius: 50%; |
||||
line-height: 20px; |
||||
text-align: center; |
||||
background: #F5F5F5; |
||||
color: #000000; |
||||
font-size: 12px; |
||||
} |
||||
|
||||
.text { |
||||
width: 67px; |
||||
font-size: 14px; |
||||
color: rgba(51, 51, 51, 0.88); |
||||
} |
||||
} |
||||
} |
||||
|
||||
} |
||||
} |
||||
|
||||
} |
||||
|
||||
.foo_card { |
||||
margin-top: 20px; |
||||
width: 100%; |
||||
height: 502px; |
||||
background: #FFFFFF; |
||||
box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.1); |
||||
border-radius: 6px 6px 6px 6px; |
||||
|
||||
.title { |
||||
padding-left: 23px; |
||||
height: 57px; |
||||
line-height: 57px; |
||||
font-size: 16px; |
||||
color: rgba(0, 0, 0, 0.85); |
||||
position: relative; |
||||
|
||||
&::before { |
||||
content: ''; |
||||
display: block; |
||||
position: absolute; |
||||
bottom: 0; |
||||
left: 0; |
||||
width: 100%; |
||||
height: 1px; |
||||
background-color: rgba(5, 5, 5, 0.06); |
||||
} |
||||
} |
||||
|
||||
.table { |
||||
width: 100%; |
||||
padding-left: 32px; |
||||
|
||||
.t_item { |
||||
width: 100%; |
||||
height: 54px; |
||||
border-bottom: 1px solid #E7E7E7; |
||||
display: flex; |
||||
align-items: center; |
||||
|
||||
.ranking { |
||||
width: calc((80 / 756) * 100%); |
||||
} |
||||
|
||||
.name { |
||||
width: calc((542 / 756) * 100%); |
||||
} |
||||
|
||||
.total { |
||||
width: calc((74 / 756) * 100%); |
||||
} |
||||
|
||||
.operate { |
||||
width: calc((60 / 756) * 100%); |
||||
} |
||||
} |
||||
|
||||
.t_head { |
||||
font-size: 14px; |
||||
color: rgba(0, 0, 0, 0.4); |
||||
} |
||||
|
||||
.t_con { |
||||
.ranking { |
||||
.ol { |
||||
width: 24px; |
||||
height: 24px; |
||||
background: #E7E7E7; |
||||
color: rgba(0, 0, 0, 0.9); |
||||
font-size: 14px; |
||||
line-height: 24px; |
||||
text-align: center; |
||||
border-radius: 50%; |
||||
|
||||
&.ac { |
||||
background: #0052D9; |
||||
color: rgba(255, 255, 255, 0.9); |
||||
} |
||||
} |
||||
} |
||||
|
||||
.name { |
||||
font-size: 14px; |
||||
color: rgba(0, 0, 0, 0.9); |
||||
} |
||||
|
||||
.total { |
||||
font-size: 14px; |
||||
color: rgba(0, 0, 0, 0.9); |
||||
} |
||||
|
||||
.operate { |
||||
font-size: 14px; |
||||
color: #0052D9; |
||||
cursor: pointer; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
|
||||
} |
||||
</style> |
@ -1 +1,3 @@ |
||||
export {default as ChDepartment } from './chDepartment/index.vue' |
||||
export {default as ChExpert } from './chExpert/index.vue' |
||||
export {default as ChSchool } from './chSchool/index.vue' |
Loading…
Reference in new issue