forked from wangjiadong/comp
parent
d426580326
commit
63f459fe41
13 changed files with 398 additions and 29 deletions
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 142 KiB |
After Width: | Height: | Size: 191 KiB |
After Width: | Height: | Size: 234 KiB |
After Width: | Height: | Size: 56 KiB |
@ -0,0 +1,340 @@ |
||||
<template> |
||||
<div class="department"> |
||||
<div class="header"> |
||||
<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> |
||||
<div class="card"> |
||||
<div class="top"> |
||||
<div class="text"> |
||||
本年度参加比赛队伍数 |
||||
</div> |
||||
<Icon icon="mainHome-mp|svg" :size="20" /> |
||||
</div> |
||||
<div class="center"> |
||||
<div class="text"> |
||||
1262 |
||||
</div> |
||||
</div> |
||||
<div class="bottom"> |
||||
<div class="bot_card">国赛:120</div> |
||||
<div class="bot_card">省赛:1230</div> |
||||
<div class="bot_card">校赛:24</div> |
||||
</div> |
||||
</div> |
||||
<div class="card"> |
||||
<div class="top"> |
||||
<div class="text"> |
||||
正在进行的比赛数 |
||||
</div> |
||||
<Icon icon="mainHome-down|svg" :size="20" /> |
||||
</div> |
||||
<div class="center"> |
||||
<div class="text" style="color: #74D472;"> |
||||
45 |
||||
</div> |
||||
</div> |
||||
<div class="bottom"> |
||||
<div class="bot_card">国赛:9</div> |
||||
<div class="bot_card">省赛:13</div> |
||||
<div class="bot_card">校赛:26</div> |
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="card2"> |
||||
<div class="top"> |
||||
<div class="text"> |
||||
已经完成的比赛 |
||||
</div> |
||||
<Icon icon="mainHome-time|svg" :size="20" /> |
||||
</div> |
||||
<div class="center"> |
||||
<div class="percent"> |
||||
78% |
||||
</div> |
||||
<div> |
||||
<a-progress stroke-linecap="square" :percent="78" :show-info="false" /> |
||||
</div> |
||||
</div> |
||||
<div class="bottom"> |
||||
<div class="text"> |
||||
已完成的比赛11 |
||||
</div> |
||||
<div class="text"> |
||||
未完成的比赛11 |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="content"> |
||||
<div class="con_left"> |
||||
<div class="title-box"> |
||||
<div class="title">部门比赛情况分布</div> |
||||
</div> |
||||
<div class="ec-box"> |
||||
<div id="ec" ref="ec"></div> |
||||
</div> |
||||
</div> |
||||
<div class="con_right"> |
||||
<div class="title-box"> |
||||
<div class="tit">部门近两年维度积分</div> |
||||
<div class="bas"></div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="footer"> |
||||
<div class="foo_card"></div> |
||||
<div class="foo_card"></div> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
<script lang="ts" setup> |
||||
import { Progress as AProgress } from 'ant-design-vue'; |
||||
import { onMounted, ref } from 'vue'; |
||||
import * as echarts from 'echarts'; |
||||
import { optionRing } from './options' |
||||
|
||||
const ec = ref() |
||||
onMounted(() => { |
||||
const myChart = echarts.init(ec.value); |
||||
myChart.setOption(optionRing); |
||||
}) |
||||
|
||||
</script> |
||||
|
||||
<style lang="less" scoped> |
||||
.department { |
||||
padding: 16px 16px 0; |
||||
|
||||
&>* { |
||||
display: flex; |
||||
justify-content: space-between; |
||||
} |
||||
|
||||
.header { |
||||
|
||||
.card, |
||||
.card2 { |
||||
width: 405px; |
||||
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; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.card { |
||||
.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; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.card2 { |
||||
.center { |
||||
height: 85px; |
||||
border-bottom: 1px solid #E8E8E8; |
||||
|
||||
.percent { |
||||
height: 38px; |
||||
font-family: Inter, Inter; |
||||
font-weight: 400; |
||||
font-size: 30px; |
||||
color: rgba(51, 51, 51, 0.88); |
||||
line-height: 38px; |
||||
text-align: left; |
||||
font-style: normal; |
||||
text-transform: none; |
||||
margin-bottom: 15px; |
||||
} |
||||
} |
||||
|
||||
.bottom { |
||||
height: 33px; |
||||
padding-top: 10px; |
||||
display: flex; |
||||
column-gap: 27px; |
||||
|
||||
.text { |
||||
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; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
.content { |
||||
margin-top: 16px; |
||||
|
||||
.con_left { |
||||
width: 489px; |
||||
height: 459px; |
||||
background: #FFFFFF; |
||||
border-radius: 2px 2px 2px 2px; |
||||
border: 1px solid #F0F0F0; |
||||
display: flex; |
||||
flex-direction: column; |
||||
|
||||
.title-box { |
||||
height: 58px; |
||||
border-radius: 2px 2px 0px 0px; |
||||
border-bottom: 1px solid #F0F0F0; |
||||
display: flex; |
||||
align-items: center; |
||||
|
||||
.title { |
||||
width: 439px; |
||||
margin: auto; |
||||
font-size: 16px; |
||||
color: rgba(0, 0, 0, 0.85); |
||||
text-align: left; |
||||
} |
||||
} |
||||
|
||||
.ec-box { |
||||
flex-grow: 1; |
||||
display: flex; |
||||
|
||||
#ec { |
||||
width: 100%; |
||||
height: 100%; |
||||
margin: auto; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.con_right { |
||||
width: 1160px; |
||||
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; |
||||
|
||||
.title-box { |
||||
height: 57px; |
||||
display: flex; |
||||
align-items: center; |
||||
position: relative; |
||||
|
||||
.tit { |
||||
height: 26px; |
||||
font-size: 16px; |
||||
color: #1890FF; |
||||
text-shadow: 0px 0px 0px #1890FF; |
||||
} |
||||
|
||||
.bas { |
||||
position: absolute; |
||||
bottom: 0; |
||||
left: 0; |
||||
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; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
.footer { |
||||
margin-top: 21px; |
||||
|
||||
.foo_card { |
||||
width: 820px; |
||||
height: 502px; |
||||
background: #FFFFFF; |
||||
box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.1); |
||||
border-radius: 6px 6px 6px 6px; |
||||
} |
||||
} |
||||
|
||||
} |
||||
</style> |
@ -0,0 +1,41 @@ |
||||
// 部门比赛情况分布 圆环
|
||||
export const optionRing = { |
||||
color: [ |
||||
'#0052D9', |
||||
'#699EF5', |
||||
'#B5C7FF', |
||||
], |
||||
legend: { |
||||
x: 'center', |
||||
orient: 'horizontal', |
||||
bottom: '48px', |
||||
data: ['已完成', '比赛中', '未开始'] |
||||
}, |
||||
series: [ |
||||
{ |
||||
type: 'pie', |
||||
center:['50%', '41%'], |
||||
radius: ['35%', '45%'], |
||||
avoidLabelOverlap: false, |
||||
label: { |
||||
show: false, |
||||
position: 'center' |
||||
}, |
||||
labelLine: { |
||||
show: false |
||||
}, |
||||
emphasis: { |
||||
label: { |
||||
show: true, |
||||
fontSize: '25', |
||||
fontWeight: 'bold' |
||||
} |
||||
}, |
||||
data: [ |
||||
{ value: 335, name: '已完成' }, |
||||
{ value: 50, name: '比赛中' }, |
||||
{ value: 23, name: '未开始' }, |
||||
] |
||||
} |
||||
] |
||||
}; |
@ -0,0 +1 @@ |
||||
export {default as ChDepartment } from './chDepartment/index.vue' |
Loading…
Reference in new issue