|
|
|
@ -0,0 +1,633 @@
|
|
|
|
|
<template>
|
|
|
|
|
<div class="class-evaluation-div">
|
|
|
|
|
<div class="score-record-list-div">
|
|
|
|
|
<div class="page-label-div">
|
|
|
|
|
<div class="page-label">
|
|
|
|
|
<img src="./image/pageLabel.png"/>
|
|
|
|
|
<span>评分记录版</span>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div v-if="!showLoading" class="score-list-div">
|
|
|
|
|
<div v-for="(item,index) in recordList" :key="item.score_id + '-' + index" class="message-item-div">
|
|
|
|
|
<div :class="(index%2 == 0?'message-row-div':'message-row-transform-div') + (index == 1?' opacity80':(index == 2?' opacity70':(index == 3?' opacity60':'')))">
|
|
|
|
|
<div v-if="index%2 == 0" class="message-icon-div">
|
|
|
|
|
<img src="./image/messageIcon.png"/>
|
|
|
|
|
</div>
|
|
|
|
|
<div v-if="index%2 == 1" class="message-time-div">
|
|
|
|
|
{{item.last_updated_time}}
|
|
|
|
|
</div>
|
|
|
|
|
<div class="message-info-div">
|
|
|
|
|
<div>
|
|
|
|
|
<span style="color: #8400FF">{{'[' + item.class_name + ']'}}</span>
|
|
|
|
|
<span style="color: #808000">{{'[' + item.be_evaluated_person_name + ']'}}</span>
|
|
|
|
|
同学
|
|
|
|
|
<span style="color: #0000FF">{{'“' + item.plandetail_name + '”'}}</span>
|
|
|
|
|
被
|
|
|
|
|
</div>
|
|
|
|
|
<div :class="parseInt(item.score) == 0?'default-style':(parseInt(item.score) > 0?'add-style':'reduce-style')">
|
|
|
|
|
{{(parseInt(item.score) == 0 ? '[评分' : (parseInt(item.score) > 0 ? '[加分' : '[减分')) + item.score + ']'}}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div v-if="index%2 == 0" class="message-time-div">
|
|
|
|
|
{{item.last_updated_time}}
|
|
|
|
|
</div>
|
|
|
|
|
<div v-if="index%2 == 1" class="message-icon-div transform-div">
|
|
|
|
|
<img src="./image/messageIcon.png"/>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div v-if="showLoading" class="show-loading-div">
|
|
|
|
|
<a-spin/>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="line-style-div">
|
|
|
|
|
<div class="line-style">
|
|
|
|
|
<div class="icon-tips-left"></div>
|
|
|
|
|
<div class="icon-tips-right"></div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="score-result-div">
|
|
|
|
|
<div class="page-label-div">
|
|
|
|
|
<div class="page-label">
|
|
|
|
|
<img src="./image/pageLabel.png"/>
|
|
|
|
|
<span>班级评比结果</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="task-search-div">
|
|
|
|
|
<div class="search-title">评价任务</div>
|
|
|
|
|
<div class="search-dom">
|
|
|
|
|
<a-select :value="taskName" style="width: 200px" @change="taskChange">
|
|
|
|
|
<a-select-option v-for="item in taskList" :key="item.task_id + '-' + item.task_name">
|
|
|
|
|
{{ item.task_name }}
|
|
|
|
|
</a-select-option>
|
|
|
|
|
</a-select>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<DateChoose @flushDate="flushDate" :begin_date="begin_date" :end_date="end_date"></DateChoose>
|
|
|
|
|
<div v-if="isRecording == false" class="class-evaluation-echart-div">
|
|
|
|
|
<div id="totalScoreEchart" style="width:100%;height: 100%"></div>
|
|
|
|
|
</div>
|
|
|
|
|
<div v-if="isRecording == true" class="recording-div">
|
|
|
|
|
<a-spin tip="正在进行数据汇总..."></a-spin>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<script>
|
|
|
|
|
import interConfig from './interConfig';
|
|
|
|
|
import {Select,Spin} from 'ant-design-vue';
|
|
|
|
|
import DateChoose from '../common/dateChoose.vue';
|
|
|
|
|
import moment from 'moment';
|
|
|
|
|
import GUID_UUID from '../../../../../../../global-llibs/guid-uuid';
|
|
|
|
|
import * as echarts from 'echarts';
|
|
|
|
|
export default{
|
|
|
|
|
data(){
|
|
|
|
|
return {
|
|
|
|
|
isRecording:null,//是否正在汇总
|
|
|
|
|
guid:"",
|
|
|
|
|
showLoading: true,
|
|
|
|
|
nowDate: "",
|
|
|
|
|
recordList: [],
|
|
|
|
|
scrollTimer: null,
|
|
|
|
|
pageNumber: 1,
|
|
|
|
|
begin_date: null,
|
|
|
|
|
end_date: null,
|
|
|
|
|
taskId: "",//当前任务ID
|
|
|
|
|
taskName: "",//当前任务名称
|
|
|
|
|
taskList: [],//任务列表
|
|
|
|
|
gatherId:"",//汇总任务ID
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
mounted(){
|
|
|
|
|
if (this.scrollTimer == null) {
|
|
|
|
|
this.scrollTimer = setInterval(this.listSuperfusionTaskScore, 2000);
|
|
|
|
|
}
|
|
|
|
|
this.getRecordParam();
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
listSuperfusionTaskScore: function () {
|
|
|
|
|
let param = {
|
|
|
|
|
org_id: this.BaseConfig.person_info_my.bureau_id,
|
|
|
|
|
page_number: this.pageNumber,
|
|
|
|
|
page_size: 4
|
|
|
|
|
};
|
|
|
|
|
this.InterfaceConfig.callInterface([{
|
|
|
|
|
url: interConfig.listSuperfusionTaskScore.url,
|
|
|
|
|
params: param,
|
|
|
|
|
method: interConfig.listSuperfusionTaskScore.method,
|
|
|
|
|
isTestLogin: interConfig.listSuperfusionTaskScore.isTestLogin,
|
|
|
|
|
}], (result) => {
|
|
|
|
|
this.showLoading = false;
|
|
|
|
|
let resData = result[0].data;
|
|
|
|
|
if (result[0].status === 200) {
|
|
|
|
|
if (resData.code === 2000) {
|
|
|
|
|
this.recordList = resData.data.list;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
getNowTime: function () {
|
|
|
|
|
let _this= this;
|
|
|
|
|
let p = new Promise(function (resolve,reject) {
|
|
|
|
|
_this.InterfaceConfig.callInterface([{
|
|
|
|
|
url: interConfig.getNowTime.url,
|
|
|
|
|
params: {},
|
|
|
|
|
method: interConfig.getNowTime.method,
|
|
|
|
|
isTestLogin: interConfig.getNowTime.isTestLogin,
|
|
|
|
|
}], (result) => {
|
|
|
|
|
let resData = result[0].data;
|
|
|
|
|
if (result[0].status === 200) {
|
|
|
|
|
if (resData.code === 2000) {
|
|
|
|
|
let year = resData.data.year;
|
|
|
|
|
let month = resData.data.month;
|
|
|
|
|
let day = resData.data.day;
|
|
|
|
|
resolve({
|
|
|
|
|
begin_date:moment(year + "-" + month + "-01"),
|
|
|
|
|
end_date:moment(year + "-" + month + "-" + day),
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
return p;
|
|
|
|
|
},
|
|
|
|
|
getTaskList: function () {
|
|
|
|
|
let _this= this;
|
|
|
|
|
let p = new Promise(function (resolve,reject) {
|
|
|
|
|
let param = {
|
|
|
|
|
system_type: 3,
|
|
|
|
|
school_id: _this.BaseConfig.person_info_my.bureau_id,
|
|
|
|
|
pageNumber: 1,
|
|
|
|
|
pageSize: 100000000000000000
|
|
|
|
|
}
|
|
|
|
|
_this.InterfaceConfig.callInterface([{
|
|
|
|
|
url: interConfig.listDailyTask.url,
|
|
|
|
|
params: param,
|
|
|
|
|
method: interConfig.listDailyTask.method,
|
|
|
|
|
isTestLogin: interConfig.listDailyTask.isTestLogin,
|
|
|
|
|
}], (result) => {
|
|
|
|
|
let resData = result[0].data;
|
|
|
|
|
if (result[0].status === 200) {
|
|
|
|
|
if (resData.code === 2000) {
|
|
|
|
|
resolve(resData.data);
|
|
|
|
|
// _this.taskList = resData.data.dataList;
|
|
|
|
|
// if (_this.taskList && _this.taskList.length > 0) {
|
|
|
|
|
// _this.taskId = _this.taskList[0].task_id;
|
|
|
|
|
// _this.taskName = _this.taskList[0].task_name;
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
return p;
|
|
|
|
|
},
|
|
|
|
|
getRecordParam:function () {
|
|
|
|
|
//数据汇总前的参数获取
|
|
|
|
|
let _this = this;
|
|
|
|
|
this.getNowTime().then(function (data) {
|
|
|
|
|
_this.begin_date = data.begin_date;
|
|
|
|
|
_this.end_date = data.end_date;
|
|
|
|
|
return _this.getTaskList();
|
|
|
|
|
}).then(function (data) {
|
|
|
|
|
_this.taskList = data.dataList;
|
|
|
|
|
if (_this.taskList && _this.taskList.length > 0) {
|
|
|
|
|
_this.taskId = _this.taskList[0].task_id;
|
|
|
|
|
_this.taskName = _this.taskList[0].task_name;
|
|
|
|
|
_this.gatherClass();
|
|
|
|
|
}
|
|
|
|
|
}).catch(function (reason) {
|
|
|
|
|
console.log(reason)
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
gatherClass: function () {
|
|
|
|
|
this.guid = GUID_UUID.guid();
|
|
|
|
|
//开始汇总
|
|
|
|
|
this.isRecording = true;
|
|
|
|
|
let param = {
|
|
|
|
|
school_id:this.BaseConfig.person_info_my.bureau_id,
|
|
|
|
|
person_id:this.BaseConfig.userInfo.person_id,
|
|
|
|
|
identity_id:this.BaseConfig.userInfo.identity_id,
|
|
|
|
|
task_id:this.taskId,
|
|
|
|
|
begin_time:moment(this.begin_date).format("YYYY-MM-DD"),
|
|
|
|
|
end_time:moment(this.end_date).format("YYYY-MM-DD"),
|
|
|
|
|
guid:this.guid,
|
|
|
|
|
}
|
|
|
|
|
this.InterfaceConfig.callInterface([{
|
|
|
|
|
url: interConfig.gatherClass.url,
|
|
|
|
|
params: param,
|
|
|
|
|
method: interConfig.gatherClass.method,
|
|
|
|
|
isTestLogin: interConfig.gatherClass.isTestLogin,
|
|
|
|
|
}], (result) => {
|
|
|
|
|
let resData = result[0].data;
|
|
|
|
|
if (result[0].status === 200) {
|
|
|
|
|
if (resData.code === 2000) {
|
|
|
|
|
this.getGatherTaskReportFlag();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
getGatherTaskReportFlag:function () {
|
|
|
|
|
//轮询是否汇总完成
|
|
|
|
|
let param = {
|
|
|
|
|
guid:this.guid,
|
|
|
|
|
}
|
|
|
|
|
this.InterfaceConfig.callInterface([{
|
|
|
|
|
url: interConfig.getGatherTaskReportFlag.url,
|
|
|
|
|
params: param,
|
|
|
|
|
method: interConfig.getGatherTaskReportFlag.method,
|
|
|
|
|
isTestLogin: interConfig.getGatherTaskReportFlag.isTestLogin,
|
|
|
|
|
}], (result) => {
|
|
|
|
|
let resData = result[0].data;
|
|
|
|
|
if (result[0].status === 200) {
|
|
|
|
|
if (resData.code === 2000) {
|
|
|
|
|
let gather_flag = resData.data.gather_flag;//1 汇总完成
|
|
|
|
|
let gather_info = resData.data.gather_info;//true 成功 false 失败
|
|
|
|
|
if(gather_flag == 0){
|
|
|
|
|
this.getGatherTaskReportFlag();
|
|
|
|
|
}else if(gather_flag == 1){
|
|
|
|
|
if(gather_info == "true"){
|
|
|
|
|
this.gatherId = resData.data.gather_id;
|
|
|
|
|
this.isRecording = false;
|
|
|
|
|
this.getEchartOption();
|
|
|
|
|
}else if(gather_info == "false"){
|
|
|
|
|
console.log("汇总失败")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
getEchartOption: function () {
|
|
|
|
|
//获取图表数据集
|
|
|
|
|
let param = {
|
|
|
|
|
gather_id:this.gatherId,
|
|
|
|
|
org_id:this.BaseConfig.person_info_my.bureau_id,
|
|
|
|
|
}
|
|
|
|
|
this.InterfaceConfig.callInterface([{
|
|
|
|
|
url: interConfig.totalScoreChart.url,
|
|
|
|
|
params: param,
|
|
|
|
|
method: interConfig.totalScoreChart.method,
|
|
|
|
|
isTestLogin: interConfig.totalScoreChart.isTestLogin,
|
|
|
|
|
}], (result) => {
|
|
|
|
|
let resData = result[0].data;
|
|
|
|
|
if (result[0].status === 200) {
|
|
|
|
|
if (resData.code === 2000) {
|
|
|
|
|
this.$nextTick(function () {
|
|
|
|
|
this.buildEchart(resData.data);
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
buildEchart:function (data) {
|
|
|
|
|
//构建图表
|
|
|
|
|
let echart = echarts.getInstanceByDom(document.getElementById("totalScoreEchart"));
|
|
|
|
|
if (echart == null) {
|
|
|
|
|
echart = echarts.init(document.getElementById('totalScoreEchart'));
|
|
|
|
|
}
|
|
|
|
|
let scoreList = data.score_list;
|
|
|
|
|
let colorArray = data.colorArray;
|
|
|
|
|
let xData = [];
|
|
|
|
|
let schoolScoreAvgData = [];//学校平均分
|
|
|
|
|
let classScoreData = [];//班级得分
|
|
|
|
|
if (scoreList && scoreList.length > 0) {
|
|
|
|
|
for(let i = 0,len = scoreList.length;i < len; i++){
|
|
|
|
|
xData.push(scoreList[i].class_name);
|
|
|
|
|
schoolScoreAvgData.push(data.school_avg_score);
|
|
|
|
|
classScoreData.push({
|
|
|
|
|
value:scoreList[i].real_convert_score,
|
|
|
|
|
itemStyle:{
|
|
|
|
|
color:colorArray[i]?colorArray[i]:"#31a8fa"
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
echart.setOption(
|
|
|
|
|
{
|
|
|
|
|
tooltip: {
|
|
|
|
|
trigger: 'axis'
|
|
|
|
|
},
|
|
|
|
|
legend: {
|
|
|
|
|
data: ['学校平均分']
|
|
|
|
|
},
|
|
|
|
|
grid: {
|
|
|
|
|
left: '3%',
|
|
|
|
|
right: '4%',
|
|
|
|
|
bottom: "50px",
|
|
|
|
|
containLabel: true
|
|
|
|
|
},
|
|
|
|
|
xAxis: {
|
|
|
|
|
type: 'category',
|
|
|
|
|
data: xData,
|
|
|
|
|
axisLabel:{
|
|
|
|
|
rotate:30,
|
|
|
|
|
show:true
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
yAxis: {
|
|
|
|
|
name: "分数",
|
|
|
|
|
type: 'value',
|
|
|
|
|
// axisLabel: {
|
|
|
|
|
// formatter: '{value} °C'
|
|
|
|
|
// }
|
|
|
|
|
},
|
|
|
|
|
dataZoom: [//X轴滑动条
|
|
|
|
|
{
|
|
|
|
|
type: 'slider', //滑动条
|
|
|
|
|
show: true, //开启
|
|
|
|
|
realtime: true,
|
|
|
|
|
start: 0, //初始化时,滑动条宽度开始标度
|
|
|
|
|
end: 50 //初始化时,滑动条宽度结束标度
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
series: [
|
|
|
|
|
{
|
|
|
|
|
name: '学校平均分',
|
|
|
|
|
type: 'line',
|
|
|
|
|
data: schoolScoreAvgData,
|
|
|
|
|
// markPoint: {
|
|
|
|
|
// data: [
|
|
|
|
|
// {type: 'max', name: '最大值'},
|
|
|
|
|
// {type: 'min', name: '最小值'}
|
|
|
|
|
// ]
|
|
|
|
|
// },
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: '班级得分',
|
|
|
|
|
type: 'bar',
|
|
|
|
|
data: classScoreData,
|
|
|
|
|
barWidth:20
|
|
|
|
|
},
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
},
|
|
|
|
|
taskChange: function (value) {
|
|
|
|
|
let taskId = value.substring(0, value.indexOf('-'));
|
|
|
|
|
if (parseInt(this.taskId) != parseInt(taskId)) {
|
|
|
|
|
this.taskId = taskId;
|
|
|
|
|
this.taskName = value.substring(value.indexOf('-') + 1);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
flushDate: function (param) {
|
|
|
|
|
this.begin_date = param.beginDate;
|
|
|
|
|
this.end_date = param.endDate;
|
|
|
|
|
this.gatherClass();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
beforeDestroy(){
|
|
|
|
|
if (this.scrollTimer) {
|
|
|
|
|
clearInterval(this.scrollTimer);
|
|
|
|
|
this.scrollTimer = null
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
components: {
|
|
|
|
|
ASelect: Select,
|
|
|
|
|
ASelectOption: Select.Option,
|
|
|
|
|
DateChoose,
|
|
|
|
|
ASpin:Spin
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
<style lang="scss">
|
|
|
|
|
.class-evaluation-div {
|
|
|
|
|
width: 100%;
|
|
|
|
|
min-height: 20rem;
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
.score-record-list-div {
|
|
|
|
|
width: 100%;
|
|
|
|
|
min-height: 15rem;
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
.page-label-div {
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 3rem;
|
|
|
|
|
margin-right: 1.5rem;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: flex-end;
|
|
|
|
|
align-items: center;
|
|
|
|
|
position: relative;
|
|
|
|
|
.page-label {
|
|
|
|
|
width: 6rem;
|
|
|
|
|
height: 3rem;
|
|
|
|
|
margin-right: 1.5rem;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
align-items: center;
|
|
|
|
|
position: relative;
|
|
|
|
|
img {
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 100%;
|
|
|
|
|
}
|
|
|
|
|
span {
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: 0.5rem;
|
|
|
|
|
color: white;
|
|
|
|
|
z-index: 1000;
|
|
|
|
|
font-size: 0.8rem;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
.score-list-div {
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 15rem;
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
.message-row-div {
|
|
|
|
|
width: 100%;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
margin-top: 0.2rem;
|
|
|
|
|
padding: 0.2rem 0.5rem;
|
|
|
|
|
.message-icon-div {
|
|
|
|
|
width: 25px;
|
|
|
|
|
height: 25px;
|
|
|
|
|
img {
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 100%;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.transform-div {
|
|
|
|
|
transform: rotateY(180deg); /* 水平镜像翻转 */
|
|
|
|
|
}
|
|
|
|
|
.message-info-div {
|
|
|
|
|
margin-left: 0.5rem;
|
|
|
|
|
padding: 0.5rem;
|
|
|
|
|
background-color: #f2f2f2;
|
|
|
|
|
border-radius: 10px;
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
font-size: 12px;
|
|
|
|
|
.add-style {
|
|
|
|
|
color: #a5c94b;
|
|
|
|
|
}
|
|
|
|
|
.reduce-style {
|
|
|
|
|
color: #fc012c;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.message-time-div {
|
|
|
|
|
margin-left: 0.5rem;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.message-row-transform-div {
|
|
|
|
|
width: 100%;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: flex-end;
|
|
|
|
|
align-items: center;
|
|
|
|
|
margin-top: 0.2rem;
|
|
|
|
|
padding: 0.2rem 0.5rem;
|
|
|
|
|
|
|
|
|
|
.message-icon-div {
|
|
|
|
|
width: 25px;
|
|
|
|
|
height: 25px;
|
|
|
|
|
img {
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 100%;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.transform-div {
|
|
|
|
|
transform: rotateY(180deg); /* 水平镜像翻转 */
|
|
|
|
|
}
|
|
|
|
|
.message-info-div {
|
|
|
|
|
margin-right: 0.5rem;
|
|
|
|
|
padding: 0.5rem;
|
|
|
|
|
background-color: #f2f2f2;
|
|
|
|
|
border-radius: 10px;
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
font-size: 12px;
|
|
|
|
|
.add-style {
|
|
|
|
|
color: #a5c94b;
|
|
|
|
|
}
|
|
|
|
|
.reduce-style {
|
|
|
|
|
color: #fc012c;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.message-time-div {
|
|
|
|
|
margin-right: 0.5rem;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.opacity80{
|
|
|
|
|
filter: alpha(opacity=80);
|
|
|
|
|
-moz-opacity: 0.8;
|
|
|
|
|
opacity: 0.8;
|
|
|
|
|
}
|
|
|
|
|
.opacity70{
|
|
|
|
|
filter: alpha(opacity=70);
|
|
|
|
|
-moz-opacity: 0.7;
|
|
|
|
|
opacity: 0.7;
|
|
|
|
|
}
|
|
|
|
|
.opacity60{
|
|
|
|
|
filter: alpha(opacity=60);
|
|
|
|
|
-moz-opacity: 0.6;
|
|
|
|
|
opacity: 0.6;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.show-loading-div{
|
|
|
|
|
min-height: 120px;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
align-items: center;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.line-style-div {
|
|
|
|
|
width: 100%;
|
|
|
|
|
padding: 0 0.5rem;
|
|
|
|
|
.line-style {
|
|
|
|
|
margin-top: 0.5rem;
|
|
|
|
|
width: 100%;
|
|
|
|
|
border-bottom: 2px solid #31a8fa;
|
|
|
|
|
position: relative;
|
|
|
|
|
.icon-tips-left {
|
|
|
|
|
width: 10px;
|
|
|
|
|
height: 10px;
|
|
|
|
|
border-radius: 10px;
|
|
|
|
|
background-color: #31a8fa;
|
|
|
|
|
position: absolute;
|
|
|
|
|
left: 0;
|
|
|
|
|
top: -5px;
|
|
|
|
|
}
|
|
|
|
|
.icon-tips-right {
|
|
|
|
|
width: 10px;
|
|
|
|
|
height: 10px;
|
|
|
|
|
border-radius: 10px;
|
|
|
|
|
background-color: #31a8fa;
|
|
|
|
|
position: absolute;
|
|
|
|
|
right: 0;
|
|
|
|
|
top: -5px;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.score-result-div {
|
|
|
|
|
width: 100%;
|
|
|
|
|
min-height: 20rem;
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
.page-label-div {
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 3rem;
|
|
|
|
|
margin-right: 1.5rem;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
position: relative;
|
|
|
|
|
.page-label {
|
|
|
|
|
width: 6rem;
|
|
|
|
|
height: 3rem;
|
|
|
|
|
margin-left: 1.5rem;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
align-items: center;
|
|
|
|
|
position: relative;
|
|
|
|
|
img {
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 100%;
|
|
|
|
|
}
|
|
|
|
|
span {
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: 0.5rem;
|
|
|
|
|
color: white;
|
|
|
|
|
z-index: 1000;
|
|
|
|
|
font-size: 0.8rem;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.task-search-div {
|
|
|
|
|
width: calc(100% - 8rem);
|
|
|
|
|
height: 3rem;
|
|
|
|
|
display: flex;
|
|
|
|
|
.search-title {
|
|
|
|
|
width: 100px;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
align-items: center;
|
|
|
|
|
font-size: 13px;
|
|
|
|
|
}
|
|
|
|
|
.search-dom {
|
|
|
|
|
width: calc(100% - 100px);
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
align-items: center;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.class-evaluation-echart-div{
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 20rem;
|
|
|
|
|
padding: 0.5rem;
|
|
|
|
|
}
|
|
|
|
|
.recording-div{
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 20rem;
|
|
|
|
|
padding: 0.5rem;
|
|
|
|
|
font-size: 1.5rem;
|
|
|
|
|
color: #666666;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
align-items: center;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|