Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Q
qualityTesting_studentHome
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
tobacco
qualityTesting_studentHome
Commits
3a73cbf1
提交
3a73cbf1
authored
4月 18, 2023
作者:
Yroc
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
'学生端优化完善'
上级
5b99ba3f
全部展开
显示空白字符变更
内嵌
并排
正在显示
13 个修改的文件
包含
772 行增加
和
252 行删除
+772
-252
BarChart.vue
src/components/AnalyseModule/components/BarChart.vue
+22
-18
EyeStabilityTable.vue
...components/AnalyseModule/components/EyeStabilityTable.vue
+172
-15
SelectTabe.vue
src/components/AnalyseModule/components/SelectTabe.vue
+173
-0
SimpleTable.vue
src/components/AnalyseModule/components/SimpleTable.vue
+13
-2
table.vue
src/components/AnalyseModule/components/table.vue
+122
-7
index.vue
src/components/AnalyseModule/index.vue
+54
-18
main.js
src/main.js
+1
-5
index.scss
src/styles/index.scss
+13
-1
overall_appraisal_view.vue
src/views/analysis/components/overall_appraisal_view.vue
+82
-31
student_comments_view.vue
src/views/analysis/components/student_comments_view.vue
+0
-0
summary-view.vue
src/views/analysis/components/summary-view.vue
+74
-34
index.vue
src/views/analysis/index.vue
+45
-49
index.vue
src/views/upload-result/index.vue
+1
-72
没有找到文件。
src/components/AnalyseModule/components/BarChart.vue
浏览文件 @
3a73cbf1
...
...
@@ -3,7 +3,7 @@
* @Author: AnthonyD
* @Date: 2023-03-28 15:25:05
* @Last Modified by: AnthonyD
* @Last Modified time: 2023-0
3-29 19:15:23
* @Last Modified time: 2023-0
4-18 17:21:31
*/
</
script
>
<!-- -->
<
template
>
...
...
@@ -21,8 +21,8 @@ export default {
computed
:
{},
created
()
{
console
.
log
(
'图标
数据'
);
console
.
log
(
this
.
chart_data
);
// console.log('图标@@@@@@@@
数据');
//
console.log(this.chart_data);
},
mounted
()
{
this
.
initChart
();
...
...
@@ -30,7 +30,9 @@ export default {
methods
:
{
initChart
()
{
let
colors
=
[
'#bcdfdc'
,
'#47afa0'
,
'#cd9f50'
];
let
series
=
this
.
changData
(
this
.
chart_data
);
// console.log(series);
let
legend_data
=
this
.
chart_data
.
labers
.
map
((
item
)
=>
{
return
item
.
key
;
});
...
...
@@ -40,33 +42,26 @@ export default {
renderer
:
'canvas'
,
useDirtyRect
:
false
,
});
let
labers
=
this
.
chart_data
.
labers
.
map
((
item
)
=>
{
return
item
.
label
;
});
let
option
;
option
=
{
color
:
[
'#cd9f50'
,
'#47afa0'
,
'#bcdfdc'
]
,
color
:
colors
,
tooltip
:
{
trigger
:
'axis'
,
axisPointer
:
{
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
:
{
formatter
:
(
name
)
=>
{
/*
formatter: (name) => {
let objs = this.chart_data.labers.filter((itme) => {
return itme.key == name;
});
return objs[0].label;
},
}, */
data
:
labers
,
},
toolbox
:
{
show
:
false
,
...
...
@@ -87,6 +82,10 @@ export default {
axisTick
:
{
show
:
false
},
// data: ['2012', '2013', '2014', '2015', '2016']
data
:
this
.
chart_data
.
keys
,
axisLabel
:
{
show
:
true
,
rotate
:
-
90
,
},
},
],
yAxis
:
[
...
...
@@ -106,10 +105,15 @@ export default {
},
//处理数据
changData
(
data
)
{
// console.log(data);
let
list
=
[];
data
.
labers
.
forEach
((
item
,
index
)
=>
{
let
obj
=
{
name
:
item
.
key
,
itemStyle
:
{
normal
:
{
label
:
{
show
:
true
,
position
:
'top'
}
},
},
name
:
item
.
label
,
type
:
'bar'
,
barGap
:
0
,
emphasis
:
{
...
...
src/components/AnalyseModule/components/EyeStabilityTable.vue
浏览文件 @
3a73cbf1
...
...
@@ -9,20 +9,34 @@
<div
class=
"container_box"
>
<table
class=
"table_box"
>
<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
v-for=
"(item, index) in table_data"
:key=
"index"
>
<td
v-for=
"(e, i) in labers"
:key=
"i"
>
<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>
<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=
"错误数据: "
>
<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
>
</el-form-item>
...
...
@@ -31,33 +45,145 @@
<el-button
slot=
"reference"
type=
"text"
size=
"mini"
>
{{
item
[
e
.
key
].
accuracy
.
value
}}
</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
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>
</td>
</tr>
</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>
</template>
<
script
>
export
default
{
props
:
[
'table_data'
,
'labers'
],
props
:
[
'table_data'
,
'labers'
,
'is_pover'
],
data
()
{
return
{};
return
{
sort_field
:
null
,
sort_type
:
null
,
};
},
components
:
{},
computed
:
{},
created
()
{},
created
()
{
// console.log(this.table_data);
// console.log(this.labers);
},
mounted
()
{},
methods
:
{
test
(
item
)
{
console
.
log
(
'判断对象'
);
console
.
log
(
item
);
console
.
log
(
typeof
item
==
'object'
);
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
;
}
});
//降序
}
},
},
};
...
...
@@ -66,6 +192,19 @@ export default {
.container_box
{
width
:
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
{
...
...
@@ -96,4 +235,22 @@ export default {
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
>
src/components/AnalyseModule/components/SelectTabe.vue
0 → 100644
浏览文件 @
3a73cbf1
<!--
* @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
>
src/components/AnalyseModule/components/SimpleTable.vue
浏览文件 @
3a73cbf1
...
...
@@ -7,6 +7,9 @@
<!-- -->
<
template
>
<div
class=
"container_box"
>
<!--
<el-select
v-model=
""
>
<el-option></el-option>
</el-select>
-->
<table
class=
"table_box"
>
<!--
<tr>
<th
v-for=
"(e, i) in labers"
:key=
"i"
>
{{
e
.
label
}}
</th>
...
...
@@ -24,18 +27,25 @@
export
default
{
props
:
[
'table_data'
],
data
()
{
return
{};
return
{
sel
:
''
,
};
},
components
:
{},
computed
:
{},
created
()
{},
mounted
()
{},
mounted
()
{
// console.log(this.table_data);
},
methods
:
{
//保留两位,四舍五入
keepTwoDecimal
(
num
)
{
if
(
num
.
includes
(
','
))
{
return
num
;
}
else
{
var
result
=
parseFloat
(
num
);
if
(
isNaN
(
result
))
{
return
false
;
...
...
@@ -43,6 +53,7 @@ export default {
result
=
Math
.
round
(
num
*
100
)
/
100
;
return
result
;
}
}
},
},
};
...
...
src/components/AnalyseModule/components/table.vue
浏览文件 @
3a73cbf1
...
...
@@ -9,12 +9,37 @@
<div
class=
"container_box"
>
<table
class=
"table_box"
>
<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
v-for=
"(item, index) in table_data"
:key=
"index"
>
<td
v-for=
"(e, i) in labers"
:key=
"i"
>
<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
placement=
"right"
title=
"标题"
...
...
@@ -29,9 +54,14 @@
>
</el-popover>
</div>
<div
v-else
>
<div
v-else
-if=
"typeof item['distribute'] == 'object'"
>
<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>
...
...
@@ -61,24 +91,75 @@
export
default
{
props
:
[
'table_data'
,
'labers'
],
data
()
{
return
{};
return
{
sort_field
:
null
,
sort_type
:
null
,
};
},
components
:
{},
computed
:
{},
created
()
{},
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
>
<
style
lang=
"scss"
scoped
>
.container_box
{
width
:
100%
;
height
:
100%
;
position
:
relative
;
}
// .el-icon-caret-bottom {
// position: absolute;
// top: 20px;
// }
// .el-icon-caret-top {
// position: absolute;
// top: 13px;
// }
.table_box
{
width
:
100%
;
// min-height: 100%;
...
...
@@ -107,4 +188,38 @@ export default {
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
>
src/components/AnalyseModule/index.vue
浏览文件 @
3a73cbf1
...
...
@@ -16,33 +16,63 @@
<div
class=
"header_box"
>
<el-row>
<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
:span=
"12"
style=
"text-align: right;"
>
<el-checkbox
v-if=
"original_data.is_show"
v-model=
"original_data.is_show.value"
@
change=
"changeSelect"
>
{{
original_data
.
is_show
.
value
?
'显示'
:
'隐藏'
}}
</el-checkbox>
<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"
>
{{
original_data
.
is_show
.
value
?
'显示'
:
'隐藏'
}}
</el-checkbox
>
</el-col>
</el-row>
</div>
<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
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
class=
"content_container"
v-if=
"original_data.type == 'bar'"
>
<bar-chart
:chart_data=
"
{ raw_data: original_data.raw_data, keys: original_data.keys, labers: original_data.labers }"
:chart_id="original_data.chart_id">
</bar-chart>
:chart_data=
"
{
raw_data: original_data.raw_data,
keys: original_data.keys,
labers: original_data.labers,
}"
:chart_id="original_data.chart_id"
>
</bar-chart>
</div>
<div
class=
"content_container"
v-if=
"original_data.type == 'simple_table'"
>
<simple-table
:table_data=
"original_data"
></simple-table>
</div>
<!-- 眼光稳定性 -->
<div
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
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>
</
template
>
...
...
@@ -53,6 +83,7 @@ import LineChart from './components/LineChart.vue';
import
BarChart
from
'./components/BarChart.vue'
;
import
SimpleTable
from
'./components/SimpleTable.vue'
;
import
EyeStabilityTable
from
'./components/EyeStabilityTable.vue'
;
import
SelectTabe
from
'./components/SelectTabe.vue'
;
export
default
{
props
:
[
'module_data'
],
data
()
{
...
...
@@ -61,23 +92,28 @@ export default {
};
},
components
:
{
Table
,
LineChart
,
BarChart
,
SimpleTable
,
EyeStabilityTable
},
components
:
{
Table
,
LineChart
,
BarChart
,
SimpleTable
,
EyeStabilityTable
,
SelectTabe
,
},
computed
:
{},
created
()
{
this
.
original_data
=
{
...
this
.
module_data
};
},
mounted
()
{
},
mounted
()
{},
methods
:
{
//选择框监听
changeSelect
()
{
this
.
$emit
(
'changeSelect'
,
this
.
original_data
.
is_show
);
},
}
}
},
};
</
script
>
<
style
lang=
"scss"
scoped
>
.analyse_container
{
...
...
src/main.js
浏览文件 @
3a73cbf1
...
...
@@ -2,7 +2,7 @@
* @Author: AnthonyD
* @Date: 2023-02-22 11:31:31
* @Last Modified by: AnthonyD
* @Last Modified time: 2023-0
3-27 16:42:54
* @Last Modified time: 2023-0
4-04 18:51:52
*/
import
Vue
from
'vue'
...
...
@@ -30,8 +30,6 @@ import echarts from 'echarts';
//引入加密函数,并将其封装
import
{
handleParams
,
Aesdecrypt
,
removeProperty
}
from
'@/utils/cryptoJS'
;
Vue
.
prototype
.
$handleParams
=
handleParams
;
//封装机密格式的参数
...
...
@@ -61,8 +59,6 @@ Vue.use(Element, {
Vue
.
prototype
.
$echarts
=
echarts
// register global utility filters
Object
.
keys
(
filters
).
forEach
(
key
=>
{
Vue
.
filter
(
key
,
filters
[
key
])
...
...
src/styles/index.scss
浏览文件 @
3a73cbf1
...
...
@@ -2,7 +2,7 @@
* @Author: AnthonyD
* @Date: 2023-02-22 11:31:31
* @Last Modified by: AnthonyD
* @Last Modified time: 2023-0
3-29 19:28:07
* @Last Modified time: 2023-0
4-18 19:02:01
*/
@import
'./variables.scss'
;
@import
'./mixin.scss'
;
...
...
@@ -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
src/views/analysis/components/overall_appraisal_view.vue
浏览文件 @
3a73cbf1
...
...
@@ -76,6 +76,16 @@
</AnalyseModule>
</div>
</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>
</div>
</div>
...
...
@@ -228,7 +238,8 @@ export default {
wrong_color_data
:
null
,
//错误组别
wrongG_group_data
:
null
,
//学员得分
transcript_data
:
null
,
//老师点评
found_remark
:
null
,
};
...
...
@@ -264,6 +275,9 @@ export default {
this
.
province_score
=
this
.
changeProvinceScore
(
this
.
appraisal_data
.
ProvinceScore
);
//省区得分
this
.
transcript_data
=
this
.
changeTranscript
(
this
.
appraisal_data
.
Transcript
);
//学员得分
this
.
breed_score
=
this
.
changeBreedScore
(
this
.
appraisal_data
.
breedScore
);
//品种得分
//最高分、最低分、平均分,中位数、众数、离散(变异系数)
this
.
get_highes_lowestt_score_data
=
this
.
getHighesLowesttScore
(
...
...
@@ -285,8 +299,8 @@ export default {
this
.
appraisal_data
.
WrongPosition
);
//错误部位
this
.
error_level_data
=
this
.
changeErrorLevel
(
this
.
appraisal_data
.
Error
Level
);
//错误
等
级
this
.
appraisal_data
.
Wrong
Level
);
//错误
上下一
级
this
.
wrong_color_data
=
this
.
changeWrongColor
(
this
.
appraisal_data
.
WrongColor
);
//错误颜色
...
...
@@ -295,7 +309,7 @@ export default {
);
//错误组别
console
.
log
(
'处理好的数据'
);
console
.
log
(
this
.
wrong_position
_data
);
console
.
log
(
this
.
error_level
_data
);
},
//计算百分比
toPercent
,
...
...
@@ -312,7 +326,7 @@ export default {
let
labers
=
[
{
label
:
'分类'
,
key
:
'classify'
},
{
label
:
'分数段'
,
key
:
'score'
},
{
label
:
'人
数
'
,
key
:
'people'
},
{
label
:
'人
次
'
,
key
:
'people'
},
{
label
:
'占比'
,
key
:
'proportion'
},
];
keys
.
forEach
((
element
)
=>
{
...
...
@@ -341,9 +355,9 @@ export default {
if
(
!
datas
)
return
false
;
let
keys
=
Object
.
keys
(
datas
);
let
labers
=
[
{
label
:
'
分数'
,
key
:
'ScoreScor
e'
},
{
label
:
'
总分'
,
key
:
'assembl
e'
},
{
label
:
'
人数'
,
key
:
'student_num
'
},
{
label
:
'
总题数'
,
key
:
'assembl
e'
},
{
label
:
'
正确人次'
,
key
:
'success_man_tim
e'
},
{
label
:
'
错误人次'
,
key
:
'error_man_time
'
},
];
return
{
type
:
'bar'
,
...
...
@@ -360,9 +374,9 @@ export default {
if
(
!
datas
)
return
false
;
let
keys
=
Object
.
keys
(
datas
);
let
labers
=
[
{
label
:
'
分数'
,
key
:
'ScoreScore'
,
value
:
'分数
'
},
{
label
:
'
总分'
,
key
:
'assemble'
,
value
:
'分数
'
},
{
label
:
'
人数'
,
key
:
'student_num'
,
value
:
'分数
'
},
{
label
:
'
总题数'
,
key
:
'assemble
'
},
{
label
:
'
正确人次'
,
key
:
'success_man_time
'
},
{
label
:
'
错误人次'
,
key
:
'error_man_time
'
},
];
return
{
type
:
'bar'
,
...
...
@@ -379,9 +393,9 @@ export default {
if
(
!
datas
)
return
false
;
let
keys
=
Object
.
keys
(
datas
);
let
labers
=
[
{
label
:
'
分数'
,
key
:
'ScoreScor
e'
},
{
label
:
'
总分'
,
key
:
'assembl
e'
},
{
label
:
'
人数'
,
key
:
'student_num
'
},
{
label
:
'
总题数'
,
key
:
'assembl
e'
},
{
label
:
'
正确人次'
,
key
:
'success_man_tim
e'
},
{
label
:
'
错误人次'
,
key
:
'error_man_time
'
},
];
return
{
type
:
'bar'
,
...
...
@@ -414,30 +428,61 @@ export default {
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
)
{
if
(
!
datas
)
return
false
;
let
list
=
[];
let
labers
=
[
{
label
:
'题目'
,
key
:
'title'
},
{
label
:
'区域'
,
key
:
'area'
},
{
label
:
'答案'
,
key
:
'answer'
},
{
label
:
'稳定性'
,
key
:
'stability'
},
];
//处理稳定性数据
const
changeStability
=
(
items
)
=>
{
let
all_num
=
items
.
exactness
.
length
+
items
.
wrong
.
length
;
let
Accuracy
=
toPercent
(
items
.
exactness
.
length
,
all_num
);
//准确率
return
{
accuracy
:
{
label
:
'正确率'
,
value
:
Accuracy
},
// exactness: { label: '正确数据', value: items.exactness },
wrong
:
{
label
:
'错误数据'
,
value
:
items
.
wrong
},
};
};
// const changeStability = (items) => {
// let all_num = items.exactness.length + items.wrong.length;
// let Accuracy = toPercent(items.exactness.length, all_num); //准确率
// return {
// accuracy: { label: '正确率', value: Accuracy },
// // exactness: { label: '正确数据', value: items.exactness },
// 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
)
=>
{
list
.
push
({
title
:
datas
.
title
[
index
],
answer
:
element
.
answer
,
stability
:
changeStability
(
element
),
area
:
element
.
area
,
stability
:
element
.
conclusion
,
conclusion_table
:
element
.
conclusion_table
,
});
});
return
{
...
...
@@ -458,6 +503,7 @@ export default {
{
label
:
'题目'
,
key
:
'title'
},
{
label
:
'结果'
,
key
:
'result'
},
{
label
:
'错误率'
,
key
:
'errorRate'
},
{
label
:
'比率'
,
key
:
'ratio'
},
{
label
:
'错误结果'
,
key
:
'distribute'
},
];
datas
.
forEach
((
element
,
index
)
=>
{
...
...
@@ -465,7 +511,9 @@ export default {
index
:
index
+
1
,
title
:
element
.
title
,
result
:
element
.
result
,
// errorRate: `${keepTwoDecimal(element.errorRate)}%`,
errorRate
:
`
${
element
.
errorRate
}
%`
,
ratio
:
`
${
element
.
wrong_num
+
'/'
+
element
.
total
}
`
,
distribute
:
element
.
distribute
,
});
});
...
...
@@ -487,12 +535,15 @@ export default {
{
label
:
'题目'
,
key
:
'title'
},
{
label
:
'结果'
,
key
:
'result'
},
{
label
:
'正确率'
,
key
:
'errorRate'
},
{
label
:
'比率'
,
key
:
'ratio'
},
];
datas
.
forEach
((
element
,
index
)
=>
{
list
.
push
({
index
:
index
+
1
,
title
:
element
.
title
,
result
:
element
.
result
,
// errorRate: `${keepTwoDecimal(100 - element.errorRate)}%`,
ratio
:
`
${
element
.
total
-
element
.
wrong_num
+
'/'
+
element
.
total
}
`
,
errorRate
:
`
${
100
-
element
.
errorRate
}
%`
,
});
});
...
...
@@ -513,7 +564,7 @@ export default {
let
keys
=
Object
.
keys
(
datas
);
let
list
=
[];
let
labers
=
[
{
label
:
'
部位
'
,
key
:
'position'
},
{
label
:
'
题目
'
,
key
:
'position'
},
{
label
:
'正确答案'
,
key
:
'answer'
},
{
label
:
'错题数量'
,
key
:
'wrong_num'
},
{
label
:
'错误答案内容'
,
key
:
'distribute'
},
...
...
@@ -536,13 +587,13 @@ export default {
list
,
};
},
//错误
等
级
//错误
上下一
级
changeErrorLevel
(
datas
)
{
if
(
!
datas
)
return
false
;
let
keys
=
Object
.
keys
(
datas
);
let
list
=
[];
let
labers
=
[
{
label
:
'
等级
'
,
key
:
'level'
},
{
label
:
'
题目
'
,
key
:
'level'
},
{
label
:
'正确答案'
,
key
:
'answer'
},
{
label
:
'错题数量'
,
key
:
'wrong_num'
},
{
label
:
'错误答案内容'
,
key
:
'distribute'
},
...
...
@@ -560,9 +611,9 @@ export default {
});
return
{
type
:
'table'
,
chart_id
:
'wrong_
position
'
,
chart_id
:
'wrong_
level
'
,
color
:
'#505F79'
,
title
:
'错误
等
级'
,
title
:
'错误
上下一
级'
,
labers
,
list
,
};
...
...
@@ -573,7 +624,7 @@ export default {
let
keys
=
Object
.
keys
(
datas
);
let
list
=
[];
let
labers
=
[
{
label
:
'
颜色
'
,
key
:
'color'
},
{
label
:
'
题目
'
,
key
:
'color'
},
{
label
:
'正确答案'
,
key
:
'answer'
},
{
label
:
'错题数量'
,
key
:
'wrong_num'
},
{
label
:
'错误答案内容'
,
key
:
'distribute'
},
...
...
@@ -604,7 +655,7 @@ export default {
let
keys
=
Object
.
keys
(
datas
);
let
list
=
[];
let
labers
=
[
{
label
:
'
组别
'
,
key
:
'group'
},
{
label
:
'
题目
'
,
key
:
'group'
},
{
label
:
'正确答案'
,
key
:
'answer'
},
{
label
:
'错题数量'
,
key
:
'wrong_num'
},
{
label
:
'错误答案内容'
,
key
:
'distribute'
},
...
...
src/views/analysis/components/student_comments_view.vue
浏览文件 @
3a73cbf1
差异被折叠。
点击展开。
src/views/analysis/components/summary-view.vue
浏览文件 @
3a73cbf1
...
...
@@ -76,6 +76,16 @@
</AnalyseModule>
</div>
</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>
</div>
</div>
...
...
@@ -228,7 +238,8 @@ export default {
wrong_color_data
:
null
,
//错误组别
wrongG_group_data
:
null
,
//学员得分
transcript_data
:
null
,
//老师点评
found_remark
:
null
,
};
...
...
@@ -264,6 +275,9 @@ export default {
this
.
province_score
=
this
.
changeProvinceScore
(
this
.
summary_data
.
ProvinceScore
);
//省区得分
this
.
transcript_data
=
this
.
changeTranscript
(
this
.
summary_data
.
Transcript
);
//学员得分
this
.
breed_score
=
this
.
changeBreedScore
(
this
.
summary_data
.
breedScore
);
//品种得分
//最高分、最低分、平均分,中位数、众数、离散(变异系数)
this
.
get_highes_lowestt_score_data
=
this
.
getHighesLowesttScore
(
...
...
@@ -285,8 +299,8 @@ export default {
this
.
summary_data
.
WrongPosition
);
//错误部位
this
.
error_level_data
=
this
.
changeErrorLevel
(
this
.
summary_data
.
Error
Level
);
//错误
等
级
this
.
summary_data
.
Wrong
Level
);
//错误
上下一
级
this
.
wrong_color_data
=
this
.
changeWrongColor
(
this
.
summary_data
.
WrongColor
);
//错误颜色
...
...
@@ -294,8 +308,8 @@ export default {
this
.
summary_data
.
WrongGroup
);
//错误组别
console
.
log
(
'处理好的数据'
);
console
.
log
(
this
.
wrong_position_data
);
//
console.log('处理好的数据');
//
console.log(this.wrong_position_data);
},
//计算百分比
toPercent
,
...
...
@@ -341,9 +355,9 @@ export default {
if
(
!
datas
)
return
false
;
let
keys
=
Object
.
keys
(
datas
);
let
labers
=
[
{
label
:
'
分数'
,
key
:
'ScoreScor
e'
},
{
label
:
'
总分'
,
key
:
'assembl
e'
},
{
label
:
'
人数'
,
key
:
'student_num
'
},
{
label
:
'
总题数'
,
key
:
'assembl
e'
},
{
label
:
'
正确人次'
,
key
:
'success_man_tim
e'
},
{
label
:
'
错误人次'
,
key
:
'error_man_time
'
},
];
return
{
type
:
'bar'
,
...
...
@@ -360,9 +374,9 @@ export default {
if
(
!
datas
)
return
false
;
let
keys
=
Object
.
keys
(
datas
);
let
labers
=
[
{
label
:
'
分数'
,
key
:
'ScoreScor
e'
},
{
label
:
'
总分'
,
key
:
'assembl
e'
},
{
label
:
'
人数'
,
key
:
'student_num
'
},
{
label
:
'
总题数'
,
key
:
'assembl
e'
},
{
label
:
'
正确人次'
,
key
:
'success_man_tim
e'
},
{
label
:
'
错误人次'
,
key
:
'error_man_time
'
},
];
return
{
type
:
'bar'
,
...
...
@@ -393,6 +407,29 @@ export default {
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
)
{
if
(
!
datas
)
return
false
;
...
...
@@ -420,24 +457,34 @@ export default {
let
list
=
[];
let
labers
=
[
{
label
:
'题目'
,
key
:
'title'
},
{
label
:
'区域'
,
key
:
'area'
},
{
label
:
'答案'
,
key
:
'answer'
},
{
label
:
'稳定性'
,
key
:
'stability'
},
];
//处理稳定性数据
const
changeStability
=
(
items
)
=>
{
let
all_num
=
items
.
exactness
.
length
+
items
.
wrong
.
length
;
let
Accuracy
=
toPercent
(
items
.
exactness
.
length
,
all_num
);
//准确率
return
{
accuracy
:
{
label
:
'正确率'
,
value
:
Accuracy
},
// exactness: { label: '正确数据', value: items.exactness },
wrong
:
{
label
:
'错误数据'
,
value
:
items
.
wrong
},
};
};
// const changeStability = (items) => {
// let all_num = items.exactness.length + items.wrong.length;
// let Accuracy = toPercent(items.exactness.length, all_num); //准确率
// return {
// accuracy: { label: '正确率', value: Accuracy },
// // exactness: { label: '正确数据', value: items.exactness },
// 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
)
=>
{
list
.
push
({
title
:
datas
.
title
[
index
],
answer
:
element
.
answer
,
stability
:
changeStability
(
element
),
area
:
element
.
area
,
stability
:
element
.
conclusion
,
conclusion_table
:
element
.
conclusion_table
,
});
});
return
{
...
...
@@ -507,13 +554,11 @@ export default {
},
//错误部位
changeWrongPosition
(
datas
)
{
console
.
log
(
'错误部位原始数据'
);
console
.
log
(
datas
);
if
(
!
datas
)
return
false
;
let
keys
=
Object
.
keys
(
datas
);
let
list
=
[];
let
labers
=
[
{
label
:
'
部位
'
,
key
:
'position'
},
{
label
:
'
题目
'
,
key
:
'position'
},
{
label
:
'正确答案'
,
key
:
'answer'
},
{
label
:
'错题数量'
,
key
:
'wrong_num'
},
{
label
:
'错误答案内容'
,
key
:
'distribute'
},
...
...
@@ -536,13 +581,13 @@ export default {
list
,
};
},
//错误
等
级
//错误
上下一
级
changeErrorLevel
(
datas
)
{
if
(
!
datas
)
return
false
;
let
keys
=
Object
.
keys
(
datas
);
let
list
=
[];
let
labers
=
[
{
label
:
'
等级
'
,
key
:
'level'
},
{
label
:
'
题目
'
,
key
:
'level'
},
{
label
:
'正确答案'
,
key
:
'answer'
},
{
label
:
'错题数量'
,
key
:
'wrong_num'
},
{
label
:
'错误答案内容'
,
key
:
'distribute'
},
...
...
@@ -554,15 +599,13 @@ export default {
wrong_num
:
datas
[
element
].
wrong_num
,
// distribute: datas[element].distribute,
distribute
:
countOccurrences
(
datas
[
element
].
distribute
),
//countOccurrences(datas[element].distribute)
});
});
return
{
type
:
'table'
,
chart_id
:
'wrong_position'
,
color
:
'#505F79'
,
title
:
'错误
等
级'
,
title
:
'错误
上下一
级'
,
labers
,
list
,
};
...
...
@@ -573,7 +616,7 @@ export default {
let
keys
=
Object
.
keys
(
datas
);
let
list
=
[];
let
labers
=
[
{
label
:
'
颜色
'
,
key
:
'color'
},
{
label
:
'
题目
'
,
key
:
'color'
},
{
label
:
'正确答案'
,
key
:
'answer'
},
{
label
:
'错题数量'
,
key
:
'wrong_num'
},
{
label
:
'错误答案内容'
,
key
:
'distribute'
},
...
...
@@ -585,8 +628,6 @@ export default {
wrong_num
:
datas
[
element
].
wrong_num
,
// distribute: datas[element].distribute,
distribute
:
countOccurrences
(
datas
[
element
].
distribute
),
//distribute: countOccurrences(datas[element].distribute),
});
});
return
{
...
...
@@ -604,7 +645,7 @@ export default {
let
keys
=
Object
.
keys
(
datas
);
let
list
=
[];
let
labers
=
[
{
label
:
'
组别
'
,
key
:
'group'
},
{
label
:
'
题目
'
,
key
:
'group'
},
{
label
:
'正确答案'
,
key
:
'answer'
},
{
label
:
'错题数量'
,
key
:
'wrong_num'
},
{
label
:
'错误答案内容'
,
key
:
'distribute'
},
...
...
@@ -616,7 +657,6 @@ export default {
wrong_num
:
datas
[
element
].
wrong_num
,
// distribute: datas[element].distribute,
distribute
:
countOccurrences
(
datas
[
element
].
distribute
),
//countOccurrences
});
});
return
{
...
...
src/views/analysis/index.vue
浏览文件 @
3a73cbf1
...
...
@@ -3,18 +3,12 @@
* @Author: AnthonyD
* @Date: 2023-03-13 09:56:01
* @Last Modified by: AnthonyD
* @Last Modified time: 2023-0
3-30 11:31:19
* @Last Modified time: 2023-0
4-18 19:00:30
*/
</
script
>
<
template
>
<div
class=
"module_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>
<el-card
class=
"box-card"
>
...
...
@@ -120,7 +114,10 @@
<el-image
style=
"width: 200px"
:src=
"IP + e.image"
@
click=
"ImageZoomUrl=IP + e.image;is_ImageZoom=true"
@
click=
"
ImageZoomUrl = IP + e.image;
is_ImageZoom = true;
"
>
</el-image>
<!--
<img
:src=
"IP + e.image"
alt=
""
/>
-->
...
...
@@ -153,9 +150,9 @@
<el-card
class=
"box-card"
>
<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=
"summary"
>
本
轮
总结
</el-radio-button>
<el-radio-button
label=
"summary"
>
本
次
总结
</el-radio-button>
<el-radio-button
label=
"general_comment"
>
本次培训总评
</el-radio-button
>
...
...
@@ -188,16 +185,12 @@
</el-card>
</div>
<el-dialog
title=
""
:visible
.
sync=
"is_ImageZoom"
top=
"0"
style=
"height:100vh"
width=
"100%"
>
<div
class=
"table_box"
>
<!-- -->
<div
class=
"dialog_box"
v-if=
"is_ImageZoom"
>
<div
class=
"close_box"
@
click=
"is_ImageZoom = false"
>
<i
class=
"el-icon-close"
></i>
</div>
<ImageZoom
:src=
"ImageZoomUrl"
></ImageZoom>
</div>
<!--
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button>
取 消
</el-button>
<el-button
type=
"primary"
>
确 定
</el-button>
</span>
-->
</el-dialog>
</div>
</
template
>
...
...
@@ -212,11 +205,17 @@ import OverallAppraisal from './components/overall_appraisal_view.vue';
export
default
{
name
:
''
,
components
:
{
ImageZoom
,
TestInfo
,
Summary
,
StudentComments
,
OverallAppraisal
},
components
:
{
ImageZoom
,
TestInfo
,
Summary
,
StudentComments
,
OverallAppraisal
,
},
data
()
{
return
{
ImageZoomUrl
:
null
,
is_ImageZoom
:
false
,
ImageZoomUrl
:
null
,
is_ImageZoom
:
false
,
IP
:
process
.
env
.
VUE_APP_BASE_API
,
//初始化请求参数
...
...
@@ -273,19 +272,11 @@ export default {
//学员评估
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
)
{
this
.
appraisal_data
=
{
...
res
.
Round_cultivate
.
review_content
};
this
.
appraisal_data
[
'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
)
{
this
.
summary_data
=
{
...
res
.
Round
.
review_content
,
...
...
@@ -300,22 +291,7 @@ export default {
duration
:
res
.
answer_duration
,
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
=
[];
// if (res.examination_questions) this.questions_list = || [];
res
.
examination_questions
.
examination_question_detail
.
forEach
(
(
element
,
index
)
=>
{
let
obj
=
JSON
.
parse
(
JSON
.
stringify
(
element
));
...
...
@@ -326,13 +302,13 @@ export default {
let
new_arr
=
[];
if
(
res
.
examination_questions
.
examination_question_detail
.
length
>
0
)
{
console
.
log
(
'1111'
);
//
console.log('1111');
new_arr
=
array_conversion
(
res
.
examination_questions
.
examination_question_detail
,
5
);
}
else
{
console
.
log
(
'2222'
);
//
console.log('2222');
for
(
let
index
=
0
;
index
<
20
;
index
++
)
{
let
items
=
[];
for
(
let
i
=
0
;
i
<
5
;
i
++
)
{
...
...
@@ -343,8 +319,8 @@ export default {
new_arr
.
push
(
items
);
}
}
console
.
log
(
'二维数据@@@'
);
console
.
log
(
new_arr
);
//
console.log('二维数据@@@');
//
console.log(new_arr);
// console.log(JSON.stringify(new_arr));
this
.
questions_list
=
new_arr
;
this
.
detailed_information
=
res
;
...
...
@@ -352,7 +328,6 @@ export default {
},
showImageView
(
val
)
{
this
.
image_url
=
val
;
this
.
outerVisible
=
true
;
},
},
...
...
@@ -513,6 +488,10 @@ export default {
margin
:
0
;
}
.result_chart_box
{
white-space
:
nowrap
;
}
.row_box
{
display
:
inline-block
;
white-space
:
nowrap
;
...
...
@@ -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
>
src/views/upload-result/index.vue
浏览文件 @
3a73cbf1
...
...
@@ -3,7 +3,7 @@
* @Author: AnthonyD
* @Date: 2023-03-01 16:25:21
* @Last Modified by: AnthonyD
* @Last Modified time: 2023-0
3-30 09:55:37
* @Last Modified time: 2023-0
4-03 19:52:34
*/
</
script
>
...
...
@@ -63,82 +63,11 @@
test_result_sub_data
[
e
+
(
i
-
1
)
*
5
-
1
].
value
}}
</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>
</
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>
</div>
</div>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论