幼儿班级图标之类

This commit is contained in:
曹辉 2022-08-22 09:05:11 +08:00
parent abd75b3167
commit f592ba9354
20 changed files with 4986 additions and 26 deletions

View File

@ -0,0 +1,10 @@
import request from '@/utils/request'
// 查询
export function analysis(query) {
return request({
url: '/kindergarten/side/analysis',
method: 'get',
params: query
})
}

10
src/api/system/action.js Normal file
View File

@ -0,0 +1,10 @@
import request from '@/utils/request'
// 查询
export function listAction(query) {
return request({
url: '/system/testActionDevelopment/listAction',
method: 'get',
params: query
})
}

View File

@ -0,0 +1,10 @@
import request from '@/utils/request'
// 查询
export function ClassList(query) {
return request({
url: 'system/testItemAvgScore/ClassList',
method: 'get',
params: query
})
}

View File

@ -0,0 +1,10 @@
import request from '@/utils/request'
// 查询
export function analysis(query) {
return request({
url: '/children/ranking/analysis',
method: 'get',
params: query
})
}

View File

@ -0,0 +1,10 @@
import request from '@/utils/request'
// 查询
export function analysis(query) {
return request({
url: '/average/heightAndWeight/analysis',
method: 'get',
params: query
})
}

View File

@ -0,0 +1,10 @@
import request from '@/utils/request'
// 查询
export function analysis(query) {
return request({
url: '/kindergarten/physique/analysis',
method: 'get',
params: query
})
}

21
src/api/system/survey.js Normal file
View File

@ -0,0 +1,21 @@
import request from '@/utils/request'
// 查询
export function StudentList(query) {
return request({
url: 'system/testAll/StudentList',
method: 'get',
params: query
})
}
// 查询
export function ClassList(query) {
return request({
url: 'system/testAll/ClassList',
method: 'get',
params: query
})
}

View File

@ -0,0 +1,640 @@
<template>
<div class="app-container">
<el-form
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="90px"
>
<el-form-item label="所属幼儿园" prop="categoryName">
<el-button
@click="kindergartenshow = true"
v-if="kindergartenName == '请选择幼儿园'"
style="width: 250px; text-align: left; height: 32px; color: #c0c4cc"
>{{ kindergartenName }}</el-button
>
<el-button
@click="kindergartenshow = true"
style="width: 250px; text-align: left; height: 32px"
v-else
>{{ kindergartenName }}</el-button
>
</el-form-item>
<el-form-item label="所属批次" prop="categoryName" label-width="70px">
<el-button
@click="batchCodeshowclick"
style="width: 250px; text-align: left; height: 32px; color: #c0c4cc"
v-if="batchCodeName == '请选择批次'"
>{{ batchCodeName }}</el-button
>
<el-button
@click="batchCodeshowclick"
style="width: 250px; text-align: left; height: 32px"
v-else
>{{ batchCodeName }}</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<!-- // -->
<el-dialog
width="500px"
title="选择批次"
:visible.sync="batchCodeshow"
append-to-body
style="margin-top: 20px"
:before-close="batchCodecancel"
>
<el-table :data="testScorelist" align="center" style="margin-top: 0px">
<el-table-column label="请选择" width="70" align="center">
<template slot-scope="scope">
<el-button
type="primary"
style="width: 20px; height: 20px"
v-if="batchCodeId == scope.row.id"
circle
@click="batchCodeclick(scope.row)"
></el-button>
<el-button
v-else
style="width: 15px; height: 15px"
circle
@click="batchCodeclick(scope.row)"
></el-button>
</template>
</el-table-column>
<el-table-column
property="batchCode"
label="批次编号"
width="190"
align="center"
/>
<el-table-column
property="batchName"
label="批次名称"
width="190"
align="center"
/>
</el-table>
<pagination
v-show="total4 > 0"
:total="total4"
:page.sync="testqueryParams.pageNum"
:limit.sync="testqueryParams.pageSize"
@pagination="testScore"
/>
</el-dialog>
<!-- // -->
<el-dialog
width="850px"
title="选择所属幼儿园"
:visible.sync="kindergartenshow"
append-to-body
:before-close="kindergartencancel"
>
<el-table :data="kindergartenList">
<el-table-column label="请选择" width="70" align="center">
<template slot-scope="scope">
<el-button
type="primary"
style="width: 15px; height: 15px"
circle
@click="kindergartenNameclick(scope.row)"
v-if="kindergartenId == scope.row.id"
></el-button>
<el-button
v-else
style="width: 15px; height: 15px"
circle
@click="kindergartenNameclick(scope.row)"
></el-button>
</template>
</el-table-column>
<el-table-column
property="kindergartenName"
label="幼儿园名字"
width="150"
align="center"
>
</el-table-column>
<el-table-column
property="kindergartenAddress"
label="幼儿园地址"
width="150"
align="center"
>
</el-table-column>
<el-table-column
label="幼儿园所在组织"
align="center"
prop="organizeName"
width="150"
>
</el-table-column>
<el-table-column
property="contacts"
label="联系人"
width="150"
align="center"
>
</el-table-column>
<el-table-column
property="phone"
label="联系电话"
width="150"
align="center"
>
</el-table-column>
</el-table>
<pagination
v-show="total1 > 0"
:total="total1"
:page.sync="kqueryParams.pageNum"
:limit.sync="kqueryParams.pageSize"
@pagination="getList"
/>
</el-dialog>
<el-row v-show="itemshow">
<el-col :span="24" class="card-box" style="">
<el-card>
<div slot="header" style="text-align: center; font-size: 20px">
<span>基本信息</span>
</div>
<div style="margin-left: 50px; text-align: center; margin-top: 20px">
<span>幼儿园名称:</span
><span style="margin-left: 20px; margin-right: 10px">{{
analysislist.kindergartenName
}}</span
>幼儿园
<span style="margin-left: 50px">幼儿园性质:</span
><span style="margin-left: 20px; margin-right: 20px">{{
analysislist.kindergartenType == type.dictValue
? type.dictLabel
: type2.dictLabel
}}</span>
<span style="margin-left: 50px">参与体测人数:</span
><span style="margin-left: 20px">{{
analysislist.testItemStudentCount
}}</span
>
<div style="display: flex; margin-top: 40px">
<div
slot="header"
style="width: 50%; text-align: center; font-size: 18px"
>
<span>本园参加体测各年龄阶段人数分部</span>
<div
id="main"
style="
width: 500px;
height: 300px;
margin: 0 auto;
padding-top: 40px;
"
></div>
</div>
<div
slot="header"
style="
width: 50%;
text-align: center;
font-size: 18px;
position: relative;
"
>
<span>本园体测成绩达标率(%)</span>
<span>
<span
style="
position: absolute;
top: 58%;
left: 47.5%;
font-size: 25px;
"
>{{ analysislist.standardRate }}%</span
>
<span
style="
position: absolute;
top: 67%;
left: 46.5%;
font-size: 16px;
"
>达标率</span
>
</span>
<div
id="main2"
style="
width: 500px;
height: 300px;
margin: 0 auto;
padding-top: 20px;
"
></div>
</div>
</div>
</div>
</el-card>
</el-col>
</el-row>
<el-row :gutter="20" v-if="itemshow2">
<el-col :span="24" :offset="0">
<el-card>
<div slot="header" style="text-align: center">
<img style="width: 40px" src="@/icons/笑脸.png" alt="" />
<div><!-- card title -->该学生此批次暂没数据</div>
</div>
<!-- card body -->
</el-card>
</el-col>
</el-row>
</div>
</template>
<script>
import * as echarts from "echarts";
import {
listKindergartenInfo,
tKindergartenInfo,
} from "@/api/system/kindergartenInfo";
import { getRoleInfo, testScoreBatch } from "@/api/system/quality";
import { analysis } from "@/api/system/KindergartenPhysicalTest";
export default {
name: "KindergartenPhysicalTest",
components: {},
data() {
return {
itemshow: false,
itemshow2: false,
total1: 0,
total4: 0,
//
kindergartenshow: false,
batchCodeshow: false,
//
showSearch: true,
//
form: {},
//
kindergartenType: "kindergarten_type",
type: {},
type2: {},
//
kqueryParams: {
pageNum: 1,
pageSize: 10,
organizeId: null,
kindergartenName: null,
kindergartenAddress: null,
kindergartenType: null,
phone: null,
contacts: null,
},
//list
kindergartenList: [],
//
kindergartenName: "请选择幼儿园",
//ID
kindergartenId: "",
//
batchCodeName: "请选择批次",
//ID
batchCodeId: "",
//list
testScorelist: [],
//
testqueryParams: {
pageNum: 1,
pageSize: 10,
},
analysislist: [],
//
analysisqueryParams: {
kindergartenId: "",
batchCode: "",
// kindergartenId: "18",
// batchCode: "PC202208030005",
},
};
},
mounted() {},
created() {
this.getList();
// this.analysisinfo();
},
methods: {
analysisinfo() {
analysis(this.analysisqueryParams).then((res) => {
this.analysislist = res.data;
console.log(this.analysislist);
this.options();
var app = {};
var myChart = echarts.init(document.getElementById("main"));
var option;
const posList = [
"left",
"right",
"top",
"bottom",
"inside",
"insideTop",
"insideLeft",
"insideRight",
"insideBottom",
"insideTopLeft",
"insideTopRight",
"insideBottomLeft",
"insideBottomRight",
];
app.configParameters = {
rotate: {
min: 0,
max: 90,
},
align: {
options: {
left: "left",
center: "center",
right: "right",
},
},
verticalAlign: {
options: {
top: "top",
middle: "middle",
bottom: "bottom",
},
},
position: {
options: posList.reduce(function (map, pos) {
map[pos] = pos;
return map;
}, {}),
},
distance: {
min: 0,
max: 100,
},
};
app.config = {
rotate: 0,
align: "center",
verticalAlign: "middle",
position: "top",
distance: 15,
onChange: function () {
const labelOption = {
rotate: app.config.rotate,
align: app.config.align,
verticalAlign: app.config.verticalAlign,
position: app.config.position,
distance: app.config.distance,
};
myChart.setOption({
series: [
{
label: labelOption,
},
{
label: labelOption,
},
{
label: labelOption,
},
{
label: labelOption,
},
],
});
},
};
const labelOption = {
show: true,
position: app.config.position,
distance: app.config.distance,
align: app.config.align,
verticalAlign: app.config.verticalAlign,
rotate: app.config.rotate,
formatter: "{c}",
fontSize: 16,
rich: {
name: {},
},
};
option = {
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
},
},
legend: {
data: ["男", "女"],
},
xAxis: [
{
type: "category",
axisTick: { show: false },
data: ["3-4岁", "4-5岁", "5-6岁", "6岁以上"],
},
],
yAxis: [
{
type: "value",
},
],
series: [
{
name: "男",
type: "bar",
barGap: 0,
color: "#60C5F1",
label: labelOption,
emphasis: {
focus: "series",
},
data: [
this.analysislist.threeAndFourMaleCount,
this.analysislist.fourAndFiveMaleCount,
this.analysislist.fiveAndSixMaleCount,
this.analysislist.sixAndMoreMaleCount,
],
},
{
name: "女",
type: "bar",
color: "#98E0AD",
label: labelOption,
emphasis: {
focus: "series",
},
data: [
this.analysislist.threeAndFourFeMaleCount,
this.analysislist.fourAndFiveFeMaleCount,
this.analysislist.fiveAndSixFeMaleCount,
this.analysislist.sixAndMoreFeMaleCount,
],
},
],
};
option && myChart.setOption(option);
this.itemshow = ture;
this.itemshow2 = false;
});
},
options() {
var chartDom = document.getElementById("main2");
var myChart = echarts.init(chartDom);
var option2;
option2 = {
tooltip: {
trigger: "item",
},
legend: {
top: "5%",
left: "center",
},
series: [
{
center: ["50%", "60%"],
itemStyle: {
normal: {
label: {
show: true,
formatter: "{d}%", //
},
labelLine: { show: true },
color: function (colors) {
var colorList = [
"#5470c6",
"#fc8251",
"#91cd77",
"#ef6567",
"#f9c956",
"#75bedc",
];
return colorList[colors.dataIndex];
},
},
},
name: "",
type: "pie",
radius: ["40%", "70%"],
avoidLabelOverlap: false,
label: {
show: false,
position: "center",
},
emphasis: {
label: {
show: false,
fontSize: "20",
fontWeight: "bold",
},
},
labelLine: {
show: false,
},
data: [
{ value: this.analysislist.excellentRate, name: ">80优秀" },
{ value: this.analysislist.qualifyRate, name: "60-80合格" },
{ value: this.analysislist.unQualifyRate, name: "<60不合格" },
],
},
],
};
option2 && myChart.setOption(option2);
},
//
batchCodeclick(row) {
this.batchCodeName = row.batchName;
this.batchCodeId = row.id;
this.analysisqueryParams.batchCode = row.batchCode;
this.batchCodeshow = false;
this.analysisinfo();
},
//
batchCodeshowclick() {
if (this.analysisqueryParams.kindergartenId == "") {
this.$message.error("请先选择幼儿园");
} else {
this.testScore();
this.batchCodeshow = true;
}
},
//
testScore() {
testScoreBatch(this.testqueryParams).then((res) => {
this.testScorelist = res.rows;
this.total4 = res.total;
});
},
//
batchCodecancel() {
this.batchCodeshow = false;
},
//
kindergartencancel() {
this.kindergartenshow = false;
},
//
kindergartenNameclick(row) {
this.analysisqueryParams.kindergartenId = row.id;
this.kindergartenName = row.kindergartenName;
this.kindergartenId = row.id;
this.kindergartenshow = false;
},
getList() {
tKindergartenInfo(this.kindergartenType).then((res) => {
this.type = res.data[0];
this.type2 = res.data[1];
});
//
getRoleInfo().then((res) => {
console.log(res);
});
//list
listKindergartenInfo(this.kqueryParams).then((response) => {
this.kindergartenList = response.rows;
this.total1 = response.total;
// console.log(this.kindergartenList);
});
},
//
reset() {
this.form = {};
this.resetForm("form");
},
},
};
</script>
<style scoped='scss'>
::v-deep .el-card__header {
border: none;
}
</style>

