增加学校 学校管理员选择年度报告

main
JayChou 3 months ago
parent 06fdd0c6e0
commit d0f9445c49
  1. 107
      jeecgboot-vue3-master/src/views/comprehensiveEvaluation/comprehensiveReport.vue
  2. 17
      jeecgboot-vue3-master/src/views/comprehensiveEvaluation/department.vue

@ -1,7 +1,13 @@
<template>
<div style="padding: 30px 18.6vw 0; width: 100%; margin: auto">
年度<j-dict-select-tag placeholder="请选择年度" v-model:value="annualid" dictCode="annual,annual_name,id" />
</div>
<div class="container" v-if="isLoading">
<div class="title">河南机电学院比赛综合报告<div style="margin-left: 10px;cursor: pointer;"><SvgIcon name="log" @click="log"/></div></div>
<div class="rebuild" ><div @click="Rebuild">重新生成报告</div></div>
<div class="title"
>河南机电学院比赛综合报告<div style="margin-left: 10px; cursor: pointer"><SvgIcon name="log" @click="log" /></div
></div>
<div class="rebuild"><div @click="Rebuild">重新生成报告</div></div>
<p class="description"
>我是比赛综述:全面落实立德树人根本任务依据CDI0工程教育理念培养德劳全面发展掌握软件工程专业所需的数学与自然科学基础知识专业基础理论知识;在企业级软件开发和工业智能软件开发方向能承担软件分析设计开发项目管理等任务具备解决复杂工程问题的能力;具有终身学习和创新创业意识国际交流能力团队合作精神等良好案养能适应产业与社会变革的国际化应用型人才<br />本专业毕业生经过五年左右的实际工作能够达到以下目标:</p
>
@ -10,7 +16,7 @@
<div class="top-title">本年度已开展比赛数</div>
<div class="sum">{{ data.本年度已开展比赛项目数 }}</div>
<div class="content">
<div>国赛{{data.国赛}}</div>
<div>国赛{{ data.国赛 }}</div>
<div>省赛{{ data.省赛 }}</div>
<div>校赛{{ data.校赛 }}</div>
</div>
@ -19,16 +25,16 @@
<div class="top-title">本年度已开展比赛数</div>
<div class="sum">{{ data.本年度已开展比赛数 }}</div>
<div class="content">
<div>国赛{{data.国赛}}</div>
<div>国赛{{ data.国赛 }}</div>
<div>省赛{{ data.省赛 }}</div>
<div>校赛{{ data.校赛 }}</div>
</div>
</div>
<div class="item">
<div class="top-title">本年度参加比赛队伍数</div>
<div class="sum">{{ data.本年度参加比赛队伍数}}</div>
<div class="sum">{{ data.本年度参加比赛队伍数 }}</div>
<div class="content">
<div>国赛{{data.国赛}}</div>
<div>国赛{{ data.国赛 }}</div>
<div>省赛{{ data.省赛 }}</div>
<div>校赛{{ data.校赛 }}</div>
</div>
@ -37,7 +43,7 @@
<div class="top-title">已完成的比赛</div>
<div class="sum">{{ data.已完成的比赛 }}</div>
<div class="content">
<div>国赛{{data.国赛}}</div>
<div>国赛{{ data.国赛 }}</div>
<div>省赛{{ data.省赛 }}</div>
<div>校赛{{ data.校赛 }}</div>
</div>
@ -51,10 +57,10 @@
<div class="year-content-top">
<div class="left border-000">
<div class="border-title">年度维度分析</div>
<randerChart :data="data.学生能力平均值"/>
<randerChart :data="data.学生能力平均值" />
</div>
<div class="right border-000">
<cardList :DATA="data12"/>
<cardList :DATA="data12" />
</div>
</div>
@ -97,11 +103,11 @@
<div class="left border-000">
<!-- <div class="border-title">年度维度分析</div> -->
<cakeChart :data="data.比赛类型占比"/>
<cakeChart :data="data.比赛类型占比" />
</div>
</div>
<div class="footer-edit border-000">
<cardList2 :data="data.学生参赛情况"/>
<cardList2 :data="data.学生参赛情况" />
</div>
</div>
<cardTitle title="比赛学生获奖情况分析" />
@ -115,11 +121,11 @@
</div>
<div class="left border-000">
<!-- <div class="border-title">年度维度分析</div> -->
<ringChart :data="data.比赛获奖占比"/>
<ringChart :data="data.比赛获奖占比" />
</div>
</div>
<div class="footer-edit border-000">
<cardList3 :data="data.比赛获奖情况列表"/>
<cardList3 :data="data.比赛获奖情况列表" />
</div>
</div>
<cardTitle title="部门参赛情况分析" />
@ -128,11 +134,11 @@
>
<div class="participation-status-content">
<div class="right border-000">
<cardList4 :data="data.部门参赛情况列表"/>
<cardList4 :data="data.部门参赛情况列表" />
</div>
<div class="left border-000" style="height: auto">
<!-- <div class="border-title">年度维度分析</div> -->
<cardList5 :data="data.比赛学生积分况分析"/>
<cardList5 :data="data.比赛学生积分况分析" />
</div>
</div>
<!-- <div class="footer border-000">
@ -141,7 +147,6 @@
</div>
<div class="loading" v-else>
<a-spin />
</div>
</template>
@ -154,34 +159,34 @@
import cardList5 from './components/cardList5.vue';
// import cardList6 from './components/cardList6.vue';
import { SvgIcon } from '/@/components/Icon';
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import randerChart from './components/randerChart.vue';
import cakeChart from './components/cakeChart.vue';
import ringChart from './components/ringChart.vue';
import pillarChart from './components/pillarChart.vue';
import { ref, onMounted, nextTick } from 'vue';
import { ref, onMounted, nextTick,watch } from 'vue';
import { jsPDF } from 'jspdf';
import {getComprehensiveReport} from '/@/api/common/api';
const data = ref<any>({})
const isLoading = ref<any>(false)
const data12 = ref<any>([])
import { getComprehensiveReport } from '/@/api/common/api';
const data = ref<any>({});
const isLoading = ref<any>(false);
const data12 = ref<any>([]);
const getComprehensiveReportEvent = async () => {
const res = await getComprehensiveReport()
data.value = res
const res = await getComprehensiveReport();
data.value = res;
console.log(res);
data12.value = JSON.stringify(res.学生能力平均值)
isLoading.value = true
}
getComprehensiveReportEvent()
data12.value = JSON.stringify(res.学生能力平均值);
isLoading.value = true;
};
getComprehensiveReportEvent();
const Rebuild = async () => {
isLoading.value = false
const res = await getComprehensiveReport({recreateFlag:true})
data.value = res
isLoading.value = false;
const res = await getComprehensiveReport({ recreateFlag: true ,annualid:annualid.value});
data.value = res;
console.log(res);
data12.value = JSON.stringify(res.学生能力平均值)
isLoading.value = true
}
data12.value = JSON.stringify(res.学生能力平均值);
isLoading.value = true;
};
const activeKey = ref('1');
var indicator = [
{
@ -238,8 +243,8 @@
await clickDom();
// return
var canvas = document.createElement('canvas');
var w = parseInt((document.querySelector('.container') as Element).clientWidth);
var h = parseInt((document.querySelector('.container') as Element).clientHeight);
var w = parseInt((document.querySelector('.container') as Element).clientWidth);
var h = parseInt((document.querySelector('.container') as Element).clientHeight);
console.log(w, h);
canvas.width = w;
@ -291,16 +296,25 @@
}
});
};
const annualid = ref('');
watch(
() => annualid.value,
() => {
console.log(annualid);
Rebuild();
}
);
</script>
<style lang="less" scoped>
.loading{
width: 100%;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
}
.loading {
width: 100%;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
}
.container {
width: 1240px;
margin: 0 auto;
@ -314,12 +328,12 @@
font-weight: 700;
display: flex;
align-items: center;
justify-content: center;
justify-content: center;
}
.rebuild{
.rebuild {
display: flex;
justify-content: center;
div{
div {
cursor: pointer;
}
}
@ -485,6 +499,5 @@
line-height: 50px;
font-size: 14px;
padding: 0 20px;
}
</style>

@ -1,4 +1,7 @@
<template>
<div style="padding: 30px 18.6vw 0; width: 100%; margin: auto">
年度<j-dict-select-tag placeholder="请选择年度" v-model:value="annualid" dictCode="annual,annual_name,id" />
</div>
<div class="container" v-if="isLoading">
<div class="title">河南机电学院比赛部门报告</div>
<div class="rebuild" ><div @click="Rebuild">重新生成报告</div></div>
@ -155,8 +158,9 @@
import ringChart from './components/ringChart.vue';
import pillarChart from './components/pillarChart.vue';
import {getdepartmentReport} from '/@/api/common/api';
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import { ref } from 'vue';
import { ref,watch } from 'vue';
import {useUserStore} from '/@/store/modules/user'
const userStore = useUserStore()
const activeKey = ref('1');
@ -176,7 +180,7 @@
const Rebuild = async() => {
isLoading.value = false
const res = await getdepartmentReport({recreateFlag:true,orgCode:userStore.userInfo.id
const res = await getdepartmentReport({recreateFlag:true,orgCode:userStore.userInfo.id,annualid: annualid.value
})
console.log(res);
data.value = res
@ -233,6 +237,15 @@
max: 5000,
},
];
const annualid = ref('');
watch(
() => annualid.value,
() => {
console.log(annualid);
Rebuild();
}
);
</script>
<style lang="less" scoped>

Loading…
Cancel
Save