KindergartenUI/src/views/system/comprehensive/index.vue
2023-07-20 11:32:59 +08:00

398 lines
13 KiB
Vue

<template>
<div class="app-container">
<el-form ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="90px">
<student style="width: 500px; display: inline" @itemlist="itemlists"></student>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">查看</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-row v-show="itemshow">
<el-col :span="24" class="card-box">
<el-card>
<div slot="header" style="text-align: center; margin-bottom: 10px">
<span>学生基本信息</span>
</div>
<div
class="el-table--enable-row-hover el-table--medium"
style="
margin-top: 10px;
padding-bottom: 20px;
border-bottom: 1px solid #f0f0f0;
padding-left: 20px;
"
>
<div style="display: flex; justify-content: space-around">
<div class="cell" style="width: 20%">姓名:{{ sythesizestudent.studentName }}</div>
<div
class="cell"
style="width: 20%"
>性别:{{ sythesizestudent.studentSex == "MALE" ? "男" : "女" }}</div>
<div class="cell" style="width: 20%">年龄:{{ sythesizestudent.studentAge }}岁</div>
<div class="cell" style="width: 20%">民族:{{ sythesizestudent.nationName }}</div>
<div class="cell" style="width: 20%">ID:{{ sythesizestudent.studentNumber }}</div>
</div>
<div style="display: flex; margin-top: 20px">
<div class="cell" style="width: 60%">所属幼儿园:{{ sythesizestudent.kindergartenName }}</div>
<div class="cell">班级:{{ sythesizestudent.className }}</div>
</div>
<div style="width: 60%; margin-top: 20px">
<div class="cell">地址:{{ sythesizestudent.kindergartenAddress }}</div>
</div>
</div>
</el-card>
</el-col>
<el-col :span="24" class="card-box">
<el-card style="margin-top: 10px">
<div
class="el-table--enable-row-hover el-table--medium"
style="
margin: 20px auto;
height: 110px;
text-align: center;
border-bottom: 1px solid #f0f0f0;
line-height: 40px;
"
>
<div style="text-align: center; font-size: 18px; margin-bottom: 10px">幼儿综合得分</div>
<div style="display: inline-block">
<span
style="
position: relative;
display: inline-block;
text-align: center;
"
v-for="(item, index) in sythesizestudent.firstItemCategoryList"
:key="index"
>
<span :style="index == 0 ? '' : 'margin:0 20px'">
{{
index == 0 ? null : "+"
}}
</span>
<span>{{ item.categoryName }}( {{ item.categoryScore }})</span>
</span>
</div>
<div style="display: inline-block; position: relative">
<span style="margin: 0 20px">=</span>
<span>综合得分({{ sythesizestudent.totalCategoryScore }})</span>
<span
style="
display: inline-block;
position: absolute;
top: 20px;
width: 80px;
left: 29px;
"
></span>
</div>
</div>
<div style="text-align: center; font-size: 18px; margin-top: 20px">获取徽章</div>
<div
style="
width: 70%;
display: flex;
text-align: center;
justify-content: space-around;
margin: 20px auto 10px;
"
>
<span v-for="(item, index) in sythesizestudent.categoryNameList" :key="index">
<img style="width: 60px; height: 60px" src="@/icons/金牌2.png" alt />
<div style="margin-top: 10px; font-size: 14px">{{ item }}</div>
</span>
</div>
</el-card>
</el-col>
<el-col :span="24" class="card-box" style="margin-top: 10px">
<el-card>
<div slot="header" 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-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 type="text/javascript" src="../jquery.min.js"></script>
<script>
import * as echarts from "echarts";
import student from "@/views/assembly/student.vue";
import { getRoleInfo } from "@/api/system/quality";
import { synthesize } from "@/api/system/comprehensive";
export default {
name: "comprehensive",
components: { student },
data() {
return {
itemshow: false,
itemshow2: false,
// 显示搜索条件
showSearch: true,
//学生基本信息
sythesizestudent: [],
// 综合体质分析查询参数
synthesizelist: {
studentId: "",
batchCode: ""
// studentId: "27",
// batchCode: "PC202208230011",
}
};
},
created() {
// this.synthesizeinfo();
},
methods: {
itemlists(studentId, batchCode) {
this.synthesizelist.studentId = studentId;
this.synthesizelist.batchCode = batchCode;
},
/** 查看按钮操作 */
handleQuery() {
this.synthesizeinfo();
},
//综合体质分析素质
synthesizeinfo() {
synthesize(this.synthesizelist).then(res => {
if (res.data == [] || !res.data) {
this.itemshow2 = true;
this.itemshow = false;
} else {
this.sythesizestudent = res.data;
let seriesData = [];
let yindicator = [];
if (res.data.physiqueCategoryList.length == 1) {
var obj = {
categoryName: "暂无",
categoryNameAbbreviate: "暂无",
categoryScore: null,
levelName: "暂无",
maxScore: null
};
res.data.physiqueCategoryList.push(obj);
res.data.physiqueCategoryList.push(obj);
res.data.physiqueCategoryList.push(obj);
}
if (res.data.physiqueCategoryList.length == 2) {
var obj = {
categoryName: "暂无",
categoryNameAbbreviate: "暂无",
categoryScore: null,
levelName: "暂无",
maxScore: null
};
res.data.physiqueCategoryList.push(obj);
res.data.physiqueCategoryList.push(obj);
}
res.data.physiqueCategoryList.forEach(el => {
seriesData.push(el.categoryScore);
if (el.levelName == null) {
el.levelName = "暂无";
}
yindicator.push({
name: el.categoryName,
max: el.maxScore
});
});
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;
// postImage();
// function postImage() {
// // 向后台发起请求保存图片到指定目录.
// $.ajax({
// type: "POST",
// dataType: "json",
// url: "http://192.168.16.62:8080",
// data: { picInfo: },
// success: function () {
// alert("通过post请求传输数据成功!");
// },
// });
// }
}
// var myChart = echarts.init(document.getElementById("chart"));
// var option;
// option = {
// color: ["#f6da22", "#bbe2e8", "#6cacde"],
// legend: {
// data: ["Allocated Budget", "Actual Spending"],
// },
// radar: {
// indicator: yindicator,
// color: "#fff",
// },
// series: [
// {
// name: "Budget vs spending",
// type: "radar",
// data: [
// {
// value: seriesData,
// name: "综合体质分析图",
// areaStyle: {
// color: new echarts.graphic.RadialGradient(0.1, 0.6, 1, [
// {
// color: "rgba(255, 145, 124, 0.1)",
// offset: 0,
// },
// {
// color: "rgba(255, 145, 124, 0.9)",
// offset: 1,
// },
// ]),
// },
// },
// ],
// },
// ],
// };
// option && myChart.setOption(option);
// option = {
// legend: {
// top: "bottom",
// },
// toolbox: {
// show: true,
// feature: {
// mark: { show: true },
// dataView: { show: true, readOnly: false },
// restore: { show: true },
// saveAsImage: { show: true },
// },
// },
// series: [
// {
// name: "Nightingale Chart",
// type: "pie",
// radius: '50%',
// center: ["50%", "50%"],
// roseType: "area",
// itemStyle: {
// normal: {
// color: function (colors) {
// var colorList = [
// "#91cd77",
// "#5470c6",
// "#fc8251",
// "#ef6567",
// "#f9c956",
// "#75bedc",
// "#FCEF03",
// "#E12BE4",
// "#0070C0",
// ];
// return colorList[colors.dataIndex];
// },
// },
// },
// data: seriesData,
// },
// ],
// };
// option && myChart.setOption(option);
});
},
getList() {
//用户权限
getRoleInfo().then(res => {
this.classqueryParams.kindergartenId = res.data.kindergartenId;
var user = res.data.roleKeys;
if (user.includes("enchou")) {
this.showyey = false;
return;
} else if (user.includes("teacher")) {
this.showyey = false;
return;
} else if (user.includes("parent")) {
this.showyey = false;
this.showbj = false;
return;
}
});
},
// 表单重置
reset() {
this.form = {};
this.resetForm("form");
}
}
};
</script>
<style scoped='scss'>
::v-deep .el-form {
display: inline;
}
</style>