View File

@ -0,0 +1,782 @@
<template>
<div class="app-container">
<el-form
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="90px"
>
<el-form-item label="所属幼儿园" prop="categoryName">
<el-button
@click="kindergartenshow = true"
v-if="kindergartenName == '请选择幼儿园'"
style="width: 250px; text-align: left; height: 32px; color: #c0c4cc"
>{{ kindergartenName }}</el-button
>
<el-button
@click="kindergartenshow = true"
style="width: 250px; text-align: left; height: 32px"
v-else
>{{ kindergartenName }}</el-button
>
</el-form-item>
<el-form-item label="所属班级" prop="categoryName" label-width="70px">
<el-button
@click="classshowclick"
style="width: 250px; text-align: left; height: 32px; color: #c0c4cc"
v-if="className == '请选择班级'"
>{{ className }}</el-button
>
<el-button
@click="classshowclick"
style="width: 250px; text-align: left; height: 32px"
v-else
>{{ className }}</el-button
>
</el-form-item>
<el-form-item label="学生" prop="categoryName" label-width="45px">
<el-button
@click="studentshowclick"
v-if="studentname == '请选择学生'"
style="width: 250px; text-align: left; height: 32px; color: #c0c4cc"
>{{ studentname }}</el-button
>
<el-button
@click="studentshowclick"
style="width: 250px; text-align: left; height: 32px"
v-else
>{{ studentname }}</el-button
>
</el-form-item>
<el-form-item label="所属批次" prop="categoryName" label-width="70px">
<el-button
@click="batchCodeshowclick"
style="width: 250px; text-align: left; height: 32px; color: #c0c4cc"
v-if="batchCodeName == '请选择批次'"
>{{ batchCodeName }}</el-button
>
<el-button
@click="batchCodeshowclick"
style="width: 250px; text-align: left; height: 32px"
v-else
>{{ batchCodeName }}</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<!-- // -->
<el-dialog
width="500px"
title="选择批次"
:visible.sync="batchCodeshow"
append-to-body
style="margin-top: 20px"
:before-close="batchCodecancel"
>
<el-table :data="testScorelist" align="center" style="margin-top: 0px">
<el-table-column label="请选择" width="70" align="center">
<template slot-scope="scope">
<el-button
type="primary"
style="width: 20px; height: 20px"
v-if="batchCodeId == scope.row.id"
circle
@click="batchCodeclick(scope.row)"
></el-button>
<el-button
v-else
style="width: 15px; height: 15px"
circle
@click="batchCodeclick(scope.row)"
></el-button>
</template>
</el-table-column>
<el-table-column
property="batchCode"
label="批次编号"
width="190"
align="center"
/>
<el-table-column
property="batchName"
label="批次名称"
width="190"
align="center"
/>
</el-table>
<pagination
v-show="total4 > 0"
:total="total4"
:page.sync="testqueryParams.pageNum"
:limit.sync="testqueryParams.pageSize"
@pagination="testScore"
/>
</el-dialog>
<!-- // -->
<el-dialog
width="850px"
title="选择学生"
:visible.sync="studentshow"
append-to-body
style="margin-top: 70px"
:before-close="studentcancel"
>
<el-table :data="studentInfoList" align="center" style="margin-top: 10px">
<el-table-column label="请选择" width="70" align="center">
<template slot-scope="scope">
<el-button
type="primary"
style="width: 20px; height: 20px"
circle
v-if="studentId == scope.row.id"
@click="studentclick(scope.row)"
></el-button>
<el-button
v-else
style="width: 15px; height: 15px"
circle
@click="studentclick(scope.row)"
></el-button>
</template>
</el-table-column>
<el-table-column
property="className"
label="班级名称"
width="190"
align="center"
/>
<el-table-column
property="studentName"
label="学生姓名"
width="190"
align="center"
/>
<el-table-column
property="studentName"
label="性别"
width="190"
align="center"
>
<template slot-scope="scope">
{{ scope.row.studentSex == "MALE" ? "男" : "女" }}
</template>
</el-table-column>
<el-table-column
property="homeAddress"
label="住址"
width="190"
align="center"
/>
</el-table>
<pagination
v-show="total3 > 0"
:total="total3"
:page.sync="studentqueryParams.pageNum"
:limit.sync="studentqueryParams.pageSize"
@pagination="studentlist"
/>
</el-dialog>
<!-- // -->
<el-dialog
width="850px"
title="选择所属幼儿园"
:visible.sync="kindergartenshow"
append-to-body
:before-close="kindergartencancel"
>
<el-table :data="kindergartenList">
<el-table-column label="请选择" width="70" align="center">
<template slot-scope="scope">
<el-button
type="primary"
style="width: 15px; height: 15px"
circle
@click="kindergartenNameclick(scope.row)"
v-if="kindergartenId == scope.row.id"
></el-button>
<el-button
v-else
style="width: 15px; height: 15px"
circle
@click="kindergartenNameclick(scope.row)"
></el-button>
</template>
</el-table-column>
<el-table-column
property="kindergartenName"
label="幼儿园名字"
width="150"
align="center"
>
</el-table-column>
<el-table-column
property="kindergartenAddress"
label="幼儿园地址"
width="150"
align="center"
>
</el-table-column>
<el-table-column
label="幼儿园所在组织"
align="center"
prop="organizeName"
width="150"
>
</el-table-column>
<el-table-column
property="contacts"
label="联系人"
width="150"
align="center"
>
</el-table-column>
<el-table-column
property="phone"
label="联系电话"
width="150"
align="center"
>
</el-table-column>
</el-table>
<pagination
v-show="total1 > 0"
:total="total1"
:page.sync="kqueryParams.pageNum"
:limit.sync="kqueryParams.pageSize"
@pagination="getList"
/>
</el-dialog>
<!-- // -->
<el-dialog
width="1000px"
title="选择所属班级"
:visible.sync="classshow"
append-to-body
:before-close="classcancel"
>
<el-table :data="classinfoList" align="center" style="margin-top: 10px">
<el-table-column label="请选择" width="70" align="center">
<template slot-scope="scope">
<el-button
type="primary"
style="width: 20px; height: 20px"
circle
@click="classclick(scope.row)"
v-if="classId == scope.row.id"
></el-button>
<el-button
v-else
style="width: 15px; height: 15px"
circle
@click="classclick(scope.row)"
></el-button>
</template>
</el-table-column>
<el-table-column
property="kindergartenName"
label="幼儿园名称"
width="190"
align="center"
/>
<el-table-column
property="className"
label="班级名称"
width="180"
align="center"
>
</el-table-column>
<el-table-column
property="classType"
label="班级类型"
width="160"
align="center"
>
<template slot-scope="scope">
{{ scope.row.classType == dictValue1 ? "大班" : "" }}
{{ scope.row.classType == dictValue2 ? "中班" : "" }}
{{ scope.row.classType == dictValue3 ? "小班" : "" }}
{{ scope.row.classType == dictValue4 ? "毕业" : "" }}
</template>
</el-table-column>
<el-table-column
property="classTeacher"
label="班主任姓名"
width="180"
align="center"
>
</el-table-column>
<el-table-column
property="phone"
label="联系电话"
width="190"
align="center"
>
</el-table-column>
</el-table>
<pagination
v-show="total2 > 0"
:total="total2"
:page.sync="classqueryParams.pageNum"
:limit.sync="classqueryParams.pageSize"
@pagination="classinfo"
/>
</el-dialog>
<el-row v-show="itemshow">
<el-col :span="24" class="card-box" style="">
<!-- <el-card> -->
<div slot="header" style="text-align: center; font-size: 25px">
<span></span>
</div>
<div style="width: 100%; display: flex; flex-wrap: wrap">
<el-table
:data="actionlist"
border
:span-method="arraySpanMethod"
style="width: 100%; margin-top: 20px"
>
<el-table-column
prop="categoryName"
label="测试分类"
width="150"
align="center"
>
</el-table-column>
<el-table-column
prop="itemName"
label="测试项目"
width="150"
align="center"
>
</el-table-column>
<el-table-column
prop="itemScore"
label="动作技能总分"
width="120"
align="center"
>
</el-table-column>
<el-table-column
prop="unifiedStandardScore"
label="统一最高得分"
width="120"
align="center"
>
</el-table-column>
<el-table-column
prop="smallStandardScore"
label="小班最高得分"
width="120"
align="center"
>
</el-table-column>
<el-table-column
prop="middleStandardScore"
label="中班最高得分"
width="120"
align="center"
>
</el-table-column>
<el-table-column
prop="largeStandardScore"
label="大班最高得分"
width="120"
align="center"
>
</el-table-column>
<el-table-column
prop="itemScoreAll"
label="综合得分"
width="176"
align="center"
>
</el-table-column>
<el-table-column
prop="syntheticalAssess"
label="综合评价"
width="180"
align="center"
>
</el-table-column>
<el-table-column
prop="remark"
label="测试目的"
width="180"
align="center"
>
</el-table-column>
</el-table>
</div>
<!-- </el-card> -->
</el-col>
</el-row>
<el-row :gutter="20" v-if="itemshow2">
<el-col :span="24" :offset="0">
<el-card>
<div slot="header" style="text-align: center">
<img style="width: 40px" src="@/icons/笑脸.png" alt="" />
<div><!-- card title -->该学生此批次暂没数据</div>
</div>
<!-- card body -->
</el-card>
</el-col>
</el-row>
</div>
</template>
<script>
import {
listKindergartenInfo,
tKindergartenInfo,
} from "@/api/system/kindergartenInfo";
import { listStudentInfo } from "@/api/system/studentInfo";
import { listClassinfo } from "@/api/system/classinfo";
import { getRoleInfo, testScoreBatch } from "@/api/system/quality";
import { listAction } from "@/api/system/action";
export default {
name: "action",
components: {},
data() {
return {
itemshow: false,
itemshow2: false,
total1: 0,
total2: 0,
total3: 0,
total4: 0,
//
kindergartenshow: false,
classshow: false,
studentshow: false,
batchCodeshow: false,
//
dictValue1: "",
dictValue2: "",
dictValue3: "",
dictValue4: "",
ClassType: "class_type",
//
showSearch: true,
//
form: {},
//
studentqueryParams: {
pageNum: 1,
pageSize: 10,
classId: "",
nationDictId: null,
studentName: null,
studentSex: null,
studentNumber: null,
birthDate: null,
cardNumber: null,
onceName: null,
homeAddress: null,
},
//
classqueryParams: {
pageNum: 1,
pageSize: 10,
kindergartenId: "",
className: null,
classType: null,
},
//
kqueryParams: {
pageNum: 1,
pageSize: 10,
organizeId: null,
kindergartenName: null,
kindergartenAddress: null,
kindergartenType: null,
phone: null,
contacts: null,
},
//list
kindergartenList: [],
//
kindergartenName: "请选择幼儿园",
//ID
kindergartenId: "",
//list
classinfoList: [],
//
className: "请选择班级",
//ID
classId: "",
//list
studentInfoList: [],
//
studentname: "请选择学生",
//ID
studentId: "",
//
batchCodeName: "请选择批次",
//ID
batchCodeId: "",
//list
testScorelist: [],
//
testqueryParams: {
pageNum: 1,
pageSize: 10,
},
//
actionlist: [],
spanArr: [],
position: 0, //
spanArr2: [],
position2: 0, //
//
queryParams: {
pageNum: 1,
pageSize: 10,
// studentId: "10",
// batchCode: "PC202208030005",
studentId: "",
batchCode: "",
},
};
},
created() {
this.getList();
this.class();
// this.listActioninfo();
},
mounted() {
//
// rowspancolspancolspan1
// aa
},
methods: {
actionforeach() {
this.actionlist.forEach((item, index) => {
if (index == 0) {
this.spanArr.push(1);
this.position = 0;
this.spanArr2.push(1);
this.position2 = 0;
} else {
// a
if (
this.actionlist[index].categoryName ==
this.actionlist[index - 1].categoryName
) {
// 1
this.spanArr[this.position] += 1;
this.spanArr.push(0); // 0
} else {
this.spanArr.push(1); // 1
this.position = index; //
}
if (
this.actionlist[index].itemScoreAll ==
this.actionlist[index - 1].itemScoreAll
) {
this.spanArr2[this.position] += 1;
this.spanArr2.push(0); // 0
} else {
this.spanArr2.push(1); // 1
this.position2 = index; //
}
}
});
// console.log(this.spanArr);
},
//
arraySpanMethod({ row, column, rowIndex, columnIndex }) {
// console.log(columnIndex);
// a
if (columnIndex == 0) {
// console.log(this.spanArr);
const _row = this.spanArr[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col,
};
} else if (columnIndex == 7) {
// console.log(this.spanArr2);
const _row = this.spanArr2[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col,
};
}
},
//
listActioninfo() {
listAction(this.queryParams).then((res) => {
if (!res.rows || res.rows == "") {
this.itemshow2 = true;
this.itemshow = false;
this.batchCodeName = "请选择批次";
this.batchCodeId = "";
} else {
// res.rows.itemCategoryList.forEach((e) => {
// e.push(res.rows.categoryName);
// });
this.itemshow = true;
this.itemshow2 = false;
this.actionlist = res.rows;
console.log(this.actionlist);
this.actionforeach();
}
});
},
//
studentshowclick() {
if (this.studentqueryParams.classId == "") {
this.$message.error("请先选择班级");
} else {
this.studentshow = true;
this.studentlist();
}
},
//
batchCodeshowclick() {
if (this.analysisqueryParams.studentId == "") {
this.$message.error("请先选择学生");
} else {
this.testScore();
this.batchCodeshow = true;
}
},
//
batchCodeclick(row) {
this.batchCodeName = row.batchName;
this.batchCodeId = row.id;
this.analysisqueryParams.batchCode = row.batchCode;
this.batchCodeshow = false;
// this.listActioninfo();
},
//
testScore() {
testScoreBatch(this.testqueryParams).then((res) => {
this.testScorelist = res.rows;
this.total4 = res.total;
});
},
//
studentclick(row) {
this.studentname = row.studentName;
this.studentId = row.id;
this.studentshow = false;
this.analysisqueryParams.studentId = row.id;
},
//
studentlist() {
listStudentInfo(this.studentqueryParams).then((res) => {
this.studentInfoList = res.rows;
this.total3 = res.total;
// console.log(this.studentInfoList);
});
},
//
classshowclick() {
if (this.classqueryParams.kindergartenId == "") {
this.$message.error("请先选择幼儿园");
} else {
this.classshow = true;
this.classinfo();
}
// console.log(this.classqueryParams);
},
//
batchCodecancel() {
this.batchCodeshow = false;
},
//
studentcancel() {
this.studentshow = false;
},
//
kindergartencancel() {
this.kindergartenshow = false;
},
//
classcancel() {
this.classshow = false;
},
//
classclick(row) {
// console.log(row);
this.className = row.className;
this.classId = row.id;
this.studentqueryParams.classId = row.id;
this.classshow = false;
},
//
kindergartenNameclick(row) {
this.classqueryParams.kindergartenId = row.id;
this.kindergartenName = row.kindergartenName;
this.kindergartenId = row.id;
this.kindergartenshow = false;
},
//
class() {
tKindergartenInfo(this.ClassType).then((res) => {
this.dictValue1 = res.data[0].dictValue;
this.dictValue2 = res.data[1].dictValue;
this.dictValue3 = res.data[2].dictValue;
this.dictValue4 = res.data[3].dictValue;
});
},
//list
classinfo() {
listClassinfo(this.classqueryParams).then((response) => {
this.classinfoList = response.rows;
this.total2 = response.total;
// console.log(this.classinfoList);
});
},
getList() {
//
getRoleInfo().then((res) => {
console.log(res);
});
//list
listKindergartenInfo(this.kqueryParams).then((response) => {
this.kindergartenList = response.rows;
this.total1 = response.total;
// console.log(this.kindergartenList);
});
},
//
reset() {
this.form = {};
this.resetForm("form");
},
},
};
</script>
<style scoped='scss'>
::v-deep .el-card__header {
border: none;
}
</style>

