王家东 4 months ago
commit 4ba49e8453
  1. 69
      jeecg-boot-master/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/annualcompetitionprojectregistration/controller/AnnualCompetitionProjectRegistrationController.java
  2. 6
      jeecgboot-vue3-master/src/api/common/api.ts
  3. 4
      jeecgboot-vue3-master/src/views/awardpersion/AwardPersionList.vue
  4. 33
      jeecgboot-vue3-master/src/views/depart/workbench/components/components/cardList.vue
  5. 45
      jeecgboot-vue3-master/src/views/depart/workbench/components/components/cardListFive.vue
  6. 52
      jeecgboot-vue3-master/src/views/depart/workbench/components/components/cardListFour.vue
  7. 33
      jeecgboot-vue3-master/src/views/depart/workbench/components/components/cardListThree.vue
  8. 33
      jeecgboot-vue3-master/src/views/depart/workbench/components/components/cardListtow.vue
  9. 15
      jeecgboot-vue3-master/src/views/depart/workbench/components/organizingCommittee/organizingCommittee.vue
  10. 138
      jeecgboot-vue3-master/src/views/depart/workbench/components/student/student.vue
  11. 4
      jeecgboot-vue3-master/src/views/scorepersion/ScorePersionList.vue

@ -1264,21 +1264,36 @@ public class AnnualCompetitionProjectRegistrationController {
map2.put("xmid",listacp.get(k).getId());
//状态
Date date = new Date();
if(date.getTime()>=listacp.get(k).getApplyStartTime().getTime()&&date.getTime()<=listacp.get(k).getApplyEndTime().getTime()){
map2.put("zt","报名");
if(listacp.get(k).getApplyStartTime()!=null&&listacp.get(k).getApplyEndTime()!=null){
if(date.getTime()>=listacp.get(k).getApplyStartTime().getTime()&&date.getTime()<=listacp.get(k).getApplyEndTime().getTime()){
map2.put("zt","报名");
}
}
if(date.getTime()>=listacp.get(k).getTopicStartTime().getTime()&&date.getTime()<=listacp.get(k).getTopicEndTime().getTime()){
map2.put("zt","选题");
if(listacp.get(k).getTopicStartTime()!=null&&listacp.get(k).getTopicEndTime()!=null){
if(date.getTime()>=listacp.get(k).getTopicStartTime().getTime()&&date.getTime()<=listacp.get(k).getTopicEndTime().getTime()){
map2.put("zt","选题");
}
}
if(date.getTime()>=listacp.get(k).getUploadStartTime().getTime()&&date.getTime()<=listacp.get(k).getUploadEndTime().getTime()){
map2.put("zt","上传作品");
if(listacp.get(k).getUploadStartTime()!=null&&listacp.get(k).getUploadEndTime()!=null){
if(date.getTime()>=listacp.get(k).getUploadStartTime().getTime()&&date.getTime()<=listacp.get(k).getUploadEndTime().getTime()){
map2.put("zt","上传作品");
}
}
if(date.getTime()>=listacp.get(k).getScoreStartTime().getTime()&&date.getTime()<=listacp.get(k).getScoreEndTime().getTime()){
map2.put("zt","评分");
if(listacp.get(k).getScoreStartTime()!=null&&listacp.get(k).getScoreEndTime()!=null){
if(date.getTime()>=listacp.get(k).getScoreStartTime().getTime()&&date.getTime()<=listacp.get(k).getScoreEndTime().getTime()){
map2.put("zt","评分");
}
}
if(date.getTime()>listacp.get(k).getScoreEndTime().getTime()){
map2.put("zt","已结束");
if(listacp.get(k).getScoreEndTime()!=null){
if(date.getTime()>listacp.get(k).getScoreEndTime().getTime()){
map2.put("zt","已结束");
}
}
xmListMap.add(map2);
}
}else {
@ -1292,20 +1307,34 @@ public class AnnualCompetitionProjectRegistrationController {
map3.put("xmid",listacp.get(o).getId());
//状态
Date date = new Date();
if(date.getTime()>=listacp.get(o).getApplyStartTime().getTime()&&date.getTime()<=listacp.get(o).getApplyEndTime().getTime()){
map3.put("zt","报名");
if(listacp.get(o).getApplyStartTime()!=null&&listacp.get(o).getApplyEndTime()!=null){
if(date.getTime()>=listacp.get(o).getApplyStartTime().getTime()&&date.getTime()<=listacp.get(o).getApplyEndTime().getTime()){
map3.put("zt","报名");
}
}
if(date.getTime()>=listacp.get(o).getTopicStartTime().getTime()&&date.getTime()<=listacp.get(o).getTopicEndTime().getTime()){
map3.put("zt","选题");
if(listacp.get(o).getTopicStartTime()!=null&&listacp.get(o).getTopicEndTime()!=null){
if(date.getTime()>=listacp.get(o).getTopicStartTime().getTime()&&date.getTime()<=listacp.get(o).getTopicEndTime().getTime()){
map3.put("zt","选题");
}
}
if(date.getTime()>=listacp.get(o).getUploadStartTime().getTime()&&date.getTime()<=listacp.get(o).getUploadEndTime().getTime()){
map3.put("zt","上传作品");
if(listacp.get(o).getUploadStartTime()!=null&&listacp.get(o).getUploadEndTime()!=null){
if(date.getTime()>=listacp.get(o).getUploadStartTime().getTime()&&date.getTime()<=listacp.get(o).getUploadEndTime().getTime()){
map3.put("zt","上传作品");
}
}
if(date.getTime()>=listacp.get(o).getScoreStartTime().getTime()&&date.getTime()<=listacp.get(o).getScoreEndTime().getTime()){
map3.put("zt","评分");
if(listacp.get(o).getScoreStartTime()!=null&&listacp.get(o).getScoreEndTime()!=null){
if(date.getTime()>=listacp.get(o).getScoreStartTime().getTime()&&date.getTime()<=listacp.get(o).getScoreEndTime().getTime()){
map3.put("zt","评分");
}
}
if(date.getTime()>listacp.get(o).getScoreEndTime().getTime()){
map3.put("zt","已结束");
if(listacp.get(o).getScoreEndTime()!=null){
if(date.getTime()>listacp.get(o).getScoreEndTime().getTime()){
map3.put("zt","已结束");
}
}
xmListMap.add(map3);
}

@ -158,4 +158,10 @@ export const getOrganizingCommittee = () => {
return defHttp.get({
url:'/annualcompetitionprojectregistration/annualCompetitionProjectRegistration/zwhsybsjs'
})
}
// 学生首页
export const getStudent = () => {
return defHttp.get({
url:'/annualcompetitionprojectregistration/annualCompetitionProjectRegistration/xssybsjs'
})
}

@ -39,8 +39,8 @@
<a-button type="primary" @click="handleAdd" preIcon="ant-design:plus-outlined"> 新增</a-button>
<a-button type="primary" @click="cxhq" preIcon="ant-design:sync-outlined"> 重新获取</a-button>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXlsMb"> 导出模板</a-button>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXlstj"> 导入推荐</a-button>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXlstj"> 导出推荐</a-button>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXlsMb"> 导入模板</a-button>
<j-upload-button type="primary" preIcon="ant-design:import-outlined" @click="onImportXls">导入</j-upload-button>
<a-dropdown v-if="selectedRowKeys.length > 0">
<template #overlay>

@ -27,38 +27,7 @@
const props = defineProps({
data: {
type: Array,
default: [
{
name: '机电学院',
sum: 100,
id:1,
},
{
name: '机电学院',
sum: 100,
id:2,
},
{
name: '机电学院',
sum: 100,
id:3,
},
{
name: '机电学院',
sum: 100,
id:1,
},
{
name: '机电学院',
sum: 100,
id:2,
},
{
name: '机电学院',
sum: 100,
id:3,
},
],
default: [],
},
});
const goToInfo = (id:any) => {

@ -5,17 +5,19 @@
<div class="table">
<div class="t_item t_head">
<!-- <div class="ranking">排名</div> -->
<div class="name">所有奖项</div>
<div class="total">比赛名称</div>
<div class="name">奖项名称</div>
<div class="total">年度比赛名称</div>
<div class="total">年度比赛项目名称</div>
<div class="operate">积分</div>
</div>
<div class="t_item t_con" v-for="(i,index) in props.data" :key="i">
<!-- <div class="ranking">
<div class="ol" :class="{ ac: index <= 3 }">{{ index +1 }}</div>
</div> -->
<div class="name">{{ i.name }}</div>
<div class="total">{{ i.sum }}</div>
<div class="operate">{{ i.id }}</div>
<div class="name">{{ i.jxname }}</div>
<div class="total">{{ i.ndbs }}</div>
<div class="total">{{ i.ndbsxm }}</div>
<div class="operate">{{ i.jf }}</div>
</div>
</div>
</div>
@ -25,38 +27,7 @@
const props = defineProps({
data: {
type: Array,
default: [
{
name: '一等奖',
sum: '全国计算机高级大赛',
id:1,
},
{
name: '一等奖',
sum: '全国计算机高级大赛',
id:2,
},
{
name: '一等奖',
sum: '全国计算机高级大赛',
id:3,
},
{
name: '一等奖',
sum: '全国计算机高级大赛',
id:4,
},
{
name: '一等奖',
sum: '全国计算机高级大赛',
id:5,
},
{
name: '一等奖',
sum: '全国计算机高级大赛',
id:6,
},
],
default: [],
},
});
</script>

@ -5,60 +5,38 @@
<div class="table">
<div class="t_item t_head">
<!-- <div class="ranking">排名</div> -->
<div class="name">比赛名称</div>
<div class="total">比赛状态</div>
<div class="name">报名比赛项目</div>
<div class="total">状态</div>
<div class="operate">操作</div>
</div>
<div class="t_item t_con" v-for="(i,index) in props.data" :key="i">
<!-- <div class="ranking">
<div class="ol" :class="{ ac: index <= 3 }">{{ index +1 }}</div>
</div> -->
<div class="name">{{ i.name }}</div>
<div class="total">{{ i.sum }}</div>
<div class="operate">详情</div>
<div class="name">{{ i.xmname }}</div>
<div class="total">{{ i.zt }}</div>
<div class="operate" @click="goToInfo(i)">详情</div>
</div>
</div>
</div>
</template>
<script lang="ts" setup>
import {useRouter} from 'vue-router'
const router = useRouter()
const props = defineProps({
data: {
type: Array,
default: [
{
name: '全国计算机高级大赛',
sum: '比赛中',
id:1,
},
{
name: '全国计算机高级大赛',
sum: '比赛中',
id:2,
},
{
name: '全国计算机高级大赛',
sum: '比赛中',
id:3,
},
{
name: '全国计算机高级大赛',
sum: '比赛中',
id:4,
},
{
name: '全国计算机高级大赛',
sum: '比赛中',
id:5,
},
{
name: '全国计算机高级大赛',
sum: '比赛中',
id:6,
},
],
default: [],
},
});
console.log(props.data,'111');
const goToInfo = (record:any) => {
router.push({
path: '/annualcompetitionprojectregistration/student/AnnualCompetitionProjectRegistrationList',
query: {annualCompid: record.xmname ,entryFormat: record.cyxs, id: record.xmid}
})
}
</script>
<style lang="less" scoped>

@ -28,38 +28,7 @@
const props = defineProps({
data: {
type: Array,
default: [
{
name: '项目名称',
sum: 100,
id:1,
},
{
name: '项目名称',
sum: 100,
id:2,
},
{
name: '项目名称',
sum: 100,
id:3,
},
{
name: '项目名称',
sum: 100,
id:4,
},
{
name: '项目名称',
sum: 100,
id:5,
},
{
name: '项目名称',
sum: 100,
id:6,
},
],
default: [],
},
});
</script>

@ -25,38 +25,7 @@
const props = defineProps({
data: {
type: Array,
default: [
{
name: '无糖',
sum: 100,
id:1,
},
{
name: '无糖',
sum: 100,
id:2,
},
{
name: '无糖',
sum: 100,
id:3,
},
{
name: '无糖',
sum: 100,
id:4,
},
{
name: '无糖',
sum: 100,
id:5,
},
{
name: '无糖',
sum: 100,
id:6,
},
],
default: [],
},
});
</script>

@ -129,7 +129,20 @@
}, 1000);
};
};
const data = ref<any>({})
const data = ref<any>({
ydjNumber:0,
edjNumber:0,
sdjNumber:0,
sidjNumber:0,
wdjNumber:0,
qwtxmList:[],
bsxmSum:0,
csyxbmpm:[],
bmxsxxList:[],
})
const getOrganizingCommitteeEvent = async () => {
const res = await getOrganizingCommittee()
data.value = res

@ -1,33 +1,36 @@
<template>
<div class="container-box">
<a-row :gutter="[24, 24]">
<a-row :gutter="[24, 24]" style="margin-top: 30px">
<a-col :xxl="12" :xl="12" :lg="24">
<a-row :gutter="[24, 24]" style="margin-top: 0">
<a-col :span="12">
<div class="card1">
<div class="title">
<div class="left">赛人数</div>
<div class="left">加比赛项目数量</div>
<div class="right"><SvgIcon size="20" name="content" /></div>
</div>
<div class="name">1314</div>
<div class="total">
<div class="one">一等11</div>
<div class="two">二等1</div>
<div class="three">三等1</div>
<div class="name">{{ data.cjbsxmsl }}</div>
<div class="total" style="margin-top: 10px">
<div class="two">国家级{{ data.gjj }}</div>
<div class="three">省级{{ data.shengj }}</div>
<div class="three">市级{{ data.shij }}</div>
<div class="three">校级{{ data.xj }}</div>
</div>
</div>
</a-col>
<a-col :span="12">
<div class="card1">
<div class="title">
<div class="left">参赛人</div>
<div class="left">获奖</div>
<div class="right"><SvgIcon size="20" name="content" /></div>
</div>
<div class="name">1314</div>
<div class="total">
<div class="one">一等11</div>
<div class="two">二等1</div>
<div class="three">三等1</div>
<div class="total" style="grid-template-columns: repeat(5, 1fr)">
<div class="one">一等{{data.ydjNumber}}</div>
<div class="two">二等{{data.edjNumber}}</div>
<div class="three">三等{{data.sdjNumber}}</div>
<div class="two">四等{{data.sidjNumber}}</div>
<div class="three">五等{{data.wdjNumber}}</div>
</div>
</div>
</a-col>
@ -63,12 +66,13 @@
<a-col :xxl="12" :xl="12" :lg="24">
<div class="right-list">
<a-card title="报名比赛" style="width: 100%; height: 100%">
<cardListFour />
<cardListFour :data="data.bmbsxm"/>
</a-card>
<div class="gengduo" @click="router.push('/annualcompetitionprojectregistration/student/AnnualCompetitionProjectRegistrationList')">更多</div>
</div>
</a-col>
</a-row>
<a-row :gutter="[24, 24]">
<a-row :gutter="[24, 24]" style="margin-top: 30px">
<a-col :xxl="12" :xl="12" :lg="24"
><div class="huojiangqingkuang">
<a-card title="获奖情况" style="width: 100%; height: 100%">
@ -79,7 +83,7 @@
<a-col :xxl="12" :xl="12" :lg="24">
<div class="all-jiangxiang">
<a-card title="所有奖项" style="width: 100%">
<cardListFive />
<cardListFive :data="data.allApList"/>
</a-card>
</div>
</a-col>
@ -92,8 +96,34 @@
import cardListFour from '../components/cardListFour.vue';
import cardListFive from '../components/cardListFive.vue';
import echarts from '/@/utils/lib/echarts';
import { getStudent } from '/@/api/common/api';
import { onMounted, ref } from 'vue';
import {useRouter} from 'vue-router'
const router = useRouter()
const data = ref({
cjbsxmsl:0,
gjj:0,
shengj:0,
shij:0,
xj:0,
ydjNumber:0,
edjNumber:0,
sdjNumber:0,
sidjNumber:0,
wdjNumber:0,
allApList:[],
ndbsxm:[],
bmbsxm:[]
});
const getStudentEvent = async () => {
const res = await getStudent();
data.value = res;
console.log(res);
initHuojiangChart();
import { onMounted } from 'vue';
};
getStudentEvent();
const throttle = (fn: any) => {
let timer: any;
return function () {
@ -106,7 +136,7 @@
timer = null;
}, 1000);
};
}
};
var indicator = [
{
text: '前言探索',
@ -252,46 +282,53 @@
window.addEventListener('resize', resize);
};
const initHuojiangChart = () => {
console.log(data.value,'ata.value');
const myChart = echarts.init(document.getElementById('chart-huojiang'));
const option = {
tooltip: {
trigger: 'item',
},
// grid: {
// left: '20px',
// containLabel: false,
// },
// grid: {
// left: '20px',
// containLabel: false,
// },
legend: {
type:"scroll",
type: 'scroll',
orient: 'vertical',
left:'70%',
align:'left',
top:'middle',
left: '70%',
align: 'left',
top: 'middle',
textStyle: {
color:'#8C8C8C'
color: '#8C8C8C',
},
height:250
height: 250,
},
series: [
{
name: '获奖情况',
type: 'pie',
center: ['35%', '50%'],
radius: '80%',
label: {
normal: {
show: false,
position: 'outter',
formatter:function (parms){
return parms.data.value
}
}
},
labelLine: {
show:false
radius: '80%',
label: {
normal: {
show: false,
position: 'outter',
formatter: function (parms) {
return parms.data.value;
},
},
data: [{ value: 1048, name: '一等奖' }, { value: 735, name: '二等奖' }, { value: 580, name: '三等奖' }],
},
labelLine: {
show: false,
},
data: [
{ value: data.value.ydjNumber, name: '一等奖' },
{ value: data.value.edjNumber, name: '二等奖' },
{ value: data.value.sdjNumber, name: '三等奖' },
{ value: data.value.sidjNumber, name: '四等奖' },
{ value: data.value.wdjNumber, name: '五等奖' },
],
emphasis: {
itemStyle: {
shadowBlur: 10,
@ -310,7 +347,6 @@
};
onMounted(() => {
initChart();
initHuojiangChart();
});
</script>
@ -344,9 +380,15 @@
margin-top: 20px;
font-size: 12px;
color: #000;
display: flex;
// display: flex;
width: 100%;
justify-content: space-between;
display: grid;
grid-template-columns: repeat(4, 1fr); /* 创建两列,每列宽度相等 */
grid-template-rows: repeat(2, 10px); /* 创建四行,每行高度固定为100px */
gap: 10px;
div {
// width: 25%;
}
}
}
.render {
@ -399,9 +441,17 @@
}
}
.right-list {
position: relative;
width: 100%;
height: 100%;
background-color: #fff;
.gengduo{
position: absolute;
right: 50px;
top: 20px;
color: #1890ff;
cursor: pointer;
}
}
.huojiangqingkuang {
width: 100%;

@ -37,8 +37,8 @@
<a-button type="primary" @click="cxhq" preIcon="ant-design:sync-outlined"> 重新获取</a-button>
<a-button type="primary" @click="tpfp" preIcon="ant-design:sync-outlined"> 同分复评</a-button>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<!-- <a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXlsMb"> 模板</a-button>-->
<!-- <j-upload-button type="primary" preIcon="ant-design:import-outlined" @click="onImportXls">导入</j-upload-button>-->
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXlsMb"> 模板</a-button>
<j-upload-button type="primary" preIcon="ant-design:import-outlined" @click="onImportXls">导入</j-upload-button>
<a-dropdown v-if="selectedRowKeys.length > 0">
<template #overlay>
<a-menu>

Loading…
Cancel
Save