提交 e9f54e1b authored 作者: Yroc's avatar Yroc

合并

上级 f4ff956a
...@@ -32,7 +32,22 @@ ...@@ -32,7 +32,22 @@
</th> </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"
:rowspan="
merge_fields && merge_fields.indexOf(e.key) > -1
? merge_fields_fun(index, e.key, 'sss')
: 1
"
v-if="
merge_fields && merge_fields.indexOf(e.key) > -1
? show_row_key[e.key]
? show_row_key[e.key][index]
: false
: true
"
>
<div v-if="e.key == 'distribute'"> <div v-if="e.key == 'distribute'">
<div <div
v-if=" v-if="
...@@ -89,9 +104,12 @@ ...@@ -89,9 +104,12 @@
<script> <script>
export default { export default {
props: ['table_data', 'labers'], props: ['table_data', 'labers', 'merge_fields'],
data() { data() {
return { return {
is_show_table: false,
show_row_key: {},
row_data_name: {},
sort_field: null, sort_field: null,
sort_type: null, sort_type: null,
}; };
...@@ -101,9 +119,74 @@ export default { ...@@ -101,9 +119,74 @@ export default {
computed: {}, computed: {},
created() {}, created() {},
mounted() {}, mounted() {
this.data_f();
},
methods: { methods: {
data_f() {
this.row_data_name = {};
this.show_row_key = {};
this.is_show_table = false;
let index_list = [];
for (let d in this.merge_fields) {
for (let i in this.table_data) {
let s = 0;
if (this.show_row_key[this.merge_fields[d]]) {
s = this.merge_fields_fun(i, this.merge_fields[d]);
this.show_row_key[this.merge_fields[d]][i] = s ? true : false;
if (!index_list[i] && s) {
index_list[i] = true;
}
} else {
let a = {};
let s = this.merge_fields_fun(i, this.merge_fields[d]);
a[i] = s ? true : false;
this.show_row_key[this.merge_fields[d]] = a;
if (!index_list[i] && s) {
index_list[i] = true;
}
}
}
}
for (let i in index_list) {
for (let d in this.merge_fields) {
if (this.merge_fields[d] == 'wrong_position') {
this.show_row_key[this.merge_fields[d]][i] = true;
}
}
}
// console.log(this.show_row_key);
this.row_data_name = {};
this.is_show_table = true;
},
merge_fields_fun(index, key, a = false) {
let num = 0;
if (
!this.row_data_name[key] ||
(this.row_data_name[key] &&
this.row_data_name[key] != this.table_data[index][key]) ||
this.show_row_key[key][index]
) {
this.row_data_name[key] = this.table_data[index][key];
for (let mf_i in this.table_data) {
if (parseInt(mf_i) >= parseInt(index)) {
if (a && this.show_row_key[key][parseInt(mf_i) + 1]) {
num += 1;
return num;
} else if (
this.table_data[parseInt(index)][key] ==
this.table_data[parseInt(mf_i)][key]
) {
num += 1;
} else {
return num;
}
}
}
}
return num;
},
sort(col, type = 'desc') { sort(col, type = 'desc') {
this.sort_field = col; this.sort_field = col;
this.sort_type = type; this.sort_type = type;
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
</div> </div>
<div class="content_container" v-if="original_data.type == 'table'"> <div class="content_container" v-if="original_data.type == 'table'">
<Table <Table
:merge_fields="original_data.merge_fields"
:table_data="original_data.list" :table_data="original_data.list"
:labers="original_data.labers" :labers="original_data.labers"
></Table> ></Table>
......
...@@ -755,23 +755,41 @@ export default { ...@@ -755,23 +755,41 @@ export default {
let keys = Object.keys(datas); let keys = Object.keys(datas);
let list = []; let list = [];
let labers = [ let labers = [
{ label: '正确部位', key: 'answer_position' },
{ label: '错误部位', key: 'wrong_position' },
{ 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' },
]; ];
// keys.forEach((element, index) => {
// list.push({
// position: element,
// answer: datas[element].answer,
// wrong_num: datas[element].wrong_num,
// // distribute: datas[element].distribute,
// distribute: countOccurrences(datas[element].distribute),
// });
// });
keys.forEach((element, index) => { keys.forEach((element, index) => {
for (let s in datas[element]) {
for (let i in datas[element][s]) {
list.push({ list.push({
position: element, answer_position: element,
answer: datas[element].answer, wrong_position: s,
wrong_num: datas[element].wrong_num, position: datas[element][s][i].title,
// distribute: datas[element].distribute, answer: datas[element][s][i].answer,
distribute: countOccurrences(datas[element].distribute), wrong_num: datas[element][s][i].wrong_num,
distribute: countOccurrences(datas[element][s][i].distribute),
distribute_student: datas[element][s][i].distribute_student,
}); });
}
}
}); });
return { return {
type: 'table', type: 'table',
chart_id: 'wrong_position', chart_id: 'wrong_position',
merge_fields: ['answer_position', 'wrong_position'],
color: '#E6A23C', color: '#E6A23C',
title: '错误部位', title: '错误部位',
labers, labers,
...@@ -784,26 +802,40 @@ export default { ...@@ -784,26 +802,40 @@ export default {
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: 'title' },
{ label: '正确答案', key: 'answer' }, { label: '正确答案', key: 'answer' },
{ label: '错题数量', key: 'wrong_num' }, { label: '错题数量', key: 'wrong_num' },
{ label: '错误答案内容', key: 'distribute' }, { label: '错误答案内容', key: 'distribute' },
]; ];
// keys.forEach((element, index) => {
// list.push({
// level: element,
// answer: datas[element].answer,
// wrong_num: datas[element].wrong_num,
// // distribute: datas[element].distribute,
// distribute: countOccurrences(datas[element].distribute),
// //countOccurrences(datas[element].distribute)
// });
// });
keys.forEach((element, index) => { keys.forEach((element, index) => {
for (let s in datas[element]) {
list.push({ list.push({
level: element, level: element,
answer: datas[element].answer, title: datas[element][s].title,
wrong_num: datas[element].wrong_num, answer: datas[element][s].answer,
// distribute: datas[element].distribute, wrong_num: datas[element][s].wrong_num,
distribute: countOccurrences(datas[element].distribute), distribute: countOccurrences(datas[element][s].distribute),
distribute_student: datas[element][s].distribute_student,
//countOccurrences(datas[element].distribute)
}); });
}
}); });
return { return {
type: 'table', type: 'table',
chart_id: 'wrong_level', chart_id: 'wrong_level',
color: '#505F79', color: '#505F79',
merge_fields: ['level'],
title: '错误上下一级', title: '错误上下一级',
labers, labers,
list, list,
...@@ -815,26 +847,40 @@ export default { ...@@ -815,26 +847,40 @@ 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: 'title' },
{ label: '正确答案', key: 'answer' }, { label: '正确答案', key: 'answer' },
{ label: '错题数量', key: 'wrong_num' }, { label: '错题数量', key: 'wrong_num' },
{ label: '错误答案内容', key: 'distribute' }, { label: '错误答案内容', key: 'distribute' },
]; ];
// keys.forEach((element, index) => {
// list.push({
// color: element,
// answer: datas[element].answer,
// wrong_num: datas[element].wrong_num,
// // distribute: datas[element].distribute,
// distribute: countOccurrences(datas[element].distribute),
// //distribute: countOccurrences(datas[element].distribute),
// });
// });
keys.forEach((element, index) => { keys.forEach((element, index) => {
for (let s in datas[element]) {
list.push({ list.push({
color: element, color: element,
answer: datas[element].answer, title: datas[element][s].title,
wrong_num: datas[element].wrong_num, answer: datas[element][s].answer,
// distribute: datas[element].distribute, wrong_num: datas[element][s].wrong_num,
distribute: countOccurrences(datas[element].distribute), distribute: countOccurrences(datas[element][s].distribute),
distribute_student: datas[element][s].distribute_student,
//distribute: countOccurrences(datas[element].distribute),
}); });
}
}); });
return { return {
type: 'table', type: 'table',
chart_id: 'wrong_color', chart_id: 'wrong_color',
color: '#99A9BF', color: '#99A9BF',
merge_fields: ['color'],
title: '错误颜色', title: '错误颜色',
labers, labers,
list, list,
...@@ -846,25 +892,40 @@ export default { ...@@ -846,25 +892,40 @@ 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: 'title' },
{ label: '正确答案', key: 'answer' }, { label: '正确答案', key: 'answer' },
{ label: '错题数量', key: 'wrong_num' }, { label: '错题数量', key: 'wrong_num' },
{ label: '错误答案内容', key: 'distribute' }, { label: '错误答案内容', key: 'distribute' },
]; ];
// keys.forEach((element, index) => {
// list.push({
// group: element,
// answer: datas[element].answer,
// wrong_num: datas[element].wrong_num,
// // distribute: datas[element].distribute,
// distribute: countOccurrences(datas[element].distribute),
// //countOccurrences
// });
// });
keys.forEach((element, index) => { keys.forEach((element, index) => {
for (let s in datas[element]) {
list.push({ list.push({
group: element, group: element,
answer: datas[element].answer, title: datas[element][s].title,
wrong_num: datas[element].wrong_num, answer: datas[element][s].answer,
// distribute: datas[element].distribute, wrong_num: datas[element][s].wrong_num,
distribute: countOccurrences(datas[element].distribute), distribute: countOccurrences(datas[element][s].distribute),
//countOccurrences distribute_student: datas[element][s].distribute_student,
}); });
}
}); });
return { return {
type: 'table', type: 'table',
chart_id: 'wrong_group', chart_id: 'wrong_group',
color: '#529B2E', color: '#529B2E',
merge_fields: ['group'],
title: '错误组别', title: '错误组别',
labers, labers,
list, list,
......
Markdown 格式
0% 或
您添加了 0 人 到此讨论。请谨慎行事。
请先完成此评论的编辑!
请 注册 或者 后发表评论