朱思禹提交:提交体质健康相关代码

init
Administrator 4 years ago
parent 6e8d8b163e
commit 847ca105d1

@ -1,25 +1,28 @@
<template>
<div class="data-analysis-main-style" v-if="showType === 'condition'" ref="main">
<div v-for="item,index in dataAnalysisCondition" class="condition-container-style" :key="item.id"
:style="{width:item.id === 'school'?'360px':(item.id === 'report'?'calc(100% - ' + (index * 210 +
(role !== 'school' && analysisType === 'schoolAnalysis'? 160 : 0)) +'px)':'200px')}">
:style="{width:item.id === 'school'?'360px':(item.id === 'report'?'calc(100% - ' + (index * 260 +
(role !== 'school' && analysisType === 'schoolAnalysis'? 110 : 0)) +'px)':'250px')}">
<div class="title-style">
{{item.title}}
</div>
<vue-scroll :ops="ops" style="height: calc(100% - 30px)">
<ul class="year-list-style">
<li v-for="d,dIndex in item.data" :key="d.id" class="year-li-style" @click="onItemClick(item,index,d,dIndex)"
:style="{color:index !== dataAnalysisCondition.length - 1 && d.id === item.selectedId?'#31a8fa':null}"
:data-report="index === dataAnalysisCondition.length - 1" :title="d.value">
{{d.value}}
<a-icon v-if="index !== dataAnalysisCondition.length - 1 && d.id === item.selectedId" type="right" class="icon-style"/>
<span v-else-if="index === dataAnalysisCondition.length - 1" style="font-size: 14px;top:0;right:10px"
class="icon-style" @click.stop="onDownload()">
<a-spin :spinning="item.isLoading === true" style="height:100%">
<ul class="year-list-style">
<li v-for="d,dIndex in item.data" :key="d.id" class="year-li-style" @click="onItemClick(item,index,d,dIndex)"
:style="{color:index !== dataAnalysisCondition.length - 1 && d.id === item.selectedId?'#31a8fa':null}"
:data-report="index === dataAnalysisCondition.length - 1" :title="d.value">
{{d.value}}
<a-icon v-if="index !== dataAnalysisCondition.length - 1 && d.id === item.selectedId" type="right" class="icon-style"/>
<span v-else-if="index === dataAnalysisCondition.length - 1" style="font-size: 14px;top:0;right:10px"
class="icon-style" @click.stop="onDownload()">
下载报表
</span>
</li>
</ul>
<div v-if="index === dataAnalysisCondition.length - 1" class="download-all-style"></div>
</li>
<div v-if="item.data.length === 0 && item.isLoading === false" class="no-data-style"></div>
</ul>
<div v-if="index === dataAnalysisCondition.length - 1 && item.data.length > 0" class="download-all-style"></div>
</a-spin>
</vue-scroll>
</div>
</div>
@ -32,8 +35,11 @@
</template>
<script>
import {Icon} from 'ant-design-vue';
import {Icon,Spin} from 'ant-design-vue';
import {mapState} from 'vuex';
import Interface from '../../../global-llibs/axios-config';
import InterfaceConfig from './interfaceConfig';
import _ from 'lodash';
let pageType = "";
export default {
name: "DataAnalysisMain",
@ -60,22 +66,183 @@
yearData:null,//
countyData:null,//
schoolData:null,//
loadData:true,
}
},
components:{
AIcon:Icon,
ASpin:Spin,
City_County_01:()=>import('./cityAnalysis/City_County_01.vue'),
School_01_02:()=>import('./schoolAnalysis/School_01_02.vue'),
School_03:()=>import('./schoolAnalysis/School_03.vue')
},
mounted(){
this.$bus.on("ANALYSISRETURN",this.returnBack)
this.$bus.on("ANALYSISRETURN",this.returnBack);
},
updated(){
if (this.loadData === false){//
this.loadData = true;
if(this.role === 'city'){//
this.getCountyData();
}else if (this.role === 'county'){//
this.getSchoolData();
}else{//
this.isHasReportData();
}
}
},
beforeDestroy(){
this.$bus.off("ANALYSISRETURN",this.returnBack)
},
methods:{
/*
* 获取某年度的县域列表
* */
getCountyData:function(){
Interface.callInterface([{
url:InterfaceConfig.getCityBureauList.url,
params:{
report_year:this.yearData.id,
city_id:1
},
method:InterfaceConfig.getCityBureauList.method,
isTestLogin:InterfaceConfig.getCityBureauList.isTestLogin
}],(result)=>{
if (result[0].data.code === 2000){
let data = result[0].data.data;
if (data && Array.isArray(data) && data.length > 0){//
if(this.analysisType === 'overallAnalysis'){//
this.getReportData();
}else{
let d = [];
data.forEach((item)=>{
d.push({
id:item.bureau_id,
value:item.bureau_name,
})
});
this.countyData = {id:d[0].id,value:d[0].value};
let dataCopy = _.cloneDeep(this.dataAnalysisCondition[1]);
dataCopy.data = d;
dataCopy.isLoading = false;
dataCopy.selectedId = d[0].id;
this.$set(this.dataAnalysisCondition,1,dataCopy);
if (this.analysisType === 'countyAnalysis'){
this.getReportData();
}else{
this.getSchoolData();
}
}
}else{//
for(let i = 1; i < this.dataAnalysisCondition.length; i++){
let data = _.cloneDeep(this.dataAnalysisCondition[i]);
data.isLoading = false;
data.data = [];
this.$set(this.dataAnalysisCondition,i,data);
}
}
}
})
},
/*
* 获取某年度某县域的学校列表
* */
getSchoolData:function(){
Interface.callInterface([{
url:InterfaceConfig.getBureauSchoolList.url,
params:{
report_year:this.yearData.id,
bureau_id:this.countyData && this.countyData.id?this.countyData.id:this.org_id,
},
method:InterfaceConfig.getBureauSchoolList.method,
isTestLogin:InterfaceConfig.getBureauSchoolList.isTestLogin
}],(result)=>{
if (result[0].data.code === 2000){
let data = result[0].data.data;
if (data && Array.isArray(data) && data.length > 0){//
if (this.role === 'county' && this.analysisType === 'countyAnalysis'){
this.getReportData();
}else{
let d = [];
data.forEach((item)=>{
d.push({
id:item.school_id,
value:item.school_name,
})
});
this.schoolData = {id:d[0].id,value:d[0].value};
let index = this.role === 'county'?1:2
let dataCopy = _.cloneDeep(this.dataAnalysisCondition[index]);
dataCopy.data = d;
dataCopy.isLoading = false;
dataCopy.selectedId = d[0].id;
this.$set(this.dataAnalysisCondition,index,dataCopy);
this.getReportData();
}
}else{//
let index = this.role === 'county'?1:2;
for(let i = index; i < this.dataAnalysisCondition.length; i++){
let data = _.cloneDeep(this.dataAnalysisCondition[i]);
data.isLoading = false;
data.data = [];
this.$set(this.dataAnalysisCondition,i,data);
}
}
}
})
},
/*
* 学校角色 获取当前学校是否有数据分析
* */
isHasReportData:function(){
Interface.callInterface([{
url:InterfaceConfig.getSchoolIsExistStatisticReport.url,
params:{
report_year:this.yearData.id,
school_id:this.org_id,
},
method:InterfaceConfig.getSchoolIsExistStatisticReport.method,
isTestLogin:InterfaceConfig.getSchoolIsExistStatisticReport.isTestLogin
}],(result)=>{
if (result[0].data.code === 2000){
let data = result[0].data.data;
if (parseInt(data.isExist) === 1){//
this.getReportData();
}else{//
let data = _.cloneDeep(this.dataAnalysisCondition[this.dataAnalysisCondition.length - 1]);
data.isLoading = false;
data.data = [];
this.$set(this.dataAnalysisCondition,this.dataAnalysisCondition.length - 1,data);
}
}
})
},
getReportData:function(){
let reportData = _.cloneDeep(this.dataAnalysisCondition[this.dataAnalysisCondition.length - 1]);
reportData.isLoading = false;
if (this.analysisType === 'overallAnalysis'){
reportData.data = [{id:'city_01',value:'01.全市样本、平均分、等级分布对比分析报告'},{id:'city_02',value:'02.全市各县域样本、平均分、等级对比分析报告'},
{id:'city_03',value:'03.全市各学校样本、平均分、等级分布对比分析报告'},{id:'city_04',value:'04.全市各学段学年样本、平均分、等级分布对比分析报告'},
{id:'city_05',value:'05.全市的单项样本、平均分、等级分布对比分析报告'},{id:'city_06',value:'06.全市各县域的单项样本、平均分、等级分布对比分析报告'},
{id:'city_07',value:'07.全市各学校的单项样本、平均分、等级分布对比分析报告'},{id:'city_08',value:'08.单项横、纵对比分析报告'}];
}else if (this.analysisType === 'countyAnalysis'){
reportData.data = [
{id:'county_01',value:'01.县域样本、平均分、等级分布对比分析报告'},{id:'county_02',value:'02.县域各校样本、平均分、等级对比分析报告'},
{id:'county_03',value:'03.县域各学段学年样本、平均分、等级分布对比分析报告'},{id:'county_04',value:'04.县域的单项样本、平均分、等级分布对比分析报告'},
{id:'county_05',value:'05.县域各学校的单项样本、平均分、等级分布对比分析报告'},{id:'county_06',value:'06.单项横、纵对比分析报告'}
];
}else{
reportData.data = [
{id:'school_01',value:'01.学校学年样本、平均分、等级分布对比分析报告'},{id:'school_02',value:'02.各学年班级样本、平均分、等级对比分析报告'},
{id:'school_03',value:'03.学校的单项样本、平均分、等级分布对比分析报告'},{id:'school_04',value:'04.各班级的单项样本、平均分、等级分布对比分析报告'},
{id:'school_05',value:'05.单项横、纵对比分析报告'},{id:'school_06',value:'06.学生体质健康分析报告'}
]
}
this.$set(this.dataAnalysisCondition,this.dataAnalysisCondition.length - 1,reportData);
},
/*
* parent 点击目标的父数据
* parentIndex 父数据索引
@ -88,11 +255,11 @@
this.reportData = clickItem;
if(clickItem.id.indexOf('county') !== -1){//
if(this.role === 'county'){//
this.countyData={id:this.district_id,value:district_name};
this.countyData={id:this.district_id,value:this.district_name};
}
}else if(clickItem.id.indexOf('school') !== -1){//
if(this.role === 'school'){
this.countyData={id:this.district_id,value:district_name};
this.countyData={id:this.district_id,value:this.district_name};
this.schoolData={id:this.org_id,value:this.org_name};
}
}
@ -100,15 +267,33 @@
breadCrumb.push(clickItem.value)
this.$store.commit('setSingleParam',{key:'breadCrumb',value:breadCrumb})
}else if (parent.selectedId !== clickItem.id){//
for(let i = parentIndex + 1; i < this.dataAnalysisCondition.length; i ++){
let data = _.cloneDeep(this.dataAnalysisCondition[i]);
data.isLoading = true;
data.data = [];
this.$set(this.dataAnalysisCondition,i,data);
}
if (parent.id === 'year'){
this.yearData = clickItem;
this.yearData = _.cloneDeep(clickItem);
if (this.role === 'city'){
this.getCountyData();
}else if (this.role === 'county'){
this.getSchoolData();
}else{
this.isHasReportData();
}
}else if (parent.id === 'county'){
this.countyData = clickItem;
this.countyData = _.cloneDeep(clickItem);
if (this.analysisType === 'countyAnalysis'){
this.getReportData();
}else{
this.getSchoolData();
}
}else if (parent.id === 'school'){
this.schoolData = clickItem;
this.schoolData = _.cloneDeep(clickItem);
this.getReportData();
}
this.$set(parent,'selectedId',clickItem.id)
this.$set(parent,'selectedId',clickItem.id);
}
console.log(clickItemIndex)
},
@ -142,43 +327,19 @@
vm.yearData = {id:"20202021",value:"20202021年度"};
if ((pageType === 'countyAnalysis' || pageType === 'schoolAnalysis') && vm.$store.state.role === 'city'){
//data
condition.push({id:"county",title:'选择县域',selectedId:"1",data:[{id:"1",value:"市直属"},{id:"2",value:"南关区教育局"},{id:"3",value:"朝阳区教育局"},
{id:"4",value:"二道区教育局"},{id:"5",value:"宽城区教育局"},{id:"6",value:"绿园区教育局"}, {id:"7",value:"九台区教育局"}, {id:"8",value:"双阳区教育局"},
{id:"9",value:"农安县教育局"},{id:"10",value:"榆树市教育局"},{id:"11",value:"德惠市教育局"},{id:"12",value:"其他县域"}]})
vm.countyData = {id:"1",value:"市直属"}//
condition.push({id:"county",title:'选择县域',selectedId:"",isLoading:true,data:[]})
}
if ( pageType === 'schoolAnalysis' && vm.$store.state.role !== 'school'){
//data
condition.push({id:"school",title:'选择学校',selectedId:'5',data:[{id:"1",value:"长春外国语实验学校"},{id:"2",value:"长春市南关区富裕小学校"},{id:"3",value:"长春市南关区红旗小学校"},
{id:"4",value:"长春净月高新技术产业开发区净月大顶子小学"},{id:"5",value:"吉林大学第二附属小学"},{id:"6",value:"长春市第二实验小学"}, {id:"7",value:"长春市联合外国语职业学校"},
{id:"8",value:"长春经济技术开发区威海小学校"}, {id:"9",value:"长春市第一实验中海小学"},{id:"10",value:"长春市第二实验东晨小学"},{id:"11",value:"长春经济技术开发区北海小学校"},
{id:"12",value:"长春经济技术开发区仙台小学校"}, {id:"13",value:"吉林大学第二附属小学"},{id:"14",value:"长春市第二实验小学"},{id:"15",value:"长春市联合外国语职业学校"},
{id:"16",value:"长春经济技术开发区威海小学校"},{id:"17",value:"吉林大学第二附属小学"},{id:"18",value:"长春市第二实验小学"}, {id:"19",value:"长春市联合外国语职业学校"},
{id:"20",value:"长春经济技术开发区威海小学校"},{id:"21",value:"长春市第一实验中海小学"},{id:"22",value:"长春市第二实验东晨小学"},{id:"23",value:"长春经济技术开发区北海小学校"},
{id:"24",value:"长春经济技术开发区仙台小学校"},{id:"25",value:"吉林大学第二附属小学"},{id:"26",value:"长春市第二实验小学"},{id:"27",value:"长春市联合外国语职业学校"},
{id:"28",value:"长春经济技术开发区威海小学校"}]})
vm.schoolData = {id:"1",value:"长春外国语实验学校"}//
condition.push({id:"school",title:'选择学校',selectedId:'',isLoading:true,data:[]})
}
condition.push({id:'report',title:'选择分析报告',selectedId:'',data:pageType === 'overallAnalysis'?
[{id:'city_01',value:'01.全市样本、平均分、等级分布对比分析报告'},{id:'city_02',value:'02.全市各县域样本、平均分、等级对比分析报告'},
{id:'city_03',value:'03.全市各学校样本、平均分、等级分布对比分析报告'},{id:'city_04',value:'04.全市各学段学年样本、平均分、等级分布对比分析报告'},
{id:'city_05',value:'05.全市的单项样本、平均分、等级分布对比分析报告'},{id:'city_06',value:'06.全市各县域的单项样本、平均分、等级分布对比分析报告'},
{id:'city_07',value:'07.全市各学校的单项样本、平均分、等级分布对比分析报告'},{id:'city_08',value:'08.单项横、纵对比分析报告'}]:
(pageType === 'countyAnalysis'?[
{id:'county_01',value:'01.县域样本、平均分、等级分布对比分析报告'},{id:'county_02',value:'02.县域各校样本、平均分、等级对比分析报告'},
{id:'county_03',value:'03.县域各学段学年样本、平均分、等级分布对比分析报告'},{id:'county_04',value:'04.县域的单项样本、平均分、等级分布对比分析报告'},
{id:'county_05',value:'05.县域各学校的单项样本、平均分、等级分布对比分析报告'},{id:'county_06',value:'06.单项横、纵对比分析报告'}
]:[
{id:'school_01',value:'01.学校学年样本、平均分、等级分布对比分析报告'},{id:'school_02',value:'02.各学年班级样本、平均分、等级对比分析报告'},
{id:'school_03',value:'03.学校的单项样本、平均分、等级分布对比分析报告'},{id:'school_04',value:'04.各班级的单项样本、平均分、等级分布对比分析报告'},
{id:'school_05',value:'05.单项横、纵对比分析报告'},{id:'school_06',value:'06.学生体质健康分析报告'}
])
});
condition.push({id:'report',title:'选择分析报告',isLoading:true,selectedId:'',data:[]});
vm.dataAnalysisCondition = condition
vm.loadData = false;
});
}
}
@ -243,6 +404,13 @@
color: #31a8fa;
cursor:pointer;
}
.no-data-style{
width: 100%;
height: 10rem;
line-height: 10rem;
text-align: center;
color:#999999;
}
}
}
.analysis-container-style{

@ -1,4 +1,36 @@
const interfaceConfig={
/*
* 3.0.11获取对应年度的县域列表
* "report_year":"必填 string 体质健康测试年份"
* "city_id":"必填 int 市级节点 长春市为1"
* */
getCityBureauList:{
url:'intellioa/physicalHealth/statistic/common/getCityBureauList',
method:'get',
isTestLogin:false,
},
/*
* 3.0.22获取对应年度某县域的学校列表
* "report_year":"必填 string 体质健康测试年份"
* "bureau_id":"必填 int 县域节点ID"
* */
getBureauSchoolList:{
url:'intellioa/physicalHealth/statistic/common/getBureauSchoolList',
method:'get',
isTestLogin:false,
},
/*
* 3.0.3.13.1获取对应年度某学校是否存在统计数据
* "report_year":"必填 string 体质健康测试年份"
* "school_id":"必填 int 县域节点ID"
* */
getSchoolIsExistStatisticReport:{
url:'intellioa/physicalHealth/statistic/common/getSchoolIsExistStatisticReport',
method:'get',
isTestLogin:false,
},
/*
* 学校分析 01020304学校整体统计总结黄色框部分
* "report_year":"必填 string 体质健康测试年份"

@ -2,7 +2,7 @@
<a-spin :spinning="isLoading">
<div class="school-01-style">
<div class="title-style">
长春市{{yearData.value}}{{countyData.value}}{{schoolData.value}}学生体质健康报告
长春市{{year.value}}{{countyData.value}}{{schoolData.value}}学生体质健康报告
</div>
<div class="report-tips-style">
{{countyData.value}}{{schoolData.value}}本年度学生体质健康数据中成绩满分120分累计参与测评学段包括{{primaryCount !== ''?'小学' + primaryCount+'个年级'+(middleCount !== ''?'、':'') :''}}{{middleCount !== ''?'初中' + middleCount+'个年级'+(highCount !== ''?'、':''):''}}{{highCount !== ''?'高中' + highCount + '个年级':''}}累计班级{{totalClass}}学生总人数{{totalStudent}}详细结果如下
@ -23,7 +23,7 @@
<div class="echarts-style" id="lineChart"></div>
<div class="echarts-style" id="barChart"></div>
</div>
<year-select :selected-year="yearData" @yearChange="onYearChange"/>
<year-select :selected-year="year" @yearChange="onYearChange"/>
</div>
</a-spin>
</template>
@ -58,6 +58,7 @@
highCount:'',//
totalClass:'',//
totalStudent:'',//
year:_.cloneDeep(this.yearData),
columns:[
{title:'序号',key:'index',align:'center',customRender:function (text,record,index) {
const obj = {
@ -262,8 +263,23 @@
},
mounted(){
this.getReportDatas();
this.$bus.on("ECHARTSUPDATE",this.onEChartsUpdate);
},
beforeDestroy(){
this.$bus.off("ECHARTSUPDATE",this.onEChartsUpdate);
},
methods:{
onEChartsUpdate:function(){
if (this.pieEChart){
this.pieEChart.resize();
}
if (this.lineEChart){
this.lineEChart.resize();
}
if (this.barEChart){
this.barEChart.resize();
}
},
onTabChange:function(activeKey){
this.tabkey = activeKey;
this.isLoading = true;
@ -279,9 +295,9 @@
getReportDatas:function(){
let config = [];
let params = {
report_year:this.yearData.id,
school_id:28,
// school_id:this.schoolData.id
report_year:this.year.id,
// school_id:28,
school_id:this.schoolData.id
}
if (this.reportData.id === 'school_01'){
config.push({
@ -423,9 +439,9 @@
getEChatrsDatas:function(){
let obj = null;
let params = {
report_year:this.yearData.id,
school_id:28,
// school_id:schoolData.id,
report_year:this.year.id,
// school_id:28,
school_id:this.schoolData.id,
};
if (this.reportData.id === 'school_01'){
params.stage_id = this.tabkey;
@ -493,7 +509,7 @@
})
},
onYearChange:function (yearData) {
onYearChange:function () {
this.isLoading = true;
this.getReportDatas();
}

@ -2,7 +2,7 @@
<a-spin :spinning="isLoading">
<div class="school-03-style">
<div class="title-style">
长春市{{yearData.value}}{{countyData.value}}{{schoolData.value}}学生体质健康报告
长春市{{year.value}}{{countyData.value}}{{schoolData.value}}学生体质健康报告
</div>
<div class="report-tips-style">
{{countyData.value}}{{schoolData.value}}本年度学生体质健康数据中成绩满分120分累计参与测评学段包括{{primaryCount !== ''?'小学' + primaryCount+'个年级'+(middleCount !== ''?'、':'') :''}}{{middleCount !== ''?'初中' + middleCount+'个年级'+(highCount !== ''?'、':''):''}}{{highCount !== ''?'高中' + highCount + '个年级':''}}累计班级{{totalClass}}学生总人数{{totalStudent}}
@ -46,7 +46,7 @@
<div v-if="!gradeList || gradeList.length === 0" class="nodata-style" style="width: 100%;left: 0"></div>
</div>
</div>
<year-select :selected-year="yearData" @yearChange="onYearChange"/>
<year-select :selected-year="year" @yearChange="onYearChange"/>
</div>
</a-spin>
</template>
@ -78,6 +78,7 @@
data:function () {
return {
IndexObject,
year:_.cloneDeep(this.yearData),
primaryCount:'',//
middleCount:'',//
highCount:'',//
@ -361,9 +362,9 @@
},
getDatas:function () {
let params = {
report_year:this.yearData.id,
school_id:28,
// school_id:this.schoolData.id
report_year:this.year.id,
// school_id:28,
school_id:this.schoolData.id
}
let config = [InterfaceConfig.getSchoolStatisticsSummary,InterfaceConfig.getSchoolStageGradeList,InterfaceConfig.getGradeProjectNumAvgListAndChart,InterfaceConfig.getGradeProjectRankList];
@ -576,10 +577,23 @@
this.gradeTableData = [];
}
})
},
onEChartsUpdate:function () {
if (this.gradeEChart){
this.gradeEChart.resize();
}
if (this.sampleEChart){
this.sampleEChart.resize();
}
}
},
mounted() {
this.getDatas();
this.$bus.on("ECHARTSUPDATE",this.onEChartsUpdate);
},
beforeDestroy() {
this.$bus.off("ECHARTSUPDATE",this.onEChartsUpdate);
}
}
</script>

Loading…
Cancel
Save