Conflicts:
	jeecg-boot-master/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml
main
喻忠伟 4 months ago
commit 227b2ee93d
  1. 8
      jeecgboot-vue3-master/src/api/demo/depart.ts
  2. 366
      jeecgboot-vue3-master/src/views/depart/workbench/components/chExpert/index copy.vue
  3. 128
      jeecgboot-vue3-master/src/views/depart/workbench/components/chExpert/index.vue

@ -3,11 +3,11 @@ import { GetAccountInfoModel } from './model/accountModel';
enum Api {
PAGE_SCHOOL = '/user/login/homepage/school',
PAGE_DEPARTMENT ='/user/login/homepage/depart'
PAGE_DEPARTMENT = '/user/login/homepage/depart',
PAGE_ZJSYBSJS = '/AnnualCompPoint/annualCompPoint/zjsybsjs',
}
// Get personal center-basic settings
export const pageSchoolApi = () => defHttp.get<GetAccountInfoModel>({ url: Api.PAGE_SCHOOL });
export const pageDepartmentApi = (orgCode:string) => defHttp.get<GetAccountInfoModel>({ url: Api.PAGE_DEPARTMENT ,params:{orgCode}});
export const pageDepartmentApi = (orgCode: string) => defHttp.get<GetAccountInfoModel>({ url: Api.PAGE_DEPARTMENT, params: { orgCode } });
export const getZjsybsjs = () => defHttp.get({ url: Api.PAGE_ZJSYBSJS });