View File

@ -0,0 +1,767 @@
<template>
<div class="app-container">
<el-form
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="90px"
>
<el-form-item label="所属幼儿园" prop="categoryName">
<el-button
@click="kindergartenshow = true"
v-if="kindergartenName == '请选择幼儿园'"
style="width: 250px; text-align: left; height: 32px; color: #c0c4cc"
>{{ kindergartenName }}</el-button
>
<el-button
@click="kindergartenshow = true"
style="width: 250px; text-align: left; height: 32px"
v-else
>{{ kindergartenName }}</el-button
>
</el-form-item>
<el-form-item label="所属班级" prop="categoryName" label-width="70px">
<el-button
@click="classshowclick"
style="width: 250px; text-align: left; height: 32px; color: #c0c4cc"
v-if="className == '请选择班级'"
>{{ className }}</el-button
>
<el-button
@click="classshowclick"
style="width: 250px; text-align: left; height: 32px"
v-else
>{{ className }}</el-button
>
</el-form-item>
<el-form-item label="批次成绩" prop="categoryName" label-width="70px">
<el-button
@click="batchCodeshowclick"
style="width: 250px; text-align: left; height: 32px; color: #c0c4cc"
v-if="batchCodeName == '请选择批次'"
>{{ batchCodeName }}</el-button
>
<el-button
@click="batchCodeshowclick"
style="width: 250px; text-align: left; height: 32px"
v-else
>{{ batchCodeName }}</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<!-- // -->
<el-dialog
width="500px"
title="选择批次"
:visible.sync="batchCodeshow"
append-to-body
style="margin-top: 20px"
:before-close="batchCodecancel"
>
<el-table :data="testScorelist" align="center" style="margin-top: 0px">
<el-table-column label="请选择" width="70" align="center">
<template slot-scope="scope">
<el-button
type="primary"
style="width: 20px; height: 20px"
v-if="batchCodeId == scope.row.id"
circle
@click="batchCodeclick(scope.row)"
></el-button>
<el-button
v-else
style="width: 15px; height: 15px"
circle
@click="batchCodeclick(scope.row)"
></el-button>
</template>
</el-table-column>
<el-table-column
property="batchCode"
label="批次编号"
width="190"
align="center"
/>
<el-table-column
property="batchName"
label="批次名称"
width="190"
align="center"
/>
</el-table>
<pagination
v-show="total4 > 0"
:total="total4"
:page.sync="testqueryParams.pageNum"
:limit.sync="testqueryParams.pageSize"
@pagination="testScore"
/>
</el-dialog>
<!-- // -->
<el-dialog
width="850px"
title="选择所属幼儿园"
:visible.sync="kindergartenshow"
append-to-body
:before-close="kindergartencancel"
>
<el-table :data="kindergartenList">
<el-table-column label="请选择" width="70" align="center">
<template slot-scope="scope">
<el-button
type="primary"
style="width: 15px; height: 15px"
circle
@click="kindergartenNameclick(scope.row)"
v-if="kindergartenId == scope.row.id"
></el-button>
<el-button
v-else
style="width: 15px; height: 15px"
circle
@click="kindergartenNameclick(scope.row)"
></el-button>
</template>
</el-table-column>
<el-table-column
property="kindergartenName"
label="幼儿园名字"
width="150"
align="center"
>
</el-table-column>
<el-table-column
property="kindergartenAddress"
label="幼儿园地址"
width="150"
align="center"
>
</el-table-column>
<el-table-column
label="幼儿园所在组织"
align="center"
prop="organizeName"
width="150"
>
</el-table-column>
<el-table-column
property="contacts"
label="联系人"
width="150"
align="center"
>
</el-table-column>
<el-table-column
property="phone"
label="联系电话"
width="150"
align="center"
>
</el-table-column>
</el-table>
<pagination
v-show="total1 > 0"
:total="total1"
:page.sync="kqueryParams.pageNum"
:limit.sync="kqueryParams.pageSize"
@pagination="getList"
/>
</el-dialog>
<!-- // -->
<el-dialog
width="1000px"
title="选择所属班级"
:visible.sync="classshow"
append-to-body
:before-close="classcancel"
>
<el-table :data="classinfoList" align="center" style="margin-top: 10px">
<el-table-column label="请选择" width="70" align="center">
<template slot-scope="scope">
<el-button
type="primary"
style="width: 20px; height: 20px"
circle
@click="classclick(scope.row)"
v-if="classId == scope.row.id"
></el-button>
<el-button
v-else
style="width: 15px; height: 15px"
circle
@click="classclick(scope.row)"
></el-button>
</template>
</el-table-column>
<el-table-column
property="kindergartenName"
label="幼儿园名称"
width="190"
align="center"
/>
<el-table-column
property="className"
label="班级名称"
width="180"
align="center"
>
</el-table-column>
<el-table-column
property="classType"
label="班级类型"
width="160"
align="center"
>
<template slot-scope="scope">
{{ scope.row.classType == dictValue1 ? "大班" : "" }}
{{ scope.row.classType == dictValue2 ? "中班" : "" }}
{{ scope.row.classType == dictValue3 ? "小班" : "" }}
{{ scope.row.classType == dictValue4 ? "毕业" : "" }}
</template>
</el-table-column>
<el-table-column
property="classTeacher"
label="班主任姓名"
width="180"
align="center"
>
</el-table-column>
<el-table-column
property="phone"
label="联系电话"
width="190"
align="center"
>
</el-table-column>
</el-table>
<pagination
v-show="total2 > 0"
:total="total2"
:page.sync="classqueryParams.pageNum"
:limit.sync="classqueryParams.pageSize"
@pagination="classinfo"
/>
</el-dialog>
<el-row v-show="itemshow">
<el-col :span="24" :offset="0">
<div style="margin: 0 auto">
<div
style="display: flex; text-align: center; justify-content: center"
>
<div
style="
width: 120px;
line-height: 60px;
border: 1px solid #f0f0f0;
background: #f0f0f0;
"
>
年龄
</div>
<div
style="
width: 120px;
line-height: 60px;
border: 1px solid #f0f0f0;
background: #f0f0f0;
"
>
平均总分
</div>
<div v-for="item in categoryTableNameList" :key="item.prentId">
<div
style="
text-align: center;
line-height: 30px;
border: 1px solid #f0f0f0;
background: #f0f0f0;
"
>
{{ item.parentName }}
</div>
<div
style="
display: flex;
line-height: 30px;
border: 1px solid #f0f0f0;
background: #f0f0f0;
"
>
<div
v-for="uitem in item.childrenTableNameList"
:key="uitem.categoryId"
style="width: 120px"
>
{{ uitem.categoryName }}
</div>
</div>
</div>
</div>
<div>
<div
style="text-align: center; display: flex; justify-content: center"
v-for="item in categoryScoreList"
:key="item.prentId"
>
<div style="width: 120px; line-height: 60px">
{{ item.className }}
</div>
<div style="width: 120px; line-height: 60px">
{{ item.totalAvScore }}
</div>
<div>
<div style="display: flex; line-height: 60px">
<div
v-for="uitem in item.list"
:key="uitem.categoryId"
style="width: 120px"
>
{{ uitem }}
</div>
</div>
</div>
</div>
</div>
<div></div>
</div>
</el-col>
<el-col :span="24" :offset="0">
<div style="text-align: center">
<span></span>
</div>
<div class="">
<div
ref="chart"
id="chart"
style="width: 1300px; height: 600px; margin: 50px auto"
></div>
</div>
</el-col>
</el-row>
<el-row :gutter="20" v-if="itemshow2">
<el-col :span="24" :offset="0">
<el-card>
<div slot="header" style="text-align: center">
<img style="width: 40px" src="@/icons/笑脸.png" alt="" />
<div><!-- card title -->该学生此批次暂没成绩</div>
</div>
<!-- card body -->
</el-card>
</el-col>
</el-row>
</div>
</template>
<script>
import * as echarts from "echarts";
import {
listKindergartenInfo,
tKindergartenInfo,
} from "@/api/system/kindergartenInfo";
import { listClassinfo } from "@/api/system/classinfo";
import { getRoleInfo, testScoreBatch } from "@/api/system/quality";
import { ClassList } from "@/api/system/classconstitution";
export default {
name: "comprehensive",
data() {
return {
itemshow: true,
itemshow2: false,
total1: 0,
total2: 0,
total4: 0,
//
kindergartenshow: false,
classshow: false,
studentshow: false,
batchCodeshow: false,
//
dictValue1: "",
dictValue2: "",
dictValue3: "",
dictValue4: "",
ClassType: "class_type",
//
showSearch: true,
//
form: {},
//
classqueryParams: {
pageNum: 1,
pageSize: 10,
kindergartenId: "",
className: null,
classType: null,
},
//
kqueryParams: {
pageNum: 1,
pageSize: 10,
organizeId: null,
kindergartenName: null,
kindergartenAddress: null,
kindergartenType: null,
phone: null,
contacts: null,
},
//list
kindergartenList: [],
//
kindergartenName: "请选择幼儿园",
//ID
kindergartenId: "",
//list
classinfoList: [],
//
className: "请选择班级",
//ID
classId: "",
//
batchCodeName: "请选择批次",
//ID
batchCodeId: "",
//list
testScorelist: [],
//
ClassListlist: {
// batchCode: "",
batchCode: "PC202208030005",
kindergartenId: "18",
classId: "2",
pageNum: 1,
pageSize: 10,
},
//
testqueryParams: {
pageNum: 1,
pageSize: 10,
},
categoryTableNameList: [],
categoryAgeFractionList: [],
categoryScoreList: [],
totalAvgFraction: "",
listname: [],
};
},
created() {
this.getList();
this.class();
this.ClassListinfo();
},
methods: {
ClassListinfo() {
ClassList(this.ClassListlist).then((res) => {
console.log(res);
this.totalAvgFraction = res.data.totalAvgFraction;
this.categoryTableNameList = res.data.categoryTableNameList;
this.categoryAgeFractionList = res.data.categoryAgeFractionList;
this.categoryScoreList = res.data.categoryScoreList;
if (res.data == [] || !res.data) {
this.itemshow2 = true;
this.itemshow = false;
} else {
var list = [];
this.categoryTableNameList.forEach((e) => {
e.childrenTableNameList.forEach((el) => {
list.push(el.categoryId);
});
});
let yname = [];
this.categoryScoreList.forEach((el) => {
yname.push(el.className);
var listname = list.map((e) => {
var num = 0;
var number = el.categoryScoreList.findIndex(
(o) => o.categoryId == e
);
if (number != -1) {
num = el.categoryScoreList[number].categoryName;
}
return num;
});
this.listname = listname;
var list1 = list.map((e) => {
var num = 0;
var number = el.categoryScoreList.findIndex(
(o) => o.categoryId == e
);
if (number != -1) {
num = el.categoryScoreList[number].avgScore;
}
return num;
});
el.list = list1;
});
console.log(this.categoryScoreList);
var myChart = echarts.init(document.getElementById("chart"));
var option;
const posList = [
"left",
"right",
"top",
"bottom",
"inside",
"insideTop",
"insideLeft",
"insideRight",
"insideBottom",
"insideTopLeft",
"insideTopRight",
"insideBottomLeft",
"insideBottomRight",
];
app.configParameters = {
rotate: {
min: 0,
max: 90,
},
align: {
options: {
left: "left",
center: "center",
right: "right",
},
},
verticalAlign: {
options: {
top: "top",
middle: "middle",
bottom: "bottom",
},
},
position: {
options: posList.reduce(function (map, pos) {
map[pos] = pos;
return map;
}, {}),
},
distance: {
min: 0,
max: 100,
},
};
app.config = {
rotate: 0,
align: "center",
verticalAlign: "middle",
position: "top",
distance: 15,
onChange: function () {
const labelOption = {
rotate: app.config.rotate,
align: app.config.align,
verticalAlign: app.config.verticalAlign,
position: app.config.position,
distance: app.config.distance,
};
myChart.setOption({
series: [
{
label: labelOption,
},
{
label: labelOption,
},
{
label: labelOption,
},
{
label: labelOption,
},
],
});
},
};
const labelOption = {
show: true,
position: app.config.position,
distance: app.config.distance,
align: app.config.align,
verticalAlign: app.config.verticalAlign,
rotate: app.config.rotate,
formatter: "{c}",
fontSize: 16,
rich: {
name: {},
},
};
var yseries = [];
var name = "";
var names = [];
for (var i = 0; i < this.listname.length; i++) {
name = this.categoryScoreList[0].categoryScoreList[i].categoryName;
var ydata = [
this.categoryScoreList[0].list[i],
this.categoryScoreList[1].list[i],
this.categoryScoreList[2].list[i],
];
var obj = {
name: name,
type: "bar",
label: labelOption,
emphasis: {
focus: "series",
},
data: ydata,
};
yseries.push(obj);
names.push(name);
}
console.log(yseries)
option = {
tooltip: {
trigger: "axis",
axisPointer: {
type: "",
},
},
legend: {
data: names,
},
xAxis: [
{
type: "category",
axisTick: { show: false },
data: yname,
},
],
yAxis: [
{
type: "value",
},
],
series: yseries,
};
option && myChart.setOption(option);
}
});
},
//
batchCodeshowclick() {
if (this.ClassListlist.classId == "") {
this.$message.error("请先选择班级");
} else {
this.testScore();
this.batchCodeshow = true;
}
},
//
batchCodeclick(row) {
this.batchCodeName = row.batchName;
this.batchCodeId = row.id;
this.ClassListlist.batchCode = row.batchCode;
this.batchCodeshow = false;
},
//
testScore() {
testScoreBatch(this.testqueryParams).then((res) => {
this.testScorelist = res.rows;
this.total4 = res.total;
});
},
//
classshowclick() {
if (this.classqueryParams.kindergartenId == "") {
this.$message.error("请先选择幼儿园");
} else {
this.classshow = true;
this.classinfo();
}
// console.log(this.classqueryParams);
},
//
batchCodecancel() {
this.batchCodeshow = false;
},
//
kindergartencancel() {
this.kindergartenshow = false;
},
//
classcancel() {
this.classshow = false;
},
//
classclick(row) {
// console.log(row);
this.className = row.className;
this.classId = row.id;
this.ClassListlist.classId = row.id;
this.classshow = false;
},
//
kindergartenNameclick(row) {
this.ClassListlist.kindergartenId = row.id;
this.kindergartenName = row.kindergartenName;
this.kindergartenId = row.id;
this.kindergartenshow = false;
},
//
class() {
tKindergartenInfo(this.ClassType).then((res) => {
this.dictValue1 = res.data[0].dictValue;
this.dictValue2 = res.data[1].dictValue;
this.dictValue3 = res.data[2].dictValue;
this.dictValue4 = res.data[3].dictValue;
});
},
//list
classinfo() {
listClassinfo(this.classqueryParams).then((response) => {
this.classinfoList = response.rows;
this.total2 = response.total;
// console.log(this.classinfoList);
});
},
getList() {
//
getRoleInfo().then((res) => {
console.log(res);
});
//list
listKindergartenInfo(this.kqueryParams).then((response) => {
this.kindergartenList = response.rows;
this.total1 = response.total;
// console.log(this.kindergartenList);
});
},
//
reset() {
this.form = {};
this.resetForm("form");
},
},
};
</script>

