提交 3a73cbf1 authored 作者: Yroc's avatar Yroc

'学生端优化完善'

上级 5b99ba3f
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* @Author: AnthonyD * @Author: AnthonyD
* @Date: 2023-03-28 15:25:05 * @Date: 2023-03-28 15:25:05
* @Last Modified by: AnthonyD * @Last Modified by: AnthonyD
* @Last Modified time: 2023-03-29 19:15:23 * @Last Modified time: 2023-04-18 17:21:31
*/ */
</script><!-- --> </script><!-- -->
<template> <template>
...@@ -21,8 +21,8 @@ export default { ...@@ -21,8 +21,8 @@ export default {
computed: {}, computed: {},
created() { created() {
console.log('图标数据'); // console.log('图标@@@@@@@@数据');
console.log(this.chart_data); // console.log(this.chart_data);
}, },
mounted() { mounted() {
this.initChart(); this.initChart();
...@@ -30,7 +30,9 @@ export default { ...@@ -30,7 +30,9 @@ export default {
methods: { methods: {
initChart() { initChart() {
let colors = ['#bcdfdc', '#47afa0', '#cd9f50'];
let series = this.changData(this.chart_data); let series = this.changData(this.chart_data);
// console.log(series);
let legend_data = this.chart_data.labers.map((item) => { let legend_data = this.chart_data.labers.map((item) => {
return item.key; return item.key;
}); });
...@@ -40,33 +42,26 @@ export default { ...@@ -40,33 +42,26 @@ export default {
renderer: 'canvas', renderer: 'canvas',
useDirtyRect: false, useDirtyRect: false,
}); });
let labers = this.chart_data.labers.map((item) => {
return item.label;
});
let option; let option;
option = { option = {
color: ['#cd9f50', '#47afa0', '#bcdfdc'], color: colors,
tooltip: { tooltip: {
trigger: 'axis', trigger: 'axis',
axisPointer: { axisPointer: {
type: 'shadow', type: 'shadow',
}, },
formatter: function (params) {
console.log(params);
let html = '';
_that.chart_data.labers.forEach((e, i) => {
html += `<p>
<span>${e.label}</span>
<span>${params[i].value}</span>
</p>`;
});
return html;
},
}, },
legend: { legend: {
formatter: (name) => { /* formatter: (name) => {
let objs = this.chart_data.labers.filter((itme) => { let objs = this.chart_data.labers.filter((itme) => {
return itme.key == name; return itme.key == name;
}); });
return objs[0].label; return objs[0].label;
}, }, */
data: labers,
}, },
toolbox: { toolbox: {
show: false, show: false,
...@@ -87,6 +82,10 @@ export default { ...@@ -87,6 +82,10 @@ export default {
axisTick: { show: false }, axisTick: { show: false },
// data: ['2012', '2013', '2014', '2015', '2016'] // data: ['2012', '2013', '2014', '2015', '2016']
data: this.chart_data.keys, data: this.chart_data.keys,
axisLabel: {
show: true,
rotate: -90,
},
}, },
], ],
yAxis: [ yAxis: [
...@@ -106,10 +105,15 @@ export default { ...@@ -106,10 +105,15 @@ export default {
}, },
//处理数据 //处理数据
changData(data) { changData(data) {
// console.log(data);
let list = []; let list = [];
data.labers.forEach((item, index) => { data.labers.forEach((item, index) => {
let obj = { let obj = {
name: item.key, itemStyle: {
normal: { label: { show: true, position: 'top' } },
},
name: item.label,
type: 'bar', type: 'bar',
barGap: 0, barGap: 0,
emphasis: { emphasis: {
......
...@@ -9,20 +9,34 @@ ...@@ -9,20 +9,34 @@
<div class="container_box"> <div class="container_box">
<table class="table_box"> <table class="table_box">
<tr> <tr>
<th v-for="(e, i) in labers" :key="i">{{ e.label }}</th> <th v-for="(e, i) in labers" :key="i" class="table_head_box">
{{ e.label
}}<i
class="el-icon-caret-top"
:style="
'color: ' +
(e.key == sort_field && sort_type == 'asc' ? '#038d6e' : '')
"
@click="sort(e.key, 'asc')"
></i>
<i
class="el-icon-caret-bottom"
:style="
'color: ' +
(e.key == sort_field && sort_type == 'desc' ? '#038d6e' : '')
"
@click="sort(e.key, 'desc')"
></i>
</th>
</tr> </tr>
<tr v-for="(item, index) in table_data" :key="index"> <tr v-for="(item, index) in table_data" :key="index">
<td v-for="(e, i) in labers" :key="i"> <td v-for="(e, i) in labers" :key="i">
<div v-if="typeof item[e.key] === 'object'"> <div v-if="typeof item[e.key] === 'object'">
<el-popover placement="top-start" width="200" trigger="hover"> <!-- <el-popover placement="top-start" width="200" trigger="hover">
<div> <div>
<el-form label-width="80px"> <el-form label-width="80px">
<!-- <el-form-item label="正确数据: ">
<span v-for="(o, b) in item[e.key].exactness.value">{{ o
}},</span>
</el-form-item> -->
<el-form-item label="错误数据: "> <el-form-item label="错误数据: ">
<span v-for="(o, b) in item[e.key].wrong.value" <span v-for="(o, b) in item[e.key].wrong.value" :key="b"
>{{ o }},</span >{{ o }},</span
> >
</el-form-item> </el-form-item>
...@@ -31,33 +45,145 @@ ...@@ -31,33 +45,145 @@
<el-button slot="reference" type="text" size="mini">{{ <el-button slot="reference" type="text" size="mini">{{
item[e.key].accuracy.value item[e.key].accuracy.value
}}</el-button> }}</el-button>
</el-popover> </el-popover> -->
<span slot="reference" type="text" size="mini">
{{ item[e.key] }}
</span>
</div>
<el-popover
v-else-if="e.key === 'stability'"
placement="top-start"
width="100%"
trigger="hover"
>
<div
v-if="
Object.prototype.toString.call(item.conclusion_data) ===
'[object Array]'
"
>
学员答案:{{ item.conclusion_data.join(',') }}
</div> </div>
<div v-else>
<el-table
:data="table_data[index].conclusion_table"
height="250"
border
style="width: 100%"
>
<el-table-column
prop="student_id"
sortable
label="学员信息"
width="180"
>
<template slot-scope="scope">
{{ scope.row.name }}({{ scope.row.student_id }})
</template>
</el-table-column>
<el-table-column
prop="conclusion"
sortable
label="稳定性"
width="180"
>
</el-table-column>
<el-table-column
label="学员答案"
sortable
prop="conclusion_data"
width="180"
>
<template slot-scope="scope">
{{ scope.row.conclusion_data.join(',') }}
</template>
</el-table-column>
</el-table>
</div>
<span slot="reference">{{ item[e.key] }}</span>
</el-popover>
<div v-else>{{ item[e.key] }}</div> <div v-else>{{ item[e.key] }}</div>
</td> </td>
</tr> </tr>
</table> </table>
<!-- <el-table :data="table_data" border style="width: 100%">
<el-table-column
v-for="(item, index) in labers"
:key="index"
:label="item.label"
:width="item.width"
>
<template slot="header">
<div>{{ item.label }}</div>
</template>
<template slot-scope="scope">
<div>{{ scope.row[item.key] }}</div>
</template>
</el-table-column>
</el-table> -->
</div> </div>
</template> </template>
<script> <script>
export default { export default {
props: ['table_data', 'labers'], props: ['table_data', 'labers', 'is_pover'],
data() { data() {
return {}; return {
sort_field: null,
sort_type: null,
};
}, },
components: {}, components: {},
computed: {}, computed: {},
created() {}, created() {
// console.log(this.table_data);
// console.log(this.labers);
},
mounted() {}, mounted() {},
methods: { methods: {
test(item) { sort(col, type = 'desc') {
console.log('判断对象'); this.sort_field = col;
console.log(item); this.sort_type = type;
console.log(typeof item == 'object'); if (type == 'asc') {
this.table_data.sort((a, b) => {
let a_n =
parseFloat(a[col]) != a[col] ? a[col].split('~')[0] : a[col];
let b_n =
parseFloat(b[col]) != b[col] ? b[col].split('~')[0] : b[col];
if (parseFloat(a_n) == a_n && parseFloat(b_n) == b_n) {
return a_n - b_n;
} else if (a_n < b_n) {
return -1;
} else if (a_n > b_n) {
return 1;
} else {
return 0;
}
}); //升序
} else {
this.table_data.sort((a, b) => {
let a_n =
parseFloat(a[col]) != a[col] ? a[col].split('~')[0] : a[col];
let b_n =
parseFloat(b[col]) != b[col] ? b[col].split('~')[0] : b[col];
if (parseFloat(a_n) == a_n && parseFloat(b_n) == b_n) {
return b_n - a_n;
} else if (b_n < a_n) {
return -1;
} else if (b_n > a_n) {
return 1;
} else {
return 0;
}
}); //降序
}
}, },
}, },
}; };
...@@ -66,6 +192,19 @@ export default { ...@@ -66,6 +192,19 @@ export default {
.container_box { .container_box {
width: 100%; width: 100%;
height: 100%; height: 100%;
position: relative;
.table_head_box {
padding: 15px 10px;
}
}
.el-icon-caret-bottom {
position: absolute;
top: 20px;
}
.el-icon-caret-top {
position: absolute;
top: 13px;
} }
.table_box { .table_box {
...@@ -96,4 +235,22 @@ export default { ...@@ -96,4 +235,22 @@ export default {
color: #303133; color: #303133;
} }
} }
@media screen and (max-width: 600px) {
.container_box {
position: relative;
.el-icon-caret-bottom {
position: absolute;
top: 15px;
}
.el-icon-caret-top {
position: absolute;
top: 8px;
}
.table_head_box {
padding: 10px 15px 10px 0px;
white-space: nowrap;
}
}
}
</style> </style>
<!--
* @Author: czj
* @Date: 2023-03-21 10:14:46
* @Description:
* @FilePath: \AdministrationHome\src\components\AnalyseModule\components\table.vue
-->
<!-- -->
<template>
<div class="container_box">
<div>
<el-select
v-model="select_value"
style="width: 100%"
@change="selectChange"
>
<el-option v-for="(e, i) in select_list" :label="e" :value="e" :key="i">
</el-option>
</el-select>
</div>
<table class="table_box">
<tr>
<!-- #038d6e -->
<th v-for="(e, i) in labers" :key="i" style="padding: 15px 10px">
{{ e.label
}}<span
><i
class="el-icon-caret-bottom"
:style="
'color: ' +
(e.key == sort_field && sort_type == 'desc' ? '#038d6e' : '')
"
@click="sort(e.key, 'desc')"
></i
><i
class="el-icon-caret-top"
:style="
'color: ' +
(e.key == sort_field && sort_type == 'asc' ? '#038d6e' : '')
"
@click="sort(e.key, 'asc')"
></i
></span>
</th>
</tr>
<tr v-for="(item, index) in table_list" :key="index">
<td v-for="(e, i) in labers" :key="i">
<div>{{ item[e.key] }}</div>
</td>
</tr>
</table>
</div>
</template>
<script>
export default {
props: ['table_data', 'labers'],
data() {
return {
sort_field: null,
sort_type: null,
table_list: null,
select_list: [],
select_value: '',
};
},
components: {},
computed: {},
created() {
// console.log('是否加载');
// console.log(this.table_data);
// console.log(this.labers);
this.select_value = this.table_data.select_value;
this.select_list = [...this.table_data.topic];
this.table_list = this.table_data.list[this.table_data.topic[0]];
},
mounted() {},
methods: {
sort(col, type = 'desc') {
this.sort_field = col;
this.sort_type = type;
if (type == 'asc') {
this.table_list.sort((a, b) => {
let a_n =
parseFloat(a[col]) != a[col] ? a[col].split('~')[0] : a[col];
let b_n =
parseFloat(b[col]) != b[col] ? b[col].split('~')[0] : b[col];
if (parseFloat(a_n) == a_n && parseFloat(b_n) == b_n) {
return a_n - b_n;
} else if (a_n < b_n) {
return -1;
} else if (a_n > b_n) {
return 1;
} else {
return 0;
}
}); //升序
} else {
this.table_list.sort((a, b) => {
let a_n =
parseFloat(a[col]) != a[col] ? a[col].split('~')[0] : a[col];
let b_n =
parseFloat(b[col]) != b[col] ? b[col].split('~')[0] : b[col];
if (parseFloat(a_n) == a_n && parseFloat(b_n) == b_n) {
return b_n - a_n;
} else if (b_n < a_n) {
return -1;
} else if (b_n > a_n) {
return 1;
} else {
return 0;
}
}); //降序
}
},
//选择监听
selectChange(val) {
console.log('val');
console.log(val);
this.table_list = [...this.table_data.list[val]];
},
},
};
</script>
<style lang="scss" scoped>
.container_box {
width: 100%;
height: 100%;
position: relative;
}
.el-icon-caret-bottom {
position: absolute;
top: 56px;
}
.el-icon-caret-top {
position: absolute;
top: 49px;
}
.table_box {
width: 100%;
// min-height: 100%;
text-align: center;
font-size: 14px;
border-top: 1px solid #e4e7ed;
border-left: 1px solid #e4e7ed;
border-collapse: collapse;
th,
td {
margin: 0;
padding: 0;
font-size: 14px;
border-bottom: 1px solid #e4e7ed;
border-right: 1px solid #e4e7ed;
}
th {
padding: 15px 0;
color: #909399;
}
td {
padding: 5px 0;
color: #303133;
}
}
</style>
...@@ -7,6 +7,9 @@ ...@@ -7,6 +7,9 @@
<!-- --> <!-- -->
<template> <template>
<div class="container_box"> <div class="container_box">
<!-- <el-select v-model="">
<el-option></el-option>
</el-select> -->
<table class="table_box"> <table class="table_box">
<!-- <tr> <!-- <tr>
<th v-for="(e, i) in labers" :key="i">{{ e.label }}</th> <th v-for="(e, i) in labers" :key="i">{{ e.label }}</th>
...@@ -24,18 +27,25 @@ ...@@ -24,18 +27,25 @@
export default { export default {
props: ['table_data'], props: ['table_data'],
data() { data() {
return {}; return {
sel: '',
};
}, },
components: {}, components: {},
computed: {}, computed: {},
created() {}, created() {},
mounted() {}, mounted() {
// console.log(this.table_data);
},
methods: { methods: {
//保留两位,四舍五入 //保留两位,四舍五入
keepTwoDecimal(num) { keepTwoDecimal(num) {
if (num.includes(',')) {
return num;
} else {
var result = parseFloat(num); var result = parseFloat(num);
if (isNaN(result)) { if (isNaN(result)) {
return false; return false;
...@@ -43,6 +53,7 @@ export default { ...@@ -43,6 +53,7 @@ export default {
result = Math.round(num * 100) / 100; result = Math.round(num * 100) / 100;
return result; return result;
} }
}
}, },
}, },
}; };
......
...@@ -9,12 +9,37 @@ ...@@ -9,12 +9,37 @@
<div class="container_box"> <div class="container_box">
<table class="table_box"> <table class="table_box">
<tr> <tr>
<th v-for="(e, i) in labers" :key="i">{{ e.label }}</th> <th v-for="(e, i) in labers" :key="i" class="table_head_box">
{{ e.label
}}<span
><i
class="el-icon-caret-top"
:style="
'color: ' +
(e.key == sort_field && sort_type == 'asc' ? '#038d6e' : '')
"
@click="sort(e.key, 'asc')"
></i>
<i
class="el-icon-caret-bottom"
:style="
'color: ' +
(e.key == sort_field && sort_type == 'desc' ? '#038d6e' : '')
"
@click="sort(e.key, 'desc')"
></i
></span>
</th>
</tr> </tr>
<tr v-for="(item, index) in table_data" :key="index"> <tr v-for="(item, index) in table_data" :key="index">
<td v-for="(e, i) in labers" :key="i"> <td v-for="(e, i) in labers" :key="i">
<div v-if="e.key == 'distribute'"> <div v-if="e.key == 'distribute'">
<div v-if="item['distribute'].length > 3"> <div
v-if="
typeof item['distribute'] == 'object' &&
item['distribute'].length > 3
"
>
<el-popover <el-popover
placement="right" placement="right"
title="标题" title="标题"
...@@ -29,9 +54,14 @@ ...@@ -29,9 +54,14 @@
> >
</el-popover> </el-popover>
</div> </div>
<div v-else> <div v-else-if="typeof item['distribute'] == 'object'">
<div v-for="(h, key, j) in item['distribute']" :key="j"> <div v-for="(h, key, j) in item['distribute']" :key="j">
{{ key }}({{ item['distribute'][key] }}题), {{ key }}({{ item['distribute'][key] }}题)
</div>
</div>
<div v-else>
<div>
{{ item['distribute'] }}
</div> </div>
</div> </div>
</div> </div>
...@@ -61,24 +91,75 @@ ...@@ -61,24 +91,75 @@
export default { export default {
props: ['table_data', 'labers'], props: ['table_data', 'labers'],
data() { data() {
return {}; return {
sort_field: null,
sort_type: null,
};
}, },
components: {}, components: {},
computed: {}, computed: {},
created() {},
mounted() {}, mounted() {},
methods: {}, methods: {
sort(col, type = 'desc') {
this.sort_field = col;
this.sort_type = type;
if (type == 'asc') {
this.table_data.sort((a, b) => {
let a_n =
parseFloat(a[col]) != a[col] ? a[col].split('~')[0] : a[col];
let b_n =
parseFloat(b[col]) != b[col] ? b[col].split('~')[0] : b[col];
if (parseFloat(a_n) == a_n && parseFloat(b_n) == b_n) {
return a_n - b_n;
} else if (a_n < b_n) {
return -1;
} else if (a_n > b_n) {
return 1;
} else {
return 0;
}
}); //升序
} else {
this.table_data.sort((a, b) => {
let a_n =
parseFloat(a[col]) != a[col] ? a[col].split('~')[0] : a[col];
let b_n =
parseFloat(b[col]) != b[col] ? b[col].split('~')[0] : b[col];
if (parseFloat(a_n) == a_n && parseFloat(b_n) == b_n) {
return b_n - a_n;
} else if (b_n < a_n) {
return -1;
} else if (b_n > a_n) {
return 1;
} else {
return 0;
}
}); //降序
}
},
},
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.container_box { .container_box {
width: 100%; width: 100%;
height: 100%; height: 100%;
position: relative;
} }
// .el-icon-caret-bottom {
// position: absolute;
// top: 20px;
// }
// .el-icon-caret-top {
// position: absolute;
// top: 13px;
// }
.table_box { .table_box {
width: 100%; width: 100%;
// min-height: 100%; // min-height: 100%;
...@@ -107,4 +188,38 @@ export default { ...@@ -107,4 +188,38 @@ export default {
color: #303133; color: #303133;
} }
} }
@media screen and (min-width: 600px) {
.container_box {
position: relative;
.el-icon-caret-bottom {
position: absolute;
top: 15px;
}
.el-icon-caret-top {
position: absolute;
top: 8px;
}
.table_head_box {
padding: 10px 15px;
}
}
}
@media screen and (max-width: 600px) {
.container_box {
position: relative;
.el-icon-caret-bottom {
position: absolute;
top: 15px;
}
.el-icon-caret-top {
position: absolute;
top: 8px;
}
.table_head_box {
padding: 10px 15px 10px 0px;
white-space: nowrap;
}
}
}
</style> </style>
...@@ -16,33 +16,63 @@ ...@@ -16,33 +16,63 @@
<div class="header_box"> <div class="header_box">
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<div class="title_box" :title="original_data.title"> {{ original_data.title }}</div> <div class="title_box" :title="original_data.title">
{{ original_data.title }}
</div>
</el-col> </el-col>
<el-col :span="12" style="text-align: right;"> <el-col :span="12" style="text-align: right">
<el-checkbox v-if="original_data.is_show" v-model="original_data.is_show.value" @change="changeSelect">{{ <el-checkbox
original_data.is_show.value ? '显示' : '隐藏' v-if="original_data.is_show"
}}</el-checkbox> v-model="original_data.is_show.value"
@change="changeSelect"
>{{ original_data.is_show.value ? '显示' : '隐藏' }}</el-checkbox
>
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
<div class="content_container" v-if="original_data.type == 'table'"> <div class="content_container" v-if="original_data.type == 'table'">
<Table :table_data="original_data.list" :labers="original_data.labers"></Table> <Table
:table_data="original_data.list"
:labers="original_data.labers"
></Table>
</div>
<div class="content_container" v-if="original_data.type == 'select_table'">
<SelectTabe
v-if="original_data"
:table_data="original_data"
:labers="original_data.labers"
>
</SelectTabe>
</div> </div>
<div class="content_container" v-if="false"> <div class="content_container" v-if="false">
<line-chart :chart_data="original_data.data" :chart_id="original_data.chart_id"></line-chart> <line-chart
:chart_data="original_data.data"
:chart_id="original_data.chart_id"
></line-chart>
</div> </div>
<div class="content_container" v-if="original_data.type == 'bar'"> <div class="content_container" v-if="original_data.type == 'bar'">
<bar-chart <bar-chart
:chart_data="{ raw_data: original_data.raw_data, keys: original_data.keys, labers: original_data.labers }" :chart_data="{
:chart_id="original_data.chart_id"></bar-chart> raw_data: original_data.raw_data,
keys: original_data.keys,
labers: original_data.labers,
}"
:chart_id="original_data.chart_id"
></bar-chart>
</div> </div>
<div class="content_container" v-if="original_data.type == 'simple_table'"> <div class="content_container" v-if="original_data.type == 'simple_table'">
<simple-table :table_data="original_data"></simple-table> <simple-table :table_data="original_data"></simple-table>
</div> </div>
<!-- 眼光稳定性 --> <!-- 眼光稳定性 -->
<div class="content_container" v-if="original_data.type == 'eye_stability_table'"> <div
<eye-stability-table :table_data="original_data.list" :labers="original_data.labers"></eye-stability-table> class="content_container"
v-if="original_data.type == 'eye_stability_table'"
>
<eye-stability-table
:table_data="original_data.list"
:labers="original_data.labers"
></eye-stability-table>
</div> </div>
</div> </div>
</template> </template>
...@@ -53,6 +83,7 @@ import LineChart from './components/LineChart.vue'; ...@@ -53,6 +83,7 @@ import LineChart from './components/LineChart.vue';
import BarChart from './components/BarChart.vue'; import BarChart from './components/BarChart.vue';
import SimpleTable from './components/SimpleTable.vue'; import SimpleTable from './components/SimpleTable.vue';
import EyeStabilityTable from './components/EyeStabilityTable.vue'; import EyeStabilityTable from './components/EyeStabilityTable.vue';
import SelectTabe from './components/SelectTabe.vue';
export default { export default {
props: ['module_data'], props: ['module_data'],
data() { data() {
...@@ -61,23 +92,28 @@ export default { ...@@ -61,23 +92,28 @@ export default {
}; };
}, },
components: { Table, LineChart, BarChart, SimpleTable, EyeStabilityTable }, components: {
Table,
LineChart,
BarChart,
SimpleTable,
EyeStabilityTable,
SelectTabe,
},
computed: {}, computed: {},
created() { created() {
this.original_data = { ...this.module_data }; this.original_data = { ...this.module_data };
}, },
mounted() { mounted() {},
},
methods: { methods: {
//选择框监听 //选择框监听
changeSelect() { changeSelect() {
this.$emit('changeSelect', this.original_data.is_show); this.$emit('changeSelect', this.original_data.is_show);
}, },
} },
} };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.analyse_container { .analyse_container {
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: AnthonyD * @Author: AnthonyD
* @Date: 2023-02-22 11:31:31 * @Date: 2023-02-22 11:31:31
* @Last Modified by: AnthonyD * @Last Modified by: AnthonyD
* @Last Modified time: 2023-03-27 16:42:54 * @Last Modified time: 2023-04-04 18:51:52
*/ */
import Vue from 'vue' import Vue from 'vue'
...@@ -30,8 +30,6 @@ import echarts from 'echarts'; ...@@ -30,8 +30,6 @@ import echarts from 'echarts';
//引入加密函数,并将其封装 //引入加密函数,并将其封装
import { handleParams, Aesdecrypt, removeProperty } from '@/utils/cryptoJS'; import { handleParams, Aesdecrypt, removeProperty } from '@/utils/cryptoJS';
Vue.prototype.$handleParams = handleParams;//封装机密格式的参数 Vue.prototype.$handleParams = handleParams;//封装机密格式的参数
...@@ -61,8 +59,6 @@ Vue.use(Element, { ...@@ -61,8 +59,6 @@ Vue.use(Element, {
Vue.prototype.$echarts = echarts Vue.prototype.$echarts = echarts
// register global utility filters // register global utility filters
Object.keys(filters).forEach(key => { Object.keys(filters).forEach(key => {
Vue.filter(key, filters[key]) Vue.filter(key, filters[key])
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: AnthonyD * @Author: AnthonyD
* @Date: 2023-02-22 11:31:31 * @Date: 2023-02-22 11:31:31
* @Last Modified by: AnthonyD * @Last Modified by: AnthonyD
* @Last Modified time: 2023-03-29 19:28:07 * @Last Modified time: 2023-04-18 19:02:01
*/ */
@import './variables.scss'; @import './variables.scss';
@import './mixin.scss'; @import './mixin.scss';
...@@ -265,4 +265,15 @@ aside { ...@@ -265,4 +265,15 @@ aside {
} }
} }
.result_chart_box {
.el-radio-button:last-child .el-radio-button__inner {
padding: 10px 5px;
}
}
.pinch-zoom-container {
height: 100vh !important;
padding-top: 40%;
}
} }
\ No newline at end of file
...@@ -76,6 +76,16 @@ ...@@ -76,6 +76,16 @@
</AnalyseModule> </AnalyseModule>
</div> </div>
</el-col> </el-col>
<!-- 学员得分 -->
<el-col :span="8" :xs="24">
<div class="centenr_container">
<AnalyseModule
:module_data="transcript_data"
v-if="transcript_data"
>
</AnalyseModule>
</div>
</el-col>
</el-row> </el-row>
</div> </div>
</div> </div>
...@@ -228,7 +238,8 @@ export default { ...@@ -228,7 +238,8 @@ export default {
wrong_color_data: null, wrong_color_data: null,
//错误组别 //错误组别
wrongG_group_data: null, wrongG_group_data: null,
//学员得分
transcript_data: null,
//老师点评 //老师点评
found_remark: null, found_remark: null,
}; };
...@@ -264,6 +275,9 @@ export default { ...@@ -264,6 +275,9 @@ export default {
this.province_score = this.changeProvinceScore( this.province_score = this.changeProvinceScore(
this.appraisal_data.ProvinceScore this.appraisal_data.ProvinceScore
); //省区得分 ); //省区得分
this.transcript_data = this.changeTranscript(
this.appraisal_data.Transcript
); //学员得分
this.breed_score = this.changeBreedScore(this.appraisal_data.breedScore); //品种得分 this.breed_score = this.changeBreedScore(this.appraisal_data.breedScore); //品种得分
//最高分、最低分、平均分,中位数、众数、离散(变异系数) //最高分、最低分、平均分,中位数、众数、离散(变异系数)
this.get_highes_lowestt_score_data = this.getHighesLowesttScore( this.get_highes_lowestt_score_data = this.getHighesLowesttScore(
...@@ -285,8 +299,8 @@ export default { ...@@ -285,8 +299,8 @@ export default {
this.appraisal_data.WrongPosition this.appraisal_data.WrongPosition
); //错误部位 ); //错误部位
this.error_level_data = this.changeErrorLevel( this.error_level_data = this.changeErrorLevel(
this.appraisal_data.ErrorLevel this.appraisal_data.WrongLevel
); //错误等级 ); //错误上下一级
this.wrong_color_data = this.changeWrongColor( this.wrong_color_data = this.changeWrongColor(
this.appraisal_data.WrongColor this.appraisal_data.WrongColor
); //错误颜色 ); //错误颜色
...@@ -295,7 +309,7 @@ export default { ...@@ -295,7 +309,7 @@ export default {
); //错误组别 ); //错误组别
console.log('处理好的数据'); console.log('处理好的数据');
console.log(this.wrong_position_data); console.log(this.error_level_data);
}, },
//计算百分比 //计算百分比
toPercent, toPercent,
...@@ -312,7 +326,7 @@ export default { ...@@ -312,7 +326,7 @@ export default {
let labers = [ let labers = [
{ label: '分类', key: 'classify' }, { label: '分类', key: 'classify' },
{ label: '分数段', key: 'score' }, { label: '分数段', key: 'score' },
{ label: '人数', key: 'people' }, { label: '人次', key: 'people' },
{ label: '占比', key: 'proportion' }, { label: '占比', key: 'proportion' },
]; ];
keys.forEach((element) => { keys.forEach((element) => {
...@@ -341,9 +355,9 @@ export default { ...@@ -341,9 +355,9 @@ export default {
if (!datas) return false; if (!datas) return false;
let keys = Object.keys(datas); let keys = Object.keys(datas);
let labers = [ let labers = [
{ label: '分数', key: 'ScoreScore' }, { label: '总题数', key: 'assemble' },
{ label: '总分', key: 'assemble' }, { label: '正确人次', key: 'success_man_time' },
{ label: '人数', key: 'student_num' }, { label: '错误人次', key: 'error_man_time' },
]; ];
return { return {
type: 'bar', type: 'bar',
...@@ -360,9 +374,9 @@ export default { ...@@ -360,9 +374,9 @@ export default {
if (!datas) return false; if (!datas) return false;
let keys = Object.keys(datas); let keys = Object.keys(datas);
let labers = [ let labers = [
{ label: '分数', key: 'ScoreScore', value: '分数' }, { label: '总题数', key: 'assemble' },
{ label: '总分', key: 'assemble', value: '分数' }, { label: '正确人次', key: 'success_man_time' },
{ label: '人数', key: 'student_num', value: '分数' }, { label: '错误人次', key: 'error_man_time' },
]; ];
return { return {
type: 'bar', type: 'bar',
...@@ -379,9 +393,9 @@ export default { ...@@ -379,9 +393,9 @@ export default {
if (!datas) return false; if (!datas) return false;
let keys = Object.keys(datas); let keys = Object.keys(datas);
let labers = [ let labers = [
{ label: '分数', key: 'ScoreScore' }, { label: '总题数', key: 'assemble' },
{ label: '总分', key: 'assemble' }, { label: '正确人次', key: 'success_man_time' },
{ label: '人数', key: 'student_num' }, { label: '错误人次', key: 'error_man_time' },
]; ];
return { return {
type: 'bar', type: 'bar',
...@@ -414,30 +428,61 @@ export default { ...@@ -414,30 +428,61 @@ export default {
data: datas, data: datas,
}; };
}, },
//学员得分情况
changeTranscript(datas) {
if (!datas) return false;
let labers = [
{ label: '姓名', key: 'name' },
{ label: '分数', key: 'score' },
];
let select_list = Object.keys(datas);
return {
type: 'select_table',
chart_id: 'transcript_bar_chart',
color: '#99A9BF',
title: '学员得分情况',
labers,
topic: select_list,
select_value: select_list[0],
// data: datas,
list: datas,
};
},
//眼光稳定性 //眼光稳定性
changeEyeStability(datas) { changeEyeStability(datas) {
if (!datas) return false; if (!datas) return false;
let list = []; let list = [];
let labers = [ let labers = [
{ label: '题目', key: 'title' }, { label: '题目', key: 'title' },
{ label: '区域', key: 'area' },
{ label: '答案', key: 'answer' }, { label: '答案', key: 'answer' },
{ label: '稳定性', key: 'stability' }, { label: '稳定性', key: 'stability' },
]; ];
//处理稳定性数据 //处理稳定性数据
const changeStability = (items) => { // const changeStability = (items) => {
let all_num = items.exactness.length + items.wrong.length; // let all_num = items.exactness.length + items.wrong.length;
let Accuracy = toPercent(items.exactness.length, all_num); //准确率 // let Accuracy = toPercent(items.exactness.length, all_num); //准确率
return { // return {
accuracy: { label: '正确率', value: Accuracy }, // accuracy: { label: '正确率', value: Accuracy },
// exactness: { label: '正确数据', value: items.exactness }, // // exactness: { label: '正确数据', value: items.exactness },
wrong: { label: '错误数据', value: items.wrong }, // wrong: { label: '错误数据', value: items.wrong },
}; // };
}; // };
// datas.data.forEach((element, index) => {
// list.push({
// title: datas.title[index],
// answer: element.answer,
// stability: changeStability(element),
// });
// });
datas.data.forEach((element, index) => { datas.data.forEach((element, index) => {
list.push({ list.push({
title: datas.title[index], title: datas.title[index],
answer: element.answer, answer: element.answer,
stability: changeStability(element), area: element.area,
stability: element.conclusion,
conclusion_table: element.conclusion_table,
}); });
}); });
return { return {
...@@ -458,6 +503,7 @@ export default { ...@@ -458,6 +503,7 @@ export default {
{ label: '题目', key: 'title' }, { label: '题目', key: 'title' },
{ label: '结果', key: 'result' }, { label: '结果', key: 'result' },
{ label: '错误率', key: 'errorRate' }, { label: '错误率', key: 'errorRate' },
{ label: '比率', key: 'ratio' },
{ label: '错误结果', key: 'distribute' }, { label: '错误结果', key: 'distribute' },
]; ];
datas.forEach((element, index) => { datas.forEach((element, index) => {
...@@ -465,7 +511,9 @@ export default { ...@@ -465,7 +511,9 @@ export default {
index: index + 1, index: index + 1,
title: element.title, title: element.title,
result: element.result, result: element.result,
// errorRate: `${keepTwoDecimal(element.errorRate)}%`,
errorRate: `${element.errorRate}%`, errorRate: `${element.errorRate}%`,
ratio: `${element.wrong_num + '/' + element.total}`,
distribute: element.distribute, distribute: element.distribute,
}); });
}); });
...@@ -487,12 +535,15 @@ export default { ...@@ -487,12 +535,15 @@ export default {
{ label: '题目', key: 'title' }, { label: '题目', key: 'title' },
{ label: '结果', key: 'result' }, { label: '结果', key: 'result' },
{ label: '正确率', key: 'errorRate' }, { label: '正确率', key: 'errorRate' },
{ label: '比率', key: 'ratio' },
]; ];
datas.forEach((element, index) => { datas.forEach((element, index) => {
list.push({ list.push({
index: index + 1, index: index + 1,
title: element.title, title: element.title,
result: element.result, result: element.result,
// errorRate: `${keepTwoDecimal(100 - element.errorRate)}%`,
ratio: `${element.total - element.wrong_num + '/' + element.total}`,
errorRate: `${100 - element.errorRate}%`, errorRate: `${100 - element.errorRate}%`,
}); });
}); });
...@@ -513,7 +564,7 @@ export default { ...@@ -513,7 +564,7 @@ export default {
let keys = Object.keys(datas); let keys = Object.keys(datas);
let list = []; let list = [];
let labers = [ let labers = [
{ label: '部位', key: 'position' }, { label: '题目', key: 'position' },
{ label: '正确答案', key: 'answer' }, { label: '正确答案', key: 'answer' },
{ label: '错题数量', key: 'wrong_num' }, { label: '错题数量', key: 'wrong_num' },
{ label: '错误答案内容', key: 'distribute' }, { label: '错误答案内容', key: 'distribute' },
...@@ -536,13 +587,13 @@ export default { ...@@ -536,13 +587,13 @@ export default {
list, list,
}; };
}, },
//错误等级 //错误上下一级
changeErrorLevel(datas) { changeErrorLevel(datas) {
if (!datas) return false; if (!datas) return false;
let keys = Object.keys(datas); let keys = Object.keys(datas);
let list = []; let list = [];
let labers = [ let labers = [
{ label: '等级', key: 'level' }, { label: '题目', key: 'level' },
{ label: '正确答案', key: 'answer' }, { label: '正确答案', key: 'answer' },
{ label: '错题数量', key: 'wrong_num' }, { label: '错题数量', key: 'wrong_num' },
{ label: '错误答案内容', key: 'distribute' }, { label: '错误答案内容', key: 'distribute' },
...@@ -560,9 +611,9 @@ export default { ...@@ -560,9 +611,9 @@ export default {
}); });
return { return {
type: 'table', type: 'table',
chart_id: 'wrong_position', chart_id: 'wrong_level',
color: '#505F79', color: '#505F79',
title: '错误等级', title: '错误上下一级',
labers, labers,
list, list,
}; };
...@@ -573,7 +624,7 @@ export default { ...@@ -573,7 +624,7 @@ export default {
let keys = Object.keys(datas); let keys = Object.keys(datas);
let list = []; let list = [];
let labers = [ let labers = [
{ label: '颜色', key: 'color' }, { label: '题目', key: 'color' },
{ label: '正确答案', key: 'answer' }, { label: '正确答案', key: 'answer' },
{ label: '错题数量', key: 'wrong_num' }, { label: '错题数量', key: 'wrong_num' },
{ label: '错误答案内容', key: 'distribute' }, { label: '错误答案内容', key: 'distribute' },
...@@ -604,7 +655,7 @@ export default { ...@@ -604,7 +655,7 @@ export default {
let keys = Object.keys(datas); let keys = Object.keys(datas);
let list = []; let list = [];
let labers = [ let labers = [
{ label: '组别', key: 'group' }, { label: '题目', key: 'group' },
{ label: '正确答案', key: 'answer' }, { label: '正确答案', key: 'answer' },
{ label: '错题数量', key: 'wrong_num' }, { label: '错题数量', key: 'wrong_num' },
{ label: '错误答案内容', key: 'distribute' }, { label: '错误答案内容', key: 'distribute' },
......
...@@ -76,6 +76,16 @@ ...@@ -76,6 +76,16 @@
</AnalyseModule> </AnalyseModule>
</div> </div>
</el-col> </el-col>
<!-- 学员得分 -->
<el-col :span="8" :xs="24">
<div class="centenr_container">
<AnalyseModule
:module_data="transcript_data"
v-if="transcript_data"
>
</AnalyseModule>
</div>
</el-col>
</el-row> </el-row>
</div> </div>
</div> </div>
...@@ -228,7 +238,8 @@ export default { ...@@ -228,7 +238,8 @@ export default {
wrong_color_data: null, wrong_color_data: null,
//错误组别 //错误组别
wrongG_group_data: null, wrongG_group_data: null,
//学员得分
transcript_data: null,
//老师点评 //老师点评
found_remark: null, found_remark: null,
}; };
...@@ -264,6 +275,9 @@ export default { ...@@ -264,6 +275,9 @@ export default {
this.province_score = this.changeProvinceScore( this.province_score = this.changeProvinceScore(
this.summary_data.ProvinceScore this.summary_data.ProvinceScore
); //省区得分 ); //省区得分
this.transcript_data = this.changeTranscript(
this.summary_data.Transcript
); //学员得分
this.breed_score = this.changeBreedScore(this.summary_data.breedScore); //品种得分 this.breed_score = this.changeBreedScore(this.summary_data.breedScore); //品种得分
//最高分、最低分、平均分,中位数、众数、离散(变异系数) //最高分、最低分、平均分,中位数、众数、离散(变异系数)
this.get_highes_lowestt_score_data = this.getHighesLowesttScore( this.get_highes_lowestt_score_data = this.getHighesLowesttScore(
...@@ -285,8 +299,8 @@ export default { ...@@ -285,8 +299,8 @@ export default {
this.summary_data.WrongPosition this.summary_data.WrongPosition
); //错误部位 ); //错误部位
this.error_level_data = this.changeErrorLevel( this.error_level_data = this.changeErrorLevel(
this.summary_data.ErrorLevel this.summary_data.WrongLevel
); //错误等级 ); //错误上下一级
this.wrong_color_data = this.changeWrongColor( this.wrong_color_data = this.changeWrongColor(
this.summary_data.WrongColor this.summary_data.WrongColor
); //错误颜色 ); //错误颜色
...@@ -294,8 +308,8 @@ export default { ...@@ -294,8 +308,8 @@ export default {
this.summary_data.WrongGroup this.summary_data.WrongGroup
); //错误组别 ); //错误组别
console.log('处理好的数据'); // console.log('处理好的数据');
console.log(this.wrong_position_data); // console.log(this.wrong_position_data);
}, },
//计算百分比 //计算百分比
toPercent, toPercent,
...@@ -341,9 +355,9 @@ export default { ...@@ -341,9 +355,9 @@ export default {
if (!datas) return false; if (!datas) return false;
let keys = Object.keys(datas); let keys = Object.keys(datas);
let labers = [ let labers = [
{ label: '分数', key: 'ScoreScore' }, { label: '总题数', key: 'assemble' },
{ label: '总分', key: 'assemble' }, { label: '正确人次', key: 'success_man_time' },
{ label: '人数', key: 'student_num' }, { label: '错误人次', key: 'error_man_time' },
]; ];
return { return {
type: 'bar', type: 'bar',
...@@ -360,9 +374,9 @@ export default { ...@@ -360,9 +374,9 @@ export default {
if (!datas) return false; if (!datas) return false;
let keys = Object.keys(datas); let keys = Object.keys(datas);
let labers = [ let labers = [
{ label: '分数', key: 'ScoreScore' }, { label: '总题数', key: 'assemble' },
{ label: '总分', key: 'assemble' }, { label: '正确人次', key: 'success_man_time' },
{ label: '人数', key: 'student_num' }, { label: '错误人次', key: 'error_man_time' },
]; ];
return { return {
type: 'bar', type: 'bar',
...@@ -393,6 +407,29 @@ export default { ...@@ -393,6 +407,29 @@ export default {
raw_data: datas, raw_data: datas,
}; };
}, },
//学员得分情况
changeTranscript(datas) {
if (!datas) return false;
let labers = [
{ label: '姓名', key: 'name' },
{ label: '分数', key: 'score' },
];
let select_list = Object.keys(datas);
return {
type: 'select_table',
chart_id: 'transcript_bar_chart',
color: '#99A9BF',
title: '学员得分情况',
labers,
topic: select_list,
select_value: select_list[0],
// data: datas,
list: datas,
};
},
//最高分、最低分、平均分,中位数、众数、离散(变异系数) //最高分、最低分、平均分,中位数、众数、离散(变异系数)
getHighesLowesttScore(datas) { getHighesLowesttScore(datas) {
if (!datas) return false; if (!datas) return false;
...@@ -420,24 +457,34 @@ export default { ...@@ -420,24 +457,34 @@ export default {
let list = []; let list = [];
let labers = [ let labers = [
{ label: '题目', key: 'title' }, { label: '题目', key: 'title' },
{ label: '区域', key: 'area' },
{ label: '答案', key: 'answer' }, { label: '答案', key: 'answer' },
{ label: '稳定性', key: 'stability' }, { label: '稳定性', key: 'stability' },
]; ];
//处理稳定性数据 //处理稳定性数据
const changeStability = (items) => { // const changeStability = (items) => {
let all_num = items.exactness.length + items.wrong.length; // let all_num = items.exactness.length + items.wrong.length;
let Accuracy = toPercent(items.exactness.length, all_num); //准确率 // let Accuracy = toPercent(items.exactness.length, all_num); //准确率
return { // return {
accuracy: { label: '正确率', value: Accuracy }, // accuracy: { label: '正确率', value: Accuracy },
// exactness: { label: '正确数据', value: items.exactness }, // // exactness: { label: '正确数据', value: items.exactness },
wrong: { label: '错误数据', value: items.wrong }, // wrong: { label: '错误数据', value: items.wrong },
}; // };
}; // };
// datas.data.forEach((element, index) => {
// list.push({
// title: datas.title[index],
// answer: element.answer,
// stability: changeStability(element),
// });
// });
datas.data.forEach((element, index) => { datas.data.forEach((element, index) => {
list.push({ list.push({
title: datas.title[index], title: datas.title[index],
answer: element.answer, answer: element.answer,
stability: changeStability(element), area: element.area,
stability: element.conclusion,
conclusion_table: element.conclusion_table,
}); });
}); });
return { return {
...@@ -507,13 +554,11 @@ export default { ...@@ -507,13 +554,11 @@ export default {
}, },
//错误部位 //错误部位
changeWrongPosition(datas) { changeWrongPosition(datas) {
console.log('错误部位原始数据');
console.log(datas);
if (!datas) return false; if (!datas) return false;
let keys = Object.keys(datas); let keys = Object.keys(datas);
let list = []; let list = [];
let labers = [ let labers = [
{ label: '部位', key: 'position' }, { label: '题目', key: 'position' },
{ label: '正确答案', key: 'answer' }, { label: '正确答案', key: 'answer' },
{ label: '错题数量', key: 'wrong_num' }, { label: '错题数量', key: 'wrong_num' },
{ label: '错误答案内容', key: 'distribute' }, { label: '错误答案内容', key: 'distribute' },
...@@ -536,13 +581,13 @@ export default { ...@@ -536,13 +581,13 @@ export default {
list, list,
}; };
}, },
//错误等级 //错误上下一级
changeErrorLevel(datas) { changeErrorLevel(datas) {
if (!datas) return false; if (!datas) return false;
let keys = Object.keys(datas); let keys = Object.keys(datas);
let list = []; let list = [];
let labers = [ let labers = [
{ label: '等级', key: 'level' }, { label: '题目', key: 'level' },
{ label: '正确答案', key: 'answer' }, { label: '正确答案', key: 'answer' },
{ label: '错题数量', key: 'wrong_num' }, { label: '错题数量', key: 'wrong_num' },
{ label: '错误答案内容', key: 'distribute' }, { label: '错误答案内容', key: 'distribute' },
...@@ -554,15 +599,13 @@ export default { ...@@ -554,15 +599,13 @@ export default {
wrong_num: datas[element].wrong_num, wrong_num: datas[element].wrong_num,
// distribute: datas[element].distribute, // distribute: datas[element].distribute,
distribute: countOccurrences(datas[element].distribute), distribute: countOccurrences(datas[element].distribute),
//countOccurrences(datas[element].distribute)
}); });
}); });
return { return {
type: 'table', type: 'table',
chart_id: 'wrong_position', chart_id: 'wrong_position',
color: '#505F79', color: '#505F79',
title: '错误等级', title: '错误上下一级',
labers, labers,
list, list,
}; };
...@@ -573,7 +616,7 @@ export default { ...@@ -573,7 +616,7 @@ export default {
let keys = Object.keys(datas); let keys = Object.keys(datas);
let list = []; let list = [];
let labers = [ let labers = [
{ label: '颜色', key: 'color' }, { label: '题目', key: 'color' },
{ label: '正确答案', key: 'answer' }, { label: '正确答案', key: 'answer' },
{ label: '错题数量', key: 'wrong_num' }, { label: '错题数量', key: 'wrong_num' },
{ label: '错误答案内容', key: 'distribute' }, { label: '错误答案内容', key: 'distribute' },
...@@ -585,8 +628,6 @@ export default { ...@@ -585,8 +628,6 @@ export default {
wrong_num: datas[element].wrong_num, wrong_num: datas[element].wrong_num,
// distribute: datas[element].distribute, // distribute: datas[element].distribute,
distribute: countOccurrences(datas[element].distribute), distribute: countOccurrences(datas[element].distribute),
//distribute: countOccurrences(datas[element].distribute),
}); });
}); });
return { return {
...@@ -604,7 +645,7 @@ export default { ...@@ -604,7 +645,7 @@ export default {
let keys = Object.keys(datas); let keys = Object.keys(datas);
let list = []; let list = [];
let labers = [ let labers = [
{ label: '组别', key: 'group' }, { label: '题目', key: 'group' },
{ label: '正确答案', key: 'answer' }, { label: '正确答案', key: 'answer' },
{ label: '错题数量', key: 'wrong_num' }, { label: '错题数量', key: 'wrong_num' },
{ label: '错误答案内容', key: 'distribute' }, { label: '错误答案内容', key: 'distribute' },
...@@ -616,7 +657,6 @@ export default { ...@@ -616,7 +657,6 @@ export default {
wrong_num: datas[element].wrong_num, wrong_num: datas[element].wrong_num,
// distribute: datas[element].distribute, // distribute: datas[element].distribute,
distribute: countOccurrences(datas[element].distribute), distribute: countOccurrences(datas[element].distribute),
//countOccurrences
}); });
}); });
return { return {
......
...@@ -3,18 +3,12 @@ ...@@ -3,18 +3,12 @@
* @Author: AnthonyD * @Author: AnthonyD
* @Date: 2023-03-13 09:56:01 * @Date: 2023-03-13 09:56:01
* @Last Modified by: AnthonyD * @Last Modified by: AnthonyD
* @Last Modified time: 2023-03-30 11:31:19 * @Last Modified time: 2023-04-18 19:00:30
*/ */
</script> </script>
<template> <template>
<div class="module_container"> <div class="module_container">
<div class="card_container"> <div class="card_container">
<!-- <examination-header
v-if="student_brief_introduction"
:examination_questions="student_brief_introduction"
:key="new Date().getTime()"
></examination-header> -->
<!-- <test-info></test-info> -->
<test-info v-if="test_card_info" :testdata="test_card_info"></test-info> <test-info v-if="test_card_info" :testdata="test_card_info"></test-info>
<el-card class="box-card"> <el-card class="box-card">
...@@ -120,7 +114,10 @@ ...@@ -120,7 +114,10 @@
<el-image <el-image
style="width: 200px" style="width: 200px"
:src="IP + e.image" :src="IP + e.image"
@click="ImageZoomUrl=IP + e.image;is_ImageZoom=true" @click="
ImageZoomUrl = IP + e.image;
is_ImageZoom = true;
"
> >
</el-image> </el-image>
<!-- <img :src="IP + e.image" alt="" /> --> <!-- <img :src="IP + e.image" alt="" /> -->
...@@ -153,9 +150,9 @@ ...@@ -153,9 +150,9 @@
<el-card class="box-card"> <el-card class="box-card">
<div style="text-align: center"> <div style="text-align: center">
<el-radio-group v-model="radio1"> <el-radio-group v-model="radio1" class="result_chart_box">
<el-radio-button label="student_comments">学员点评</el-radio-button> <el-radio-button label="student_comments">学员点评</el-radio-button>
<el-radio-button label="summary">本轮总结</el-radio-button> <el-radio-button label="summary">本次总结</el-radio-button>
<el-radio-button label="general_comment" <el-radio-button label="general_comment"
>本次培训总评</el-radio-button >本次培训总评</el-radio-button
> >
...@@ -188,16 +185,12 @@ ...@@ -188,16 +185,12 @@
</el-card> </el-card>
</div> </div>
<el-dialog title="" :visible.sync="is_ImageZoom" top="0" style="height:100vh" width="100%"> <div class="dialog_box" v-if="is_ImageZoom">
<div class="table_box"> <div class="close_box" @click="is_ImageZoom = false">
<!-- --> <i class="el-icon-close"></i>
</div>
<ImageZoom :src="ImageZoomUrl"></ImageZoom> <ImageZoom :src="ImageZoomUrl"></ImageZoom>
</div> </div>
<!-- <span slot="footer" class="dialog-footer">
<el-button>取 消</el-button>
<el-button type="primary">确 定</el-button>
</span> -->
</el-dialog>
</div> </div>
</template> </template>
...@@ -212,11 +205,17 @@ import OverallAppraisal from './components/overall_appraisal_view.vue'; ...@@ -212,11 +205,17 @@ import OverallAppraisal from './components/overall_appraisal_view.vue';
export default { export default {
name: '', name: '',
components: { ImageZoom,TestInfo, Summary, StudentComments, OverallAppraisal }, components: {
ImageZoom,
TestInfo,
Summary,
StudentComments,
OverallAppraisal,
},
data() { data() {
return { return {
ImageZoomUrl:null, ImageZoomUrl: null,
is_ImageZoom:false, is_ImageZoom: false,
IP: process.env.VUE_APP_BASE_API, IP: process.env.VUE_APP_BASE_API,
//初始化请求参数 //初始化请求参数
...@@ -273,19 +272,11 @@ export default { ...@@ -273,19 +272,11 @@ export default {
//学员评估 //学员评估
this.statistical_results = res.statistical_results; this.statistical_results = res.statistical_results;
//本次培训总评 //本次培训总评
// this.appraisal_data = { ...res.Round_cultivate.review_content };
// this.appraisal_data['found_remark'] = res.Round_cultivate.found_remark;
if (res.Round_cultivate) { if (res.Round_cultivate) {
this.appraisal_data = { ...res.Round_cultivate.review_content }; this.appraisal_data = { ...res.Round_cultivate.review_content };
this.appraisal_data['found_remark'] = this.appraisal_data['found_remark'] =
res.Round_cultivate.found_remark; res.Round_cultivate.found_remark;
} }
//本轮总结
// this.summary_data = {
// ...res.Round.review_content,
// };
// this.summary_data['found_remark'] = res.Round.found_remark;
if (res.Round) { if (res.Round) {
this.summary_data = { this.summary_data = {
...res.Round.review_content, ...res.Round.review_content,
...@@ -300,22 +291,7 @@ export default { ...@@ -300,22 +291,7 @@ export default {
duration: res.answer_duration, duration: res.answer_duration,
score: res.score, score: res.score,
}; };
// this.student_brief_introduction = {
// title: res.examination_questions_title || '',
// user_name: res.name || '',
// score: res.score || '',
// duration: res.answer_duration || '',
// status: res.status,
// examination_status: [
// { id: 1, label: '预约完成', type: 'success' },
// { id: 2, label: '考试完成', type: 'success' },
// { id: 3, label: '已发布', type: 'success' },
// { id: 4, label: '取消', type: 'info' },
// { id: 5, label: '失效', type: 'danger' },
// ],
// };
this.questions_list = []; this.questions_list = [];
// if (res.examination_questions) this.questions_list = || [];
res.examination_questions.examination_question_detail.forEach( res.examination_questions.examination_question_detail.forEach(
(element, index) => { (element, index) => {
let obj = JSON.parse(JSON.stringify(element)); let obj = JSON.parse(JSON.stringify(element));
...@@ -326,13 +302,13 @@ export default { ...@@ -326,13 +302,13 @@ export default {
let new_arr = []; let new_arr = [];
if (res.examination_questions.examination_question_detail.length > 0) { if (res.examination_questions.examination_question_detail.length > 0) {
console.log('1111'); // console.log('1111');
new_arr = array_conversion( new_arr = array_conversion(
res.examination_questions.examination_question_detail, res.examination_questions.examination_question_detail,
5 5
); );
} else { } else {
console.log('2222'); // console.log('2222');
for (let index = 0; index < 20; index++) { for (let index = 0; index < 20; index++) {
let items = []; let items = [];
for (let i = 0; i < 5; i++) { for (let i = 0; i < 5; i++) {
...@@ -343,8 +319,8 @@ export default { ...@@ -343,8 +319,8 @@ export default {
new_arr.push(items); new_arr.push(items);
} }
} }
console.log('二维数据@@@'); // console.log('二维数据@@@');
console.log(new_arr); // console.log(new_arr);
// console.log(JSON.stringify(new_arr)); // console.log(JSON.stringify(new_arr));
this.questions_list = new_arr; this.questions_list = new_arr;
this.detailed_information = res; this.detailed_information = res;
...@@ -352,7 +328,6 @@ export default { ...@@ -352,7 +328,6 @@ export default {
}, },
showImageView(val) { showImageView(val) {
this.image_url = val; this.image_url = val;
this.outerVisible = true; this.outerVisible = true;
}, },
}, },
...@@ -513,6 +488,10 @@ export default { ...@@ -513,6 +488,10 @@ export default {
margin: 0; margin: 0;
} }
.result_chart_box {
white-space: nowrap;
}
.row_box { .row_box {
display: inline-block; display: inline-block;
white-space: nowrap; white-space: nowrap;
...@@ -545,4 +524,21 @@ export default { ...@@ -545,4 +524,21 @@ export default {
} }
} }
} }
.dialog_box {
position: fixed;
left: 0;
top: 0;
bottom: 0;
right: 0;
background-color: rgba(0, 0, 0, 0.3);
z-index: 3000;
.close_box {
position: fixed;
right: 10px;
top: 85px;
z-index: 3004;
color: #fff;
}
}
</style> </style>
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* @Author: AnthonyD * @Author: AnthonyD
* @Date: 2023-03-01 16:25:21 * @Date: 2023-03-01 16:25:21
* @Last Modified by: AnthonyD * @Last Modified by: AnthonyD
* @Last Modified time: 2023-03-30 09:55:37 * @Last Modified time: 2023-04-03 19:52:34
*/ */
</script> </script>
...@@ -63,82 +63,11 @@ ...@@ -63,82 +63,11 @@
test_result_sub_data[e + (i - 1) * 5 - 1].value test_result_sub_data[e + (i - 1) * 5 - 1].value
}} }}
</el-button> </el-button>
<!-- <el-input
v-if="test_result_sub_data[e + (i - 1) * 5 - 1]"
v-model="
test_result_sub_data[e + (i - 1) * 5 - 1].value
"
style="width: 100%"
class="input_box"
>
</el-input> -->
<!-- <el-popover
style="display: block; width: 100%; height: 100%"
v-if="test_result_sub_data[e + (i - 1) * 5 - 1]"
placement="bottom"
width="370"
height="400"
v-model="
test_result_sub_data[e + (i - 1) * 5 - 1].visible
"
trigger="click"
>
<div style="overflow-y: scroll;max-height: 400px;">
<el-row >
<el-col :span="8" v-for="(tobacco_grades_data_f, tobacco_grades_data_index) in tobacco_grades_data"
:key="'t'+(e + (i - 1) * 5 - 1)+tobacco_grades_data_index" style="height:119px;border-bottom: 1px solid #e6ebf5; padding:8px 0px">
<div style="padding:2px 0px"><el-tag>组别:{{tobacco_grades_data_f.name}}</el-tag></div>
<el-radio-group size="mini" @change="test_result_sub_data[e + (i - 1) * 5 - 1].visible=false" v-model="test_result_sub_data[e + (i - 1) * 5 - 1].value">
<el-radio-button
v-for="(grade_code_i, grade_code_index) in tobacco_grades_data_f.value"
:key="'s'+tobacco_grades_data_index+(e + (i - 1) * 5 - 1)+grade_code_index"
:label="grade_code_i.grade_code">{{grade_code_i.grade_code}}</el-radio-button>
</el-radio-group>
</el-col>
</el-row>
</div>
<el-button
type="text"
style="color: #303133; width: 70px"
slot="reference"
>
{{
test_result_sub_data[e + (i - 1) * 5 - 1].value
}}
</el-button>
</el-popover> -->
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<!-- <template v-if="false">
<div class="row_box" v-for="e in 5" :key="e">
<div class="row_line row_header">
<div class="left">序号</div>
<div class="right">结果</div>
</div>
<div class="row_line" v-for="i in row" :key="i">
<div class="left_data">
{{
test_result_sub_data[e + (i - 1) * 5 - 1]
? e + (i - 1) * 5
: ''
}}
</div>
<div class="right_data">
<el-input
v-if="test_result_sub_data[e + (i - 1) * 5 - 1]"
v-model="
test_result_sub_data[e + (i - 1) * 5 - 1].value
"
style="width: 100%"
></el-input>
</div>
</div>
</div>
</template> -->
</el-row> </el-row>
</div> </div>
</div> </div>
......
Markdown 格式
0% 或
您添加了 0 人 到此讨论。请谨慎行事。
请先完成此评论的编辑!
请 注册 或者 后发表评论