@ -0,0 +1,366 @@
<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">
{{ data.lsndbsxmNumber }}
</div>
</div>
<div class="bottom">
<div class="bot_card">国赛{{ data.gjjls }}</div>
<div class="bot_card">省赛{{ data.shengjls }}</div>
<div class="bot_card">市赛{{ data.shijls }}</div>
<div class="bot_card">校赛{{ data.xjls }}</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">
{{ data.jxzndbsxmNumber }}
</div>
</div>
<div class="bottom">
<div class="bot_card">国赛{{ data.gjj }}</div>
<div class="bot_card">省赛{{ data.shengj }}</div>
<div class="bot_card">市赛{{ data.shij }}</div>
<div class="bot_card">校赛{{ data.xj }}</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="newp">年度比赛项目</div>
<!-- <div class="total">比赛状态</div>
<div class="operate">操作</div> -->
</div>
<div class="t_item t_con" v-for="o, i in data.jxzndbsxmList" :key="i">
<div class="ranking">
<div class="ol">{{ o.xh }}</div>
</div>
<div class="name">{{ o.ndbs }}</div>
<div class="newp">{{ o.ndbsxm }}</div>
<!-- <div class="total">已完赛</div>
<div class="operate">详情</div> -->
</div>
<a-empty v-if="!data.lsndbsxmList.length" style="margin-top: 20px;"/>
</div>
</div>
</a-col>
</a-row>
</a-row>
</a-col>
<a-col :md="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="newp">年度比赛项目</div>
<!-- <div class="total">比赛状态</div>
<div class="operate">操作</div> -->
</div>
<div class="t_item t_con" v-for="o, i in data.lsndbsxmList" :key="i">
<div class="ranking">
<div class="ol">{{ o.xh }}</div>
</div>
<div class="name">{{ o.ndbs }}</div>
<div class="newp">{{ o.ndbsxm }}</div>
<!-- <div class="total">已完赛</div>
<div class="operate">详情</div> -->
</div>
<a-empty v-if="!data.lsndbsxmList.length" style="margin-top: 50px;"/>
</div>
</div>
<!-- 带评分 -->
<!-- <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">
import { getZjsybsjs } from '/@/api/demo/depart';
import { Empty as AEmpty } from 'ant-design-vue';
import { ref } from 'vue'
// key: 'jxzndbsxmNumber'|'jxzndbsxmList'|'lsndbsxmNumber'|'lsndbsxmList'
const data = ref({
jxzndbsxmNumber: '',
jxzndbsxmList: [
{
xh: '',
ndbs: '',
ndbsxm: ''
}
],
lsndbsxmNumber: '',
lsndbsxmList: [
{
xh: '',
ndbs: '',
ndbsxm: ''
}
],
gjj: '',
shengj: '',
shij: '',
xj: '',
gjjls: '',
shengjls: '',
shijls: '',
xjls: ''
})
getZjsybsjs().then(res => {
Object.assign(data.value, res)
})
</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%);
}
.newp {
width: calc((134 / 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%;
}
}
&:nth-of-type(-n + 4) .ranking .ol {
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>

@ -7,19 +7,20 @@
<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
{{ data.lsndbsxmNumber }}
</div>
</div>
<div class="bottom">
<div class="bot_card">国赛12</div>
<div class="bot_card">省赛12</div>
<div class="bot_card">校赛24</div>
<div class="bot_card">国赛{{ data.gjjls }}</div>
<div class="bot_card">省赛{{ data.shengjls }}</div>
<div class="bot_card">市赛{{ data.shijls }}</div>
<div class="bot_card">校赛{{ data.xjls }}</div>
</div>
</div>
</a-col>
@ -27,19 +28,20 @@
<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
{{ data.jxzndbsxmNumber }}
</div>
</div>
<div class="bottom">
<div class="bot_card">国赛12</div>
<div class="bot_card">省赛12</div>
<div class="bot_card">校赛24</div>
<div class="bot_card">国赛{{ data.gjj }}</div>
<div class="bot_card">省赛{{ data.shengj }}</div>
<div class="bot_card">市赛{{ data.shij }}</div>
<div class="bot_card">校赛{{ data.xj }}</div>
</div>
</div>
</a-col>
@ -47,24 +49,24 @@
<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 class="ranking">序号</div>
<div class="name">年度比赛名称</div>
<div class="newp">年度比赛项目</div>
</div>
<div class="t_item t_con" v-for="i in 6" :key="i">
<div class="t_item t_con" v-for="o, i in data.jxzndbsxmList" :key="i">
<div class="ranking">
<div class="ol" :class="{ ac: i <= 3 }">{{ i }}</div>
<div class="ol">{{ o.xh }}</div>
</div>
<div class="name">国家电网竞赛</div>
<div class="total">已完赛</div>
<div class="operate">详情</div>
<div class="name">{{ o.ndbs }}</div>
<div class="newp">{{ o.ndbsxm }}</div>
</div>
<a-empty v-if="!data.jxzndbsxmList.length" style="margin-top: 50px;" />
</div>
</div>
</a-col>
@ -74,18 +76,25 @@
</a-col>
<a-col :md="24" :xl="12">
<!-- 带评分 -->
<div class="tape-score foo_card">
<div class="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 class="t_item t_head">
<div class="ranking">序号</div>
<div class="name">年度比赛名称</div>
<div class="newp">年度比赛项目</div>
</div>
<div class="t_item t_con" v-for="o, i in data.lsndbsxmList" :key="i">
<div class="ranking">
<div class="ol">{{ o.xh }}</div>
</div>
<div class="name">{{ o.ndbs }}</div>
<div class="newp">{{ o.ndbsxm }}</div>
</div>
<a-empty v-if="!data.lsndbsxmList.length" style="margin-top: 50px;" />
</div>
</div>
</a-col>
@ -95,6 +104,46 @@
<script setup lang="ts">
import { getZjsybsjs } from '/@/api/demo/depart';
import { Empty as AEmpty } from 'ant-design-vue';
import { ref } from 'vue'
type o = {
xh: string,
ndbs: string,
ndbsxm: string
}
type ob = {
jxzndbsxmNumber: number;
jxzndbsxmList: o[] | [];
lsndbsxmNumber: number;
lsndbsxmList: o[] | [];
gjj: number;
shengj: number;
shij: number;
xj: number;
gjjls: number;
shengjls: number;
shijls: number;
xjls: number;
}
const data = ref<ob>({
jxzndbsxmNumber: 0,
jxzndbsxmList: [],
lsndbsxmNumber: 0,
lsndbsxmList: [],
gjj: 0,
shengj: 0,
shij: 0,
xj: 0,
gjjls: 0,
shengjls: 0,
shijls: 0,
xjls: 0
})
getZjsybsjs().then(res => {
Object.assign(data.value, res)
})
</script>
<style lang="less" scoped>
@ -216,13 +265,17 @@
width: calc((542 / 756) * 100%);
}
.total {
width: calc((74 / 756) * 100%);
.newp {
width: calc((134 / 756) * 100%);
}
.operate {
width: calc((60 / 756) * 100%);
}
//.total {
// width: calc((74 / 756) * 100%);
//}
//
//.operate {
// width: calc((60 / 756) * 100%);
//}
}
.t_head {
@ -241,14 +294,14 @@
line-height: 24px;
text-align: center;
border-radius: 50%;
&.ac {
background: #0052D9;
color: rgba(255, 255, 255, 0.9);
}
}
}
&:nth-of-type(-n + 4) .ranking .ol {
background: #0052D9;
color: rgba(255, 255, 255, 0.9);
}
.name {
font-size: 14px;
color: rgba(0, 0, 0, 0.9);
@ -270,6 +323,7 @@
.tape-score {
height: 708px;
.table {
.t_item {
width: 100%;

Loading…
Cancel
Save