View File

@ -593,8 +593,8 @@ export default {
synthesizelist: {
studentId: "",
batchCode: "",
// studentId: "10",
// batchCode: "PC202208030005",
studentId: "10",
batchCode: "PC202208030005",
},
//
testqueryParams: {
@ -607,7 +607,7 @@ export default {
created() {
this.getList();
this.class();
// this.synthesizeinfo();
this.synthesizeinfo();
},
methods: {
//
@ -624,6 +624,9 @@ export default {
res.data.physiqueCategoryList.forEach((el) => {
// console.log(el.categoryScore);
seriesData.push(el.categoryScore);
if(el.levelName==null){
el.levelName='暂无'
}
yindicator.push({
name: el.categoryName + " " + "(" + el.levelName + "" + ")",
max: el.maxScore,

View File

@ -0,0 +1,754 @@
<template>
<div class="app-container">
<el-form
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="90px"
>
<el-form-item label="所属幼儿园" prop="categoryName">
<el-button
@click="kindergartenshow = true"
v-if="kindergartenName == '请选择幼儿园'"
style="width: 250px; text-align: left; height: 32px; color: #c0c4cc"
>{{ kindergartenName }}</el-button
>
<el-button
@click="kindergartenshow = true"
style="width: 250px; text-align: left; height: 32px"
v-else
>{{ kindergartenName }}</el-button
>
</el-form-item>
<el-form-item label="所属班级" prop="categoryName" label-width="70px">
<el-button
@click="classshowclick"
style="width: 250px; text-align: left; height: 32px; color: #c0c4cc"
v-if="className == '请选择班级'"
>{{ className }}</el-button
>
<el-button
@click="classshowclick"
style="width: 250px; text-align: left; height: 32px"
v-else
>{{ className }}</el-button
>
</el-form-item>
<el-form-item label="学生" prop="categoryName" label-width="45px">
<el-button
@click="studentshowclick"
v-if="studentname == '请选择学生'"
style="width: 250px; text-align: left; height: 32px; color: #c0c4cc"
>{{ studentname }}</el-button
>
<el-button
@click="studentshowclick"
style="width: 250px; text-align: left; height: 32px"
v-else
>{{ studentname }}</el-button
>
</el-form-item>
<el-form-item label="所属批次" prop="categoryName" label-width="70px">
<el-button
@click="batchCodeshowclick"
style="width: 250px; text-align: left; height: 32px; color: #c0c4cc"
v-if="batchCodeName == '请选择批次'"
>{{ batchCodeName }}</el-button
>
<el-button
@click="batchCodeshowclick"
style="width: 250px; text-align: left; height: 32px"
v-else
>{{ batchCodeName }}</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<!-- // -->
<el-dialog
width="500px"
title="选择批次"
:visible.sync="batchCodeshow"
append-to-body
style="margin-top: 20px"
:before-close="batchCodecancel"
>
<el-table :data="testScorelist" align="center" style="margin-top: 0px">
<el-table-column label="请选择" width="70" align="center">
<template slot-scope="scope">
<el-button
type="primary"
style="width: 20px; height: 20px"
v-if="batchCodeId == scope.row.id"
circle
@click="batchCodeclick(scope.row)"
></el-button>
<el-button
v-else
style="width: 15px; height: 15px"
circle
@click="batchCodeclick(scope.row)"
></el-button>
</template>
</el-table-column>
<el-table-column
property="batchCode"
label="批次编号"
width="190"
align="center"
/>
<el-table-column
property="batchName"
label="批次名称"
width="190"
align="center"
/>
</el-table>
<pagination
v-show="total4 > 0"
:total="total4"
:page.sync="testqueryParams.pageNum"
:limit.sync="testqueryParams.pageSize"
@pagination="testScore"
/>
</el-dialog>
<!-- // -->
<el-dialog
width="850px"
title="选择学生"
:visible.sync="studentshow"
append-to-body
style="margin-top: 70px"
:before-close="studentcancel"
>
<el-table :data="studentInfoList" align="center" style="margin-top: 10px">
<el-table-column label="请选择" width="70" align="center">
<template slot-scope="scope">
<el-button
type="primary"
style="width: 20px; height: 20px"
circle
v-if="studentId == scope.row.id"
@click="studentclick(scope.row)"
></el-button>
<el-button
v-else
style="width: 15px; height: 15px"
circle
@click="studentclick(scope.row)"
></el-button>
</template>
</el-table-column>
<el-table-column
property="className"
label="班级名称"
width="190"
align="center"
/>
<el-table-column
property="studentName"
label="学生姓名"
width="190"
align="center"
/>
<el-table-column
property="studentName"
label="性别"
width="190"
align="center"
>
<template slot-scope="scope">
{{ scope.row.studentSex == "MALE" ? "男" : "女" }}
</template>
</el-table-column>
<el-table-column
property="homeAddress"
label="住址"
width="190"
align="center"
/>
</el-table>
<pagination
v-show="total3 > 0"
:total="total3"
:page.sync="studentqueryParams.pageNum"
:limit.sync="studentqueryParams.pageSize"
@pagination="studentlist"
/>
</el-dialog>
<!-- // -->
<el-dialog
width="850px"
title="选择所属幼儿园"
:visible.sync="kindergartenshow"
append-to-body
:before-close="kindergartencancel"
>
<el-table :data="kindergartenList">
<el-table-column label="请选择" width="70" align="center">
<template slot-scope="scope">
<el-button
type="primary"
style="width: 15px; height: 15px"
circle
@click="kindergartenNameclick(scope.row)"
v-if="kindergartenId == scope.row.id"
></el-button>
<el-button
v-else
style="width: 15px; height: 15px"
circle
@click="kindergartenNameclick(scope.row)"
></el-button>
</template>
</el-table-column>
<el-table-column
property="kindergartenName"
label="幼儿园名字"
width="150"
align="center"
>
</el-table-column>
<el-table-column
property="kindergartenAddress"
label="幼儿园地址"
width="150"
align="center"
>
</el-table-column>
<el-table-column
label="幼儿园所在组织"
align="center"
prop="organizeName"
width="150"
>
</el-table-column>
<el-table-column
property="contacts"
label="联系人"
width="150"
align="center"
>
</el-table-column>
<el-table-column
property="phone"
label="联系电话"
width="150"
align="center"
>
</el-table-column>
</el-table>
<pagination
v-show="total1 > 0"
:total="total1"
:page.sync="kqueryParams.pageNum"
:limit.sync="kqueryParams.pageSize"
@pagination="getList"
/>
</el-dialog>
<!-- // -->
<el-dialog
width="1000px"
title="选择所属班级"
:visible.sync="classshow"
append-to-body
:before-close="classcancel"
>
<el-table :data="classinfoList" align="center" style="margin-top: 10px">
<el-table-column label="请选择" width="70" align="center">
<template slot-scope="scope">
<el-button
type="primary"
style="width: 20px; height: 20px"
circle
@click="classclick(scope.row)"
v-if="classId == scope.row.id"
></el-button>
<el-button
v-else
style="width: 15px; height: 15px"
circle
@click="classclick(scope.row)"
></el-button>
</template>
</el-table-column>
<el-table-column
property="kindergartenName"
label="幼儿园名称"
width="190"
align="center"
/>
<el-table-column
property="className"
label="班级名称"
width="180"
align="center"
>
</el-table-column>
<el-table-column
property="classType"
label="班级类型"
width="160"
align="center"
>
<template slot-scope="scope">
{{ scope.row.classType == dictValue1 ? "大班" : "" }}
{{ scope.row.classType == dictValue2 ? "中班" : "" }}
{{ scope.row.classType == dictValue3 ? "小班" : "" }}
{{ scope.row.classType == dictValue4 ? "毕业" : "" }}
</template>
</el-table-column>
<el-table-column
property="classTeacher"
label="班主任姓名"
width="180"
align="center"
>
</el-table-column>
<el-table-column
property="phone"
label="联系电话"
width="190"
align="center"
>
</el-table-column>
</el-table>
<pagination
v-show="total2 > 0"
:total="total2"
:page.sync="classqueryParams.pageNum"
:limit.sync="classqueryParams.pageSize"
@pagination="classinfo"
/>
</el-dialog>
<el-row v-show="itemshow">
<el-col :span="24" class="card-box" style="">
<el-card>
<div style="margin-left: 50px">
<span>学校排名:</span
><span style="margin-left: 20px; margin-right: 20px">{{
analysislist.schoolRank
}}</span
>
</div>
<div slot="header" style="text-align: center; font-size: 25px">
<span>体测项目分值与全校全市对比</span>
</div>
<div style="width: 100%; display: flex; flex-wrap: wrap">
<div
v-for="(item, index) in analysislist.itemScoreList"
:key="index"
style="
width: 30%;
height: 300px;
margin-left: 3%;
margin-top: 20px;
"
>
<div
class="bar"
style="width: 400px; height: 300px; margin: 0 auto"
></div>
</div>
</div>
</el-card>
</el-col>
</el-row>
<el-row :gutter="20" v-if="itemshow2">
<el-col :span="24" :offset="0">
<el-card>
<div slot="header" style="text-align: center">
<img style="width: 40px" src="@/icons/笑脸.png" alt="" />
<div><!-- card title -->该学生此批次暂没数据</div>
</div>
<!-- card body -->
</el-card>
</el-col>
</el-row>
</div>
</template>
<script>
import * as echarts from "echarts";
import {
listKindergartenInfo,
tKindergartenInfo,
} from "@/api/system/kindergartenInfo";
import { listStudentInfo } from "@/api/system/studentInfo";
import { listClassinfo } from "@/api/system/classinfo";
import { getRoleInfo, testScoreBatch } from "@/api/system/quality";
import { analysis } from "@/api/system/constitution";
export default {
name: "constitution",
components: {},
data() {
return {
itemshow: false,
itemshow2: false,
total1: 0,
total2: 0,
total3: 0,
total4: 0,
//
kindergartenshow: false,
classshow: false,
studentshow: false,
batchCodeshow: false,
//
dictValue1: "",
dictValue2: "",
dictValue3: "",
dictValue4: "",
ClassType: "class_type",
//
showSearch: true,
//
form: {},
//
studentqueryParams: {
pageNum: 1,
pageSize: 10,
classId: "",
nationDictId: null,
studentName: null,
studentSex: null,
studentNumber: null,
birthDate: null,
cardNumber: null,
onceName: null,
homeAddress: null,
},
//
classqueryParams: {
pageNum: 1,
pageSize: 10,
kindergartenId: "",
className: null,
classType: null,
},
//
kqueryParams: {
pageNum: 1,
pageSize: 10,
organizeId: null,
kindergartenName: null,
kindergartenAddress: null,
kindergartenType: null,
phone: null,
contacts: null,
},
//list
kindergartenList: [],
//
kindergartenName: "请选择幼儿园",
//ID
kindergartenId: "",
//list
classinfoList: [],
//
className: "请选择班级",
//ID
classId: "",
//list
studentInfoList: [],
//
studentname: "请选择学生",
//ID
studentId: "",
//
batchCodeName: "请选择批次",
//ID
batchCodeId: "",
//list
testScorelist: [],
//
testqueryParams: {
pageNum: 1,
pageSize: 10,
},
//analysislist
analysislist: [],
//
analysisqueryParams: {
// studentId: "10",
// batchCode: "PC202208030005",
studentId: "",
batchCode: "",
},
};
},
mounted() {},
created() {
this.getList();
this.class();
// this.analysislists();
},
methods: {
options() {
var myEchart = document.getElementsByClassName("bar");
// var myEchart = document.querySelectorAll(".bar");
for (var i = 0; i <= this.analysislist.itemScoreList.length; i++) {
var ydata = [
this.analysislist.itemScoreList[i].itemScore,
this.analysislist.itemScoreList[i].schoolAvgScore,
this.analysislist.itemScoreList[i].cityAvgScore,
];
var textname = this.analysislist.itemScoreList[i].itemName;
// console.log(ydata);
var myChart = echarts.init(myEchart[i]);
var option = {
title: {
text: textname,
subtext: "",
left: "50%",
},
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
},
formatter: function (params) {
var tar = params[1];
return tar.name + "<br/>" + tar.seriesName + " : " + tar.value;
},
},
grid: {
left: "3%",
right: "4%",
bottom: "3%",
containLabel: true,
},
xAxis: {
type: "category",
splitLine: { show: false },
data: this.analysislist.itemStudentList,
},
yAxis: {
type: "value",
},
series: [
{
name: "Placeholder",
type: "bar",
stack: "Total",
itemStyle: {
borderColor: "blue",
color: "blue",
},
emphasis: {
itemStyle: {
borderColor: "transparent",
color: "transparent",
},
},
data: [0, 0, 0],
},
{
name: "分数",
type: "bar",
stack: "Total",
// center: ["50%", "50%"],
label: {
show: true,
position: "inside",
},
itemStyle: {
normal: {
color: function (colors) {
var colorList = [
"#91cd77",
"#5470c6",
"#fc8251",
"#ef6567",
"#f9c956",
"#75bedc",
];
return colorList[i];
},
},
},
// itemStyle: {
// borderColor: "#94D8F6",
// color: "#94D8F6",
// },
data: ydata,
},
],
};
myChart.setOption(option);
this.itemshow = true;
this.itemshow2 = false;
}
},
//
analysislists() {
analysis(this.analysisqueryParams).then((res) => {
console.log(res);
if (!res.data || res.data == "") {
this.itemshow2 = true;
this.itemshow = false;
this.batchCodeName = "请选择批次";
this.batchCodeId = "";
} else {
this.analysislist = res.data;
this.$nextTick(() => {
this.options();
});
}
});
},
//
studentshowclick() {
if (this.studentqueryParams.classId == "") {
this.$message.error("请先选择班级");
} else {
this.studentshow = true;
this.studentlist();
}
},
//
batchCodeshowclick() {
if (this.analysisqueryParams.studentId == "") {
this.$message.error("请先选择学生");
} else {
this.testScore();
this.batchCodeshow = true;
}
},
//
batchCodeclick(row) {
this.batchCodeName = row.batchName;
this.batchCodeId = row.id;
this.analysisqueryParams.batchCode = row.batchCode;
this.batchCodeshow = false;
this.analysislists();
},
//
testScore() {
testScoreBatch(this.testqueryParams).then((res) => {
this.testScorelist = res.rows;
this.total4 = res.total;
});
},
//
studentclick(row) {
this.studentname = row.studentName;
this.studentId = row.id;
this.studentshow = false;
this.analysisqueryParams.studentId = row.id;
},
//
studentlist() {
listStudentInfo(this.studentqueryParams).then((res) => {
this.studentInfoList = res.rows;
this.total3 = res.total;
// console.log(this.studentInfoList);
});
},
//
classshowclick() {
if (this.classqueryParams.kindergartenId == "") {
this.$message.error("请先选择幼儿园");
} else {
this.classshow = true;
this.classinfo();
}
// console.log(this.classqueryParams);
},
//
batchCodecancel() {
this.batchCodeshow = false;
},
//
studentcancel() {
this.studentshow = false;
},
//
kindergartencancel() {
this.kindergartenshow = false;
},
//
classcancel() {
this.classshow = false;
},
//
classclick(row) {
// console.log(row);
this.className = row.className;
this.classId = row.id;
this.studentqueryParams.classId = row.id;
this.classshow = false;
},
//
kindergartenNameclick(row) {
this.classqueryParams.kindergartenId = row.id;
this.kindergartenName = row.kindergartenName;
this.kindergartenId = row.id;
this.kindergartenshow = false;
},
//
class() {
tKindergartenInfo(this.ClassType).then((res) => {
this.dictValue1 = res.data[0].dictValue;
this.dictValue2 = res.data[1].dictValue;
this.dictValue3 = res.data[2].dictValue;
this.dictValue4 = res.data[3].dictValue;
});
},
//list
classinfo() {
listClassinfo(this.classqueryParams).then((response) => {
this.classinfoList = response.rows;
this.total2 = response.total;
// console.log(this.classinfoList);
});
},
getList() {
//
getRoleInfo().then((res) => {
console.log(res);
});
//list
listKindergartenInfo(this.kqueryParams).then((response) => {
this.kindergartenList = response.rows;
this.total1 = response.total;
// console.log(this.kindergartenList);
});
},
//
reset() {
this.form = {};
this.resetForm("form");
},
},
};
</script>
<style scoped='scss'>
::v-deep .el-card__header {
border: none;
}
</style>

View File

@ -0,0 +1,625 @@
<template>
<div class="app-container">
<el-form
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="90px"
>
<el-form-item label="所属幼儿园" prop="categoryName">
<el-button
@click="kindergartenshow = true"
v-if="kindergartenName == '请选择幼儿园'"
style="width: 250px; text-align: left; height: 32px; color: #c0c4cc"
>{{ kindergartenName }}</el-button
>
<el-button
@click="kindergartenshow = true"
style="width: 250px; text-align: left; height: 32px"
v-else
>{{ kindergartenName }}</el-button
>
</el-form-item>
<el-form-item label="所属批次" prop="categoryName" label-width="70px">
<el-button
@click="batchCodeshowclick"
style="width: 250px; text-align: left; height: 32px; color: #c0c4cc"
v-if="batchCodeName == '请选择批次'"
>{{ batchCodeName }}</el-button
>
<el-button
@click="batchCodeshowclick"
style="width: 250px; text-align: left; height: 32px"
v-else
>{{ batchCodeName }}</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<!-- // -->
<el-dialog
width="500px"
title="选择批次"
:visible.sync="batchCodeshow"
append-to-body
style="margin-top: 20px"
:before-close="batchCodecancel"
>
<el-table :data="testScorelist" align="center" style="margin-top: 0px">
<el-table-column label="请选择" width="70" align="center">
<template slot-scope="scope">
<el-button
type="primary"
style="width: 20px; height: 20px"
v-if="batchCodeId == scope.row.id"
circle
@click="batchCodeclick(scope.row)"
></el-button>
<el-button
v-else
style="width: 15px; height: 15px"
circle
@click="batchCodeclick(scope.row)"
></el-button>
</template>
</el-table-column>
<el-table-column
property="batchCode"
label="批次编号"
width="190"
align="center"
/>
<el-table-column
property="batchName"
label="批次名称"
width="190"
align="center"
/>
</el-table>
<pagination
v-show="total4 > 0"
:total="total4"
:page.sync="testqueryParams.pageNum"
:limit.sync="testqueryParams.pageSize"
@pagination="testScore"
/>
</el-dialog>
<!-- // -->
<el-dialog
width="850px"
title="选择所属幼儿园"
:visible.sync="kindergartenshow"
append-to-body
:before-close="kindergartencancel"
>
<el-table :data="kindergartenList">
<el-table-column label="请选择" width="70" align="center">
<template slot-scope="scope">
<el-button
type="primary"
style="width: 15px; height: 15px"
circle
@click="kindergartenNameclick(scope.row)"
v-if="kindergartenId == scope.row.id"
></el-button>
<el-button
v-else
style="width: 15px; height: 15px"
circle
@click="kindergartenNameclick(scope.row)"
></el-button>
</template>
</el-table-column>
<el-table-column
property="kindergartenName"
label="幼儿园名字"
width="150"
align="center"
>
</el-table-column>
<el-table-column
property="kindergartenAddress"
label="幼儿园地址"
width="150"
align="center"
>
</el-table-column>
<el-table-column
label="幼儿园所在组织"
align="center"
prop="organizeName"
width="150"
>
</el-table-column>
<el-table-column
property="contacts"
label="联系人"
width="150"
align="center"
>
</el-table-column>
<el-table-column
property="phone"
label="联系电话"
width="150"
align="center"
>
</el-table-column>
</el-table>
<pagination
v-show="total1 > 0"
:total="total1"
:page.sync="kqueryParams.pageNum"
:limit.sync="kqueryParams.pageSize"
@pagination="getList"
/>
</el-dialog>
<el-row v-show="itemshow">
<el-col :span="24" class="card-box" style="">
<el-card>
<div style="display: flex; margin-top: 40px">
<div
slot="header"
style="width: 50%; text-align: center; font-size: 18px"
>
<span>各年级男/女平均身高(cm)</span>
<div
id="main"
style="
width: 500px;
height: 300px;
margin: 0 auto;
padding-top: 40px;
"
></div>
</div>
<div
slot="header"
style="width: 50%; text-align: center; font-size: 18px"
>
<span>各年级男/女平均体重(kg)</span>
<div
id="main2"
style="
width: 500px;
height: 300px;
margin: 0 auto;
padding-top: 40px;
"
></div>
</div>
</div>
</el-card>
</el-col>
</el-row>
<el-row :gutter="20" v-if="itemshow2">
<el-col :span="24" :offset="0">
<el-card>
<div slot="header" style="text-align: center">
<img style="width: 40px" src="@/icons/笑脸.png" alt="" />
<div><!-- card title -->该学生此批次暂没数据</div>
</div>
<!-- card body -->
</el-card>
</el-col>
</el-row>
</div>
</template>
<script>
import * as echarts from "echarts";
import {
listKindergartenInfo,
tKindergartenInfo,
} from "@/api/system/kindergartenInfo";
import { getRoleInfo, testScoreBatch } from "@/api/system/quality";
import { analysis } from "@/api/system/heightAndWeight";
export default {
name: "KindergartenPhysicalTest",
components: {},
data() {
return {
itemshow: false,
itemshow2: false,
total1: 0,
total4: 0,
//
kindergartenshow: false,
batchCodeshow: false,
//
showSearch: true,
//
form: {},
//
kindergartenType: "kindergarten_type",
type: {},
type2: {},
//
kqueryParams: {
pageNum: 1,
pageSize: 10,
organizeId: null,
kindergartenName: null,
kindergartenAddress: null,
kindergartenType: null,
phone: null,
contacts: null,
},
//list
kindergartenList: [],
//
kindergartenName: "请选择幼儿园",
//ID
kindergartenId: "",
//
batchCodeName: "请选择批次",
//ID
batchCodeId: "",
//list
testScorelist: [],
//
testqueryParams: {
pageNum: 1,
pageSize: 10,
},
analysislist: [],
//
analysisqueryParams: {
// kindergartenId: "",
// batchCode: "",
kindergartenId: "18",
batchCode: "PC202208030005",
},
// weightAndHeightAvgScoreList: [
// {
// studentSex: "FEMALE",
// measureUnit: "cm",
// itemCode: "H001",
// averageScore: 0,
// },
// {
// studentSex: "FEMALE",
// measureUnit: "kg",
// itemCode: "W001",
// averageScore: 0,
// },
// {
// studentSex: "MALE",
// measureUnit: "cm",
// itemCode: "H001",
// averageScore: 0,
// },
// {
// studentSex: "MALE",
// measureUnit: "kg",
// itemCode: "W001",
// averageScore: 0,
// },
// ],
};
},
mounted() {},
created() {
this.getList();
// this.analysisinfo();
},
methods: {
analysisinfo() {
analysis(this.analysisqueryParams).then((res) => {
this.analysislist = res.data;
console.log(this.analysislist);
var yclassname = [];
var grilsheight = [];
var boyheight = [];
var boyweight = [];
var grilsweight = [];
for (var i = 0; i < this.analysislist.length; i++) {
this.analysislist[i].weightAndHeightAvgScoreList.forEach((el) => {
if (el.itemCode == "H001" && el.studentSex == "MALE") {
boyheight.push(el.averageScore);
} else if (el.itemCode == "H001" && el.studentSex == "FEMALE") {
grilsheight.push(el.averageScore);
} else if (el.itemCode == "W001" && el.studentSex == "FEMALE") {
grilsweight.push(el.averageScore);
} else if (el.itemCode == "W001" && el.studentSex == "MALE") {
boyweight.push(el.averageScore);
}
});
if (grilsheight.length == i) {
grilsheight.push(0);
}
if (boyheight.length == i) {
boyheight.push(0);
}
if (boyweight.length == i) {
boyweight.push(0);
}
if (grilsweight.length == i) {
grilsweight.push(0);
}
}
this.analysislist.forEach((e) => {
yclassname.push(e.className);
});
console.log(grilsheight, boyheight);
console.log(grilsweight, boyweight);
var app = {};
var myChart = echarts.init(document.getElementById("main"));
var myChart2 = echarts.init(document.getElementById("main2"));
var option;
var option2;
const posList = [
"left",
"right",
"top",
"bottom",
"inside",
"insideTop",
"insideLeft",
"insideRight",
"insideBottom",
"insideTopLeft",
"insideTopRight",
"insideBottomLeft",
"insideBottomRight",
];
app.configParameters = {
rotate: {
min: 0,
max: 90,
},
align: {
options: {
left: "left",
center: "center",
right: "right",
},
},
verticalAlign: {
options: {
top: "top",
middle: "middle",
bottom: "bottom",
},
},
position: {
options: posList.reduce(function (map, pos) {
map[pos] = pos;
return map;
}, {}),
},
distance: {
min: 0,
max: 100,
},
};
app.config = {
rotate: 0,
align: "center",
verticalAlign: "middle",
position: "top",
distance: 15,
onChange: function () {
const labelOption = {
rotate: app.config.rotate,
align: app.config.align,
verticalAlign: app.config.verticalAlign,
position: app.config.position,
distance: app.config.distance,
};
myChart.setOption({
series: [
{
label: labelOption,
},
{
label: labelOption,
},
{
label: labelOption,
},
{
label: labelOption,
},
],
});
},
};
const labelOption = {
show: true,
position: app.config.position,
distance: app.config.distance,
align: app.config.align,
verticalAlign: app.config.verticalAlign,
rotate: app.config.rotate,
formatter: "{c}",
fontSize: 16,
rich: {
name: {},
},
};
option = {
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
},
},
legend: {
data: ["男", "女"],
},
xAxis: [
{
type: "category",
axisTick: { show: false },
data: yclassname,
},
],
yAxis: [
{
type: "value",
},
],
series: [
{
name: "男",
type: "bar",
barGap: 0,
color: "#00B050",
label: labelOption,
emphasis: {
focus: "series",
},
data: boyheight,
},
{
name: "女",
type: "bar",
color: "red",
label: labelOption,
emphasis: {
focus: "series",
},
data: grilsheight,
},
],
};
option2 = {
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
},
},
legend: {
data: ["男", "女"],
},
xAxis: [
{
type: "category",
axisTick: { show: false },
data: yclassname,
},
],
yAxis: [
{
type: "value",
},
],
series: [
{
name: "男",
type: "bar",
barGap: 0,
color: "#00B050",
label: labelOption,
emphasis: {
focus: "series",
},
data: boyweight,
},
{
name: "女",
type: "bar",
color: "red",
label: labelOption,
emphasis: {
focus: "series",
},
data: grilsweight,
},
],
};
option && myChart.setOption(option);
option2 && myChart2.setOption(option2);
this.itemshow = true;
this.itemshow2 = false;
});
},
//
batchCodeclick(row) {
this.batchCodeName = row.batchName;
this.batchCodeId = row.id;
this.analysisqueryParams.batchCode = row.batchCode;
this.batchCodeshow = false;
this.analysisinfo();
},
//
batchCodeshowclick() {
if (this.analysisqueryParams.kindergartenId == "") {
this.$message.error("请先选择幼儿园");
} else {
this.testScore();
this.batchCodeshow = true;
}
},
//
testScore() {
testScoreBatch(this.testqueryParams).then((res) => {
this.testScorelist = res.rows;
this.total4 = res.total;
});
},
//
batchCodecancel() {
this.batchCodeshow = false;
},
//
kindergartencancel() {
this.kindergartenshow = false;
},
//
kindergartenNameclick(row) {
this.analysisqueryParams.kindergartenId = row.id;
this.kindergartenName = row.kindergartenName;
this.kindergartenId = row.id;
this.kindergartenshow = false;
},
getList() {
tKindergartenInfo(this.kindergartenType).then((res) => {
this.type = res.data[0];
this.type2 = res.data[1];
});
//
getRoleInfo().then((res) => {
console.log(res);
});
//list
listKindergartenInfo(this.kqueryParams).then((response) => {
this.kindergartenList = response.rows;
this.total1 = response.total;
// console.log(this.kindergartenList);
});
},
//
reset() {
this.form = {};
this.resetForm("form");
},
},
};
</script>
<style scoped='scss'>
::v-deep .el-card__header {
border: none;
}
</style>

View File

@ -168,7 +168,7 @@
v-hasPermi="['system:itemCategory:add']"
>新增</el-button
>
<!--
<!--
<el-button
size="mini"
type="text"
@ -224,7 +224,7 @@
/>
</el-form-item>
<el-form-item label="项目成绩级别" prop="testItemLevelList">
<el-form-item label="测试分类得分" prop="testItemLevelList">
<div
v-for="(item, index) in form.testItemLevelList"
:key="item.id"
@ -232,8 +232,8 @@
>
<el-input
v-model="item.levelName"
placeholder="级别名"
style="width: 75px; margin-right: 20px"
placeholder="得分描述"
style="width: 90px; margin-right: 20px"
/>
<el-input
v-model.number="item.levelMinScore"

View File

@ -0,0 +1,591 @@
<template>
<div class="app-container">
<el-form
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="90px"
>
<el-form-item label="所属幼儿园" prop="categoryName">
<el-button
@click="kindergartenshow = true"
v-if="kindergartenName == '请选择幼儿园'"
style="width: 250px; text-align: left; height: 32px; color: #c0c4cc"
>{{ kindergartenName }}</el-button
>
<el-button
@click="kindergartenshow = true"
style="width: 250px; text-align: left; height: 32px"
v-else
>{{ kindergartenName }}</el-button
>
</el-form-item>
<el-form-item label="学生性别" prop="studentSex" label-width="70px">
<el-select
v-model="analysisqueryParams.studentSex"
clearable
placeholder="请选择"
>
<el-option
v-for="item in sexs"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="所属批次" prop="batchCodeId" label-width="70px">
<el-button
@click="batchCodeshowclick"
style="width: 250px; text-align: left; height: 32px; color: #c0c4cc"
v-if="batchCodeName == '请选择批次'"
>{{ batchCodeName }}</el-button
>
<el-button
@click="batchCodeshowclick"
style="width: 250px; text-align: left; height: 32px"
v-else
>{{ batchCodeName }}</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<!-- // -->
<el-dialog
width="500px"
title="选择批次"
:visible.sync="batchCodeshow"
append-to-body
style="margin-top: 20px"
:before-close="batchCodecancel"
>
<el-table :data="testScorelist" align="center" style="margin-top: 0px">
<el-table-column label="请选择" width="70" align="center">
<template slot-scope="scope">
<el-button
type="primary"
style="width: 20px; height: 20px"
v-if="batchCodeId == scope.row.id"
circle
@click="batchCodeclick(scope.row)"
></el-button>
<el-button
v-else
style="width: 15px; height: 15px"
circle
@click="batchCodeclick(scope.row)"
></el-button>
</template>
</el-table-column>
<el-table-column
property="batchCode"
label="批次编号"
width="190"
align="center"
/>
<el-table-column
property="batchName"
label="批次名称"
width="190"
align="center"
/>
</el-table>
<pagination
v-show="total4 > 0"
:total="total4"
:page.sync="testqueryParams.pageNum"
:limit.sync="testqueryParams.pageSize"
@pagination="testScore"
/>
</el-dialog>
<!-- // -->
<el-dialog
width="850px"
title="选择所属幼儿园"
:visible.sync="kindergartenshow"
append-to-body
:before-close="kindergartencancel"
>
<el-table :data="kindergartenList">
<el-table-column label="请选择" width="70" align="center">
<template slot-scope="scope">
<el-button
type="primary"
style="width: 15px; height: 15px"
circle
@click="kindergartenNameclick(scope.row)"
v-if="kindergartenId == scope.row.id"
></el-button>
<el-button
v-else
style="width: 15px; height: 15px"
circle
@click="kindergartenNameclick(scope.row)"
></el-button>
</template>
</el-table-column>
<el-table-column
property="kindergartenName"
label="幼儿园名字"
width="150"
align="center"
>
</el-table-column>
<el-table-column
property="kindergartenAddress"
label="幼儿园地址"
width="150"
align="center"
>
</el-table-column>
<el-table-column
label="幼儿园所在组织"
align="center"
prop="organizeName"
width="150"
>
</el-table-column>
<el-table-column
property="contacts"
label="联系人"
width="150"
align="center"
>
</el-table-column>
<el-table-column
property="phone"
label="联系电话"
width="150"
align="center"
>
</el-table-column>
</el-table>
<pagination
v-show="total1 > 0"
:total="total1"
:page.sync="kqueryParams.pageNum"
:limit.sync="kqueryParams.pageSize"
@pagination="getList"
/>
</el-dialog>
<el-row v-show="itemshow">
<el-col :span="24" :offset="0">
<div style="text-align: center; height: 100px">
<div
class="el-table--enable-row-hover el-table--medium"
style="margin: 20px auto; height: 40px; text-align: center"
>
<div style="display: inline-block">
<span
style="
position: relative;
display: inline-block;
width: 80px;
text-align: center;
"
v-for="(item, index) in firstCategoryScoreList"
:key="index"
>
<span :style="index == 0 ? '' : 'margin-right:20px'">{{
index == 0 ? null : "+"
}}</span>
<span>
{{ item.avgCategoryFraction }}
</span>
<span
:style="index != 0 ? 'left:18px' : ''"
style="position: absolute; left: 0px; top: 20px; width: 80px"
>{{ item.categoryName }}</span
>
</span>
</div>
<div style="display: inline-block; position: relative">
<span style="margin: 0 20px">= </span>
<span>{{ totalAvgFraction }}</span>
<span
style="
display: inline-block;
position: absolute;
top: 20px;
width: 80px;
left: 40px;
"
>(综合得分)</span
>
</div>
</div>
</div>
</el-col>
<el-col :span="24" :offset="0">
<div style="text-align: center">
<span>园所幼儿综合体质分析图</span>
</div>
<div class="el-table el-table--enable-row-hover el-table--medium">
<div
ref="chart"
id="chart"
style="width: 1000px; height: 600px; margin: 0 auto"
></div>
</div>
</el-col>
<el-col :span="24" :offset="0">
<div style="margin: 0 auto">
<div
style="display: flex; text-align: center; justify-content: center"
>
<div
style="
width: 120px;
line-height: 60px;
border: 1px solid #f0f0f0;
background: #f0f0f0;
"
>
年龄
</div>
<div
style="
width: 120px;
line-height: 60px;
border: 1px solid #f0f0f0;
background: #f0f0f0;
"
>
平均总分
</div>
<div v-for="item in categoryTableNameList" :key="item.prentId">
<div
style="
text-align: center;
line-height: 30px;
border: 1px solid #f0f0f0;
background: #f0f0f0;
"
>
{{ item.parentName }}
</div>
<div
style="
display: flex;
line-height: 30px;
border: 1px solid #f0f0f0;
background: #f0f0f0;
"
>
<div
v-for="uitem in item.childrenTableNameList"
:key="uitem.categoryId"
style="width: 120px"
>
{{ uitem.categoryName }}
</div>
</div>
</div>
</div>
<div>
<div
style="text-align: center; display: flex; justify-content: center"
v-for="item in categoryAgeFractionList"
:key="item.prentId"
>
<div style="width: 120px; line-height: 60px">
{{ item.studentAge }}
</div>
<div style="width: 120px; line-height: 60px">
{{ item.totalAvgFraction }}
</div>
<div>
<div style="display: flex; line-height: 60px">
<div
v-for="uitem in item.list"
:key="uitem.categoryId"
style="width: 120px"
>
{{ uitem }}
</div>
</div>
</div>
</div>
</div>
<div></div>
</div>
</el-col>
</el-row>
<el-row :gutter="20" v-if="itemshow2">
<el-col :span="24" :offset="0">
<el-card>
<div slot="header" style="text-align: center">
<img style="width: 40px" src="@/icons/笑脸.png" alt="" />
<div><!-- card title -->该学生此批次暂没数据</div>
</div>
<!-- card body -->
</el-card>
</el-col>
</el-row>
</div>
</template>
<script>
import * as echarts from "echarts";
import {
listKindergartenInfo,
tKindergartenInfo,
} from "@/api/system/kindergartenInfo";
import { getRoleInfo, testScoreBatch } from "@/api/system/quality";
import { analysis } from "@/api/system/physique";
export default {
name: "KindergartenPhysicalTest",
components: {},
data() {
return {
sexs: [
{
value: "MALE",
label: "男",
},
{
value: "FEMALE",
label: "女",
},
],
itemshow: false,
itemshow2: false,
total1: 0,
total4: 0,
//
kindergartenshow: false,
batchCodeshow: false,
//
showSearch: true,
//
form: {},
//
kqueryParams: {
pageNum: 1,
pageSize: 10,
organizeId: null,
kindergartenName: null,
kindergartenAddress: null,
kindergartenType: null,
phone: null,
contacts: null,
},
//list
kindergartenList: [],
//
kindergartenName: "请选择幼儿园",
//ID
kindergartenId: "",
//
batchCodeName: "请选择批次",
//ID
batchCodeId: "",
//list
testScorelist: [],
//
testqueryParams: {
pageNum: 1,
pageSize: 10,
},
//
analysisqueryParams: {
// kindergartenId: "18",
// batchCode: "PC202208030005",
// studentSex: "FEMALE",
kindergartenId: "",
batchCode: "",
studentSex: "",
},
categoryTableNameList: [],
categoryAgeFractionList: [],
categoryScoreList: [],
firstCategoryScoreList: [],
totalAvgFraction: "",
};
},
mounted() {},
created() {
this.getList();
// this.analysisinfo();
},
methods: {
analysisinfo() {
analysis(this.analysisqueryParams).then((res) => {
this.totalAvgFraction = res.data.totalAvgFraction;
this.categoryTableNameList = res.data.categoryTableNameList;
this.categoryAgeFractionList = res.data.categoryAgeFractionList;
this.categoryScoreList = res.data.categoryScoreList;
this.firstCategoryScoreList = res.data.firstCategoryScoreList;
console.log(this.firstCategoryScoreList);
if (res.data == [] || !res.data) {
this.itemshow2 = true;
this.itemshow = false;
} else {
var list = [];
this.categoryTableNameList.forEach((e) => {
e.childrenTableNameList.forEach((el) => {
list.push(el.categoryId);
});
});
this.categoryAgeFractionList.forEach((el) => {
var list1 = list.map((e) => {
var num = 0;
var number = el.categoryAvgFractionList.findIndex(
(o) => o.categoryId == e
);
if (number != -1) {
num = el.categoryAvgFractionList[number].avgCategoryFraction;
}
return num;
});
el.list = list1;
});
let seriesData = [];
let yindicator = [];
this.categoryScoreList.forEach((el) => {
console.log(el);
seriesData.push(el.itemFraction);
if (el.avgCategoryName == null) {
el.avgCategoryName = "暂无";
}
yindicator.push({
name: el.categoryName + " " + "(" + el.avgCategoryName + "" + ")",
max: el.maxFraction,
});
});
var myChart = echarts.init(document.getElementById("chart"));
let option = {
//
color: "blue",
radar: {
name: {
show: true,
color: "black",
},
center: ["50%", "50%"],
//
indicator: yindicator,
shape: "polygon", //, circle:,polygon:()
},
series: [
{
type: "radar",
label: {
show: true,
color: "blue", //
},
areaStyle: {}, //
data: [
{
name: "成绩区域",
value: seriesData,
},
],
areaStyle: {
color: new echarts.graphic.RadialGradient(0.1, 0.6, 1, [
{
color: "rgba(50, 50, 255, 0.1)",
offset: 0,
},
{
color: "rgba(50, 50, 200, 0.9)",
offset: 1,
},
]),
},
},
],
};
//
myChart.setOption(option);
this.itemshow2 = false;
this.itemshow = true;
}
});
},
//
batchCodeclick(row) {
this.batchCodeName = row.batchName;
this.batchCodeId = row.id;
this.analysisqueryParams.batchCode = row.batchCode;
this.batchCodeshow = false;
this.analysisinfo();
},
//
batchCodeshowclick() {
if (this.analysisqueryParams.kindergartenId == "") {
this.$message.error("请先选择幼儿园");
} else {
this.testScore();
this.batchCodeshow = true;
}
},
//
testScore() {
testScoreBatch(this.testqueryParams).then((res) => {
this.testScorelist = res.rows;
this.total4 = res.total;
});
},
//
batchCodecancel() {
this.batchCodeshow = false;
},
//
kindergartencancel() {
this.kindergartenshow = false;
},
//
kindergartenNameclick(row) {
this.analysisqueryParams.kindergartenId = row.id;
this.kindergartenName = row.kindergartenName;
this.kindergartenId = row.id;
this.kindergartenshow = false;
},
getList() {
tKindergartenInfo(this.kindergartenType).then((res) => {
this.type = res.data[0];
this.type2 = res.data[1];
});
//
getRoleInfo().then((res) => {
console.log(res);
});
//list
listKindergartenInfo(this.kqueryParams).then((response) => {
this.kindergartenList = response.rows;
this.total1 = response.total;
// console.log(this.kindergartenList);
});
},
//
reset() {
this.form = {};
this.resetForm("form");
},
},
};
</script>
<style scoped='scss'>
</style>

View File

@ -426,6 +426,7 @@
border-right: 1px solid #ededed;
border-bottom: 1px solid #ededed;
position: relative;
overflow: hidden;
"
>
<span style="position: absolute; left: 5%; top: 10px"
@ -436,15 +437,7 @@
}}({{ item.measureUnit }})</span
>
<span
style="
margin-top: 20px;
float: left;
margin-left: 6%;
margin-top: 14%;
"
>评价</span
>
<span style="position: absolute; left: 6%; top: 70%">评价</span>
<div
style="
width: 70%;
@ -455,7 +448,14 @@
"
>
<div
style="position: absolute; top: 1px; left: 79%; line-height: 20px"
style="
position: absolute;
top: 1px;
left: 79%;
line-height: 20px;
overflow: hidden;
width: 32px;
"
>
{{
((((item.maxScore - item.minScore) / item.minScore) *
@ -476,7 +476,14 @@
"
></div>
<div
style="position: absolute; top: 1px; left: 59%; line-height: 20px"
style="
position: absolute;
top: 1px;
left: 59%;
overflow: hidden;
line-height: 20px;
width: 32px;
"
>
{{
((((item.maxScore - item.minScore) / item.minScore) *
@ -497,7 +504,14 @@
"
></div>
<div
style="position: absolute; top: 1px; left: 39%; line-height: 20px"
style="
position: absolute;
top: 1px;
left: 39%;
line-height: 20px;
overflow: hidden;
width: 32px;
"
>
{{
((((item.maxScore - item.minScore) / item.minScore) *
@ -519,7 +533,14 @@
></div>
<div
style="position: absolute; top: 1px; left: 19%; line-height: 20px"
style="
position: absolute;
top: 1px;
left: 19%;
line-height: 20px;
overflow: hidden;
width: 32px;
"
>
{{
((((item.maxScore - item.minScore) / item.minScore) *
@ -540,7 +561,14 @@
"
></div>
<div
style="position: absolute; top: 1px; left: -1%; line-height: 20px"
style="
position: absolute;
top: 1px;
left: -1%;
line-height: 20px;
overflow: hidden;
width: 32px;
"
>
{{ item.minScore == null ? 0 : item.minScore }}
</div>
@ -561,6 +589,8 @@
top: 1px;
right: -1%;
line-height: 20px;
overflow: hidden;
width: 32px;
"
>
{{ item.maxScore == null ? 100 : item.maxScore }}
@ -744,6 +774,8 @@ export default {
pageSize: 10,
studentId: "",
batchCode: "",
// studentId: "12",
// batchCode: "PC202208030005",
// studentId: "14",
// batchCode: "PC202208030005",
// studentId: "9",
@ -773,6 +805,8 @@ export default {
this.itemshow2 = true;
this.itemshow = false;
} else {
this.itemshow = true;
this.itemshow2 = false;
this.studentscorelist = res.rows;
console.log(this.studentscorelist);
}

View File

@ -798,7 +798,7 @@
<div
ref="chart"
id="chart"
style="width: 100%; height: 320px"
style="width: 450px; height: 320px;margin:0 auto"
></div>
<div
@ -912,7 +912,7 @@
<div style="text-align: center">
{{ item.levelMinScore }}~{{ item.levelMaxScore }}
</div>
</span>
</span>
</div> -->
<div></div>
</div>
@ -1061,7 +1061,7 @@ export default {
//
studentanalysis() {
analysis(this.analysisstudent).then((res) => {
if (!res.data || res.data == "" || res.data == []) {
if (!res.data || res.data == "") {
this.itemshow2 = true;
this.itemshow = false;
} else {
@ -1094,6 +1094,7 @@ export default {
{
type: "pie",
radius: ["40%", "70%"],
// center: ["37%", "50%"],
itemStyle: {
normal: {
color: function (colors) {

View File

@ -299,6 +299,7 @@
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择出生日期"
:picker-options="pickerOptions"
>
</el-date-picker>
</el-form-item>
@ -701,6 +702,11 @@ export default {
}
};
return {
pickerOptions: {
disabledDate(time) {
return time.getTime() > Date.now();
},
},
//
parentStudentInfoList: [],
//
@ -1373,7 +1379,7 @@ export default {
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal
.confirm('是否确认删除该学生信息吗?')
.confirm("是否确认删除该学生信息吗?")
.then(function () {
return delStudentInfo(ids);
})

View File

@ -0,0 +1,645 @@
<template>
<div class="app-container">
<el-form
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="90px"
>
<el-form-item label="所属幼儿园" prop="categoryName">
<el-button
@click="kindergartenshow = true"
v-if="kindergartenName == '请选择幼儿园'"
style="width: 250px; text-align: left; height: 32px; color: #c0c4cc"
>{{ kindergartenName }}</el-button
>
<el-button
@click="kindergartenshow = true"
style="width: 250px; text-align: left; height: 32px"
v-else
>{{ kindergartenName }}</el-button
>
</el-form-item>
<el-form-item label="所属批次" prop="categoryName" label-width="70px">
<el-button
@click="batchCodeshowclick"
style="width: 250px; text-align: left; height: 32px; color: #c0c4cc"
v-if="batchCodeName == '请选择批次'"
>{{ batchCodeName }}</el-button
>
<el-button
@click="batchCodeshowclick"
style="width: 250px; text-align: left; height: 32px"
v-else
>{{ batchCodeName }}</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<!-- // -->
<el-dialog
width="500px"
title="选择批次"
:visible.sync="batchCodeshow"
append-to-body
style="margin-top: 20px"
:before-close="batchCodecancel"
>
<el-table :data="testScorelist" align="center" style="margin-top: 0px">
<el-table-column label="请选择" width="70" align="center">
<template slot-scope="scope">
<el-button
type="primary"
style="width: 20px; height: 20px"
v-if="batchCodeId == scope.row.id"
circle
@click="batchCodeclick(scope.row)"
></el-button>
<el-button
v-else
style="width: 15px; height: 15px"
circle
@click="batchCodeclick(scope.row)"
></el-button>
</template>
</el-table-column>
<el-table-column
property="batchCode"
label="批次编号"
width="190"
align="center"
/>
<el-table-column
property="batchName"
label="批次名称"
width="190"
align="center"
/>
</el-table>
<pagination
v-show="total4 > 0"
:total="total4"
:page.sync="testqueryParams.pageNum"
:limit.sync="testqueryParams.pageSize"
@pagination="testScore"
/>
</el-dialog>
<!-- // -->
<el-dialog
width="850px"
title="选择所属幼儿园"
:visible.sync="kindergartenshow"
append-to-body
:before-close="kindergartencancel"
>
<el-table :data="kindergartenList">
<el-table-column label="请选择" width="70" align="center">
<template slot-scope="scope">
<el-button
type="primary"
style="width: 15px; height: 15px"
circle
@click="kindergartenNameclick(scope.row)"
v-if="kindergartenId == scope.row.id"
></el-button>
<el-button
v-else
style="width: 15px; height: 15px"
circle
@click="kindergartenNameclick(scope.row)"
></el-button>
</template>
</el-table-column>
<el-table-column
property="kindergartenName"
label="幼儿园名字"
width="150"
align="center"
>
</el-table-column>
<el-table-column
property="kindergartenAddress"
label="幼儿园地址"
width="150"
align="center"
>
</el-table-column>
<el-table-column
label="幼儿园所在组织"
align="center"
prop="organizeName"
width="150"
>
</el-table-column>
<el-table-column
property="contacts"
label="联系人"
width="150"
align="center"
>
</el-table-column>
<el-table-column
property="phone"
label="联系电话"
width="150"
align="center"
>
</el-table-column>
</el-table>
<pagination
v-show="total1 > 0"
:total="total1"
:page.sync="kqueryParams.pageNum"
:limit.sync="kqueryParams.pageSize"
@pagination="getList"
/>
</el-dialog>
<el-row v-show="itemshow">
<el-col :span="12" class="card-box" style=""
><div
id="main"
style="width: 500px; height: 300px; margin: 0 auto"
></div>
</el-col>
<el-col v-show="yclassname2 == []" :span="12" class="card-box" style=""
><div
id="main2"
style="width: 500px; height: 300px; margin: 0 auto"
></div>
</el-col>
<el-col v-show="yclassname3 == []" :span="12" class="card-box" style=""
><div
id="main3"
style="width: 500px; height: 300px; margin: 0 auto"
></div>
</el-col>
<el-col :span="12" class="card-box" style="padding-top: 50px">
<el-table
ref="singleTable"
:data="studentlist"
highlight-current-row
style="margin: 0 auto; width: 530px"
>
<el-table-column type="index" width="130" label="排名" align="center">
</el-table-column>
<el-table-column
property="studentName"
label="姓名"
width="130"
align="center"
>
</el-table-column>
<el-table-column
property="className"
label="班级"
width="130"
align="center"
>
</el-table-column>
<el-table-column
property="itemFraction"
label="分数"
width="140"
align="center"
>
</el-table-column>
</el-table>
</el-col>
</el-row>
<el-row :gutter="20" v-if="itemshow2">
<el-col :span="24" :offset="0">
<el-card>
<div slot="header" style="text-align: center">
<img style="width: 40px" src="@/icons/笑脸.png" alt="" />
<div><!-- card title -->该学生此批次暂没数据</div>
</div>
<!-- card body -->
</el-card>
</el-col>
</el-row>
</div>
</template>
<script>
import * as echarts from "echarts";
import {
listKindergartenInfo,
tKindergartenInfo,
} from "@/api/system/kindergartenInfo";
import { getRoleInfo, testScoreBatch } from "@/api/system/quality";
import { StudentList, ClassList } from "@/api/system/survey";
export default {
name: "KindergartenPhysicalTest",
components: {},
data() {
return {
itemshow: false,
itemshow2: false,
total1: 0,
total4: 0,
//
kindergartenshow: false,
batchCodeshow: false,
//
showSearch: true,
//
form: {},
//
kindergartenType: "kindergarten_type",
type: {},
type2: {},
//
kqueryParams: {
pageNum: 1,
pageSize: 10,
organizeId: null,
kindergartenName: null,
kindergartenAddress: null,
kindergartenType: null,
phone: null,
contacts: null,
},
//list
kindergartenList: [],
//
kindergartenName: "请选择幼儿园",
//ID
kindergartenId: "",
//
batchCodeName: "请选择批次",
//ID
batchCodeId: "",
//list
testScorelist: [],
//
testqueryParams: {
pageNum: 1,
pageSize: 10,
},
studentlist: [],
//
classqueryParams: {
kindergartenId: "",
batchCode: "",
pageNum: 1,
pageSize: 10,
// kindergartenId: "12",
// batchCode: "PC202208030005",
},
studentlistqueryParams: {
kindergartenId: "",
batchCode: "",
pageNum: 1,
pageSize: 10,
// kindergartenId: "1",
// batchCode: "PC202208030005",
},
LARGECLASS: "LARGE_CLASS",
MIDDLECLASS: "MIDDLE_CLASS",
SMALLCLASS: "SMALL_CLASS",
yclassname1: [],
yclassname2: [],
yclassname3: [],
};
},
mounted() {},
created() {
this.getList();
this.StudentListinfo();
// this.ClassListinfo();
},
methods: {
ClassListinfo() {
ClassList(this.classqueryParams).then((res) => {
var classscore1 = [];
var classscore2 = [];
var classscore3 = [];
res.rows.forEach((e) => {
if (e.classType == this.LARGECLASS) {
this.yclassname1.push(e.className);
if (
e.itemScoreAll == "" ||
!e.itemScoreAll ||
e.itemScoreAll == null
) {
classscore1.push(0);
} else {
classscore1.push(e.itemScoreAll);
}
} else if (e.classType == this.MIDDLECLASS) {
this.yclassname2.push(e.className);
if (
e.itemScoreAll == "" ||
!e.itemScoreAll ||
e.itemScoreAll == null
) {
classscore2.push(0);
} else {
classscore2.push(e.itemScoreAll);
}
} else if (e.classType == this.SMALLCLASS) {
this.yclassname3.push(e.className);
if (
e.itemScoreAll == "" ||
!e.itemScoreAll ||
e.itemScoreAll == null
) {
classscore3.push(0);
} else {
classscore3.push(e.itemScoreAll);
}
}
});
var app = {};
var myChart = echarts.init(document.getElementById("main"));
var myChart2 = echarts.init(document.getElementById("main2"));
var myChart3 = echarts.init(document.getElementById("main3"));
var option;
var option2;
var option3;
const posList = [
"left",
"right",
"top",
"bottom",
"inside",
"insideTop",
"insideLeft",
"insideRight",
"insideBottom",
"insideTopLeft",
"insideTopRight",
"insideBottomLeft",
"insideBottomRight",
];
app.configParameters = {
rotate: {
min: 0,
max: 90,
},
align: {
options: {
left: "left",
center: "center",
right: "right",
},
},
verticalAlign: {
options: {
top: "top",
middle: "middle",
bottom: "bottom",
},
},
position: {
options: posList.reduce(function (map, pos) {
map[pos] = pos;
return map;
}, {}),
},
distance: {
min: 0,
max: 100,
},
};
app.config = {
rotate: 0,
align: "center",
verticalAlign: "middle",
position: "top",
distance: 15,
onChange: function () {
const labelOption = {
rotate: app.config.rotate,
align: app.config.align,
verticalAlign: app.config.verticalAlign,
position: app.config.position,
distance: app.config.distance,
};
myChart.setOption({
series: [
{
label: labelOption,
},
{
label: labelOption,
},
{
label: labelOption,
},
{
label: labelOption,
},
],
});
},
};
const labelOption = {
show: true,
position: app.config.position,
distance: app.config.distance,
align: app.config.align,
verticalAlign: app.config.verticalAlign,
rotate: app.config.rotate,
formatter: "{c}",
fontSize: 16,
rich: {
name: {},
},
};
option = {
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
},
},
legend: {},
xAxis: [
{
type: "category",
axisTick: { show: false },
data: this.yclassname1,
},
],
yAxis: [
{
type: "value",
},
],
series: [
{
type: "bar",
barGap: 0,
color: "#00B050",
label: labelOption,
emphasis: {
focus: "series",
},
data: classscore1,
},
],
};
option2 = {
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
},
},
legend: {},
xAxis: [
{
type: "category",
axisTick: { show: false },
data: this.yclassname2,
},
],
yAxis: [
{
type: "value",
},
],
series: [
{
type: "bar",
barGap: 0,
color: "#00B050",
label: labelOption,
emphasis: {
focus: "series",
},
data: classscore2,
},
],
};
option3 = {
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
},
},
legend: {},
xAxis: [
{
type: "category",
axisTick: { show: false },
data: this.yclassname3,
},
],
yAxis: [
{
type: "value",
},
],
series: [
{
type: "bar",
barGap: 0,
color: "#00B050",
label: labelOption,
emphasis: {
focus: "series",
},
data: classscore3,
},
],
};
option && myChart.setOption(option);
option2 && myChart2.setOption(option2);
option3 && myChart3.setOption(option3);
this.itemshow = true;
this.itemshow2 = false;
});
},
StudentListinfo() {
StudentList(this.studentlistqueryParams).then((res) => {
this.studentlist = res.rows;
});
},
//
batchCodeclick(row) {
this.batchCodeName = row.batchName;
this.batchCodeId = row.id;
this.classqueryParams.batchCode = row.batchCode;
this.batchCodeshow = false;
this.ClassListinfo();
},
//
batchCodeshowclick() {
if (this.classqueryParams.kindergartenId == "") {
this.$message.error("请先选择幼儿园");
} else {
this.testScore();
this.batchCodeshow = true;
}
},
//
testScore() {
testScoreBatch(this.testqueryParams).then((res) => {
this.testScorelist = res.rows;
this.total4 = res.total;
});
},
//
batchCodecancel() {
this.batchCodeshow = false;
},
//
kindergartencancel() {
this.kindergartenshow = false;
},
//
kindergartenNameclick(row) {
this.classqueryParams.kindergartenId = row.id;
this.kindergartenName = row.kindergartenName;
this.kindergartenId = row.id;
this.kindergartenshow = false;
},
getList() {
tKindergartenInfo(this.kindergartenType).then((res) => {
this.type = res.data[0];
this.type2 = res.data[1];
});
//
getRoleInfo().then((res) => {
console.log(res);
});
//list
listKindergartenInfo(this.kqueryParams).then((response) => {
this.kindergartenList = response.rows;
this.total1 = response.total;
// console.log(this.kindergartenList);
});
},
//
reset() {
this.form = {};
this.resetForm("form");
},
},
};
</script>
<style scoped='scss'>
::v-deep .el-card__header {
border: none;
}
</style>

View File

@ -325,6 +325,37 @@
:before-close="cancel"
>
<el-form ref="form" :model="form2" :rules="rules" label-width="130px">
<el-form-item label="所属幼儿园" prop="classId">
<el-button
this.xmname="row.className;"
type=""
@click="yryinnerVisible = true"
style="
width: 360px;
text-align: left;
height: 36px;
color: #c0c4cc;
padding-left: -10px;
"
>请选择所属幼儿园</el-button
>
<!-- <el-button
this.xmname="row.className;"
type=""
@click="innerVisible = true"
v-if="xmname == '请选择所属幼儿园'"
v-else
style="
width: 360px;
text-align: left;
height: 36px;
padding-left: -10px;
"
>{{ xmname }}</el-button
> -->
</el-form-item>
<el-form-item label="所属班级" prop="classId">
<el-button
this.xmname="row.className;"
@ -1442,7 +1473,7 @@ export default {
// str = str.replace(/[^\d^\.]+/g, "");
// this.form.itemAvgScore = str;
}
},
//